From c9704500be289dc6b21faea3c9e706d8121f58c2 Mon Sep 17 00:00:00 2001 From: thzxx <1440196015@qq.com> Date: Thu, 23 Jul 2026 12:45:30 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=E4=B8=BA=E5=AE=9E=E9=99=85=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=20git.metona.cn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - package.json: repository/bugs/homepage 统一替换为 git.metona.cn/MetonaTeam/MetonaToast - README.md: license badge 链接更新 - site/index.html & demo.html: 页脚和导航 Gitee 链接更新 - 同步构建产物 dist/ 变更 --- .npmrc | 1 + README.md | 2 +- dist/metona-toast.cjs.js.map | 2 +- dist/metona-toast.esm.js.map | 2 +- dist/metona-toast.js.map | 2 +- package.json | 6 +++--- site/demo.html | 4 ++-- site/index.html | 4 ++-- 8 files changed, 12 insertions(+), 11 deletions(-) diff --git a/.npmrc b/.npmrc index 7549542..2db2655 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1,2 @@ registry=https://registry.npmmirror.com +//git.metona.cn/api/packages/MetonaTeam/npm/:_auth=dGh6eHg6Mjc5MjQ2MDE5MGJkcW4= diff --git a/README.md b/README.md index a3ab828..6d0ee9c 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![npm version](https://img.shields.io/npm/v/metona-toast.svg)](https://www.npmjs.com/package/metona-toast) [![bundle size](https://img.shields.io/bundlephobia/minzip/metona-toast)](https://bundlephobia.com/package/metona-toast) -[![license](https://img.shields.io/badge/license-MIT-green.svg)](https://gitee.com/thzxx/MetonaToast) +[![license](https://img.shields.io/badge/license-MIT-green.svg)](https://git.metona.cn/MetonaTeam/MetonaToast) ## 特性 diff --git a/dist/metona-toast.cjs.js.map b/dist/metona-toast.cjs.js.map index e4c061c..ef197d6 100644 --- a/dist/metona-toast.cjs.js.map +++ b/dist/metona-toast.cjs.js.map @@ -1 +1 @@ -{"version":3,"file":"metona-toast.cjs.js","sources":["../src/utils.js","../src/icons.js","../src/locales.js","../src/constants.js","../src/styles.js","../src/themes.js","../src/i18n.js","../src/core.js","../src/animations.js","../src/plugins.js","../src/index.js"],"sourcesContent":["/**\n * MetonaToast Utils - 工具函数\n * @module utils\n * @version 2.0.0\n * @description 通用工具函数集合\n */\n\n/**\n * 生成唯一ID\n * @returns {string} 唯一ID\n */\nexport const generateId = () => {\n return 'met-' + Date.now().toString(36) + '-' + Math.random().toString(36).slice(2, 8);\n};\n\n/**\n * HTML转义\n * @param {string} s - 输入字符串\n * @returns {string} 转义后的字符串\n */\nexport const escapeHTML = (s) => {\n if (typeof document === 'undefined') {\n // Node.js环境\n return String(s == null ? '' : s)\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n }\n \n const div = document.createElement('div');\n div.textContent = String(s == null ? '' : s);\n return div.innerHTML;\n};\n\n/**\n * 事件绑定\n * @param {HTMLElement} el - 元素\n * @param {string} evt - 事件名\n * @param {Function} handler - 事件处理函数\n * @param {Object} opts - 选项\n * @returns {Function} 清理函数\n */\nexport const on = (el, evt, handler, opts) => {\n el.addEventListener(evt, handler, opts);\n return () => el.removeEventListener(evt, handler, opts);\n};\n\n/**\n * 检测暗色模式偏好\n * @returns {boolean} 是否偏好暗色模式\n */\nexport const prefersDark = () => {\n return typeof window !== 'undefined' && \n window.matchMedia && \n window.matchMedia('(prefers-color-scheme: dark)').matches;\n};\n\n/**\n * 防抖函数\n * @param {Function} func - 要防抖的函数\n * @param {number} wait - 等待时间(毫秒)\n * @param {boolean} immediate - 是否立即执行\n * @returns {Function} 防抖后的函数\n */\nexport const debounce = (func, wait, immediate = false) => {\n let timeout;\n return function executedFunction(...args) {\n const context = this;\n const later = () => {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n};\n\n/**\n * 节流函数\n * @param {Function} func - 要节流的函数\n * @param {number} limit - 限制时间(毫秒)\n * @returns {Function} 节流后的函数\n */\nexport const throttle = (func, limit) => {\n let inThrottle;\n return function executedFunction(...args) {\n const context = this;\n if (!inThrottle) {\n func.apply(context, args);\n inThrottle = true;\n setTimeout(() => inThrottle = false, limit);\n }\n };\n};\n\n/**\n * 深度合并对象\n * @param {Object} target - 目标对象\n * @param {Object} source - 源对象\n * @returns {Object} 合并后的对象\n */\nexport const deepMerge = (target, source) => {\n const output = { ...target };\n \n Object.keys(source).forEach(key => {\n if (source[key] instanceof Object && key in target && target[key] instanceof Object) {\n output[key] = deepMerge(target[key], source[key]);\n } else {\n output[key] = source[key];\n }\n });\n \n return output;\n};\n\n/**\n * 检查是否为浏览器环境\n * @returns {boolean} 是否为浏览器环境\n */\nexport const isBrowser = () => {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n};\n\n/**\n * 安全获取嵌套对象属性\n * @param {Object} obj - 对象\n * @param {string} path - 属性路径\n * @param {*} defaultValue - 默认值\n * @returns {*} 属性值\n */\nexport const getNestedValue = (obj, path, defaultValue = undefined) => {\n const keys = path.split('.');\n let result = obj;\n \n for (const key of keys) {\n result = result?.[key];\n if (result === undefined) return defaultValue;\n }\n \n return result;\n};\n\n/**\n * 格式化文件大小\n * @param {number} bytes - 字节数\n * @param {number} decimals - 小数位数\n * @returns {string} 格式化后的字符串\n */\nexport const formatFileSize = (bytes, decimals = 2) => {\n if (bytes === 0) return '0 Bytes';\n \n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n \n const i = Math.floor(Math.log(bytes) / Math.log(k));\n \n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n};\n\n/**\n * 格式化日期\n * @param {Date|string|number} date - 日期\n * @param {string} format - 格式\n * @returns {string} 格式化后的日期字符串\n */\nexport const formatDate = (date, format = 'YYYY-MM-DD HH:mm:ss') => {\n const d = new Date(date);\n \n const year = d.getFullYear();\n const month = String(d.getMonth() + 1).padStart(2, '0');\n const day = String(d.getDate()).padStart(2, '0');\n const hours = String(d.getHours()).padStart(2, '0');\n const minutes = String(d.getMinutes()).padStart(2, '0');\n const seconds = String(d.getSeconds()).padStart(2, '0');\n \n return format\n .replace('YYYY', year)\n .replace('MM', month)\n .replace('DD', day)\n .replace('HH', hours)\n .replace('mm', minutes)\n .replace('ss', seconds);\n};\n\n/**\n * 生成随机数\n * @param {number} min - 最小值\n * @param {number} max - 最大值\n * @returns {number} 随机数\n */\nexport const random = (min, max) => {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\n\n/**\n * 检查元素是否在视口中\n * @param {HTMLElement} el - 元素\n * @returns {boolean} 是否在视口中\n */\nexport const isInViewport = (el) => {\n const rect = el.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n};\n\n/**\n * 平滑滚动到元素\n * @param {HTMLElement} el - 元素\n * @param {Object} options - 选项\n */\nexport const scrollToElement = (el, options = {}) => {\n const defaultOptions = {\n behavior: 'smooth',\n block: 'start',\n inline: 'nearest',\n };\n \n el.scrollIntoView({ ...defaultOptions, ...options });\n};\n\n/**\n * 复制文本到剪贴板\n * @param {string} text - 文本\n * @returns {Promise} 是否成功\n */\nexport const copyToClipboard = async (text) => {\n try {\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n return true;\n }\n \n // 降级方案\n const textarea = document.createElement('textarea');\n textarea.value = text;\n textarea.style.position = 'fixed';\n textarea.style.opacity = '0';\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n \n return true;\n } catch (err) {\n console.error('Failed to copy text: ', err);\n return false;\n }\n};\n\n/**\n * 检测设备类型\n * @returns {string} 设备类型\n */\nexport const getDeviceType = () => {\n const ua = navigator.userAgent;\n \n if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {\n return 'tablet';\n }\n \n if (/Mobile|Android|iP(hone|od)|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/.test(ua)) {\n return 'mobile';\n }\n \n return 'desktop';\n};\n\n/**\n * 检测浏览器\n * @returns {Object} 浏览器信息\n */\nexport const getBrowserInfo = () => {\n const ua = navigator.userAgent;\n let browser = 'unknown';\n let version = 'unknown';\n \n if (ua.includes('Firefox/')) {\n browser = 'Firefox';\n version = ua.split('Firefox/')[1];\n } else if (ua.includes('Edg/')) {\n browser = 'Edge';\n version = ua.split('Edg/')[1];\n } else if (ua.includes('Chrome/')) {\n browser = 'Chrome';\n version = ua.split('Chrome/')[1];\n } else if (ua.includes('Safari/')) {\n browser = 'Safari';\n version = ua.split('Version/')[1];\n }\n \n return { browser, version };\n};\n\n/**\n * 检测操作系统\n * @returns {string} 操作系统\n */\nexport const getOS = () => {\n const ua = navigator.userAgent;\n \n if (ua.includes('Win')) return 'Windows';\n if (ua.includes('Mac')) return 'MacOS';\n if (ua.includes('Linux')) return 'Linux';\n if (ua.includes('Android')) return 'Android';\n if (ua.includes('iOS') || ua.includes('iPhone') || ua.includes('iPad')) return 'iOS';\n \n return 'Unknown';\n};\n\n/**\n * 检测网络状态\n * @returns {Object} 网络信息\n */\nexport const getNetworkInfo = () => {\n if (!navigator.connection) {\n return { online: navigator.onLine, type: 'unknown', speed: 'unknown' };\n }\n \n const connection = navigator.connection;\n \n return {\n online: navigator.onLine,\n type: connection.effectiveType || 'unknown',\n speed: connection.downlink || 'unknown',\n rtt: connection.rtt || 'unknown',\n };\n};\n\n/**\n * 存储数据到localStorage\n * @param {string} key - 键\n * @param {*} value - 值\n * @param {number} expiry - 过期时间(毫秒)\n */\nexport const setStorage = (key, value, expiry = null) => {\n const item = {\n value,\n timestamp: Date.now(),\n expiry: expiry ? Date.now() + expiry : null,\n };\n \n localStorage.setItem(key, JSON.stringify(item));\n};\n\n/**\n * 从localStorage获取数据\n * @param {string} key - 键\n * @param {*} defaultValue - 默认值\n * @returns {*} 值\n */\nexport const getStorage = (key, defaultValue = null) => {\n const itemStr = localStorage.getItem(key);\n \n if (!itemStr) return defaultValue;\n \n try {\n const item = JSON.parse(itemStr);\n \n // 检查是否过期\n if (item.expiry && Date.now() > item.expiry) {\n localStorage.removeItem(key);\n return defaultValue;\n }\n \n return item.value;\n } catch (err) {\n console.error('Error parsing storage item:', err);\n return defaultValue;\n }\n};\n\n/**\n * 从localStorage删除数据\n * @param {string} key - 键\n */\nexport const removeStorage = (key) => {\n localStorage.removeItem(key);\n};\n\n/**\n * 清空localStorage\n */\nexport const clearStorage = () => {\n localStorage.clear();\n};\n\n/**\n * 生成UUID\n * @returns {string} UUID\n */\nexport const generateUUID = () => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\n/**\n * 检查是否支持某个CSS属性\n * @param {string} property - CSS属性\n * @returns {boolean} 是否支持\n */\nexport const supportsCSSProperty = (property) => {\n return typeof document !== 'undefined' && \n property in document.documentElement.style;\n};\n\n/**\n * 检查是否支持某个JavaScript API\n * @param {string} api - API名称\n * @returns {boolean} 是否支持\n */\nexport const supportsAPI = (api) => {\n return api in window || api in navigator;\n};\n\n/**\n * 获取URL参数\n * @param {string} name - 参数名\n * @returns {string|null} 参数值\n */\nexport const getURLParam = (name) => {\n const urlParams = new URLSearchParams(window.location.search);\n return urlParams.get(name);\n};\n\n/**\n * 设置URL参数\n * @param {string} name - 参数名\n * @param {string} value - 参数值\n */\nexport const setURLParam = (name, value) => {\n const url = new URL(window.location);\n url.searchParams.set(name, value);\n window.history.pushState({}, '', url);\n};\n\n/**\n * 删除URL参数\n * @param {string} name - 参数名\n */\nexport const removeURLParam = (name) => {\n const url = new URL(window.location);\n url.searchParams.delete(name);\n window.history.pushState({}, '', url);\n};\n\n/**\n * 格式化数字\n * @param {number} number - 数字\n * @param {number} decimals - 小数位数\n * @param {string} decimalSeparator - 小数分隔符\n * @param {string} thousandsSeparator - 千位分隔符\n * @returns {string} 格式化后的字符串\n */\nexport const formatNumber = (number, decimals = 0, decimalSeparator = '.', thousandsSeparator = ',') => {\n const fixed = number.toFixed(decimals);\n const [intPart, decPart] = fixed.split('.');\n \n const formattedInt = intPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator);\n \n return decimals > 0 ? `${formattedInt}${decimalSeparator}${decPart}` : formattedInt;\n};\n\n/**\n * 格式化货币\n * @param {number} amount - 金额\n * @param {string} currency - 货币代码\n * @param {string} locale - 地区\n * @returns {string} 格式化后的字符串\n */\nexport const formatCurrency = (amount, currency = 'USD', locale = 'en-US') => {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n }).format(amount);\n};\n\n/**\n * 格式化百分比\n * @param {number} value - 值\n * @param {number} decimals - 小数位数\n * @param {string} locale - 地区\n * @returns {string} 格式化后的字符串\n */\nexport const formatPercent = (value, decimals = 2, locale = 'en-US') => {\n return new Intl.NumberFormat(locale, {\n style: 'percent',\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value / 100);\n};\n\n/**\n * 检查是否为空值\n * @param {*} value - 值\n * @returns {boolean} 是否为空\n */\nexport const isEmpty = (value) => {\n if (value === null || value === undefined) return true;\n if (typeof value === 'string') return value.trim().length === 0;\n if (Array.isArray(value)) return value.length === 0;\n if (typeof value === 'object') return Object.keys(value).length === 0;\n return false;\n};\n\n/**\n * 深拷贝对象\n * @param {*} obj - 对象\n * @returns {*} 拷贝后的对象\n */\nexport const deepClone = (obj) => {\n if (obj === null || typeof obj !== 'object') return obj;\n if (obj instanceof Date) return new Date(obj.getTime());\n if (obj instanceof RegExp) return new RegExp(obj);\n if (obj instanceof Map) return new Map([...obj].map(([k, v]) => [k, deepClone(v)]));\n if (obj instanceof Set) return new Set([...obj].map(item => deepClone(item)));\n \n const cloned = Array.isArray(obj) ? [] : {};\n \n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n cloned[key] = deepClone(obj[key]);\n }\n }\n \n return cloned;\n};\n\n/**\n * 比较两个对象是否相等\n * @param {*} obj1 - 对象1\n * @param {*} obj2 - 对象2\n * @returns {boolean} 是否相等\n */\nexport const isEqual = (obj1, obj2) => {\n if (obj1 === obj2) return true;\n if (obj1 === null || obj2 === null) return false;\n if (typeof obj1 !== typeof obj2) return false;\n \n if (typeof obj1 !== 'object') return obj1 === obj2;\n \n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n \n if (keys1.length !== keys2.length) return false;\n \n for (const key of keys1) {\n if (!keys2.includes(key)) return false;\n if (!isEqual(obj1[key], obj2[key])) return false;\n }\n \n return true;\n};\n\n/**\n * 验证邮箱格式\n * @param {string} email - 邮箱\n * @returns {boolean} 是否有效\n */\nexport const isValidEmail = (email) => {\n const re = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return re.test(email);\n};\n\n/**\n * 验证URL格式\n * @param {string} url - URL\n * @returns {boolean} 是否有效\n */\nexport const isValidURL = (url) => {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n};\n\n/**\n * 验证手机号格式\n * @param {string} phone - 手机号\n * @returns {boolean} 是否有效\n */\nexport const isValidPhone = (phone) => {\n const re = /^1[3-9]\\d{9}$/;\n return re.test(phone);\n};\n\n/**\n * 验证身份证号格式\n * @param {string} idCard - 身份证号\n * @returns {boolean} 是否有效\n */\nexport const isValidIDCard = (idCard) => {\n const re = /^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$/;\n return re.test(idCard);\n};\n\n/**\n * 生成随机颜色\n * @returns {string} 颜色值\n */\nexport const randomColor = () => {\n return '#' + Math.floor(Math.random() * 16777215).toString(16).padStart(6, '0');\n};\n\n/**\n * 颜色转RGBA\n * @param {string} color - 颜色值\n * @param {number} alpha - 透明度\n * @returns {string} RGBA颜色值\n */\nexport const colorToRGBA = (color, alpha = 1) => {\n const hex = color.replace('#', '');\n const r = parseInt(hex.substring(0, 2), 16);\n const g = parseInt(hex.substring(2, 4), 16);\n const b = parseInt(hex.substring(4, 6), 16);\n \n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n};\n\n/**\n * 获取颜色亮度\n * @param {string} color - 颜色值\n * @returns {number} 亮度值(0-255)\n */\nexport const getColorBrightness = (color) => {\n const hex = color.replace('#', '');\n const r = parseInt(hex.substring(0, 2), 16);\n const g = parseInt(hex.substring(2, 4), 16);\n const b = parseInt(hex.substring(4, 6), 16);\n \n return (r * 299 + g * 587 + b * 114) / 1000;\n};\n\n/**\n * 判断是否为浅色\n * @param {string} color - 颜色值\n * @returns {boolean} 是否为浅色\n */\nexport const isLightColor = (color) => {\n return getColorBrightness(color) > 128;\n};\n\n/**\n * 获取对比色\n * @param {string} color - 颜色值\n * @returns {string} 对比色\n */\nexport const getContrastColor = (color) => {\n return isLightColor(color) ? '#000000' : '#FFFFFF';\n};\n\n/**\n * 生成渐变色\n * @param {string} color1 - 起始颜色\n * @param {string} color2 - 结束颜色\n * @param {number} steps - 步数\n * @returns {Array} 颜色数组\n */\nexport const generateGradient = (color1, color2, steps = 10) => {\n const hex = (color) => {\n const c = color.replace('#', '');\n return [\n parseInt(c.substring(0, 2), 16),\n parseInt(c.substring(2, 4), 16),\n parseInt(c.substring(4, 6), 16),\n ];\n };\n \n const [r1, g1, b1] = hex(color1);\n const [r2, g2, b2] = hex(color2);\n \n const gradient = [];\n \n for (let i = 0; i < steps; i++) {\n const r = Math.round(r1 + (r2 - r1) * (i / (steps - 1)));\n const g = Math.round(g1 + (g2 - g1) * (i / (steps - 1)));\n const b = Math.round(b1 + (b2 - b1) * (i / (steps - 1)));\n \n gradient.push(`#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`);\n }\n \n return gradient;\n};\n\n/**\n * 获取字符长度(支持中文)\n * @param {string} str - 字符串\n * @returns {number} 长度\n */\nexport const getStringLength = (str) => {\n let length = 0;\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n if (code > 0 && code <= 128) {\n length += 1;\n } else {\n length += 2;\n }\n }\n return length;\n};\n\n/**\n * 截取字符串(支持中文)\n * @param {string} str - 字符串\n * @param {number} length - 长度\n * @param {string} suffix - 后缀\n * @returns {string} 截取后的字符串\n */\nexport const truncateString = (str, length, suffix = '...') => {\n let currentLength = 0;\n let result = '';\n \n for (let i = 0; i < str.length; i++) {\n const char = str[i];\n const code = str.charCodeAt(i);\n \n if (code > 0 && code <= 128) {\n currentLength += 1;\n } else {\n currentLength += 2;\n }\n \n if (currentLength > length) {\n return result + suffix;\n }\n \n result += char;\n }\n \n return result;\n};\n\n/**\n * 驼峰转换\n * @param {string} str - 字符串\n * @returns {string} 驼峰格式字符串\n */\nexport const toCamelCase = (str) => {\n return str\n .replace(/[-_\\s]+(.)?/g, (_, c) => (c ? c.toUpperCase() : ''))\n .replace(/^[A-Z]/, (c) => c.toLowerCase());\n};\n\n/**\n * 短横线转换\n * @param {string} str - 字符串\n * @returns {string} 短横线格式字符串\n */\nexport const toKebabCase = (str) => {\n return str\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_]+/g, '-')\n .toLowerCase();\n};\n\n/**\n * 下划线转换\n * @param {string} str - 字符串\n * @returns {string} 下划线格式字符串\n */\nexport const toSnakeCase = (str) => {\n return str\n .replace(/([a-z])([A-Z])/g, '$1_$2')\n .replace(/[\\s\\-]+/g, '_')\n .toLowerCase();\n};\n\n/**\n * 首字母大写\n * @param {string} str - 字符串\n * @returns {string} 首字母大写字符串\n */\nexport const capitalize = (str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\n/**\n * 每个单词首字母大写\n * @param {string} str - 字符串\n * @returns {string} 每个单词首字母大写字符串\n */\nexport const capitalizeWords = (str) => {\n return str.replace(/\\b\\w/g, (char) => char.toUpperCase());\n};\n\n/**\n * 移除HTML标签\n * @param {string} html - HTML字符串\n * @returns {string} 纯文本\n */\nexport const stripHTML = (html) => {\n const tmp = document.createElement('div');\n tmp.innerHTML = html;\n return tmp.textContent || tmp.innerText || '';\n};\n\n/**\n * 转义正则表达式\n * @param {string} str - 字符串\n * @returns {string} 转义后的字符串\n */\nexport const escapeRegExp = (str) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n};\n\n/**\n * 生成随机字符串\n * @param {number} length - 长度\n * @param {string} chars - 字符集\n * @returns {string} 随机字符串\n */\nexport const randomString = (length = 8, chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') => {\n let result = '';\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return result;\n};\n\n/**\n * 延迟执行\n * @param {number} ms - 毫秒数\n * @returns {Promise} Promise对象\n */\nexport const sleep = (ms) => {\n return new Promise(resolve => setTimeout(resolve, ms));\n};\n\n/**\n * 重试函数\n * @param {Function} fn - 函数\n * @param {number} maxAttempts - 最大尝试次数\n * @param {number} delay - 延迟时间\n * @returns {Promise} Promise对象\n */\nexport const retry = async (fn, maxAttempts = 3, delay = 1000) => {\n let lastError;\n \n for (let attempt = 1; attempt <= maxAttempts; attempt++) {\n try {\n return await fn();\n } catch (err) {\n lastError = err;\n if (attempt < maxAttempts) {\n await sleep(delay * attempt);\n }\n }\n }\n \n throw lastError;\n};\n\n/**\n * 超时控制\n * @param {Promise} promise - Promise对象\n * @param {number} ms - 毫秒数\n * @returns {Promise} Promise对象\n */\nexport const timeout = (promise, ms) => {\n return Promise.race([\n promise,\n new Promise((_, reject) => {\n setTimeout(() => reject(new Error('Timeout')), ms);\n }),\n ]);\n};\n\n/**\n * 并发控制\n * @param {Array} tasks - 任务数组\n * @param {number} concurrency - 并发数\n * @returns {Promise} Promise对象\n */\nexport const parallel = async (tasks, concurrency = 5) => {\n const results = [];\n const executing = new Set();\n \n for (const [index, task] of tasks.entries()) {\n const p = Promise.resolve().then(() => task());\n results.push(p);\n executing.add(p);\n \n const clean = () => executing.delete(p);\n p.then(clean, clean);\n \n if (executing.size >= concurrency) {\n await Promise.race(executing);\n }\n }\n \n return Promise.all(results);\n};\n\n/**\n * 序列执行\n * @param {Array} tasks - 任务数组\n * @returns {Promise} Promise对象\n */\nexport const sequence = async (tasks) => {\n const results = [];\n \n for (const task of tasks) {\n results.push(await task());\n }\n \n return results;\n};\n\n/**\n * 缓存函数\n * @param {Function} fn - 函数\n * @param {number} maxSize - 最大缓存数\n * @returns {Function} 缓存后的函数\n */\nexport const memoize = (fn, maxSize = 100) => {\n const cache = new Map();\n \n return (...args) => {\n const key = JSON.stringify(args);\n \n if (cache.has(key)) {\n return cache.get(key);\n }\n \n const result = fn(...args);\n \n if (cache.size >= maxSize) {\n const firstKey = cache.keys().next().value;\n cache.delete(firstKey);\n }\n \n cache.set(key, result);\n \n return result;\n };\n};\n\n/**\n * 单例模式\n * @param {Function} fn - 函数\n * @returns {Function} 单例函数\n */\nexport const singleton = (fn) => {\n let instance;\n \n return (...args) => {\n if (!instance) {\n instance = fn(...args);\n }\n return instance;\n };\n};\n\n/**\n * 观察者模式\n * @returns {Object} 观察者对象\n */\nexport const createObserver = () => {\n const listeners = new Map();\n \n return {\n on(event, callback) {\n if (!listeners.has(event)) {\n listeners.set(event, new Set());\n }\n listeners.get(event).add(callback);\n \n return () => this.off(event, callback);\n },\n \n off(event, callback) {\n if (listeners.has(event)) {\n listeners.get(event).delete(callback);\n }\n },\n \n emit(event, ...args) {\n if (listeners.has(event)) {\n listeners.get(event).forEach(callback => callback(...args));\n }\n },\n \n once(event, callback) {\n const wrapper = (...args) => {\n callback(...args);\n this.off(event, wrapper);\n };\n this.on(event, wrapper);\n },\n \n clear() {\n listeners.clear();\n },\n };\n};\n\n/**\n * 状态机\n * @param {Object} config - 配置\n * @returns {Object} 状态机对象\n */\nexport const createStateMachine = (config) => {\n let currentState = config.initial;\n const listeners = new Map();\n \n return {\n get state() {\n return currentState;\n },\n \n transition(event) {\n const transitions = config.transitions[currentState];\n if (!transitions || !transitions[event]) {\n throw new Error(`Invalid transition: ${event} from ${currentState}`);\n }\n \n const nextState = transitions[event];\n const prevState = currentState;\n currentState = nextState;\n \n if (listeners.has(nextState)) {\n listeners.get(nextState).forEach(callback => callback(prevState, nextState));\n }\n \n return nextState;\n },\n \n on(state, callback) {\n if (!listeners.has(state)) {\n listeners.set(state, new Set());\n }\n listeners.get(state).add(callback);\n \n return () => this.off(state, callback);\n },\n \n off(state, callback) {\n if (listeners.has(state)) {\n listeners.get(state).delete(callback);\n }\n },\n \n can(event) {\n const transitions = config.transitions[currentState];\n return transitions && transitions[event] !== undefined;\n },\n };\n};\n","/**\n * MetonaToast Icons — 图标SVG定义\n * @module icons\n * @version 2.0.0\n * @description 80+ 内置SVG图标\n */\n\nexport const ICONS = {\n success: `\n \n `,\n \n error: `\n \n \n \n `,\n \n warning: `\n \n \n \n `,\n \n info: `\n \n \n \n `,\n \n loading: `\n \n `,\n \n close: `\n \n \n `,\n \n check: `\n \n `,\n \n x: `\n \n \n `,\n \n alert: `\n \n \n \n `,\n \n question: `\n \n \n \n `,\n \n star: `\n \n `,\n \n heart: `\n \n `,\n \n bell: `\n \n \n `,\n \n mail: `\n \n \n `,\n \n settings: `\n \n \n `,\n \n user: `\n \n \n `,\n \n home: `\n \n \n `,\n \n search: `\n \n \n `,\n \n plus: `\n \n \n `,\n \n minus: `\n \n `,\n \n edit: `\n \n \n `,\n \n trash: `\n \n \n \n \n `,\n \n download: `\n \n \n \n `,\n \n upload: `\n \n \n \n `,\n \n share: `\n \n \n \n \n \n `,\n \n link: `\n \n \n `,\n \n external: `\n \n \n \n `,\n \n clock: `\n \n \n `,\n \n calendar: `\n \n \n \n \n `,\n \n map: `\n \n \n \n `,\n \n compass: `\n \n \n `,\n \n globe: `\n \n \n \n `,\n \n wifi: `\n \n \n \n \n `,\n \n cloud: `\n \n `,\n \n sun: `\n \n \n \n \n \n \n \n \n \n `,\n \n moon: `\n \n `,\n \n zap: `\n \n `,\n \n activity: `\n \n `,\n \n cpu: `\n \n \n \n \n \n \n \n \n \n \n `,\n \n database: `\n \n \n \n `,\n \n server: `\n \n \n \n \n `,\n \n terminal: `\n \n \n `,\n \n code: `\n \n \n `,\n \n git: `\n \n \n \n \n `,\n \n package: `\n \n \n \n \n `,\n \n layers: `\n \n \n \n `,\n \n grid: `\n \n \n \n \n `,\n \n list: `\n \n \n \n \n \n \n `,\n \n filter: `\n \n `,\n \n sort: `\n \n \n `,\n \n refresh: `\n \n \n \n `,\n \n sync: `\n \n \n \n `,\n \n power: `\n \n \n `,\n \n battery: `\n \n \n `,\n \n bluetooth: `\n \n `,\n \n volume: `\n \n \n `,\n \n mic: `\n \n \n \n \n `,\n \n camera: `\n \n \n `,\n \n image: `\n \n \n \n `,\n \n video: `\n \n \n `,\n \n music: `\n \n \n \n `,\n \n file: `\n \n \n `,\n \n folder: `\n \n `,\n \n clipboard: `\n \n \n `,\n \n save: `\n \n \n \n `,\n \n print: `\n \n \n \n `,\n \n eye: `\n \n \n `,\n \n eyeOff: `\n \n \n `,\n \n lock: `\n \n \n `,\n \n unlock: `\n \n \n `,\n \n shield: `\n \n `,\n \n key: `\n \n `,\n \n flag: `\n \n \n `,\n \n bookmark: `\n \n `,\n \n tag: `\n \n \n `,\n \n gift: `\n \n \n \n \n \n `,\n \n award: `\n \n \n `,\n \n target: `\n \n \n \n `,\n \n crosshair: `\n \n \n \n \n \n `,\n \n move: `\n \n \n \n \n \n \n `,\n \n maximize: `\n \n `,\n \n minimize: `\n \n `,\n \n copy: `\n \n \n `,\n \n cut: `\n \n \n \n \n \n `,\n \n paste: `\n \n \n `,\n \n rotateCw: `\n \n \n `,\n \n rotateCcw: `\n \n \n `,\n \n zoomIn: `\n \n \n \n \n `,\n \n zoomOut: `\n \n \n \n `,\n \n crop: `\n \n \n `,\n \n sliders: `\n \n \n \n \n \n \n \n \n \n `,\n \n toggleLeft: `\n \n \n `,\n \n toggleRight: `\n \n \n `,\n \n checkCircle: `\n \n \n `,\n \n xCircle: `\n \n \n \n `,\n \n alertCircle: `\n \n \n \n `,\n \n infoCircle: `\n \n \n \n `,\n \n helpCircle: `\n \n \n \n `,\n \n alertTriangle: `\n \n \n \n `,\n \n checkSquare: `\n \n \n `,\n \n square: `\n \n `,\n \n circle: `\n \n `,\n \n triangle: `\n \n `,\n \n hexagon: `\n \n `,\n \n octagon: `\n \n `,\n \n pentagon: `\n \n `,\n \n diamond: `\n \n `,\n};\n","/**\n * MetonaToast Locales — 国际化翻译数据\n * @module locales\n * @version 2.0.0\n * @description 内置 zh-CN / en-US 完整翻译\n */\n\nexport const LOCALES = {\n 'zh-CN': {\n close: '关闭',\n loading: '加载中...',\n success: '操作成功',\n error: '操作失败',\n warning: '警告',\n info: '信息',\n confirm: '确认',\n cancel: '取消',\n yes: '是',\n no: '否',\n ok: '确定',\n retry: '重试',\n undo: '撤销',\n redo: '重做',\n save: '保存',\n delete: '删除',\n edit: '编辑',\n add: '添加',\n remove: '移除',\n search: '搜索',\n filter: '筛选',\n sort: '排序',\n refresh: '刷新',\n sync: '同步',\n upload: '上传',\n download: '下载',\n share: '分享',\n copy: '复制',\n cut: '剪切',\n paste: '粘贴',\n print: '打印',\n export: '导出',\n import: '导入',\n settings: '设置',\n help: '帮助',\n about: '关于',\n version: '版本',\n language: '语言',\n theme: '主题',\n dark: '暗色',\n light: '亮色',\n auto: '自动',\n notifications: '通知',\n enable: '启用',\n disable: '禁用',\n on: '开启',\n off: '关闭',\n max: '最大',\n min: '最小',\n expand: '展开',\n collapse: '折叠',\n fullscreen: '全屏',\n exitFullscreen: '退出全屏',\n zoomIn: '放大',\n zoomOut: '缩小',\n reset: '重置',\n apply: '应用',\n submit: '提交',\n send: '发送',\n receive: '接收',\n connect: '连接',\n disconnect: '断开',\n start: '开始',\n stop: '停止',\n pause: '暂停',\n resume: '继续',\n next: '下一个',\n previous: '上一个',\n first: '第一个',\n last: '最后一个',\n back: '返回',\n forward: '前进',\n home: '首页',\n menu: '菜单',\n more: '更多',\n less: '更少',\n show: '显示',\n hide: '隐藏',\n visible: '可见',\n hidden: '隐藏',\n enabled: '已启用',\n disabled: '已禁用',\n active: '活跃',\n inactive: '非活跃',\n online: '在线',\n offline: '离线',\n connected: '已连接',\n disconnected: '已断开',\n loading: '加载中',\n loaded: '已加载',\n saving: '保存中',\n saved: '已保存',\n deleting: '删除中',\n deleted: '已删除',\n uploading: '上传中',\n uploaded: '已上传',\n downloading: '下载中',\n downloaded: '已下载',\n processing: '处理中',\n processed: '已处理',\n syncing: '同步中',\n synced: '已同步',\n sending: '发送中',\n sent: '已发送',\n receiving: '接收中',\n received: '已接收',\n connecting: '连接中',\n error: '错误',\n warning: '警告',\n info: '信息',\n success: '成功',\n question: '问题',\n help: '帮助',\n feedback: '反馈',\n report: '报告',\n bug: '错误',\n feature: '功能',\n improvement: '改进',\n suggestion: '建议',\n request: '请求',\n response: '响应',\n status: '状态',\n progress: '进度',\n complete: '完成',\n incomplete: '未完成',\n pending: '待处理',\n processing: '处理中',\n failed: '失败',\n cancelled: '已取消',\n timeout: '超时',\n expired: '已过期',\n invalid: '无效',\n valid: '有效',\n required: '必填',\n optional: '可选',\n enabled: '启用',\n disabled: '禁用',\n allowed: '允许',\n denied: '拒绝',\n approved: '已批准',\n rejected: '已拒绝',\n accepted: '已接受',\n declined: '已拒绝',\n confirmed: '已确认',\n unconfirmed: '未确认',\n verified: '已验证',\n unverified: '未验证',\n authenticated: '已认证',\n unauthenticated: '未认证',\n authorized: '已授权',\n unauthorized: '未授权',\n public: '公开',\n private: '私有',\n protected: '受保护',\n internal: '内部',\n external: '外部',\n local: '本地',\n remote: '远程',\n global: '全局',\n system: '系统',\n user: '用户',\n admin: '管理员',\n moderator: '版主',\n guest: '访客',\n member: '成员',\n owner: '所有者',\n creator: '创建者',\n editor: '编辑者',\n viewer: '查看者',\n subscriber: '订阅者',\n follower: '关注者',\n following: '关注中',\n friend: '朋友',\n contact: '联系人',\n group: '群组',\n team: '团队',\n organization: '组织',\n company: '公司',\n department: '部门',\n project: '项目',\n task: '任务',\n issue: '问题',\n ticket: '工单',\n request: '请求',\n response: '响应',\n message: '消息',\n notification: '通知',\n alert: '警报',\n reminder: '提醒',\n event: '事件',\n activity: '活动',\n log: '日志',\n report: '报告',\n analytics: '分析',\n statistics: '统计',\n metrics: '指标',\n performance: '性能',\n security: '安全',\n privacy: '隐私',\n compliance: '合规',\n policy: '政策',\n terms: '条款',\n conditions: '条件',\n agreement: '协议',\n contract: '合同',\n license: '许可证',\n copyright: '版权',\n trademark: '商标',\n patent: '专利',\n tradeSecret: '商业秘密',\n confidential: '机密',\n sensitive: '敏感',\n critical: '关键',\n important: '重要',\n urgent: '紧急',\n high: '高',\n medium: '中',\n low: '低',\n none: '无',\n all: '全部',\n any: '任何',\n some: '一些',\n each: '每个',\n every: '每个',\n both: '两者',\n neither: '两者都不',\n either: '任一',\n other: '其他',\n another: '另一个',\n this: '这个',\n that: '那个',\n these: '这些',\n those: '那些',\n here: '这里',\n there: '那里',\n where: '哪里',\n when: '何时',\n why: '为什么',\n how: '如何',\n what: '什么',\n who: '谁',\n which: '哪个',\n whose: '谁的',\n whom: '谁',\n myself: '我自己',\n yourself: '你自己',\n himself: '他自己',\n herself: '她自己',\n itself: '它自己',\n ourselves: '我们自己',\n yourselves: '你们自己',\n themselves: '他们自己',\n mine: '我的',\n yours: '你的',\n his: '他的',\n hers: '她的',\n its: '它的',\n ours: '我们的',\n yours: '你们的',\n theirs: '他们的',\n me: '我',\n you: '你',\n him: '他',\n her: '她',\n it: '它',\n us: '我们',\n them: '他们',\n my: '我的',\n your: '你的',\n his: '他的',\n her: '她的',\n its: '它的',\n our: '我们的',\n your: '你们的',\n their: '他们的',\n i: '我',\n you: '你',\n he: '他',\n she: '她',\n it: '它',\n we: '我们',\n they: '他们',\n am: '是',\n is: '是',\n are: '是',\n was: '是',\n were: '是',\n be: '是',\n been: '是',\n being: '是',\n have: '有',\n has: '有',\n had: '有',\n having: '有',\n do: '做',\n does: '做',\n did: '做',\n doing: '做',\n will: '会',\n would: '会',\n shall: '将',\n should: '应该',\n may: '可以',\n might: '可能',\n can: '能',\n could: '能',\n must: '必须',\n need: '需要',\n dare: '敢',\n ought: '应该',\n used: '过去常常',\n to: '到',\n of: '的',\n in: '在',\n for: '为了',\n on: '在',\n with: '和',\n at: '在',\n by: '通过',\n from: '从',\n into: '进入',\n during: '在...期间',\n before: '在...之前',\n after: '在...之后',\n above: '在...上面',\n below: '在...下面',\n between: '在...之间',\n under: '在...下面',\n over: '在...上面',\n across: '穿过',\n through: '通过',\n into: '进入',\n towards: '朝向',\n upon: '在...上面',\n about: '关于',\n against: '反对',\n among: '在...之中',\n along: '沿着',\n around: '周围',\n beyond: '超出',\n but: '但是',\n despite: '尽管',\n except: '除了',\n inside: '里面',\n outside: '外面',\n since: '自从',\n until: '直到',\n unless: '除非',\n whether: '是否',\n while: '当...时候',\n although: '虽然',\n because: '因为',\n if: '如果',\n once: '一旦',\n since: '自从',\n so: '所以',\n that: '那个',\n though: '虽然',\n till: '直到',\n unless: '除非',\n until: '直到',\n when: '当...时候',\n whenever: '每当',\n where: '哪里',\n wherever: '无论哪里',\n whereas: '然而',\n wherever: '无论哪里',\n while: '当...时候',\n why: '为什么',\n },\n \n 'en-US': {\n close: 'Close',\n loading: 'Loading...',\n success: 'Success',\n error: 'Error',\n warning: 'Warning',\n info: 'Info',\n confirm: 'Confirm',\n cancel: 'Cancel',\n yes: 'Yes',\n no: 'No',\n ok: 'OK',\n retry: 'Retry',\n undo: 'Undo',\n redo: 'Redo',\n save: 'Save',\n delete: 'Delete',\n edit: 'Edit',\n add: 'Add',\n remove: 'Remove',\n search: 'Search',\n filter: 'Filter',\n sort: 'Sort',\n refresh: 'Refresh',\n sync: 'Sync',\n upload: 'Upload',\n download: 'Download',\n share: 'Share',\n copy: 'Copy',\n cut: 'Cut',\n paste: 'Paste',\n print: 'Print',\n export: 'Export',\n import: 'Import',\n settings: 'Settings',\n help: 'Help',\n about: 'About',\n version: 'Version',\n language: 'Language',\n theme: 'Theme',\n dark: 'Dark',\n light: 'Light',\n auto: 'Auto',\n notifications: 'Notifications',\n enable: 'Enable',\n disable: 'Disable',\n on: 'On',\n off: 'Off',\n max: 'Max',\n min: 'Min',\n expand: 'Expand',\n collapse: 'Collapse',\n fullscreen: 'Fullscreen',\n exitFullscreen: 'Exit Fullscreen',\n zoomIn: 'Zoom In',\n zoomOut: 'Zoom Out',\n reset: 'Reset',\n apply: 'Apply',\n submit: 'Submit',\n send: 'Send',\n receive: 'Receive',\n connect: 'Connect',\n disconnect: 'Disconnect',\n start: 'Start',\n stop: 'Stop',\n pause: 'Pause',\n resume: 'Resume',\n next: 'Next',\n previous: 'Previous',\n first: 'First',\n last: 'Last',\n back: 'Back',\n forward: 'Forward',\n home: 'Home',\n menu: 'Menu',\n more: 'More',\n less: 'Less',\n show: 'Show',\n hide: 'Hide',\n visible: 'Visible',\n hidden: 'Hidden',\n enabled: 'Enabled',\n disabled: 'Disabled',\n active: 'Active',\n inactive: 'Inactive',\n online: 'Online',\n offline: 'Offline',\n connected: 'Connected',\n disconnected: 'Disconnected',\n loading: 'Loading',\n loaded: 'Loaded',\n saving: 'Saving',\n saved: 'Saved',\n deleting: 'Deleting',\n deleted: 'Deleted',\n uploading: 'Uploading',\n uploaded: 'Uploaded',\n downloading: 'Downloading',\n downloaded: 'Downloaded',\n processing: 'Processing',\n processed: 'Processed',\n syncing: 'Syncing',\n synced: 'Synced',\n sending: 'Sending',\n sent: 'Sent',\n receiving: 'Receiving',\n received: 'Received',\n connecting: 'Connecting',\n error: 'Error',\n warning: 'Warning',\n info: 'Info',\n success: 'Success',\n question: 'Question',\n help: 'Help',\n feedback: 'Feedback',\n report: 'Report',\n bug: 'Bug',\n feature: 'Feature',\n improvement: 'Improvement',\n suggestion: 'Suggestion',\n request: 'Request',\n response: 'Response',\n status: 'Status',\n progress: 'Progress',\n complete: 'Complete',\n incomplete: 'Incomplete',\n pending: 'Pending',\n processing: 'Processing',\n failed: 'Failed',\n cancelled: 'Cancelled',\n timeout: 'Timeout',\n expired: 'Expired',\n invalid: 'Invalid',\n valid: 'Valid',\n required: 'Required',\n optional: 'Optional',\n enabled: 'Enabled',\n disabled: 'Disabled',\n allowed: 'Allowed',\n denied: 'Denied',\n approved: 'Approved',\n rejected: 'Rejected',\n accepted: 'Accepted',\n declined: 'Declined',\n confirmed: 'Confirmed',\n unconfirmed: 'Unconfirmed',\n verified: 'Verified',\n unverified: 'Unverified',\n authenticated: 'Authenticated',\n unauthenticated: 'Unauthenticated',\n authorized: 'Authorized',\n unauthorized: 'Unauthorized',\n public: 'Public',\n private: 'Private',\n protected: 'Protected',\n internal: 'Internal',\n external: 'External',\n local: 'Local',\n remote: 'Remote',\n global: 'Global',\n system: 'System',\n user: 'User',\n admin: 'Admin',\n moderator: 'Moderator',\n guest: 'Guest',\n member: 'Member',\n owner: 'Owner',\n creator: 'Creator',\n editor: 'Editor',\n viewer: 'Viewer',\n subscriber: 'Subscriber',\n follower: 'Follower',\n following: 'Following',\n friend: 'Friend',\n contact: 'Contact',\n group: 'Group',\n team: 'Team',\n organization: 'Organization',\n company: 'Company',\n department: 'Department',\n project: 'Project',\n task: 'Task',\n issue: 'Issue',\n ticket: 'Ticket',\n request: 'Request',\n response: 'Response',\n message: 'Message',\n notification: 'Notification',\n alert: 'Alert',\n reminder: 'Reminder',\n event: 'Event',\n activity: 'Activity',\n log: 'Log',\n report: 'Report',\n analytics: 'Analytics',\n statistics: 'Statistics',\n metrics: 'Metrics',\n performance: 'Performance',\n security: 'Security',\n privacy: 'Privacy',\n compliance: 'Compliance',\n policy: 'Policy',\n terms: 'Terms',\n conditions: 'Conditions',\n agreement: 'Agreement',\n contract: 'Contract',\n license: 'License',\n copyright: 'Copyright',\n trademark: 'Trademark',\n patent: 'Patent',\n tradeSecret: 'Trade Secret',\n confidential: 'Confidential',\n sensitive: 'Sensitive',\n critical: 'Critical',\n important: 'Important',\n urgent: 'Urgent',\n high: 'High',\n medium: 'Medium',\n low: 'Low',\n none: 'None',\n all: 'All',\n any: 'Any',\n some: 'Some',\n each: 'Each',\n every: 'Every',\n both: 'Both',\n neither: 'Neither',\n either: 'Either',\n other: 'Other',\n another: 'Another',\n this: 'This',\n that: 'That',\n these: 'These',\n those: 'Those',\n here: 'Here',\n there: 'There',\n where: 'Where',\n when: 'When',\n why: 'Why',\n how: 'How',\n what: 'What',\n who: 'Who',\n which: 'Which',\n whose: 'Whose',\n whom: 'Whom',\n myself: 'Myself',\n yourself: 'Yourself',\n himself: 'Himself',\n herself: 'Herself',\n itself: 'Itself',\n ourselves: 'Ourselves',\n yourselves: 'Yourselves',\n themselves: 'Themselves',\n mine: 'Mine',\n yours: 'Yours',\n his: 'His',\n hers: 'Hers',\n its: 'Its',\n ours: 'Ours',\n yours: 'Yours',\n theirs: 'Theirs',\n me: 'Me',\n you: 'You',\n him: 'Him',\n her: 'Her',\n it: 'It',\n us: 'Us',\n them: 'Them',\n my: 'My',\n your: 'Your',\n his: 'His',\n her: 'Her',\n its: 'Its',\n our: 'Our',\n your: 'Your',\n their: 'Their',\n i: 'I',\n you: 'You',\n he: 'He',\n she: 'She',\n it: 'It',\n we: 'We',\n they: 'They',\n am: 'Am',\n is: 'Is',\n are: 'Are',\n was: 'Was',\n were: 'Were',\n be: 'Be',\n been: 'Been',\n being: 'Being',\n have: 'Have',\n has: 'Has',\n had: 'Had',\n having: 'Having',\n do: 'Do',\n does: 'Does',\n did: 'Did',\n doing: 'Doing',\n will: 'Will',\n would: 'Would',\n shall: 'Shall',\n should: 'Should',\n may: 'May',\n might: 'Might',\n can: 'Can',\n could: 'Could',\n must: 'Must',\n need: 'Need',\n dare: 'Dare',\n ought: 'Ought',\n used: 'Used',\n to: 'To',\n of: 'Of',\n in: 'In',\n for: 'For',\n on: 'On',\n with: 'With',\n at: 'At',\n by: 'By',\n from: 'From',\n into: 'Into',\n during: 'During',\n before: 'Before',\n after: 'After',\n above: 'Above',\n below: 'Below',\n between: 'Between',\n under: 'Under',\n over: 'Over',\n across: 'Across',\n through: 'Through',\n into: 'Into',\n towards: 'Towards',\n upon: 'Upon',\n about: 'About',\n against: 'Against',\n among: 'Among',\n along: 'Along',\n around: 'Around',\n beyond: 'Beyond',\n but: 'But',\n despite: 'Despite',\n except: 'Except',\n inside: 'Inside',\n outside: 'Outside',\n since: 'Since',\n until: 'Until',\n unless: 'Unless',\n whether: 'Whether',\n while: 'While',\n although: 'Although',\n because: 'Because',\n if: 'If',\n once: 'Once',\n since: 'Since',\n so: 'So',\n that: 'That',\n though: 'Though',\n till: 'Till',\n unless: 'Unless',\n until: 'Until',\n when: 'When',\n whenever: 'Whenever',\n where: 'Where',\n wherever: 'Wherever',\n whereas: 'Whereas',\n wherever: 'Wherever',\n while: 'While',\n why: 'Why',\n },\n};\n","/**\n * MetonaToast Constants - 常量定义\n * @module constants\n * @version 2.0.0\n * @description 默认配置、颜色、动画、主题等常量\n */\n\n/**\n * 默认配置\n */\nexport const DEFAULTS = Object.freeze({\n // 基础配置\n position: 'top-right',\n duration: 4000,\n max: 6,\n gap: 12,\n offset: 24,\n \n // 交互配置\n pauseOnHover: true,\n closeOnClick: true,\n draggable: true,\n \n // 显示配置\n showProgress: true,\n progressDirection: 'horizontal',\n icon: true,\n closeButton: true,\n \n // 主题配置\n theme: 'auto',\n animation: 'slide',\n \n // 布局配置\n zIndex: 9999,\n width: 360,\n \n // 自定义配置\n className: '',\n style: {},\n \n // 回调函数\n onShow: null,\n onClose: null,\n onClick: null,\n onUpdate: null,\n \n // 高级\n resetTimerOnUpdate: false,\n notifyWhenHidden: false,\n \n // 国际化\n locale: 'zh-CN',\n \n // 插件\n plugins: [],\n});\n\n// Icons — 从 icons.js 导入并重新导出(保持向后兼容)\nimport { ICONS } from './icons.js';\nexport { ICONS };\n\n/**\n * 类型颜色配置\n */\nexport const TYPE_COLORS = {\n success: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n error: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n warning: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n info: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n loading: { fg: '#6366f1', bg: 'rgba(99, 102, 241, 0.1)' },\n default: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n check: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n x: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n alert: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n question: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n star: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n heart: { fg: '#ec4899', bg: 'rgba(236, 72, 153, 0.1)' },\n bell: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n mail: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n settings: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n user: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n home: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n search: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n plus: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n minus: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n edit: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n trash: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n download: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n upload: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n share: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n link: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n external: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n clock: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n calendar: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n map: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n compass: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n globe: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n wifi: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n cloud: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n sun: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n moon: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n zap: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n activity: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n cpu: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n database: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n server: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n terminal: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n code: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n git: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n package: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n layers: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n grid: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n list: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n filter: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n sort: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n refresh: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n sync: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n power: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n battery: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n bluetooth: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n volume: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n mic: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n camera: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n image: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n video: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n music: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n file: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n folder: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n clipboard: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n save: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n print: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n eye: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n eyeOff: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n lock: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n unlock: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n shield: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n key: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n flag: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n bookmark: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n tag: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n gift: { fg: '#ec4899', bg: 'rgba(236, 72, 153, 0.1)' },\n award: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n target: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n crosshair: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n move: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n maximize: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n minimize: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n copy: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n cut: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n paste: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n rotateCw: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n rotateCcw: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n zoomIn: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n zoomOut: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n crop: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n sliders: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n toggleLeft: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n toggleRight: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n checkCircle: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n xCircle: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n alertCircle: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n infoCircle: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n helpCircle: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n alertTriangle: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n checkSquare: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n square: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n circle: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n triangle: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n hexagon: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n octagon: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n pentagon: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n diamond: { fg: '#ec4899', bg: 'rgba(236, 72, 153, 0.1)' },\n};\n\n/**\n * 动画配置\n */\nexport const ANIMATIONS = {\n slide: {\n enter: { transform: 'translateX(80px)', opacity: 0 },\n leave: { transform: 'translateX(120%)', opacity: 0 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n fade: {\n enter: { opacity: 0, filter: 'blur(3px)' },\n leave: { opacity: 0, filter: 'blur(3px)' },\n duration: 500,\n easing: 'ease',\n },\n scale: {\n enter: { transform: 'scale(0.55)', opacity: 0 },\n leave: { transform: 'scale(0.55)', opacity: 0 },\n duration: 450,\n easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n },\n bounce: {\n enter: { transform: 'translateY(-80px)', opacity: 0 },\n leave: { transform: 'translateY(20px)', opacity: 0 },\n duration: 650,\n easing: 'ease',\n },\n flip: {\n enter: { transform: 'perspective(500px) rotateX(-90deg)', opacity: 0 },\n leave: { transform: 'perspective(500px) rotateX(90deg)', opacity: 0 },\n duration: 500,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n rotate: {\n enter: { transform: 'rotate(-25deg) scale(0.6)', opacity: 0 },\n leave: { transform: 'rotate(25deg) scale(0.6)', opacity: 0 },\n duration: 500,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n zoom: {\n enter: { transform: 'scale(0.1)', opacity: 0 },\n leave: { transform: 'scale(0.1)', opacity: 0 },\n duration: 500,\n easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n },\n slideUp: {\n enter: { transform: 'translateY(60px)', opacity: 0 },\n leave: { transform: 'translateY(-120%)', opacity: 0 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n slideDown: {\n enter: { transform: 'translateY(-60px)', opacity: 0 },\n leave: { transform: 'translateY(120%)', opacity: 0 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n slideLeft: {\n enter: { transform: 'translateX(-90px)', opacity: 0 },\n leave: { transform: 'translateX(120%)', opacity: 0 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n slideRight: {\n enter: { transform: 'translateX(90px)', opacity: 0 },\n leave: { transform: 'translateX(-120%)', opacity: 0 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n};\n\n/**\n * 主题配置\n */\nexport const THEMES = {\n light: {\n bg: 'rgba(255, 255, 255, 0.96)',\n text: '#1f2937',\n border: 'rgba(0, 0, 0, 0.06)',\n shadow: '0 10px 36px -10px rgba(0, 0, 0, 0.18), 0 4px 14px -4px rgba(0, 0, 0, 0.08)',\n hoverShadow: '0 14px 48px -10px rgba(0, 0, 0, 0.22), 0 6px 18px -4px rgba(0, 0, 0, 0.10)',\n progressBg: 'rgba(0, 0, 0, 0.06)',\n closeHoverBg: 'rgba(0, 0, 0, 0.06)',\n },\n dark: {\n bg: 'rgba(28, 32, 40, 0.94)',\n text: '#e6e8eb',\n border: 'rgba(255, 255, 255, 0.08)',\n shadow: '0 10px 36px -10px rgba(0, 0, 0, 0.6), 0 4px 14px -4px rgba(0, 0, 0, 0.4)',\n hoverShadow: '0 14px 48px -8px rgba(0, 0, 0, 0.6), 0 6px 18px -4px rgba(0, 0, 0, 0.4)',\n progressBg: 'rgba(255, 255, 255, 0.08)',\n closeHoverBg: 'rgba(255, 255, 255, 0.08)',\n },\n auto: 'auto',\n warm: {\n bg: 'rgba(255, 251, 235, 0.96)',\n text: '#78350f',\n border: 'rgba(245, 158, 11, 0.2)',\n shadow: '0 10px 36px -10px rgba(245, 158, 11, 0.18), 0 4px 14px -4px rgba(245, 158, 11, 0.08)',\n hoverShadow: '0 14px 48px -10px rgba(245, 158, 11, 0.22), 0 6px 18px -4px rgba(245, 158, 11, 0.10)',\n progressBg: 'rgba(245, 158, 11, 0.1)',\n closeHoverBg: 'rgba(245, 158, 11, 0.1)',\n },\n};\n\n/**\n * 位置配置\n */\nexport const POSITIONS = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\n\n/**\n * 类型配置\n */\nexport const TYPES = [\n 'default', 'success', 'error', 'warning', 'info', 'loading',\n 'check', 'x', 'alert', 'question', 'star', 'heart', 'bell', 'mail',\n 'settings', 'user', 'home', 'search', 'plus', 'minus', 'edit', 'trash',\n 'download', 'upload', 'share', 'link', 'external', 'clock', 'calendar',\n 'map', 'compass', 'globe', 'wifi', 'cloud', 'sun', 'moon', 'zap',\n 'activity', 'cpu', 'database', 'server', 'terminal', 'code', 'git',\n 'package', 'layers', 'grid', 'list', 'filter', 'sort', 'refresh', 'sync',\n 'power', 'battery', 'bluetooth', 'volume', 'mic', 'camera', 'image', 'video',\n 'music', 'file', 'folder', 'clipboard', 'save', 'print', 'eye', 'eyeOff',\n 'lock', 'unlock', 'shield', 'key', 'flag', 'bookmark', 'tag', 'gift',\n 'award', 'target', 'crosshair', 'move', 'maximize', 'minimize',\n 'copy', 'cut', 'paste', 'rotateCw', 'rotateCcw', 'zoomIn', 'zoomOut',\n 'crop', 'sliders', 'toggleLeft', 'toggleRight',\n 'checkCircle', 'xCircle', 'alertCircle', 'infoCircle', 'helpCircle',\n 'alertTriangle', 'checkSquare', 'square', 'circle', 'triangle',\n 'hexagon', 'octagon', 'pentagon', 'diamond',\n];\n\n// Locales — 从 locales.js 导入并重新导出(保持向后兼容)\nimport { LOCALES } from './locales.js';\nexport { LOCALES };\n\n/**\n * 进度条方向\n */\nexport const PROGRESS_DIRECTIONS = ['horizontal', 'vertical'];\n\n/**\n * 动画类型\n */\nexport const ANIMATION_TYPES = ['slide', 'fade', 'scale', 'bounce', 'flip', 'rotate', 'zoom', 'slideUp', 'slideDown', 'slideLeft', 'slideRight'];\n\n/**\n * 主题类型\n */\nexport const THEME_TYPES = ['light', 'dark', 'auto'];\n","/**\n * MetonaToast Styles - 样式管理\n * @module styles\n * @version 2.0.0\n * @description 样式注入、更新和主题管理\n */\n\nimport { THEMES } from './constants.js';\n\n// 样式缓存\nlet injectedStyles = null;\nlet styleElement = null;\n\n/**\n * 生成CSS样式\n * @param {Object} theme - 主题配置\n * @returns {string} CSS字符串\n */\nconst generateCSS = (theme) => {\n return `\n /* MetonaToast 基础样式 */\n .met-container {\n pointer-events: none;\n display: flex;\n flex-direction: column;\n gap: 12px;\n box-sizing: border-box;\n padding: 24px;\n max-width: 100vw;\n position: fixed;\n z-index: 9999;\n }\n \n /* 位置样式 — 顶部位置用 column-reverse,新 toast 出现在最上方 */\n .met-container.top-left {\n top: 0;\n left: 0;\n align-items: flex-start;\n flex-direction: column-reverse;\n }\n \n .met-container.top-center {\n top: 0;\n left: 0;\n right: 0;\n align-items: center;\n flex-direction: column-reverse;\n }\n \n .met-container.top-right {\n top: 0;\n right: 0;\n align-items: flex-end;\n flex-direction: column-reverse;\n }\n \n .met-container.bottom-left {\n bottom: 0;\n left: 0;\n align-items: flex-start;\n flex-direction: column-reverse;\n }\n \n .met-container.bottom-center {\n bottom: 0;\n left: 0;\n right: 0;\n align-items: center;\n flex-direction: column-reverse;\n }\n \n .met-container.bottom-right {\n bottom: 0;\n right: 0;\n align-items: flex-end;\n flex-direction: column-reverse;\n }\n \n /* Toast基础样式 */\n .met-toast {\n position: relative;\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 14px 16px;\n border-radius: 12px;\n box-sizing: border-box;\n backdrop-filter: blur(14px) saturate(180%);\n -webkit-backdrop-filter: blur(14px) saturate(180%);\n font: 14px/1.5 -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n user-select: none;\n -webkit-user-select: none;\n transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), \n box-shadow 0.25s ease, \n opacity 0.25s ease;\n will-change: transform, opacity;\n flex-shrink: 0;\n pointer-events: auto;\n min-width: 240px;\n max-width: calc(100vw - 48px);\n width: 360px;\n border: 1px solid var(--met-border, rgba(0,0,0,0.06));\n background: var(--met-bg, rgba(255,255,255,0.96));\n color: var(--met-text, #1f2937);\n box-shadow: var(--met-shadow, 0 10px 36px -10px rgba(0,0,0,0.18), 0 4px 14px -4px rgba(0,0,0,0.08));\n }\n \n /* 悬停效果 */\n .met-toast:hover {\n box-shadow: var(--met-hover-shadow, 0 14px 48px -10px rgba(0,0,0,0.22), 0 6px 18px -4px rgba(0,0,0,0.10)) !important;\n }\n \n /* 可点击状态 */\n .met-toast.met-clickable {\n cursor: pointer;\n }\n \n /* 图标样式 */\n .met-icon {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n margin-top: 1px;\n }\n \n /* 内容样式 */\n .met-content {\n flex: 1;\n min-width: 0;\n word-wrap: break-word;\n overflow-wrap: break-word;\n }\n \n /* 标题样式 */\n .met-title {\n font-weight: 600;\n font-size: 14px;\n letter-spacing: 0.1px;\n }\n \n /* 消息样式 */\n .met-message {\n font-size: 13px;\n opacity: 0.85;\n margin-top: 2px;\n }\n \n /* 关闭按钮样式 */\n .met-close {\n flex-shrink: 0;\n background: transparent;\n border: 0;\n padding: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n transition: background 0.2s, color 0.2s;\n line-height: 0;\n color: inherit;\n opacity: 0.5;\n }\n \n .met-close:hover {\n opacity: 1;\n background: var(--met-close-hover-bg, rgba(0,0,0,0.06));\n }\n \n /* 进度条样式 - 水平 */\n .met-progress {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n height: 3px;\n overflow: hidden;\n background: var(--met-progress-bg, rgba(0,0,0,0.06));\n border-radius: 0 0 12px 12px;\n }\n \n /* 进度条样式 - 垂直 */\n .met-progress-v {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 3px;\n overflow: hidden;\n background: var(--met-progress-bg, rgba(0,0,0,0.06));\n border-radius: 12px 0 0 12px;\n }\n \n /* 进度条指示器 - 水平 */\n .met-bar {\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n width: 100%;\n transform-origin: left;\n transform: scaleX(1);\n }\n \n /* 进度条指示器 - 垂直 */\n .met-bar-v {\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n transform-origin: bottom;\n transform: scaleY(1);\n }\n \n /* 侧边指示器 */\n .met-side {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 4px;\n border-radius: 12px 0 0 12px;\n }\n \n /* 加载动画 */\n .met-spin {\n animation: met-rot 1s linear infinite;\n transform-origin: 50% 50%;\n }\n \n /* 离开状态 */\n .met-toast.met-leaving {\n pointer-events: none;\n z-index: 1;\n }\n \n /* 动画关键帧 */\n @keyframes met-rot {\n to {\n transform: rotate(360deg);\n }\n }\n \n /* === 进入动画:初始隐藏态 === */\n .met-anim-slide.met-toast,\n .met-anim-fade.met-toast,\n .met-anim-scale.met-toast,\n .met-anim-bounce.met-toast,\n .met-anim-flip.met-toast,\n .met-anim-rotate.met-toast,\n .met-anim-zoom.met-toast,\n .met-anim-slideUp.met-toast,\n .met-anim-slideDown.met-toast,\n .met-anim-slideLeft.met-toast,\n .met-anim-slideRight.met-toast {\n opacity: 0;\n }\n \n /* === 进入动画:@keyframes 定义 === */\n @keyframes met-slide-in {\n 0% { transform: translateX(80px); opacity: 0; }\n 65% { transform: translateX(-6px); opacity: 1; }\n 100% { transform: translateX(0); opacity: 1; }\n }\n @keyframes met-fade-in {\n 0% { opacity: 0; filter: blur(3px); }\n 100% { opacity: 1; filter: blur(0); }\n }\n @keyframes met-scale-in {\n 0% { transform: scale(0.55); opacity: 0; }\n 65% { transform: scale(1.07); opacity: 1; }\n 100% { transform: scale(1); opacity: 1; }\n }\n @keyframes met-bounce-in {\n 0% { transform: translateY(-80px); opacity: 0; animation-timing-function: ease-in; }\n 45% { transform: translateY(14px); opacity: 1; animation-timing-function: ease-out; }\n 65% { transform: translateY(-12px); animation-timing-function: ease-in; }\n 82% { transform: translateY(4px); animation-timing-function: ease-out; }\n 100% { transform: translateY(0); opacity: 1; }\n }\n @keyframes met-flip-in {\n 0% { transform: perspective(500px) rotateX(-90deg); opacity: 0; }\n 60% { transform: perspective(500px) rotateX(8deg); opacity: 1; }\n 85% { transform: perspective(500px) rotateX(-2deg); }\n 100% { transform: perspective(500px) rotateX(0); opacity: 1; }\n }\n @keyframes met-rotate-in {\n 0% { transform: rotate(-25deg) scale(0.6); opacity: 0; }\n 60% { transform: rotate(4deg) scale(1.05); opacity: 1; }\n 85% { transform: rotate(-1deg) scale(0.98); }\n 100% { transform: rotate(0) scale(1); opacity: 1; }\n }\n @keyframes met-zoom-in {\n 0% { transform: scale(0.1); opacity: 0; }\n 50% { transform: scale(1.12); opacity: 1; }\n 75% { transform: scale(0.94); }\n 100% { transform: scale(1); opacity: 1; }\n }\n @keyframes met-slideUp-in {\n 0% { transform: translateY(60px); opacity: 0; }\n 70% { transform: translateY(-6px); opacity: 1; }\n 100% { transform: translateY(0); opacity: 1; }\n }\n @keyframes met-slideDown-in {\n 0% { transform: translateY(-60px); opacity: 0; }\n 70% { transform: translateY(6px); opacity: 1; }\n 100% { transform: translateY(0); opacity: 1; }\n }\n @keyframes met-slideLeft-in {\n 0% { transform: translateX(-90px); opacity: 0; }\n 65% { transform: translateX(6px); opacity: 1; }\n 100% { transform: translateX(0); opacity: 1; }\n }\n @keyframes met-slideRight-in {\n 0% { transform: translateX(90px); opacity: 0; }\n 65% { transform: translateX(-6px); opacity: 1; }\n 100% { transform: translateX(0); opacity: 1; }\n }\n \n /* === 进入动画:绑定到 .met-show === */\n .met-anim-slide.met-toast.met-show { animation: met-slide-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n .met-anim-fade.met-toast.met-show { animation: met-fade-in 0.50s ease forwards; }\n .met-anim-scale.met-toast.met-show { animation: met-scale-in 0.45s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }\n .met-anim-bounce.met-toast.met-show { animation: met-bounce-in 0.65s ease forwards; }\n .met-anim-flip.met-toast.met-show { animation: met-flip-in 0.50s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n .met-anim-rotate.met-toast.met-show { animation: met-rotate-in 0.50s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n .met-anim-zoom.met-toast.met-show { animation: met-zoom-in 0.50s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }\n .met-anim-slideUp.met-toast.met-show { animation: met-slideUp-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n .met-anim-slideDown.met-toast.met-show { animation: met-slideDown-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n .met-anim-slideLeft.met-toast.met-show { animation: met-slideLeft-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n .met-anim-slideRight.met-toast.met-show { animation: met-slideRight-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n \n /* 响应式设计 */\n @media (prefers-reduced-motion: reduce) {\n .met-toast {\n transition: opacity 0.15s !important;\n }\n \n .met-toast.met-show {\n animation: none !important;\n opacity: 1 !important;\n }\n \n .met-spin {\n animation-duration: 2.5s !important;\n }\n }\n \n @media (max-width: 480px) {\n .met-container {\n padding: 12px !important;\n }\n \n .met-toast {\n width: 100% !important;\n min-width: 0 !important;\n }\n }\n \n /* 暗色主题特定样式 */\n .met-toast.met-theme-dark {\n background: rgba(28, 32, 40, 0.94);\n color: #e6e8eb;\n border-color: rgba(255, 255, 255, 0.08);\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.6), \n 0 4px 14px -4px rgba(0, 0, 0, 0.4);\n }\n \n .met-toast.met-theme-dark:hover {\n box-shadow: 0 14px 48px -8px rgba(0, 0, 0, 0.6), \n 0 6px 18px -4px rgba(0, 0, 0, 0.4) !important;\n }\n \n .met-toast.met-theme-dark .met-close:hover {\n background: rgba(255, 255, 255, 0.08);\n }\n \n .met-toast.met-theme-dark .met-progress,\n .met-toast.met-theme-dark .met-progress-v {\n background: rgba(255, 255, 255, 0.08);\n }\n \n /* 亮色主题特定样式 */\n .met-toast.met-theme-light {\n background: rgba(255, 255, 255, 0.96);\n color: #1f2937;\n border-color: rgba(0, 0, 0, 0.06);\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.18), \n 0 4px 14px -4px rgba(0, 0, 0, 0.08);\n }\n \n .met-toast.met-theme-light:hover {\n box-shadow: 0 14px 48px -10px rgba(0, 0, 0, 0.22), \n 0 6px 18px -4px rgba(0, 0, 0, 0.10) !important;\n }\n \n .met-toast.met-theme-light .met-close:hover {\n background: rgba(0, 0, 0, 0.06);\n }\n \n .met-toast.met-theme-light .met-progress,\n .met-toast.met-theme-light .met-progress-v {\n background: rgba(0, 0, 0, 0.06);\n }\n \n /* 自定义主题支持 */\n .met-toast[data-theme] {\n --met-bg: var(--met-theme-bg);\n --met-text: var(--met-theme-text);\n --met-border: var(--met-theme-border);\n --met-shadow: var(--met-theme-shadow);\n }\n \n /* 动画性能优化 */\n .met-toast {\n backface-visibility: hidden;\n -webkit-backface-visibility: hidden;\n perspective: 1000;\n }\n \n /* 滚动条样式 */\n .met-container::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n \n .met-container::-webkit-scrollbar-track {\n background: transparent;\n }\n \n .met-container::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.2);\n border-radius: 3px;\n }\n \n .met-container::-webkit-scrollbar-thumb:hover {\n background: rgba(0, 0, 0, 0.3);\n }\n \n /* 打印样式 */\n @media print {\n .met-container {\n display: none !important;\n }\n .met-toast {\n display: none !important;\n }\n }\n \n /* 高对比度模式 */\n @media (forced-colors: active) {\n .met-toast {\n border: 2px solid ButtonText;\n }\n \n .met-close {\n border: 1px solid ButtonText;\n }\n }\n \n /* 焦点样式 */\n .met-toast:focus-visible {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n }\n \n .met-close:focus-visible {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n }\n \n /* 禁用状态 */\n .met-toast:disabled,\n .met-toast[disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n }\n \n /* 加载状态 */\n .met-toast.met-loading {\n cursor: wait;\n }\n \n /* 成功状态 */\n .met-toast.met-success {\n border-left: 4px solid #10b981;\n }\n \n /* 错误状态 */\n .met-toast.met-error {\n border-left: 4px solid #ef4444;\n }\n \n /* 警告状态 */\n .met-toast.met-warning {\n border-left: 4px solid #f59e0b;\n }\n \n /* 信息状态 */\n .met-toast.met-info {\n border-left: 4px solid #3b82f6;\n }\n \n /* 加载状态 */\n .met-toast.met-loading {\n border-left: 4px solid #6366f1;\n }\n \n /* 进度条动画 */\n .met-bar,\n .met-bar-v {\n transition: transform 0.1s linear;\n }\n \n /* 容器动画 */\n .met-container {\n transition: all 0.3s ease;\n }\n \n /* Toast进入动画 */\n .met-toast.met-enter {\n animation: met-enter 0.3s ease forwards;\n }\n \n /* Toast离开动画 */\n .met-toast.met-leave {\n animation: met-leave 0.3s ease forwards;\n }\n \n @keyframes met-enter {\n from {\n opacity: 0;\n transform: translateY(-20px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n \n @keyframes met-leave {\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(-20px);\n }\n }\n \n /* 响应式字体大小 */\n @media (max-width: 768px) {\n .met-toast {\n font-size: 13px;\n }\n \n .met-title {\n font-size: 13px;\n }\n \n .met-message {\n font-size: 12px;\n }\n }\n \n @media (max-width: 480px) {\n .met-toast {\n font-size: 12px;\n padding: 12px 14px;\n }\n \n .met-title {\n font-size: 12px;\n }\n \n .met-message {\n font-size: 11px;\n }\n }\n \n /* 无障碍支持 */\n .met-toast[role=\"alert\"] {\n /* 警告类型Toast的特殊样式 */\n }\n \n .met-toast[role=\"status\"] {\n /* 状态类型Toast的特殊样式 */\n }\n \n /* 高对比度模式增强 */\n @media (prefers-contrast: high) {\n .met-toast {\n border-width: 2px;\n }\n \n .met-close {\n border: 1px solid currentColor;\n }\n }\n \n /* 暗色模式自动检测 */\n @media (prefers-color-scheme: dark) {\n .met-theme-auto .met-toast {\n background: rgba(28, 32, 40, 0.94);\n color: #e6e8eb;\n border-color: rgba(255, 255, 255, 0.08);\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.6), \n 0 4px 14px -4px rgba(0, 0, 0, 0.4);\n }\n \n .met-theme-auto .met-toast:hover {\n box-shadow: 0 14px 48px -8px rgba(0, 0, 0, 0.6), \n 0 6px 18px -4px rgba(0, 0, 0, 0.4) !important;\n }\n \n .met-theme-auto .met-close:hover {\n background: rgba(255, 255, 255, 0.08);\n }\n \n .met-theme-auto .met-progress,\n .met-theme-auto .met-progress-v {\n background: rgba(255, 255, 255, 0.08);\n }\n }\n \n /* 亮色模式自动检测 */\n @media (prefers-color-scheme: light) {\n .met-theme-auto .met-toast {\n background: rgba(255, 255, 255, 0.96);\n color: #1f2937;\n border-color: rgba(0, 0, 0, 0.06);\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.18), \n 0 4px 14px -4px rgba(0, 0, 0, 0.08);\n }\n \n .met-theme-auto .met-toast:hover {\n box-shadow: 0 14px 48px -10px rgba(0, 0, 0, 0.22), \n 0 6px 18px -4px rgba(0, 0, 0, 0.10) !important;\n }\n \n .met-theme-auto .met-close:hover {\n background: rgba(0, 0, 0, 0.06);\n }\n \n .met-theme-auto .met-progress,\n .met-theme-auto .met-progress-v {\n background: rgba(0, 0, 0, 0.06);\n }\n }\n \n /* 动画性能优化 */\n .met-toast {\n transform: translateZ(0);\n -webkit-transform: translateZ(0);\n }\n \n /* 触摸设备优化 */\n @media (hover: none) {\n .met-toast:hover {\n box-shadow: inherit;\n }\n }\n \n /* 滚动时固定位置 */\n .met-container {\n position: fixed;\n z-index: 9999;\n }\n \n /* 全屏模式 */\n :fullscreen .met-container {\n z-index: 2147483647;\n }\n \n /* 画中画模式 */\n :picture-in-picture .met-container {\n z-index: 2147483647;\n }\n \n /* 安全区域适配 */\n @supports (padding: max(0px)) {\n .met-container {\n padding: max(24px, env(safe-area-inset-top)) \n max(24px, env(safe-area-inset-right)) \n max(24px, env(safe-area-inset-bottom)) \n max(24px, env(safe-area-inset-left));\n }\n }\n \n /* 暗色模式安全区域 */\n @media (prefers-color-scheme: dark) {\n @supports (padding: max(0px)) {\n .met-container {\n padding: max(24px, env(safe-area-inset-top)) \n max(24px, env(safe-area-inset-right)) \n max(24px, env(safe-area-inset-bottom)) \n max(24px, env(safe-area-inset-left));\n }\n }\n }\n \n /* 高分辨率屏幕优化 */\n @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {\n .met-toast {\n border-width: 0.5px;\n }\n }\n \n /* 触摸设备优化 */\n @media (hover: none) and (pointer: coarse) {\n .met-toast {\n min-height: 48px;\n }\n \n .met-close {\n min-width: 48px;\n min-height: 48px;\n }\n }\n \n /* 键盘导航优化 */\n .met-toast:focus {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n }\n \n .met-toast:focus:not(:focus-visible) {\n outline: none;\n }\n \n .met-toast:focus-visible {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n }\n \n /* 减少动画模式 */\n @media (prefers-reduced-motion: reduce) {\n .met-toast {\n transition: opacity 0.15s ease !important;\n animation: none !important;\n }\n \n .met-bar,\n .met-bar-v {\n transition: none !important;\n }\n \n .met-container {\n transition: none !important;\n }\n }\n \n /* 高对比度模式 */\n @media (prefers-contrast: high) {\n .met-toast {\n border-width: 3px;\n border-style: solid;\n }\n \n .met-close {\n border: 2px solid currentColor;\n border-radius: 4px;\n }\n \n .met-progress,\n .met-progress-v {\n height: 4px;\n }\n \n .met-bar,\n .met-bar-v {\n height: 100%;\n }\n }\n \n /* 低分辨率屏幕优化 */\n @media (max-resolution: 1dppx) {\n .met-toast {\n border-width: 1px;\n }\n }\n \n /* 触摸设备优化 */\n @media (hover: none) and (pointer: coarse) {\n .met-toast {\n min-height: 52px;\n padding: 16px 18px;\n }\n \n .met-close {\n min-width: 52px;\n min-height: 52px;\n padding: 8px;\n }\n \n .met-icon {\n width: 28px;\n height: 28px;\n }\n }\n \n /* 大屏幕优化 */\n @media (min-width: 1200px) {\n .met-toast {\n width: 400px;\n }\n }\n \n /* 超大屏幕优化 */\n @media (min-width: 1920px) {\n .met-toast {\n width: 440px;\n }\n }\n \n /* 小屏幕优化 */\n @media (max-width: 320px) {\n .met-toast {\n width: 100%;\n min-width: 0;\n padding: 12px 14px;\n }\n \n .met-container {\n padding: 8px;\n }\n }\n \n /* 横屏优化 */\n @media (orientation: landscape) and (max-height: 500px) {\n .met-container {\n padding: 12px 24px;\n }\n \n .met-toast {\n min-height: 44px;\n padding: 10px 14px;\n }\n }\n \n /* 竖屏优化 */\n @media (orientation: portrait) and (max-width: 500px) {\n .met-container {\n padding: 12px;\n }\n \n .met-toast {\n width: 100%;\n min-width: 0;\n }\n }\n \n /* 无障碍支持 */\n .met-toast[aria-live=\"assertive\"] {\n /* 紧急通知样式 */\n }\n \n .met-toast[aria-live=\"polite\"] {\n /* 普通通知样式 */\n }\n \n /* 焦点陷阱 */\n .met-toast:focus-within {\n /* 包含焦点元素的Toast样式 */\n }\n \n /* 加载状态 */\n .met-toast[aria-busy=\"true\"] {\n cursor: wait;\n }\n \n /* 禁用状态 */\n .met-toast[aria-disabled=\"true\"] {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n }\n \n /* 隐藏状态 */\n .met-toast[aria-hidden=\"true\"] {\n display: none;\n }\n \n /* 展开状态 */\n .met-toast[aria-expanded=\"true\"] {\n /* 展开状态样式 */\n }\n \n /* 选中状态 */\n .met-toast[aria-selected=\"true\"] {\n /* 选中状态样式 */\n }\n \n /* 按下状态 */\n .met-toast:active {\n transform: scale(0.98);\n }\n \n /* 加载状态动画 */\n .met-toast.met-loading::after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: linear-gradient(\n 90deg,\n transparent,\n rgba(255, 255, 255, 0.1),\n transparent\n );\n animation: met-loading 1.5s infinite;\n }\n \n @keyframes met-loading {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(100%);\n }\n }\n \n /* 成功状态动画 */\n .met-toast.met-success::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n background: #10b981;\n border-radius: 12px 0 0 12px;\n animation: met-success 0.3s ease;\n }\n \n @keyframes met-success {\n from {\n transform: scaleY(0);\n }\n to {\n transform: scaleY(1);\n }\n }\n \n /* 错误状态动画 */\n .met-toast.met-error::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n background: #ef4444;\n border-radius: 12px 0 0 12px;\n animation: met-error 0.3s ease;\n }\n \n @keyframes met-error {\n from {\n transform: scaleY(0);\n }\n to {\n transform: scaleY(1);\n }\n }\n \n /* 警告状态动画 */\n .met-toast.met-warning::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n background: #f59e0b;\n border-radius: 12px 0 0 12px;\n animation: met-warning 0.3s ease;\n }\n \n @keyframes met-warning {\n from {\n transform: scaleY(0);\n }\n to {\n transform: scaleY(1);\n }\n }\n \n /* 信息状态动画 */\n .met-toast.met-info::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n background: #3b82f6;\n border-radius: 12px 0 0 12px;\n animation: met-info 0.3s ease;\n }\n \n @keyframes met-info {\n from {\n transform: scaleY(0);\n }\n to {\n transform: scaleY(1);\n }\n }\n \n /* 加载状态动画 */\n .met-toast.met-loading::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n background: #6366f1;\n border-radius: 12px 0 0 12px;\n animation: met-loading-bar 1s infinite;\n }\n \n @keyframes met-loading-bar {\n 0% {\n transform: scaleY(0);\n transform-origin: top;\n }\n 50% {\n transform: scaleY(1);\n transform-origin: top;\n }\n 51% {\n transform-origin: bottom;\n }\n 100% {\n transform: scaleY(0);\n transform-origin: bottom;\n }\n }\n \n /* 进度条脉冲动画 */\n .met-bar,\n .met-bar-v {\n animation: met-pulse 2s infinite;\n }\n \n @keyframes met-pulse {\n 0%, 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.8;\n }\n }\n \n /* Toast堆叠效果 */\n .met-toast + .met-toast {\n margin-top: 8px;\n }\n \n /* Toast分组 */\n .met-toast-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n \n /* Toast头部 */\n .met-toast-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 8px;\n }\n \n /* Toast底部 */\n .met-toast-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n margin-top: 12px;\n }\n \n /* Toast操作按钮 */\n .met-toast-action {\n background: transparent;\n border: 1px solid currentColor;\n padding: 6px 12px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n opacity: 0.7;\n transition: opacity 0.2s;\n }\n \n .met-toast-action:hover {\n opacity: 1;\n }\n \n /* Toast进度文本 */\n .met-toast-progress-text {\n font-size: 12px;\n opacity: 0.7;\n margin-left: 8px;\n }\n \n /* Toast时间戳 */\n .met-toast-timestamp {\n font-size: 11px;\n opacity: 0.5;\n margin-left: auto;\n }\n \n /* Toast头像 */\n .met-toast-avatar {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n object-fit: cover;\n flex-shrink: 0;\n }\n \n /* Toast图片 */\n .met-toast-image {\n max-width: 100%;\n max-height: 200px;\n border-radius: 8px;\n margin-top: 8px;\n object-fit: cover;\n }\n \n /* Toast视频 */\n .met-toast-video {\n max-width: 100%;\n max-height: 200px;\n border-radius: 8px;\n margin-top: 8px;\n }\n \n /* Toast音频 */\n .met-toast-audio {\n width: 100%;\n margin-top: 8px;\n }\n \n /* Toast代码块 */\n .met-toast-code {\n background: rgba(0, 0, 0, 0.05);\n padding: 8px 12px;\n border-radius: 6px;\n font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;\n font-size: 12px;\n margin-top: 8px;\n overflow-x: auto;\n }\n \n .met-theme-dark .met-toast-code {\n background: rgba(255, 255, 255, 0.05);\n }\n \n /* Toast引用 */\n .met-toast-quote {\n border-left: 3px solid currentColor;\n padding-left: 12px;\n margin-top: 8px;\n opacity: 0.8;\n }\n \n /* Toast列表 */\n .met-toast-list {\n margin: 8px 0 0 0;\n padding-left: 20px;\n }\n \n .met-toast-list li {\n margin-bottom: 4px;\n }\n \n /* Toast表格 */\n .met-toast-table {\n width: 100%;\n border-collapse: collapse;\n margin-top: 8px;\n font-size: 12px;\n }\n \n .met-toast-table th,\n .met-toast-table td {\n border: 1px solid rgba(0, 0, 0, 0.1);\n padding: 6px 8px;\n text-align: left;\n }\n \n .met-theme-dark .met-toast-table th,\n .met-theme-dark .met-toast-table td {\n border-color: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-table th {\n background: rgba(0, 0, 0, 0.05);\n font-weight: 600;\n }\n \n .met-theme-dark .met-toast-table th {\n background: rgba(255, 255, 255, 0.05);\n }\n \n /* Toast分割线 */\n .met-toast-divider {\n height: 1px;\n background: rgba(0, 0, 0, 0.1);\n margin: 12px 0;\n }\n \n .met-theme-dark .met-toast-divider {\n background: rgba(255, 255, 255, 0.1);\n }\n \n /* Toast标签 */\n .met-toast-tag {\n display: inline-block;\n background: rgba(0, 0, 0, 0.05);\n padding: 2px 8px;\n border-radius: 4px;\n font-size: 11px;\n margin-right: 4px;\n margin-bottom: 4px;\n }\n \n .met-theme-dark .met-toast-tag {\n background: rgba(255, 255, 255, 0.05);\n }\n \n /* Toast徽章 */\n .met-toast-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: #3b82f6;\n color: white;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n min-width: 20px;\n height: 20px;\n }\n \n /* Toast进度环 */\n .met-toast-progress-ring {\n width: 40px;\n height: 40px;\n transform: rotate(-90deg);\n }\n \n .met-toast-progress-ring circle {\n fill: none;\n stroke-width: 3;\n stroke-linecap: round;\n }\n \n .met-toast-progress-ring .met-progress-ring-bg {\n stroke: rgba(0, 0, 0, 0.1);\n }\n \n .met-theme-dark .met-toast-progress-ring .met-progress-ring-bg {\n stroke: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-progress-ring .met-progress-ring-fill {\n stroke: #3b82f6;\n stroke-dasharray: 100;\n stroke-dashoffset: 100;\n transition: stroke-dashoffset 0.3s ease;\n }\n \n /* Toast滑块 */\n .met-toast-slider {\n width: 100%;\n height: 4px;\n background: rgba(0, 0, 0, 0.1);\n border-radius: 2px;\n margin-top: 8px;\n position: relative;\n }\n \n .met-theme-dark .met-toast-slider {\n background: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-slider-fill {\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n background: #3b82f6;\n border-radius: 2px;\n transition: width 0.3s ease;\n }\n \n /* Toast开关 */\n .met-toast-switch {\n position: relative;\n display: inline-block;\n width: 36px;\n height: 20px;\n margin-top: 8px;\n }\n \n .met-toast-switch input {\n opacity: 0;\n width: 0;\n height: 0;\n }\n \n .met-toast-switch-slider {\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.1);\n border-radius: 20px;\n transition: 0.3s;\n }\n \n .met-theme-dark .met-toast-switch-slider {\n background: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-switch-slider:before {\n content: '';\n position: absolute;\n height: 16px;\n width: 16px;\n left: 2px;\n bottom: 2px;\n background: white;\n border-radius: 50%;\n transition: 0.3s;\n }\n \n .met-toast-switch input:checked + .met-toast-switch-slider {\n background: #3b82f6;\n }\n \n .met-toast-switch input:checked + .met-toast-switch-slider:before {\n transform: translateX(16px);\n }\n \n /* Toast复选框 */\n .met-toast-checkbox {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n cursor: pointer;\n }\n \n .met-toast-checkbox input {\n width: 16px;\n height: 16px;\n cursor: pointer;\n }\n \n /* Toast单选框 */\n .met-toast-radio {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n cursor: pointer;\n }\n \n .met-toast-radio input {\n width: 16px;\n height: 16px;\n cursor: pointer;\n }\n \n /* Toast输入框 */\n .met-toast-input {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 6px;\n font-size: 13px;\n margin-top: 8px;\n background: transparent;\n color: inherit;\n }\n \n .met-theme-dark .met-toast-input {\n border-color: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-input:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\n }\n \n /* Toast文本域 */\n .met-toast-textarea {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 6px;\n font-size: 13px;\n margin-top: 8px;\n background: transparent;\n color: inherit;\n resize: vertical;\n min-height: 80px;\n }\n \n .met-theme-dark .met-toast-textarea {\n border-color: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-textarea:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\n }\n \n /* Toast选择框 */\n .met-toast-select {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 6px;\n font-size: 13px;\n margin-top: 8px;\n background: transparent;\n color: inherit;\n cursor: pointer;\n }\n \n .met-theme-dark .met-toast-select {\n border-color: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-select:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\n }\n \n /* Toast下拉菜单 */\n .met-toast-dropdown {\n position: relative;\n display: inline-block;\n }\n \n .met-toast-dropdown-content {\n display: none;\n position: absolute;\n background: ${theme.bg};\n min-width: 160px;\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n z-index: 1;\n padding: 8px 0;\n margin-top: 4px;\n }\n \n .met-theme-dark .met-toast-dropdown-content {\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);\n }\n \n .met-toast-dropdown:hover .met-toast-dropdown-content {\n display: block;\n }\n \n .met-toast-dropdown-item {\n padding: 8px 16px;\n cursor: pointer;\n font-size: 13px;\n }\n \n .met-toast-dropdown-item:hover {\n background: rgba(0, 0, 0, 0.05);\n }\n \n .met-theme-dark .met-toast-dropdown-item:hover {\n background: rgba(255, 255, 255, 0.05);\n }\n \n /* Toast工具提示 */\n .met-toast-tooltip {\n position: relative;\n display: inline-block;\n }\n \n .met-toast-tooltip .met-toast-tooltip-text {\n visibility: hidden;\n width: 120px;\n background: ${theme.bg};\n color: ${theme.text};\n text-align: center;\n border-radius: 6px;\n padding: 6px 8px;\n position: absolute;\n z-index: 1;\n bottom: 125%;\n left: 50%;\n margin-left: -60px;\n opacity: 0;\n transition: opacity 0.3s;\n font-size: 12px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n }\n \n .met-theme-dark .met-toast-tooltip .met-toast-tooltip-text {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n }\n \n .met-toast-tooltip:hover .met-toast-tooltip-text {\n visibility: visible;\n opacity: 1;\n }\n \n /* Toast弹出框 */\n .met-toast-popover {\n position: relative;\n display: inline-block;\n }\n \n .met-toast-popover .met-toast-popover-content {\n visibility: hidden;\n background: ${theme.bg};\n color: ${theme.text};\n border-radius: 8px;\n padding: 12px 16px;\n position: absolute;\n z-index: 1;\n bottom: 125%;\n left: 50%;\n transform: translateX(-50%);\n opacity: 0;\n transition: opacity 0.3s;\n min-width: 200px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);\n }\n \n .met-theme-dark .met-toast-popover .met-toast-popover-content {\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\n }\n \n .met-toast-popover:hover .met-toast-popover-content {\n visibility: visible;\n opacity: 1;\n }\n \n /* Toast模态框 */\n .met-toast-modal {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10000;\n }\n \n .met-toast-modal-content {\n background: ${theme.bg};\n color: ${theme.text};\n border-radius: 12px;\n padding: 24px;\n max-width: 500px;\n width: 90%;\n max-height: 80vh;\n overflow-y: auto;\n }\n \n /* Toast抽屉 */\n .met-toast-drawer {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.5);\n z-index: 10000;\n }\n \n .met-toast-drawer-content {\n position: absolute;\n top: 0;\n right: 0;\n width: 300px;\n height: 100%;\n background: ${theme.bg};\n color: ${theme.text};\n padding: 24px;\n transform: translateX(100%);\n transition: transform 0.3s ease;\n }\n \n .met-toast-drawer.open .met-toast-drawer-content {\n transform: translateX(0);\n }\n \n /* Toast通知栏 */\n .met-toast-notification-bar {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n background: ${theme.bg};\n color: ${theme.text};\n padding: 12px 24px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n z-index: 9999;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n }\n \n /* Toast状态栏 */\n .met-toast-status-bar {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n background: ${theme.bg};\n color: ${theme.text};\n padding: 8px 24px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n z-index: 9999;\n font-size: 12px;\n box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.1);\n }\n `;\n};\n\n/**\n * 注入样式\n * @param {Object} theme - 主题配置\n */\nexport const injectStyles = (theme = THEMES.light) => {\n // 检查是否在浏览器环境\n if (typeof document === 'undefined') return;\n \n // 检查是否已注入\n if (styleElement && document.getElementById('metona-toast-styles')) {\n return;\n }\n \n // 生成CSS\n const css = generateCSS(theme);\n \n // 创建样式元素\n styleElement = document.createElement('style');\n styleElement.id = 'metona-toast-styles';\n styleElement.textContent = css.replace(/\\s+/g, ' ');\n \n // 添加到文档头\n document.head.appendChild(styleElement);\n \n // 缓存样式\n injectedStyles = css;\n};\n\n/**\n * 更新样式\n * @param {Object} theme - 新主题配置\n */\nexport const updateStyles = (theme) => {\n if (!styleElement) {\n injectStyles(theme);\n return;\n }\n \n const css = generateCSS(theme);\n styleElement.textContent = css.replace(/\\s+/g, ' ');\n injectedStyles = css;\n};\n\n/**\n * 移除样式\n */\nexport const removeStyles = () => {\n if (styleElement && styleElement.parentNode) {\n styleElement.parentNode.removeChild(styleElement);\n }\n \n styleElement = null;\n injectedStyles = null;\n};\n\n/**\n * 获取当前样式\n * @returns {string|null} 当前CSS字符串\n */\nexport const getStyles = () => {\n return injectedStyles;\n};\n\n/**\n * 检查样式是否已注入\n * @returns {boolean} 是否已注入\n */\nexport const isStylesInjected = () => {\n return !!styleElement && !!document.getElementById('metona-toast-styles');\n};\n\n/**\n * 重置样式\n */\nexport const resetStyles = () => {\n removeStyles();\n injectStyles();\n};\n\n/**\n * 添加自定义CSS\n * @param {string} css - CSS字符串\n */\nexport const addCustomCSS = (css) => {\n if (!styleElement) {\n injectStyles();\n }\n \n const customStyle = document.createElement('style');\n customStyle.id = 'metona-toast-custom-styles';\n customStyle.textContent = css;\n document.head.appendChild(customStyle);\n};\n\n/**\n * 移除自定义CSS\n */\nexport const removeCustomCSS = () => {\n const customStyle = document.getElementById('metona-toast-custom-styles');\n if (customStyle && customStyle.parentNode) {\n customStyle.parentNode.removeChild(customStyle);\n }\n};\n\n/**\n * 生成主题变量\n * @param {Object} theme - 主题配置\n * @returns {string} CSS变量字符串\n */\nexport const generateThemeVariables = (theme) => {\n return `\n :root {\n --met-theme-bg: ${theme.bg};\n --met-theme-text: ${theme.text};\n --met-theme-border: ${theme.border};\n --met-theme-shadow: ${theme.shadow};\n --met-theme-hover-shadow: ${theme.hoverShadow};\n --met-theme-progress-bg: ${theme.progressBg};\n --met-theme-close-hover-bg: ${theme.closeHoverBg};\n }\n `;\n};\n\n/**\n * 应用主题变量\n * @param {Object} theme - 主题配置\n */\nexport const applyThemeVariables = (theme) => {\n const css = generateThemeVariables(theme);\n addCustomCSS(css);\n};\n\n/**\n * 清除主题变量\n */\nexport const clearThemeVariables = () => {\n removeCustomCSS();\n};\n\n/**\n * 获取系统主题\n * @returns {string} 系统主题\n */\nexport const getSystemTheme = () => {\n if (typeof window === 'undefined') return 'light';\n \n return window.matchMedia && \n window.matchMedia('(prefers-color-scheme: dark)').matches \n ? 'dark' \n : 'light';\n};\n\n/**\n * 监听系统主题变化\n * @param {Function} callback - 回调函数\n * @returns {Function} 取消监听函数\n */\nexport const watchSystemTheme = (callback) => {\n if (typeof window === 'undefined' || !window.matchMedia) {\n return () => {};\n }\n \n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n \n const handler = (e) => {\n callback(e.matches ? 'dark' : 'light');\n };\n \n mediaQuery.addEventListener('change', handler);\n \n return () => {\n mediaQuery.removeEventListener('change', handler);\n };\n};\n\n/**\n * 自动应用系统主题\n * @returns {Function} 取消监听函数\n */\nexport const autoApplySystemTheme = () => {\n const applyTheme = (theme) => {\n updateStyles(THEMES[theme]);\n applyThemeVariables(THEMES[theme]);\n };\n \n // 应用当前系统主题\n applyTheme(getSystemTheme());\n \n // 监听系统主题变化\n return watchSystemTheme(applyTheme);\n};\n","/**\n * MetonaToast Themes - 主题管理\n * @module themes\n * @version 2.0.0\n * @description 主题系统、自定义主题和主题切换\n */\n\nimport { THEMES } from './constants.js';\nimport { prefersDark } from './utils.js';\n\n// 当前主题状态\nlet currentTheme = 'auto';\nlet themeListeners = new Set();\nlet systemThemeMediaQuery = null;\nlet systemThemeListener = null;\n\n/**\n * 获取系统主题\n * @returns {string} 系统主题 ('light' 或 'dark')\n */\nexport const getSystemTheme = () => {\n if (typeof window === 'undefined') return 'light';\n return prefersDark() ? 'dark' : 'light';\n};\n\n/**\n * 获取主题(别名)\n * @param {string} theme - 主题名称\n * @returns {string} 解析后的主题\n */\nexport const getTheme = (theme) => {\n return resolveTheme(theme);\n};\n\n/**\n * 解析主题\n * @param {string} theme - 主题名称\n * @returns {string} 解析后的主题\n */\nexport const resolveTheme = (theme) => {\n if (theme === 'auto') {\n // 优先使用用户设置的全局主题,否则使用系统主题\n if (currentTheme && currentTheme !== 'auto') {\n return currentTheme;\n }\n return getSystemTheme();\n }\n return theme;\n};\n\n/**\n * 获取主题配置\n * @param {string} theme - 主题名称\n * @returns {Object} 主题配置\n */\nexport const getThemeConfig = (theme) => {\n const resolved = resolveTheme(theme);\n return THEMES[resolved] || THEMES.light;\n};\n\n/**\n * 应用主题\n * @param {string} theme - 主题名称\n */\nexport const applyTheme = (theme) => {\n currentTheme = theme;\n const resolved = resolveTheme(theme);\n \n // 应用主题到文档\n if (typeof document !== 'undefined') {\n document.documentElement.setAttribute('data-met-theme', resolved);\n document.documentElement.classList.remove('met-theme-light', 'met-theme-dark', 'met-theme-auto');\n document.documentElement.classList.add(`met-theme-${resolved}`);\n \n // 设置CSS变量\n const config = getThemeConfig(theme);\n setThemeVariables(config);\n }\n \n // 通知监听器\n notifyThemeListeners(theme, resolved);\n};\n\n/**\n * 设置主题CSS变量\n * @param {Object} config - 主题配置\n */\nexport const setThemeVariables = (config) => {\n if (typeof document === 'undefined') return;\n \n const root = document.documentElement;\n root.style.setProperty('--met-bg', config.bg);\n root.style.setProperty('--met-text', config.text);\n root.style.setProperty('--met-border', config.border);\n root.style.setProperty('--met-shadow', config.shadow);\n root.style.setProperty('--met-hover-shadow', config.hoverShadow);\n root.style.setProperty('--met-progress-bg', config.progressBg);\n root.style.setProperty('--met-close-hover-bg', config.closeHoverBg);\n \n // 设置颜色变量\n root.style.setProperty('--met-success', '#10b981');\n root.style.setProperty('--met-error', '#ef4444');\n root.style.setProperty('--met-warning', '#f59e0b');\n root.style.setProperty('--met-info', '#3b82f6');\n root.style.setProperty('--met-loading', '#6366f1');\n};\n\n/**\n * 清除主题CSS变量\n */\nexport const clearThemeVariables = () => {\n if (typeof document === 'undefined') return;\n \n const root = document.documentElement;\n const variables = [\n '--met-bg',\n '--met-text',\n '--met-border',\n '--met-shadow',\n '--met-hover-shadow',\n '--met-progress-bg',\n '--met-close-hover-bg',\n '--met-success',\n '--met-error',\n '--met-warning',\n '--met-info',\n '--met-loading',\n ];\n \n variables.forEach((variable) => {\n root.style.removeProperty(variable);\n });\n};\n\n/**\n * 获取当前主题\n * @returns {string} 当前主题\n */\nexport const getCurrentTheme = () => {\n return currentTheme;\n};\n\n/**\n * 获取解析后的主题\n * @returns {string} 解析后的主题\n */\nexport const getResolvedTheme = () => {\n return resolveTheme(currentTheme);\n};\n\n/**\n * 切换主题\n * @param {string} theme - 新主题\n */\nexport const switchTheme = (theme) => {\n applyTheme(theme);\n saveTheme(theme);\n};\n\n/**\n * 切换亮色/暗色主题\n */\nexport const toggleTheme = () => {\n const resolved = getResolvedTheme();\n const newTheme = resolved === 'dark' ? 'light' : 'dark';\n switchTheme(newTheme);\n};\n\n/**\n * 重置为自动主题\n */\nexport const resetToAuto = () => {\n switchTheme('auto');\n};\n\n/**\n * 保存主题到本地存储\n * @param {string} theme - 主题名称\n */\nexport const saveTheme = (theme) => {\n if (typeof localStorage !== 'undefined') {\n try {\n localStorage.setItem('metona-toast-theme', theme);\n } catch (e) {\n console.warn('Failed to save theme:', e);\n }\n }\n};\n\n/**\n * 从本地存储加载主题\n * @returns {string} 主题名称\n */\nexport const loadTheme = () => {\n if (typeof localStorage !== 'undefined') {\n try {\n return localStorage.getItem('metona-toast-theme') || 'auto';\n } catch (e) {\n console.warn('Failed to load theme:', e);\n }\n }\n return 'auto';\n};\n\n/**\n * 初始化主题系统\n */\nexport const initTheme = () => {\n // 加载保存的主题\n const savedTheme = loadTheme();\n applyTheme(savedTheme);\n \n // 监听系统主题变化\n watchSystemTheme();\n};\n\n/**\n * 监听系统主题变化\n */\nexport const watchSystemTheme = () => {\n if (typeof window === 'undefined' || !window.matchMedia) return;\n \n // 移除旧的监听器\n if (systemThemeMediaQuery && systemThemeListener) {\n systemThemeMediaQuery.removeEventListener('change', systemThemeListener);\n }\n \n // 创建新的监听器\n systemThemeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n systemThemeListener = (e) => {\n if (currentTheme === 'auto') {\n applyTheme('auto');\n }\n };\n \n systemThemeMediaQuery.addEventListener('change', systemThemeListener);\n};\n\n/**\n * 停止监听系统主题变化\n */\nexport const unwatchSystemTheme = () => {\n if (systemThemeMediaQuery && systemThemeListener) {\n systemThemeMediaQuery.removeEventListener('change', systemThemeListener);\n systemThemeMediaQuery = null;\n systemThemeListener = null;\n }\n};\n\n/**\n * 添加主题监听器\n * @param {Function} listener - 监听器函数\n * @returns {Function} 移除监听器函数\n */\nexport const addThemeListener = (listener) => {\n themeListeners.add(listener);\n \n return () => {\n themeListeners.delete(listener);\n };\n};\n\n/**\n * 移除主题监听器\n * @param {Function} listener - 监听器函数\n */\nexport const removeThemeListener = (listener) => {\n themeListeners.delete(listener);\n};\n\n/**\n * 通知主题监听器\n * @param {string} theme - 主题名称\n * @param {string} resolved - 解析后的主题\n */\nconst notifyThemeListeners = (theme, resolved) => {\n themeListeners.forEach((listener) => {\n try {\n listener(theme, resolved);\n } catch (e) {\n console.error('Theme listener error:', e);\n }\n });\n};\n\n/**\n * 清除所有主题监听器\n */\nexport const clearThemeListeners = () => {\n themeListeners.clear();\n};\n\n/**\n * 注册自定义主题\n * @param {string} name - 主题名称\n * @param {Object} config - 主题配置\n */\nexport const registerTheme = (name, config) => {\n THEMES[name] = {\n bg: config.bg || THEMES.light.bg,\n text: config.text || THEMES.light.text,\n border: config.border || THEMES.light.border,\n shadow: config.shadow || THEMES.light.shadow,\n hoverShadow: config.hoverShadow || THEMES.light.hoverShadow,\n progressBg: config.progressBg || THEMES.light.progressBg,\n closeHoverBg: config.closeHoverBg || THEMES.light.closeHoverBg,\n };\n};\n\n/**\n * 注销自定义主题\n * @param {string} name - 主题名称\n */\nexport const unregisterTheme = (name) => {\n if (name === 'light' || name === 'dark' || name === 'auto') {\n console.warn('Cannot unregister built-in theme:', name);\n return;\n }\n \n delete THEMES[name];\n};\n\n/**\n * 获取所有主题\n * @returns {Object} 主题映射\n */\nexport const getAllThemes = () => {\n return { ...THEMES };\n};\n\n/**\n * 获取主题名称列表\n * @returns {Array} 主题名称数组\n */\nexport const getThemeNames = () => {\n return Object.keys(THEMES);\n};\n\n/**\n * 检查主题是否存在\n * @param {string} name - 主题名称\n * @returns {boolean} 是否存在\n */\nexport const hasTheme = (name) => {\n return name in THEMES;\n};\n\n/**\n * 获取主题预览\n * @param {string} theme - 主题名称\n * @returns {Object} 主题预览\n */\nexport const getThemePreview = (theme) => {\n const config = getThemeConfig(theme);\n const resolved = resolveTheme(theme);\n \n return {\n name: theme,\n resolved,\n colors: {\n background: config.bg,\n text: config.text,\n border: config.border,\n },\n isDark: resolved === 'dark',\n isLight: resolved === 'light',\n isAuto: theme === 'auto',\n };\n};\n\n/**\n * 生成主题CSS\n * @param {string} theme - 主题名称\n * @returns {string} CSS字符串\n */\nexport const generateThemeCSS = (theme) => {\n const config = getThemeConfig(theme);\n const resolved = resolveTheme(theme);\n \n return `\n .met-theme-${resolved} {\n --met-bg: ${config.bg};\n --met-text: ${config.text};\n --met-border: ${config.border};\n --met-shadow: ${config.shadow};\n --met-hover-shadow: ${config.hoverShadow};\n --met-progress-bg: ${config.progressBg};\n --met-close-hover-bg: ${config.closeHoverBg};\n }\n `;\n};\n\n/**\n * 应用主题CSS\n * @param {string} theme - 主题名称\n */\nexport const applyThemeCSS = (theme) => {\n if (typeof document === 'undefined') return;\n \n const css = generateThemeCSS(theme);\n const styleId = 'metona-toast-theme-css';\n \n // 移除旧样式\n const oldStyle = document.getElementById(styleId);\n if (oldStyle) {\n oldStyle.remove();\n }\n \n // 添加新样式\n const style = document.createElement('style');\n style.id = styleId;\n style.textContent = css;\n document.head.appendChild(style);\n};\n\n/**\n * 移除主题CSS\n */\nexport const removeThemeCSS = () => {\n if (typeof document === 'undefined') return;\n \n const styleId = 'metona-toast-theme-css';\n const style = document.getElementById(styleId);\n if (style) {\n style.remove();\n }\n};\n\n/**\n * 主题工具 — 代理层,直接引用模块函数\n */\nexport const themeUtils = {\n getSystemTheme,\n resolveTheme,\n getThemeConfig,\n applyTheme,\n getCurrentTheme,\n getResolvedTheme,\n switchTheme,\n toggleTheme,\n resetToAuto,\n initTheme,\n watchSystemTheme,\n unwatchSystemTheme,\n addThemeListener,\n removeThemeListener,\n clearThemeListeners,\n registerTheme,\n unregisterTheme,\n getAllThemes,\n getThemeNames,\n hasTheme,\n getThemePreview,\n generateThemeCSS,\n applyThemeCSS,\n removeThemeCSS,\n saveTheme,\n loadTheme,\n};\n\n/**\n * 预设主题\n */\nexport const presetThemes = {\n /**\n * 浅色主题\n */\n light: {\n name: '浅色',\n description: '明亮清晰的主题',\n config: THEMES.light,\n },\n \n /**\n * 深色主题\n */\n dark: {\n name: '深色',\n description: '护眼舒适的暗色主题',\n config: THEMES.dark,\n },\n \n /**\n * 自动主题\n */\n auto: {\n name: '自动',\n description: '跟随系统主题设置',\n config: 'auto',\n },\n \n warm: {\n name: '暖色',\n description: '温馨舒适的暖色主题',\n config: THEMES.warm,\n },\n};\n\n// 注册预设主题\nObject.entries(presetThemes).forEach(([name, theme]) => {\n if (name !== 'auto' && theme.config !== 'auto') {\n THEMES[name] = theme.config;\n }\n});\n\n/**\n * 创建主题管理器\n * @returns {Object} 主题管理器\n */\nexport const createThemeManager = () => {\n return {\n getSystemTheme,\n resolveTheme,\n getThemeConfig,\n applyTheme,\n getCurrentTheme,\n getResolvedTheme,\n switchTheme,\n toggleTheme,\n resetToAuto,\n initTheme,\n watchSystemTheme,\n unwatchSystemTheme,\n addThemeListener,\n removeThemeListener,\n clearThemeListeners,\n registerTheme,\n unregisterTheme,\n getAllThemes,\n getThemeNames,\n hasTheme,\n getThemePreview,\n generateThemeCSS,\n applyThemeCSS,\n removeThemeCSS,\n saveTheme,\n loadTheme,\n };\n};\n\nexport { themeUtils as default };\n","/**\n * MetonaToast i18n - 国际化管理\n * @module i18n\n * @version 2.0.0\n * @description 多语言支持、语言切换和翻译管理\n */\n\nimport { LOCALES } from './constants.js';\n\n// 当前语言状态\nlet currentLocale = 'zh-CN';\nlet localeListeners = new Set();\nlet fallbackLocale = 'zh-CN';\n\n/**\n * 获取当前语言\n * @returns {string} 当前语言\n */\nexport const getCurrentLocale = () => {\n return currentLocale;\n};\n\n/**\n * 设置当前语言\n * @param {string} locale - 语言代码\n */\nexport const setCurrentLocale = (locale) => {\n if (!LOCALES[locale]) {\n console.warn(`Locale \"${locale}\" not found, falling back to \"${fallbackLocale}\"`);\n locale = fallbackLocale;\n }\n \n currentLocale = locale;\n notifyLocaleListeners(locale);\n saveLocale(locale);\n};\n\n/**\n * 获取回退语言\n * @returns {string} 回退语言\n */\nexport const getFallbackLocale = () => {\n return fallbackLocale;\n};\n\n/**\n * 设置回退语言\n * @param {string} locale - 语言代码\n */\nexport const setFallbackLocale = (locale) => {\n if (!LOCALES[locale]) {\n console.warn(`Fallback locale \"${locale}\" not found`);\n return;\n }\n \n fallbackLocale = locale;\n};\n\n/**\n * 翻译函数\n * @param {string} key - 翻译键\n * @param {Object} params - 插值参数\n * @returns {string} 翻译后的字符串\n */\nexport const t = (key, params = {}) => {\n // 尝试当前语言\n const currentTranslation = getTranslation(currentLocale, key);\n if (currentTranslation !== undefined) {\n return interpolate(currentTranslation, params);\n }\n \n // 尝试回退语言\n if (currentLocale !== fallbackLocale) {\n const fallbackTranslation = getTranslation(fallbackLocale, key);\n if (fallbackTranslation !== undefined) {\n return interpolate(fallbackTranslation, params);\n }\n }\n \n // 返回键名\n console.warn(`Translation missing for key \"${key}\" in locale \"${currentLocale}\"`);\n return key;\n};\n\n/**\n * 获取翻译\n * @param {string} locale - 语言代码\n * @param {string} key - 翻译键\n * @returns {string|undefined} 翻译字符串\n */\nconst getTranslation = (locale, key) => {\n const localeData = LOCALES[locale];\n if (!localeData) return undefined;\n \n // 支持嵌套键 (如 'common.close')\n const keys = key.split('.');\n let result = localeData;\n \n for (const k of keys) {\n if (result && typeof result === 'object' && k in result) {\n result = result[k];\n } else {\n return undefined;\n }\n }\n \n return typeof result === 'string' ? result : undefined;\n};\n\n/**\n * 插值函数\n * @param {string} str - 包含占位符的字符串\n * @param {Object} params - 插值参数\n * @returns {string} 插值后的字符串\n */\nconst interpolate = (str, params) => {\n return str.replace(/\\{(\\w+)\\}/g, (match, key) => {\n return params[key] !== undefined ? params[key] : match;\n });\n};\n\n/**\n * 检查翻译是否存在\n * @param {string} key - 翻译键\n * @returns {boolean} 是否存在\n */\nexport const hasTranslation = (key) => {\n return getTranslation(currentLocale, key) !== undefined ||\n getTranslation(fallbackLocale, key) !== undefined;\n};\n\n/**\n * 获取所有翻译\n * @param {string} locale - 语言代码\n * @returns {Object} 翻译对象\n */\nexport const getTranslations = (locale) => {\n return LOCALES[locale] || {};\n};\n\n/**\n * 添加翻译\n * @param {string} locale - 语言代码\n * @param {Object} translations - 翻译对象\n */\nexport const addTranslations = (locale, translations) => {\n if (!LOCALES[locale]) {\n LOCALES[locale] = {};\n }\n \n deepMerge(LOCALES[locale], translations);\n};\n\n/**\n * 深度合并对象\n * @param {Object} target - 目标对象\n * @param {Object} source - 源对象\n * @returns {Object} 合并后的对象\n */\nconst deepMerge = (target, source) => {\n for (const key in source) {\n if (source[key] instanceof Object && key in target && target[key] instanceof Object) {\n deepMerge(target[key], source[key]);\n } else {\n target[key] = source[key];\n }\n }\n return target;\n};\n\n/**\n * 移除翻译\n * @param {string} locale - 语言代码\n * @param {string} key - 翻译键\n */\nexport const removeTranslation = (locale, key) => {\n const localeData = LOCALES[locale];\n if (!localeData) return;\n \n const keys = key.split('.');\n let current = localeData;\n \n for (let i = 0; i < keys.length - 1; i++) {\n if (current[keys[i]] && typeof current[keys[i]] === 'object') {\n current = current[keys[i]];\n } else {\n return;\n }\n }\n \n delete current[keys[keys.length - 1]];\n};\n\n/**\n * 清除翻译\n * @param {string} locale - 语言代码\n */\nexport const clearTranslations = (locale) => {\n if (LOCALES[locale]) {\n LOCALES[locale] = {};\n }\n};\n\n/**\n * 获取支持的语言列表\n * @returns {Array} 语言代码数组\n */\nexport const getSupportedLocales = () => {\n return Object.keys(LOCALES);\n};\n\n/**\n * 检查语言是否支持\n * @param {string} locale - 语言代码\n * @returns {boolean} 是否支持\n */\nexport const isLocaleSupported = (locale) => {\n return locale in LOCALES;\n};\n\n/**\n * 获取语言名称\n * @param {string} locale - 语言代码\n * @returns {string} 语言名称\n */\nexport const getLocaleName = (locale) => {\n const names = {\n 'zh-CN': '简体中文',\n 'zh-TW': '繁體中文',\n 'en-US': 'English (US)',\n 'en-GB': 'English (UK)',\n 'ja': '日本語',\n 'ko': '한국어',\n 'fr': 'Français',\n 'de': 'Deutsch',\n 'es': 'Español',\n 'pt': 'Português',\n 'ru': 'Русский',\n 'ar': 'العربية',\n 'hi': 'हिन्दी',\n 'th': 'ไทย',\n 'vi': 'Tiếng Việt',\n 'id': 'Bahasa Indonesia',\n 'ms': 'Bahasa Melayu',\n 'tr': 'Türkçe',\n 'it': 'Italiano',\n 'nl': 'Nederlands',\n 'pl': 'Polski',\n 'uk': 'Українська',\n 'cs': 'Čeština',\n 'sv': 'Svenska',\n 'da': 'Dansk',\n 'fi': 'Suomi',\n 'nb': 'Norsk',\n 'el': 'Ελληνικά',\n 'he': 'עברית',\n 'hu': 'Magyar',\n 'ro': 'Română',\n 'bg': 'Български',\n 'hr': 'Hrvatski',\n 'sk': 'Slovenčina',\n 'sl': 'Slovenščina',\n 'et': 'Eesti',\n 'lv': 'Latviešu',\n 'lt': 'Lietuvių',\n 'ca': 'Català',\n 'gl': 'Galego',\n 'eu': 'Euskara',\n 'cy': 'Cymraeg',\n 'ga': 'Gaeilge',\n 'mt': 'Malti',\n 'is': 'Íslenska',\n 'mk': 'Македонски',\n 'sq': 'Shqip',\n 'sr': 'Српски',\n 'bs': 'Bosanski',\n 'me': 'Crnogorski',\n 'ka': 'ქართული',\n 'hy': 'Հայերեն',\n 'az': 'Azərbaycan',\n 'uz': \"O'zbek\",\n 'kk': 'Қазақ',\n 'ky': 'Кыргыз',\n 'tg': 'Тоҷикӣ',\n 'tk': 'Türkmen',\n 'mn': 'Монгол',\n 'ne': 'नेपाली',\n 'si': 'සිංහල',\n 'my': 'မြန်မာ',\n 'km': 'ខ្មែរ',\n 'lo': 'ລາວ',\n 'am': 'አማርኛ',\n 'sw': 'Kiswahili',\n 'yo': 'Yorùbá',\n 'ig': 'Igbo',\n 'ha': 'Hausa',\n 'zu': 'isiZulu',\n 'af': 'Afrikaans',\n 'xh': 'isiXhosa',\n 'st': 'Sesotho',\n 'tn': 'Setswana',\n 'ts': 'Xitsonga',\n 'ss': 'siSwati',\n 've': 'Tshivenda',\n 'nr': 'isiNdebele',\n };\n \n return names[locale] || locale;\n};\n\n/**\n * 获取语言方向\n * @param {string} locale - 语言代码\n * @returns {string} 语言方向 ('ltr' 或 'rtl')\n */\nexport const getLocaleDirection = (locale) => {\n const rtlLocales = ['ar', 'he', 'fa', 'ur', 'yi', 'ps', 'sd', 'ug'];\n return rtlLocales.includes(locale) ? 'rtl' : 'ltr';\n};\n\n/**\n * 获取语言信息\n * @param {string} locale - 语言代码\n * @returns {Object} 语言信息\n */\nexport const getLocaleInfo = (locale) => {\n return {\n code: locale,\n name: getLocaleName(locale),\n direction: getLocaleDirection(locale),\n isSupported: isLocaleSupported(locale),\n isCurrent: locale === currentLocale,\n isFallback: locale === fallbackLocale,\n };\n};\n\n/**\n * 获取所有语言信息\n * @returns {Array} 语言信息数组\n */\nexport const getAllLocaleInfo = () => {\n return getSupportedLocales().map(getLocaleInfo);\n};\n\n/**\n * 保存语言到本地存储\n * @param {string} locale - 语言代码\n */\nexport const saveLocale = (locale) => {\n if (typeof localStorage !== 'undefined') {\n try {\n localStorage.setItem('metona-toast-locale', locale);\n } catch (e) {\n console.warn('Failed to save locale:', e);\n }\n }\n};\n\n/**\n * 从本地存储加载语言\n * @returns {string} 语言代码\n */\nexport const loadLocale = () => {\n if (typeof localStorage !== 'undefined') {\n try {\n return localStorage.getItem('metona-toast-locale') || getDefaultLocale();\n } catch (e) {\n console.warn('Failed to load locale:', e);\n }\n }\n return getDefaultLocale();\n};\n\n/**\n * 获取默认语言\n * @returns {string} 语言代码\n */\nexport const getDefaultLocale = () => {\n if (typeof navigator !== 'undefined') {\n // 尝试从浏览器获取语言\n const browserLocale = navigator.language || navigator.userLanguage;\n if (browserLocale && isLocaleSupported(browserLocale)) {\n return browserLocale;\n }\n \n // 尝试语言代码的前两位\n const shortLocale = browserLocale?.split('-')[0];\n if (shortLocale && isLocaleSupported(shortLocale)) {\n return shortLocale;\n }\n }\n \n return fallbackLocale;\n};\n\n/**\n * 初始化国际化系统\n */\nexport const initI18n = () => {\n const savedLocale = loadLocale();\n setCurrentLocale(savedLocale);\n};\n\n/**\n * 切换语言\n * @param {string} locale - 新语言\n */\nexport const switchLocale = (locale) => {\n setCurrentLocale(locale);\n};\n\n/**\n * 添加语言监听器\n * @param {Function} listener - 监听器函数\n * @returns {Function} 移除监听器函数\n */\nexport const addLocaleListener = (listener) => {\n localeListeners.add(listener);\n \n return () => {\n localeListeners.delete(listener);\n };\n};\n\n/**\n * 移除语言监听器\n * @param {Function} listener - 监听器函数\n */\nexport const removeLocaleListener = (listener) => {\n localeListeners.delete(listener);\n};\n\n/**\n * 通知语言监听器\n * @param {string} locale - 语言代码\n */\nconst notifyLocaleListeners = (locale) => {\n localeListeners.forEach((listener) => {\n try {\n listener(locale);\n } catch (e) {\n console.error('Locale listener error:', e);\n }\n });\n};\n\n/**\n * 清除所有语言监听器\n */\nexport const clearLocaleListeners = () => {\n localeListeners.clear();\n};\n\n/**\n * 格式化数字\n * @param {number} number - 数字\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatNumber = (number, options = {}) => {\n try {\n return new Intl.NumberFormat(currentLocale, options).format(number);\n } catch (e) {\n return number.toString();\n }\n};\n\n/**\n * 格式化货币\n * @param {number} amount - 金额\n * @param {string} currency - 货币代码\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatCurrency = (amount, currency = 'USD', options = {}) => {\n try {\n return new Intl.NumberFormat(currentLocale, {\n style: 'currency',\n currency,\n ...options,\n }).format(amount);\n } catch (e) {\n return amount.toString();\n }\n};\n\n/**\n * 格式化百分比\n * @param {number} value - 值\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatPercent = (value, options = {}) => {\n try {\n return new Intl.NumberFormat(currentLocale, {\n style: 'percent',\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n ...options,\n }).format(value / 100);\n } catch (e) {\n return `${value}%`;\n }\n};\n\n/**\n * 格式化日期\n * @param {Date|number|string} date - 日期\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatDate = (date, options = {}) => {\n try {\n const dateObj = date instanceof Date ? date : new Date(date);\n return new Intl.DateTimeFormat(currentLocale, options).format(dateObj);\n } catch (e) {\n return date.toString();\n }\n};\n\n/**\n * 格式化时间\n * @param {Date|number|string} date - 日期\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatTime = (date, options = {}) => {\n return formatDate(date, {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n ...options,\n });\n};\n\n/**\n * 格式化相对时间\n * @param {Date|number|string} date - 日期\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatRelativeTime = (date, options = {}) => {\n try {\n const dateObj = date instanceof Date ? date : new Date(date);\n const now = new Date();\n const diff = dateObj - now;\n \n const rtf = new Intl.RelativeTimeFormat(currentLocale, {\n numeric: 'auto',\n ...options,\n });\n \n const units = [\n { unit: 'year', ms: 365 * 24 * 60 * 60 * 1000 },\n { unit: 'month', ms: 30 * 24 * 60 * 60 * 1000 },\n { unit: 'week', ms: 7 * 24 * 60 * 60 * 1000 },\n { unit: 'day', ms: 24 * 60 * 60 * 1000 },\n { unit: 'hour', ms: 60 * 60 * 1000 },\n { unit: 'minute', ms: 60 * 1000 },\n { unit: 'second', ms: 1000 },\n ];\n \n for (const { unit, ms } of units) {\n if (Math.abs(diff) >= ms || unit === 'second') {\n const value = Math.round(diff / ms);\n return rtf.format(value, unit);\n }\n }\n \n return date.toString();\n } catch (e) {\n return date.toString();\n }\n};\n\n/**\n * 格式化列表\n * @param {Array} list - 列表\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatList = (list, options = {}) => {\n try {\n return new Intl.ListFormat(currentLocale, options).format(list);\n } catch (e) {\n return list.join(', ');\n }\n};\n\n/**\n * 格式化复数\n * @param {number} count - 数量\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatPlural = (count, options = {}) => {\n try {\n return new Intl.PluralRules(currentLocale, options).select(count);\n } catch (e) {\n return count === 1 ? 'one' : 'other';\n }\n};\n\n/**\n * 复数翻译\n * @param {string} key - 翻译键\n * @param {number} count - 数量\n * @param {Object} params - 插值参数\n * @returns {string} 翻译后的字符串\n */\nexport const plural = (key, count, params = {}) => {\n const pluralForm = formatPlural(count);\n const pluralKey = `${key}.${pluralForm}`;\n \n if (hasTranslation(pluralKey)) {\n return t(pluralKey, { ...params, count });\n }\n \n // 尝试通用形式\n if (hasTranslation(key)) {\n return t(key, { ...params, count });\n }\n \n return key;\n};\n\n/**\n * 日期时间格式化选项\n */\nexport const dateTimeFormats = {\n short: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n },\n medium: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n },\n long: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n weekday: 'long',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n time: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n date: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n },\n weekday: {\n weekday: 'long',\n },\n month: {\n month: 'long',\n },\n year: {\n year: 'numeric',\n },\n};\n\n/**\n * 数字格式化选项\n */\nexport const numberFormats = {\n integer: {\n maximumFractionDigits: 0,\n },\n decimal: {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n },\n percent: {\n style: 'percent',\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n },\n currency: {\n style: 'currency',\n currency: 'USD',\n },\n};\n\n/**\n * 国际化工具 — 代理层,直接引用模块函数\n */\nexport const i18nUtils = {\n t,\n plural,\n getCurrentLocale,\n setCurrentLocale,\n switchLocale,\n getFallbackLocale,\n setFallbackLocale,\n hasTranslation,\n getTranslations,\n addTranslations,\n removeTranslation,\n clearTranslations,\n getSupportedLocales,\n isLocaleSupported,\n getLocaleName,\n getLocaleDirection,\n getLocaleInfo,\n getAllLocaleInfo,\n formatNumber,\n formatCurrency,\n formatPercent,\n formatDate,\n formatTime,\n formatRelativeTime,\n formatList,\n formatPlural,\n addLocaleListener,\n removeLocaleListener,\n clearLocaleListeners,\n initI18n,\n saveLocale,\n loadLocale,\n getDefaultLocale,\n};\n\n/**\n * 预设语言包\n */\nexport const presetLocales = {\n 'zh-CN': {\n name: '简体中文',\n nativeName: '简体中文',\n direction: 'ltr',\n translations: LOCALES['zh-CN'],\n },\n \n 'en-US': {\n name: 'English (US)',\n nativeName: 'English (US)',\n direction: 'ltr',\n translations: LOCALES['en-US'],\n },\n};\n\n/**\n * 创建国际化管理器\n * @returns {Object} 国际化管理器\n */\nexport const createI18nManager = () => {\n return {\n t,\n plural,\n getCurrentLocale,\n setCurrentLocale,\n switchLocale,\n getFallbackLocale,\n setFallbackLocale,\n hasTranslation,\n getTranslations,\n addTranslations,\n removeTranslation,\n clearTranslations,\n getSupportedLocales,\n isLocaleSupported,\n getLocaleName,\n getLocaleDirection,\n getLocaleInfo,\n getAllLocaleInfo,\n formatNumber,\n formatCurrency,\n formatPercent,\n formatDate,\n formatTime,\n formatRelativeTime,\n formatList,\n formatPlural,\n addLocaleListener,\n removeLocaleListener,\n clearLocaleListeners,\n initI18n,\n saveLocale,\n loadLocale,\n getDefaultLocale,\n };\n};\n\nexport { i18nUtils as default };\n","/**\n * MetonaToast Core - 核心Toast逻辑\n * @module core\n * @version 2.0.0\n * @description 重构后的核心模块,包含Toast类的优化实现\n */\n\nimport { generateId, escapeHTML } from './utils.js';\nimport { DEFAULTS, ICONS, TYPE_COLORS, THEMES } from './constants.js';\nimport { injectStyles } from './styles.js';\nimport { getTheme, applyTheme } from './themes.js';\nimport { t as i18nT, setCurrentLocale, getLocaleDirection, getCurrentLocale } from './i18n.js';\n\n// 模块级共享容器缓存,所有 Toast 实例共用\n// 使用 Map 而非 WeakMap:document.body 在页面存活期间永不被 GC,\n// 容器需要显式通过 destroy() 清理,WeakMap 在此场景无实际收益。\nconst _containerCache = new Map();\n\n/**\n * 参数标准化工具\n * 支持多种调用方式:\n * - success('message')\n * - success({ message: 'text' })\n * - success({ title: 'title', message: 'text' })\n * - success('message', { duration: 5000 })\n */\nconst normalizeArgs = (args, defaultType = 'default') => {\n const [first, second] = args;\n \n // 情况1: success('message')\n if (typeof first === 'string') {\n return {\n ...second,\n type: second?.type || defaultType,\n message: first,\n };\n }\n \n // 情况2: success({ message: 'text' }) 或 success({ title: 't', message: 'm' })\n if (first && typeof first === 'object') {\n return {\n ...first,\n type: first.type || defaultType,\n };\n }\n \n // 情况3: success() 无参数\n return {\n type: defaultType,\n message: '',\n };\n};\n\n/**\n * Toast类 - 核心通知组件\n */\nclass Toast {\n // 静态钩子系统\n static _hooks = new Map();\n static on(name, fn) {\n if (!this._hooks.has(name)) this._hooks.set(name, []);\n this._hooks.get(name).push(fn);\n return () => this.off(name, fn);\n }\n static off(name, fn) {\n const list = this._hooks.get(name);\n if (list) this._hooks.set(name, list.filter(f => f !== fn));\n }\n static trigger(name, toast) {\n const list = this._hooks.get(name);\n if (list) list.forEach(fn => { try { fn(toast); } catch (e) { console.error('Hook error:', name, e); } });\n }\n\n constructor(opts) {\n this.id = opts.id || generateId();\n this.type = opts.type || 'default';\n this.title = opts.title || '';\n this.message = opts.message ?? opts.content ?? '';\n this.html = opts.html || '';\n this.iconHTML = opts.iconHTML || '';\n this.config = { ...DEFAULTS, ...opts };\n // 防止嵌套对象被多个 toast 实例共享引用\n if (opts.style && typeof opts.style === 'object') {\n this.config.style = { ...opts.style };\n }\n this.el = null;\n this.barEl = null;\n this.rafId = null;\n this.remaining = this.config.duration;\n this.startedAt = 0;\n this.paused = false;\n this.closing = false;\n this._cleanups = [];\n this.group = opts.group || null;\n }\n\n _palette() {\n const theme = getTheme(this.config.theme);\n const c = TYPE_COLORS[this.type] || TYPE_COLORS.default;\n const tc = THEMES[theme] || THEMES.light;\n const t = { bg: tc.bg, border: tc.border, shadow: tc.shadow };\n return { theme, c, t };\n }\n\n create() {\n if (typeof window === 'undefined' || typeof document === 'undefined') return this;\n \n Toast.trigger('beforeShow', this);\n injectStyles();\n \n const container = this._getContainer();\n const { theme, c, t } = this._palette();\n \n this._limitToasts(container);\n \n const el = document.createElement('div');\n el.className = this._buildClassName(theme);\n el.setAttribute('role', (this.type === 'error' || this.type === 'warning') ? 'alert' : 'status');\n el.setAttribute('aria-live', this.type === 'error' ? 'assertive' : 'polite');\n el.dataset.id = this.id;\n \n this._applyStyles(el, theme, t);\n this._buildContent(el, c);\n \n this.el = el;\n // Chrome bug: column-reverse + appendChild 会导致重叠。改用 column + insertBefore\n const pos = this.config.position || 'top-right';\n if (pos.startsWith('top')) {\n container.insertBefore(el, container.firstChild);\n } else {\n container.appendChild(el);\n }\n \n this._bindEvents(el);\n this._startTimer();\n \n // 进入动画\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n el.classList.add('met-show');\n });\n });\n \n if (typeof this.config.onShow === 'function') {\n try {\n this.config.onShow(this);\n } catch (e) {\n console.error('onShow callback error:', e);\n }\n }\n \n Toast.trigger('afterShow', this);\n \n return this;\n }\n\n _getContainer() {\n const position = this.config.position || 'top-right';\n const zIndex = this.config.zIndex || 9999;\n \n if (_containerCache.has(document.body)) {\n const containers = _containerCache.get(document.body);\n if (containers.has(position)) {\n return containers.get(position);\n }\n } else {\n _containerCache.set(document.body, new Map());\n }\n \n const el = document.createElement('div');\n el.className = `met-container ${position}`;\n el.setAttribute('aria-label', 'Notifications');\n el.setAttribute('role', 'region');\n \n // cssText 完全接管布局,不依赖 CSS class\n const posStyles = {\n 'top-left': 'top:0;left:0;align-items:flex-start',\n 'top-center': 'top:0;left:0;right:0;align-items:center',\n 'top-right': 'top:0;right:0;align-items:flex-end',\n 'bottom-left': 'bottom:0;left:0;align-items:flex-start',\n 'bottom-center':'bottom:0;left:0;right:0;align-items:center',\n 'bottom-right': 'bottom:0;right:0;align-items:flex-end',\n };\n el.style.cssText = `\n display:flex;\n flex-direction:column;\n gap:${this.config.gap || 12}px;\n box-sizing:border-box;\n padding:${this.config.offset || 24}px;\n max-width:100vw;\n position:fixed;\n z-index:${zIndex};\n pointer-events:none;\n ${posStyles[position] || 'top:0;right:0;align-items:flex-end'}\n `;\n \n document.body.appendChild(el);\n _containerCache.get(document.body).set(position, el);\n \n return el;\n }\n\n _limitToasts(container) {\n const max = this.config.max || 6;\n const list = Array.from(container.querySelectorAll('.met-toast'));\n if (list.length >= max) {\n const first = list[0];\n const id = first && first.dataset.id;\n if (id) {\n const old = meToast._toasts.get(id);\n if (old) old.close(true);\n }\n }\n }\n\n _buildClassName(theme) {\n // CSS 支持的动画类型,未列出的 fallback 到 slide\n const CSS_ANIMS = ['slide','fade','scale','bounce','flip','rotate','zoom',\n 'slideUp','slideDown','slideLeft','slideRight'];\n const anim = CSS_ANIMS.includes(this.config.animation) ? this.config.animation : 'slide';\n return [\n 'met-toast',\n `met-${this.type}`,\n `met-theme-${theme}`,\n `met-anim-${anim}`,\n (this.config.closeOnClick || this.config.draggable) ? 'met-clickable' : '',\n this.config.className || '',\n ].filter(Boolean).join(' ');\n }\n\n _applyStyles(el, theme, t) {\n const widthValue = typeof this.config.width === 'number'\n ? `${this.config.width}px`\n : (typeof this.config.width === 'string' ? this.config.width : '360px');\n \n // 只强制核心布局属性,动画/滤镜/颜色由 CSS class 控制\n const set = (p, v) => el.style.setProperty(p, v, 'important');\n set('position', 'relative');\n set('flex-shrink', '0');\n set('min-width', '240px');\n set('max-width', 'calc(100vw - 48px)');\n set('width', widthValue);\n // 用户自定义样式最后应用\n if (this.config.style && Object.keys(this.config.style).length > 0) {\n Object.entries(this.config.style).forEach(([k, v]) => { el.style[k] = v; });\n }\n }\n\n _buildContent(el, c) {\n // 自定义渲染函数 — 完全接管 DOM 构建\n if (typeof this.config.render === 'function') {\n el.innerHTML = this.config.render(this);\n this.barEl = el.querySelector('.met-bar, .met-bar-v');\n return;\n }\n \n const showIcon = this.config.icon !== false && (this.iconHTML || ICONS[this.type]);\n const showClose = this.config.closeButton !== false;\n const showProgress = this.config.showProgress !== false && this.config.duration > 0;\n const showSide = (!showIcon && this.type !== 'default');\n \n const safeTitle = this.title ? `
${escapeHTML(this.title)}
` : '';\n const safeMessage = this.html\n ? `
${this.html}
`\n : (this.message ? `
${escapeHTML(this.message)}
` : '');\n \n const iconHTML = showIcon\n ? `
${this.iconHTML || ICONS[this.type]}
` : '';\n const closeHTML = showClose\n ? ``\n : '';\n const progressHTML = showProgress\n ? (this.config.progressDirection === 'vertical'\n ? `
`\n : `
`)\n : '';\n const sideHTML = showSide\n ? `
` : '';\n \n el.innerHTML = `\n ${iconHTML}\n ${sideHTML}\n
\n ${safeTitle}\n ${safeMessage}\n
\n ${closeHTML}\n ${progressHTML}\n `;\n \n this.barEl = el.querySelector('.met-bar, .met-bar-v');\n }\n\n _bindEvents(el) {\n const eventHandler = (e) => {\n const target = e.target;\n \n if (target.closest('.met-close')) {\n e.stopPropagation();\n this.close();\n return;\n }\n \n if (this.config.closeOnClick && !target.closest('.met-close')) {\n if (typeof this.config.onClick === 'function') {\n try {\n this.config.onClick(this);\n } catch (err) {\n console.error('onClick callback error:', err);\n }\n }\n this.close();\n return;\n }\n };\n \n el.addEventListener('click', eventHandler);\n this._cleanups.push(() => el.removeEventListener('click', eventHandler));\n \n if (this.config.pauseOnHover && this.config.duration > 0) {\n const mouseEnter = () => this._pause();\n const mouseLeave = () => this._resume();\n \n el.addEventListener('mouseenter', mouseEnter);\n el.addEventListener('mouseleave', mouseLeave);\n \n this._cleanups.push(() => {\n el.removeEventListener('mouseenter', mouseEnter);\n el.removeEventListener('mouseleave', mouseLeave);\n });\n }\n \n if (this.config.draggable) {\n this._bindDrag(el);\n }\n }\n\n _bindDrag(el) {\n let sx = 0, sy = 0, dx = 0, dy = 0, dragging = false;\n \n const down = (e) => {\n if (e.target.closest('.met-close')) return;\n dragging = true;\n sx = e.clientX; \n sy = e.clientY;\n el.setPointerCapture(e.pointerId);\n el.style.transition = 'none';\n this._pause();\n };\n \n const move = (e) => {\n if (!dragging) return;\n dx = e.clientX - sx; \n dy = e.clientY - sy;\n el.style.transform = `translate(${dx}px, ${dy}px) rotate(${dx * 0.1}deg)`;\n el.style.opacity = String(Math.max(0, 1 - Math.abs(dx) / 200));\n };\n \n const up = (e) => {\n if (!dragging) return;\n dragging = false;\n el.releasePointerCapture(e.pointerId);\n el.style.transition = '';\n \n if (Math.abs(dx) > 120) {\n el.style.transform = `translate(${dx * 2}px, ${dy}px) rotate(${dx * 0.2}deg)`;\n el.style.opacity = '0';\n setTimeout(() => this.close(true), 250);\n } else {\n el.style.transform = '';\n el.style.opacity = '';\n this._resume();\n }\n dx = dy = 0;\n };\n \n el.addEventListener('pointerdown', down);\n el.addEventListener('pointermove', move);\n el.addEventListener('pointerup', up);\n el.addEventListener('pointercancel', up);\n \n this._cleanups.push(() => {\n el.removeEventListener('pointerdown', down);\n el.removeEventListener('pointermove', move);\n el.removeEventListener('pointerup', up);\n el.removeEventListener('pointercancel', up);\n });\n }\n\n _startTimer() {\n if (this.config.duration <= 0) return;\n \n this.startedAt = Date.now();\n this.remaining = this.config.duration;\n \n const tick = () => {\n if (this.paused || this.closing) return;\n \n const elapsed = Date.now() - this.startedAt;\n this.remaining = Math.max(0, this.config.duration - elapsed);\n \n if (this.barEl) {\n const ratio = this.remaining / this.config.duration;\n const t = this.config.progressDirection === 'vertical'\n ? `scaleY(${ratio})` : `scaleX(${ratio})`;\n this.barEl.style.transform = t;\n }\n \n if (this.remaining <= 0) { \n this.close(); \n return; \n }\n \n this.rafId = requestAnimationFrame(tick);\n };\n \n this.rafId = requestAnimationFrame(tick);\n }\n\n _pause() {\n if (this.paused || this.config.duration <= 0) return;\n this.paused = true;\n cancelAnimationFrame(this.rafId);\n this.remaining = Math.max(0, this.config.duration - (Date.now() - this.startedAt));\n }\n\n _resume() {\n if (!this.paused) return;\n this.paused = false;\n this.startedAt = Date.now() - (this.config.duration - this.remaining);\n this._startTimer();\n }\n\n update(partial) {\n Toast.trigger('beforeUpdate', this);\n if (partial.type) this.type = partial.type;\n if (partial.title !== undefined) this.title = partial.title;\n if (partial.message !== undefined) this.message = partial.message;\n if (partial.html !== undefined) this.html = partial.html;\n \n if (!this.el) { Toast.trigger('afterUpdate', this); return this; }\n \n const content = this.el.querySelector('.met-content');\n if (content) {\n const safeTitle = this.title ? `
${escapeHTML(this.title)}
` : '';\n const safeMessage = this.html\n ? `
${this.html}
`\n : (this.message ? `
${escapeHTML(this.message)}
` : '');\n content.innerHTML = `${safeTitle}${safeMessage}`;\n }\n \n // resetTimerOnUpdate: 更新内容后重置计时器\n if (this.config.resetTimerOnUpdate && this.config.duration > 0) {\n cancelAnimationFrame(this.rafId);\n this.startedAt = Date.now();\n this.remaining = this.config.duration;\n this._startTimer();\n }\n \n if (typeof this.config.onUpdate === 'function') {\n try { this.config.onUpdate(this); } catch (e) { console.error('onUpdate callback error:', e); }\n }\n \n Toast.trigger('afterUpdate', this);\n return this;\n }\n\n close(immediate = false) {\n if (this.closing) return;\n this.closing = true;\n \n Toast.trigger('beforeClose', this);\n cancelAnimationFrame(this.rafId);\n this._cleanups.forEach(fn => { try { fn(); } catch (_) {} });\n this._cleanups = [];\n \n const el = this.el;\n if (!el) { \n meToast._remove(this.id); \n return; \n }\n \n // 立即脱离文档流:记录当前位置,然后设为 absolute,让下方 toast 自然上移\n const container = el.parentNode;\n if (container && !immediate) {\n const elRect = el.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n el.style.position = 'absolute';\n el.style.top = (elRect.top - containerRect.top) + 'px';\n el.style.left = (elRect.left - containerRect.left) + 'px';\n el.style.width = elRect.width + 'px';\n el.style.margin = '0';\n }\n \n el.classList.add('met-leaving');\n el.classList.remove('met-show');\n \n const pos = this.config.position || 'top-right';\n const isRTL = getLocaleDirection(getCurrentLocale()) === 'rtl';\n let transform = 'scale(.96)';\n \n if (pos.includes('right')) transform = isRTL ? 'translateX(-120%)' : 'translateX(120%)';\n else if (pos.includes('left')) transform = isRTL ? 'translateX(120%)' : 'translateX(-120%)';\n else if (pos.startsWith('top')) transform = 'translateY(-20px)';\n else transform = 'translateY(20px)';\n \n el.style.transform = transform;\n el.style.opacity = '0';\n \n setTimeout(() => this._destroy(), immediate ? 0 : 300);\n }\n\n _destroy() {\n if (this.el && this.el.parentNode) {\n this.el.parentNode.removeChild(this.el);\n }\n this.el = null;\n \n if (typeof this.config.onClose === 'function') {\n try {\n this.config.onClose(this);\n } catch (e) {\n console.error('onClose callback error:', e);\n }\n }\n \n Toast.trigger('afterClose', this);\n meToast._remove(this.id);\n }\n}\n\n// ========== HTML模板辅助函数 ==========\n\n/**\n * 按钮行模板 — confirm/prompt 共用\n * @param {string} buttons - 按钮HTML\n * @returns {string} 按钮行HTML\n */\nconst _btnRow = (buttons) => `\n
\n ${buttons}\n
`;\n\n/**\n * 确认对话框模板\n * @param {Object} opts - 选项\n * @returns {string} HTML\n */\nconst _confirmHTML = (opts) => {\n const confirmText = opts.confirmText || i18nT('confirm');\n const cancelText = opts.cancelText || i18nT('cancel');\n const confirmColor = opts.confirmColor || '#10b981';\n const cancelColor = opts.cancelColor || '#6b7280';\n return _btnRow(`\n \n \n `);\n};\n\n/**\n * 输入对话框模板\n * @param {Object} opts - 选项\n * @returns {string} HTML\n */\nconst _promptHTML = (opts) => {\n const submitText = opts.submitText || i18nT('confirm');\n const cancelText = opts.cancelText || i18nT('cancel');\n const submitColor = opts.submitColor || '#3b82f6';\n const cancelColor = opts.cancelColor || '#6b7280';\n return `\n \n ${_btnRow(`\n \n \n `)}\n `;\n};\n\n/**\n * 进度条模板\n * @param {Object} opts - 选项\n * @returns {string} HTML\n */\nconst _progressHTML = (opts) => {\n const color = opts.progressColor || '#3b82f6';\n return `\n
\n
\n
\n
0%
\n `;\n};\n\n/**\n * Action Toast 模板\n * @param {Array} actions - 操作按钮数组 [{ text, onClick, style }]\n * @returns {string} HTML\n */\nconst _actionHTML = (actions) => {\n if (!Array.isArray(actions) || actions.length === 0) return '';\n const buttons = actions.map((a, i) => {\n const bg = a.style?.background || a.color || '#6366f1';\n const cls = `met-action-btn-${i}`;\n return ``;\n }).join('');\n return _btnRow(buttons);\n};\n\n/**\n * 主对象\n */\nconst meToast = {\n _toasts: new Map(),\n _config: { ...DEFAULTS },\n version: '2.0.0',\n \n configure(opts) {\n if (!opts || typeof opts !== 'object') return this;\n this._config = { ...this._config, ...opts };\n \n if (opts.theme) {\n applyTheme(opts.theme);\n }\n \n if (opts.locale) {\n setCurrentLocale(opts.locale);\n }\n \n return this;\n },\n \n _emit(opts) {\n const merged = { ...this._config, ...opts };\n if (merged.content && !merged.message) merged.message = merged.content;\n \n const t = new Toast(merged);\n t.create();\n this._toasts.set(t.id, t);\n \n return t;\n },\n \n _remove(id) { \n this._toasts.delete(id); \n },\n \n find(id) { \n if (!id) return undefined;\n return this._toasts.get(id); \n },\n \n /**\n * 显示默认Toast\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\n * @param {Object} [opts] - 选项对象(当第一个参数是字符串时)\n */\n show(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'default');\n return this._emit(normalized);\n },\n \n /**\n * 显示成功Toast\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\n * @param {Object} [opts] - 选项对象\n */\n success(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'success');\n return this._emit(normalized);\n },\n \n /**\n * 显示错误Toast\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\n * @param {Object} [opts] - 选项对象\n */\n error(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'error');\n return this._emit(normalized);\n },\n \n /**\n * 显示警告Toast\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\n * @param {Object} [opts] - 选项对象\n */\n warning(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'warning');\n return this._emit(normalized);\n },\n \n /**\n * 显示信息Toast\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\n * @param {Object} [opts] - 选项对象\n */\n info(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'info');\n return this._emit(normalized);\n },\n \n /**\n * 显示加载Toast\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\n * @param {Object} [opts] - 选项对象\n */\n loading(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'loading');\n normalized.duration = 0;\n normalized.closeButton = false;\n normalized.showProgress = false;\n \n const t = this._emit(normalized);\n \n return {\n id: t.id,\n success: (msg, o = {}) => this._resolve(t, 'success', msg, o),\n error: (msg, o = {}) => this._resolve(t, 'error', msg, o),\n info: (msg, o = {}) => this._resolve(t, 'info', msg, o),\n warning: (msg, o = {}) => this._resolve(t, 'warning', msg, o),\n update: (p) => { t.update(p); return this; },\n dismiss: () => t.close(),\n };\n },\n \n promise(promise, opts = {}) {\n if (!promise || typeof promise.then !== 'function') {\n console.error('MeToast.promise: first argument must be a Promise');\n return Promise.reject(new Error('Invalid promise'));\n }\n \n const loadingMsg = opts.loading || i18nT('loading');\n const successMsg = opts.success || i18nT('success');\n const errorMsg = opts.error || i18nT('error');\n \n const ctrl = this.loading(loadingMsg);\n \n return Promise.resolve(promise)\n .then((data) => { \n ctrl.success(successMsg); \n return data; \n })\n .catch((err) => { \n ctrl.error(errorMsg); \n throw err; \n });\n },\n \n _resolve(loadingToast, type, message, opts) {\n const id = loadingToast.id;\n const old = this._toasts.get(id);\n if (!old) return null;\n \n const position = old.config.position;\n old.close();\n \n return this._emit({ ...opts, type, message, position });\n },\n \n /**\n * 确认对话框\n * @param {string} message - 消息内容\n * @param {Object} [opts] - 选项\n * @returns {Promise}\n */\n confirm(message, opts = {}) {\n if (typeof message !== 'string') {\n console.error('MeToast.confirm: message must be a string');\n return Promise.resolve(false);\n }\n \n return new Promise((resolve) => {\n let resolved = false;\n const safeResolve = (val) => { if (!resolved) { resolved = true; clearTimeout(safetyTimeout); resolve(val); } };\n const safetyTimeout = setTimeout(() => safeResolve(false), 10000);\n \n const t = this._emit({\n ...opts,\n type: opts.type || 'warning',\n message,\n duration: 0,\n closeButton: false,\n closeOnClick: false,\n draggable: false,\n html: _confirmHTML(opts),\n });\n \n setTimeout(() => {\n const confirmBtn = t.el?.querySelector('.met-confirm-btn');\n const cancelBtn = t.el?.querySelector('.met-cancel-btn');\n \n if (confirmBtn) {\n confirmBtn.addEventListener('click', () => {\n t.close();\n safeResolve(true);\n });\n }\n \n if (cancelBtn) {\n cancelBtn.addEventListener('click', () => {\n t.close();\n safeResolve(false);\n });\n }\n }, 0);\n });\n },\n \n /**\n * 输入对话框\n * @param {string} message - 消息内容\n * @param {Object} [opts] - 选项\n * @returns {Promise}\n */\n prompt(message, opts = {}) {\n if (typeof message !== 'string') {\n console.error('MeToast.prompt: message must be a string');\n return Promise.resolve(null);\n }\n \n return new Promise((resolve) => {\n let resolved = false;\n const safeResolve = (val) => { if (!resolved) { resolved = true; clearTimeout(safetyTimeout); resolve(val); } };\n const safetyTimeout = setTimeout(() => safeResolve(null), 10000);\n \n const t = this._emit({\n ...opts,\n type: opts.type || 'info',\n message,\n duration: 0,\n closeButton: false,\n closeOnClick: false,\n draggable: false,\n html: _promptHTML(opts),\n });\n \n setTimeout(() => {\n const input = t.el?.querySelector('.met-input');\n const submitBtn = t.el?.querySelector('.met-submit-btn');\n const cancelBtn = t.el?.querySelector('.met-cancel-btn');\n \n if (input) {\n input.focus();\n \n input.addEventListener('keydown', (e) => {\n if (e.key === 'Enter') {\n t.close();\n safeResolve(input.value);\n }\n });\n }\n \n if (submitBtn) {\n submitBtn.addEventListener('click', () => {\n t.close();\n safeResolve(input?.value || null);\n });\n }\n \n if (cancelBtn) {\n cancelBtn.addEventListener('click', () => {\n t.close();\n safeResolve(null);\n });\n }\n }, 0);\n });\n },\n \n /**\n * 进度Toast\n * @param {string|Object} messageOrOpts - 消息或选项\n * @param {Object} [opts] - 选项\n * @returns {Object} 控制对象\n */\n progress(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'info');\n normalized.duration = 0;\n normalized.closeButton = false;\n normalized.showProgress = false;\n \n const t = this._emit({\n ...normalized,\n html: _progressHTML(opts),\n });\n \n return {\n id: t.id,\n \n setProgress(percent) {\n const fill = t.el?.querySelector('.met-progress-fill');\n const text = t.el?.querySelector('.met-progress-text');\n \n if (fill) {\n fill.style.width = `${Math.min(100, Math.max(0, percent))}%`;\n }\n \n if (text) {\n text.textContent = `${Math.round(percent)}%`;\n }\n },\n \n complete(message) {\n this.setProgress(100);\n setTimeout(() => {\n t.update({\n type: 'success',\n message: message || i18nT('success'),\n html: '',\n });\n setTimeout(() => t.close(), 1000);\n }, 300);\n },\n \n error(message) {\n t.update({\n type: 'error',\n message: message || i18nT('error'),\n html: '',\n });\n setTimeout(() => t.close(), 2000);\n },\n \n dismiss() {\n t.close();\n },\n };\n },\n \n /**\n * 倒计时Toast\n * @param {string} message - 消息内容\n * @param {number} seconds - 秒数\n * @param {Object} [opts] - 选项\n * @returns {Object} 控制对象\n */\n countdown(message, seconds = 10, opts = {}) {\n if (typeof message !== 'string') {\n console.error('MeToast.countdown: message must be a string');\n return { cancel: () => {}, pause: () => {}, resume: () => {} };\n }\n \n let remaining = Math.max(1, parseInt(seconds) || 10);\n let timer = null;\n \n const t = this._emit({\n ...opts,\n type: opts.type || 'warning',\n message: message.replace(/\\{seconds\\}/g, remaining),\n duration: 0,\n closeButton: true,\n showProgress: false,\n });\n \n const tick = () => {\n remaining--;\n \n if (remaining <= 0) {\n clearInterval(timer);\n t.close();\n \n if (typeof opts.onComplete === 'function') {\n try {\n opts.onComplete();\n } catch (e) {\n console.error('countdown onComplete error:', e);\n }\n }\n return;\n }\n \n t.update({\n message: message.replace(/\\{seconds\\}/g, remaining),\n });\n };\n \n timer = setInterval(tick, 1000);\n \n return {\n id: t.id,\n \n cancel() {\n clearInterval(timer);\n t.close();\n },\n \n pause() {\n clearInterval(timer);\n },\n \n resume() {\n clearInterval(timer);\n timer = setInterval(tick, 1000);\n },\n };\n },\n \n /**\n * Action Toast — 带操作按钮的通知\n * @param {string|Object} messageOrOpts - 消息\n * @param {Array} actions - 操作按钮 [{ text, onClick, color }]\n * @param {Object} [opts] - 选项\n * @returns {Object} toast实例 + dismiss\n */\n action(messageOrOpts, actions = [], opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'info');\n normalized.duration = opts.duration ?? 0;\n normalized.closeButton = opts.closeButton ?? true;\n \n const t = this._emit({\n ...normalized,\n html: (normalized.html || '') + _actionHTML(actions),\n });\n \n if (Array.isArray(actions)) {\n setTimeout(() => {\n actions.forEach((a, i) => {\n const btn = t.el?.querySelector(`.met-action-btn-${i}`);\n if (btn && typeof a.onClick === 'function') {\n btn.addEventListener('click', () => {\n try { a.onClick(t); } catch (e) { console.error('Action onClick error:', e); }\n if (a.close !== false) t.close();\n });\n }\n });\n }, 0);\n }\n \n return { id: t.id, toast: t, dismiss: () => t.close() };\n },\n\n /**\n * 队列Toast\n * @param {Array} messages - 消息数组\n * @param {Object} [opts] - 选项\n * @returns {Promise}\n */\n queue(messages, opts = {}) {\n if (!Array.isArray(messages)) {\n console.error('MeToast.queue: messages must be an array');\n return { then: (fn) => Promise.resolve().then(fn), cancel: () => {} };\n }\n \n let cancelled = false;\n const promise = new Promise((resolve) => {\n let index = 0;\n const delay = opts.delay || 1000;\n const userOnClose = opts.onClose;\n \n const showNext = () => {\n if (cancelled || index >= messages.length) {\n resolve();\n return;\n }\n \n const message = messages[index];\n index++;\n \n const msg = typeof message === 'string' ? message : (message?.message || '');\n const msgObj = (typeof message === 'object' && message !== null) ? message : {};\n const msgOnClose = msgObj.onClose;\n \n this._emit({\n ...opts,\n ...msgObj,\n message: msg,\n duration: msgObj.duration || opts.duration || 3000,\n onClose: (toast) => {\n if (typeof msgOnClose === 'function') {\n try { msgOnClose(toast); } catch (_) {}\n }\n if (typeof userOnClose === 'function') {\n try { userOnClose(toast); } catch (_) {}\n }\n setTimeout(showNext, delay);\n },\n });\n };\n \n showNext();\n });\n return {\n then: (fn, rj) => promise.then(fn, rj),\n catch: (rj) => promise.catch(rj),\n cancel: () => { cancelled = true; },\n };\n },\n \n /**\n * 堆叠Toast\n * @param {Array} messages - 消息数组\n * @param {Object} [opts] - 选项\n */\n stack(messages, opts = {}) {\n if (!Array.isArray(messages)) {\n console.error('MeToast.stack: messages must be an array');\n return;\n }\n \n messages.forEach((message, index) => {\n setTimeout(() => {\n const msg = typeof message === 'string' ? message : (message?.message || '');\n \n this._emit({\n ...opts,\n ...((typeof message === 'object' && message !== null) ? message : {}),\n message: msg,\n });\n }, index * (opts.stagger || 100));\n });\n },\n \n dismiss(id) {\n if (id) { \n const t = this._toasts.get(id); \n if (t) t.close(); \n return; \n }\n this._toasts.forEach(t => t.close());\n },\n \n clear(position) {\n this._toasts.forEach(t => {\n if (!position || t.config.position === position) t.close();\n });\n },\n \n destroy() {\n this.dismiss();\n \n if (typeof document !== 'undefined') {\n const containers = document.querySelectorAll('.met-container');\n containers.forEach(c => c.parentNode && c.parentNode.removeChild(c));\n \n const style = document.getElementById('metona-toast-styles');\n if (style) style.parentNode.removeChild(style);\n }\n \n this._toasts.clear();\n _containerCache.clear();\n },\n \n getAll() {\n return new Map(this._toasts);\n },\n \n count() {\n return this._toasts.size;\n },\n \n /**\n * 创建Toast分组 — 返回一个自动添加 group 参数的子对象\n * @param {string} name - 分组名称\n * @returns {Object}\n */\n group(name) {\n const self = this;\n const methods = ['show','success','error','warning','info','loading','action'];\n const g = { _group: name };\n methods.forEach(m => {\n g[m] = (...args) => {\n const lastArg = args[args.length - 1];\n const isObj = typeof lastArg === 'object' && lastArg !== null && !Array.isArray(lastArg);\n // 单对象参数:直接合并group\n if (isObj && args.length === 1) {\n return self[m]({ ...lastArg, group: name });\n }\n // 末尾是配置对象:pop后合并\n if (isObj) {\n args.pop();\n return self[m](...args, { ...lastArg, group: name });\n }\n // 无配置对象\n return self[m](...args, { group: name });\n };\n });\n g.dismiss = () => self.dismissGroup(name);\n g.count = () => self._groupCount(name);\n return g;\n },\n \n /**\n * 按组关闭Toast\n * @param {string} name - 分组名称\n */\n dismissGroup(name) {\n this._toasts.forEach(t => { if (t.group === name) t.close(); });\n },\n \n _groupCount(name) {\n let c = 0;\n this._toasts.forEach(t => { if (t.group === name) c++; });\n return c;\n },\n};\n\nexport { meToast as default, meToast, Toast };\n","/**\n * MetonaToast Animations - 动画管理\n * @module animations\n * @version 2.0.0\n * @description 动画效果管理和自定义\n */\n\nimport { ANIMATIONS } from './constants.js';\n\n// 动画缓存\nconst animationCache = new Map();\n\n/**\n * 动画管理器类\n */\nclass AnimationManager {\n constructor() {\n this.animations = new Map();\n this.activeAnimations = new Map();\n this.animationId = 0;\n \n // 注册默认动画\n this._registerDefaults();\n }\n \n /**\n * 注册默认动画\n */\n _registerDefaults() {\n Object.entries(ANIMATIONS).forEach(([name, config]) => {\n this.register(name, config);\n });\n }\n \n /**\n * 注册动画\n * @param {string} name - 动画名称\n * @param {Object} config - 动画配置\n */\n register(name, config) {\n const animation = {\n name,\n enter: config.enter || {},\n leave: config.leave || {},\n duration: config.duration || 300,\n easing: config.easing || 'cubic-bezier(0.4, 0, 0.2, 1)',\n delay: config.delay || 0,\n iterations: config.iterations || 1,\n direction: config.direction || 'normal',\n fillMode: config.fillMode || 'forwards',\n };\n \n this.animations.set(name, animation);\n animationCache.set(name, animation);\n }\n \n /**\n * 注销动画\n * @param {string} name - 动画名称\n */\n unregister(name) {\n this.animations.delete(name);\n animationCache.delete(name);\n }\n \n /**\n * 获取动画配置\n * @param {string} name - 动画名称\n * @returns {Object|null} 动画配置\n */\n get(name) {\n return this.animations.get(name) || ANIMATIONS[name] || null;\n }\n \n /**\n * 应用动画\n * @param {HTMLElement} element - 目标元素\n * @param {string} animationName - 动画名称\n * @param {Object} options - 额外选项\n * @returns {Promise} 动画完成Promise\n */\n apply(element, animationName, options = {}) {\n return new Promise((resolve, reject) => {\n const animation = this.get(animationName);\n if (!animation) {\n resolve();\n return;\n }\n \n const config = { ...animation, ...options };\n const animId = ++this.animationId;\n \n // 设置初始状态\n Object.assign(element.style, config.enter);\n \n // 强制重绘\n element.offsetHeight;\n \n // 创建动画\n const keyframes = [\n { ...config.enter },\n { ...config.leave },\n ];\n \n const animationOptions = {\n duration: config.duration,\n easing: config.easing,\n delay: config.delay,\n iterations: config.iterations,\n direction: config.direction,\n fill: config.fillMode,\n };\n \n // 应用动画\n const anim = element.animate(keyframes, animationOptions);\n \n // 存储活动动画\n this.activeAnimations.set(animId, {\n element,\n animation: anim,\n config,\n });\n \n // 动画完成处理\n anim.onfinish = () => {\n Object.assign(element.style, config.leave);\n this.activeAnimations.delete(animId);\n resolve();\n };\n \n // 动画取消处理 — reject 让调用者感知取消\n anim.oncancel = () => {\n this.activeAnimations.delete(animId);\n reject(new Error(`Animation \"${animationName}\" was cancelled`));\n };\n });\n }\n \n /**\n * 应用进入动画\n * @param {HTMLElement} element - 目标元素\n * @param {string} animationName - 动画名称\n * @param {Object} options - 额外选项\n * @returns {Promise} 动画完成Promise\n */\n enter(element, animationName, options = {}) {\n const animation = this.get(animationName);\n if (!animation) {\n return Promise.resolve();\n }\n \n return this.apply(element, animationName, {\n ...options,\n direction: 'normal',\n });\n }\n \n /**\n * 应用离开动画\n * @param {HTMLElement} element - 目标元素\n * @param {string} animationName - 动画名称\n * @param {Object} options - 额外选项\n * @returns {Promise} 动画完成Promise\n */\n leave(element, animationName, options = {}) {\n const animation = this.get(animationName);\n if (!animation) {\n return Promise.resolve();\n }\n \n return this.apply(element, animationName, {\n ...options,\n direction: 'reverse',\n });\n }\n \n /**\n * 取消所有动画\n */\n cancelAll() {\n this.activeAnimations.forEach(({ animation }) => {\n animation.cancel();\n });\n \n this.activeAnimations.clear();\n }\n \n /**\n * 取消元素动画\n * @param {HTMLElement} element - 目标元素\n */\n cancel(element) {\n this.activeAnimations.forEach(({ element: el, animation }, id) => {\n if (el === element) {\n animation.cancel();\n this.activeAnimations.delete(id);\n }\n });\n }\n \n /**\n * 暂停所有动画\n */\n pauseAll() {\n this.activeAnimations.forEach(({ animation }) => {\n animation.pause();\n });\n }\n \n /**\n * 恢复所有动画\n */\n resumeAll() {\n this.activeAnimations.forEach(({ animation }) => {\n animation.play();\n });\n }\n \n /**\n * 暂停元素动画\n * @param {HTMLElement} element - 目标元素\n */\n pause(element) {\n this.activeAnimations.forEach(({ element: el, animation }) => {\n if (el === element) {\n animation.pause();\n }\n });\n }\n \n /**\n * 恢复元素动画\n * @param {HTMLElement} element - 目标元素\n */\n resume(element) {\n this.activeAnimations.forEach(({ element: el, animation }) => {\n if (el === element) {\n animation.play();\n }\n });\n }\n \n /**\n * 获取活动动画数量\n * @returns {number} 动画数量\n */\n getActiveCount() {\n return this.activeAnimations.size;\n }\n \n /**\n * 获取所有活动动画\n * @returns {Map} 活动动画映射\n */\n getActiveAnimations() {\n return new Map(this.activeAnimations);\n }\n \n /**\n * 检查元素是否有活动动画\n * @param {HTMLElement} element - 目标元素\n * @returns {boolean} 是否有活动动画\n */\n hasActiveAnimation(element) {\n for (const { element: el } of this.activeAnimations.values()) {\n if (el === element) {\n return true;\n }\n }\n return false;\n }\n \n /**\n * 获取动画配置\n * @returns {Object} 动画配置\n */\n getConfig() {\n return {\n animations: Array.from(this.animations.keys()),\n activeCount: this.getActiveCount(),\n };\n }\n \n /**\n * 重置动画管理器\n */\n reset() {\n this.cancelAll();\n this.animations.clear();\n this._registerDefaults();\n }\n \n /**\n * 销毁动画管理器\n */\n destroy() {\n this.cancelAll();\n this.animations.clear();\n this.activeAnimations.clear();\n }\n}\n\n/**\n * 预设动画效果\n */\nconst presetAnimations = {\n bounce: {\n enter: { transform: 'translateY(-80px)', opacity: 0 },\n leave: { transform: 'translateY(20px)', opacity: 1 },\n duration: 650,\n easing: 'ease',\n },\n slideUp: {\n enter: { transform: 'translateY(60px)', opacity: 0 },\n leave: { transform: 'translateY(0)', opacity: 1 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n slideDown: {\n enter: { transform: 'translateY(-60px)', opacity: 0 },\n leave: { transform: 'translateY(0)', opacity: 1 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n slideLeft: {\n enter: { transform: 'translateX(-90px)', opacity: 0 },\n leave: { transform: 'translateX(0)', opacity: 1 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n slideRight: {\n enter: { transform: 'translateX(90px)', opacity: 0 },\n leave: { transform: 'translateX(0)', opacity: 1 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n\n};\n\n// 注册预设动画\nObject.entries(presetAnimations).forEach(([name, config]) => {\n ANIMATIONS[name] = config;\n});\n\n/**\n * 创建动画管理器实例\n * @returns {AnimationManager} 动画管理器实例\n */\nexport const createAnimationManager = () => {\n return new AnimationManager();\n};\n\n// 创建默认实例\nconst defaultAnimationManager = createAnimationManager();\n\n/**\n * 动画工具函数\n */\nexport const animationUtils = {\n /**\n * 应用动画\n * @param {HTMLElement} element - 目标元素\n * @param {string} animationName - 动画名称\n * @param {Object} options - 额外选项\n * @returns {Promise} 动画完成Promise\n */\n apply(element, animationName, options = {}) {\n return defaultAnimationManager.apply(element, animationName, options);\n },\n \n /**\n * 应用进入动画\n * @param {HTMLElement} element - 目标元素\n * @param {string} animationName - 动画名称\n * @param {Object} options - 额外选项\n * @returns {Promise} 动画完成Promise\n */\n enter(element, animationName, options = {}) {\n return defaultAnimationManager.enter(element, animationName, options);\n },\n \n /**\n * 应用离开动画\n * @param {HTMLElement} element - 目标元素\n * @param {string} animationName - 动画名称\n * @param {Object} options - 额外选项\n * @returns {Promise} 动画完成Promise\n */\n leave(element, animationName, options = {}) {\n return defaultAnimationManager.leave(element, animationName, options);\n },\n \n /**\n * 取消所有动画\n */\n cancelAll() {\n defaultAnimationManager.cancelAll();\n },\n \n /**\n * 取消元素动画\n * @param {HTMLElement} element - 目标元素\n */\n cancel(element) {\n defaultAnimationManager.cancel(element);\n },\n \n /**\n * 暂停所有动画\n */\n pauseAll() {\n defaultAnimationManager.pauseAll();\n },\n \n /**\n * 恢复所有动画\n */\n resumeAll() {\n defaultAnimationManager.resumeAll();\n },\n \n /**\n * 暂停元素动画\n * @param {HTMLElement} element - 目标元素\n */\n pause(element) {\n defaultAnimationManager.pause(element);\n },\n \n /**\n * 恢复元素动画\n * @param {HTMLElement} element - 目标元素\n */\n resume(element) {\n defaultAnimationManager.resume(element);\n },\n \n /**\n * 获取活动动画数量\n * @returns {number} 动画数量\n */\n getActiveCount() {\n return defaultAnimationManager.getActiveCount();\n },\n \n /**\n * 检查元素是否有活动动画\n * @param {HTMLElement} element - 目标元素\n * @returns {boolean} 是否有活动动画\n */\n hasActiveAnimation(element) {\n return defaultAnimationManager.hasActiveAnimation(element);\n },\n \n /**\n * 注册动画\n * @param {string} name - 动画名称\n * @param {Object} config - 动画配置\n */\n register(name, config) {\n defaultAnimationManager.register(name, config);\n },\n \n /**\n * 注销动画\n * @param {string} name - 动画名称\n */\n unregister(name) {\n defaultAnimationManager.unregister(name);\n },\n \n /**\n * 获取动画配置\n * @param {string} name - 动画名称\n * @returns {Object|null} 动画配置\n */\n get(name) {\n return defaultAnimationManager.get(name);\n },\n \n /**\n * 获取所有动画名称\n * @returns {Array} 动画名称数组\n */\n getAnimationNames() {\n return Array.from(defaultAnimationManager.animations.keys());\n },\n \n /**\n * 获取动画配置\n * @returns {Object} 动画配置\n */\n getConfig() {\n return defaultAnimationManager.getConfig();\n },\n \n /**\n * 重置动画管理器\n */\n reset() {\n defaultAnimationManager.reset();\n },\n \n /**\n * 销毁动画管理器\n */\n destroy() {\n defaultAnimationManager.destroy();\n },\n};\n\n/**\n * 动画预设\n */\nexport const animationPresets = presetAnimations;\n\n/**\n * 创建自定义动画\n * @param {Object} config - 动画配置\n * @returns {Object} 动画配置\n */\nexport const createAnimation = (config) => {\n return {\n enter: config.enter || {},\n leave: config.leave || {},\n duration: config.duration || 300,\n easing: config.easing || 'cubic-bezier(0.4, 0, 0.2, 1)',\n delay: config.delay || 0,\n iterations: config.iterations || 1,\n direction: config.direction || 'normal',\n fillMode: config.fillMode || 'forwards',\n };\n};\n\n/**\n * 组合动画\n * @param {Array} animations - 动画数组\n * @returns {Object} 组合后的动画配置\n */\nexport const combineAnimations = (animations) => {\n const combined = {\n enter: {},\n leave: {},\n duration: 0,\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n delay: 0,\n iterations: 1,\n direction: 'normal',\n fillMode: 'forwards',\n };\n \n animations.forEach((anim) => {\n if (anim.enter) {\n Object.assign(combined.enter, anim.enter);\n }\n if (anim.leave) {\n Object.assign(combined.leave, anim.leave);\n }\n if (anim.duration) {\n combined.duration = Math.max(combined.duration, anim.duration);\n }\n if (anim.easing) {\n combined.easing = anim.easing;\n }\n if (anim.delay) {\n combined.delay = Math.max(combined.delay, anim.delay);\n }\n });\n \n return combined;\n};\n\n/**\n * 链式动画\n * @param {Array} animations - 动画数组\n * @returns {Promise} 动画完成Promise\n */\nexport const chainAnimations = async (element, animations) => {\n for (const anim of animations) {\n await defaultAnimationManager.apply(element, anim.name, anim.options);\n }\n};\n\n/**\n * 并行动画\n * @param {Array} animations - 动画数组\n * @returns {Promise} 动画完成Promise\n */\nexport const parallelAnimations = (element, animations) => {\n return Promise.all(\n animations.map((anim) => \n defaultAnimationManager.apply(element, anim.name, anim.options)\n )\n );\n};\n\n/**\n * 延迟动画\n * @param {number} delay - 延迟时间(毫秒)\n * @returns {Promise} Promise对象\n */\nexport const delayAnimation = (delay) => {\n return new Promise((resolve) => setTimeout(resolve, delay));\n};\n\n/**\n * 动画队列\n */\nexport class AnimationQueue {\n constructor() {\n this.queue = [];\n this.isProcessing = false;\n }\n \n /**\n * 添加动画到队列\n * @param {Function} animationFn - 动画函数\n * @returns {Promise} 动画完成Promise\n */\n add(animationFn) {\n return new Promise((resolve, reject) => {\n this.queue.push({\n fn: animationFn,\n resolve,\n reject,\n });\n \n this._process();\n });\n }\n \n /**\n * 处理队列\n */\n async _process() {\n if (this.isProcessing || this.queue.length === 0) {\n return;\n }\n \n this.isProcessing = true;\n \n while (this.queue.length > 0) {\n const { fn, resolve, reject } = this.queue.shift();\n \n try {\n const result = await fn();\n resolve(result);\n } catch (error) {\n reject(error);\n }\n }\n \n this.isProcessing = false;\n }\n \n /**\n * 清空队列\n */\n clear() {\n this.queue = [];\n }\n \n /**\n * 暂停队列\n */\n pause() {\n this.isProcessing = true;\n }\n \n /**\n * 恢复队列\n */\n resume() {\n this.isProcessing = false;\n this._process();\n }\n \n /**\n * 获取队列长度\n * @returns {number} 队列长度\n */\n get length() {\n return this.queue.length;\n }\n \n /**\n * 检查是否正在处理\n * @returns {boolean} 是否正在处理\n */\n get processing() {\n return this.isProcessing;\n }\n}\n\n/**\n * 创建动画队列\n * @returns {AnimationQueue} 动画队列实例\n */\nexport const createAnimationQueue = () => {\n return new AnimationQueue();\n};\n\n/**\n * 动画性能监控\n */\nexport class AnimationPerformanceMonitor {\n constructor() {\n this.metrics = {\n totalAnimations: 0,\n activeAnimations: 0,\n averageDuration: 0,\n maxDuration: 0,\n minDuration: Infinity,\n };\n \n this.history = [];\n }\n \n /**\n * 记录动画开始\n * @param {string} animationName - 动画名称\n */\n recordStart(animationName) {\n this.metrics.totalAnimations++;\n this.metrics.activeAnimations++;\n \n this.history.push({\n name: animationName,\n startTime: performance.now(),\n endTime: null,\n duration: null,\n });\n }\n \n /**\n * 记录动画结束\n * @param {string} animationName - 动画名称\n */\n recordEnd(animationName) {\n this.metrics.activeAnimations--;\n \n const entry = this.history.find(\n (h) => h.name === animationName && h.endTime === null\n );\n \n if (entry) {\n entry.endTime = performance.now();\n entry.duration = entry.endTime - entry.startTime;\n \n // 更新统计\n this.metrics.maxDuration = Math.max(this.metrics.maxDuration, entry.duration);\n this.metrics.minDuration = Math.min(this.metrics.minDuration, entry.duration);\n \n // 计算平均值\n const completed = this.history.filter((h) => h.duration !== null);\n this.metrics.averageDuration = \n completed.reduce((sum, h) => sum + h.duration, 0) / completed.length;\n }\n }\n \n /**\n * 获取指标\n * @returns {Object} 性能指标\n */\n getMetrics() {\n return { ...this.metrics };\n }\n \n /**\n * 获取历史记录\n * @returns {Array} 历史记录\n */\n getHistory() {\n return [...this.history];\n }\n \n /**\n * 重置监控\n */\n reset() {\n this.metrics = {\n totalAnimations: 0,\n activeAnimations: 0,\n averageDuration: 0,\n maxDuration: 0,\n minDuration: Infinity,\n };\n \n this.history = [];\n }\n}\n\n/**\n * 创建性能监控实例\n * @returns {AnimationPerformanceMonitor} 性能监控实例\n */\nexport const createPerformanceMonitor = () => {\n return new AnimationPerformanceMonitor();\n};\n\n/**\n * 动画缓存管理\n */\nexport const animationCacheManager = {\n /**\n * 缓存动画\n * @param {string} key - 缓存键\n * @param {Object} animation - 动画配置\n */\n set(key, animation) {\n animationCache.set(key, animation);\n },\n \n /**\n * 获取缓存动画\n * @param {string} key - 缓存键\n * @returns {Object|null} 动画配置\n */\n get(key) {\n return animationCache.get(key) || null;\n },\n \n /**\n * 检查缓存\n * @param {string} key - 缓存键\n * @returns {boolean} 是否存在\n */\n has(key) {\n return animationCache.has(key);\n },\n \n /**\n * 删除缓存\n * @param {string} key - 缓存键\n */\n delete(key) {\n animationCache.delete(key);\n },\n \n /**\n * 清空缓存\n */\n clear() {\n animationCache.clear();\n },\n \n /**\n * 获取缓存大小\n * @returns {number} 缓存大小\n */\n size() {\n return animationCache.size;\n },\n};\n\nexport { AnimationManager, defaultAnimationManager };\n","/**\n * MetonaToast Plugins - 插件系统\n * @module plugins\n * @version 2.0.0\n * @description 插件管理器 + 3 款预设插件 (keyboard / persistence / accessibility)\n */\n\nimport { t } from './i18n.js';\n\n/**\n * 插件管理器\n */\nclass PluginManager {\n constructor() {\n this.plugins = new Map();\n this.initialized = false;\n }\n\n register(name, plugin) {\n if (this.plugins.has(name)) {\n console.warn(`Plugin \"${name}\" is already registered`);\n return this;\n }\n if (!plugin || typeof plugin !== 'object' || (!plugin.name && !plugin.version)) {\n console.error(`Invalid plugin \"${name}\"`);\n return this;\n }\n\n this.plugins.set(name, { name, ...plugin, installed: false, enabled: true });\n\n if (plugin.install) {\n try { plugin.install(this); this.plugins.get(name).installed = true; }\n catch (e) { console.error(`Failed to install plugin \"${name}\":`, e); }\n }\n return this;\n }\n\n unregister(name) {\n const plugin = this.plugins.get(name);\n if (!plugin) return this;\n if (plugin.uninstall) {\n try { plugin.uninstall(this); } catch (e) { console.error(`Failed to uninstall plugin \"${name}\":`, e); }\n }\n this.plugins.delete(name);\n return this;\n }\n\n get(name) { return this.plugins.get(name) || null; }\n has(name) { return this.plugins.has(name); }\n getAll() { return Array.from(this.plugins.values()); }\n getNames() { return Array.from(this.plugins.keys()); }\n\n enable(name) {\n const p = this.plugins.get(name);\n if (p) p.enabled = true;\n return this;\n }\n disable(name) {\n const p = this.plugins.get(name);\n if (p) p.enabled = false;\n return this;\n }\n isEnabled(name) {\n const p = this.plugins.get(name);\n return p ? p.enabled : false;\n }\n\n destroy() {\n this.plugins.forEach((p, name) => {\n if (p.destroy) { try { p.destroy(this); } catch (e) {} }\n });\n this.plugins.clear();\n }\n}\n\n/**\n * 预设插件\n */\nconst presetPlugins = {\n\n /**\n * 键盘快捷键插件 — ESC 关闭所有 Toast\n */\n keyboard: {\n name: 'keyboard',\n version: '1.0.0',\n description: 'ESC 关闭所有 Toast',\n\n _handler: null,\n\n install() {\n if (typeof document === 'undefined') return;\n this._handler = (e) => {\n if (e.key === 'Escape') {\n // 点击所有关闭按钮\n document.querySelectorAll('.met-toast .met-close').forEach(btn => {\n try { btn.click(); } catch (_) {}\n });\n }\n };\n document.addEventListener('keydown', this._handler);\n },\n\n uninstall() {\n if (this._handler && typeof document !== 'undefined') {\n document.removeEventListener('keydown', this._handler);\n this._handler = null;\n }\n },\n },\n\n /**\n * 持久化插件 — 自动保存/加载配置到 localStorage\n */\n persistence: {\n name: 'persistence',\n version: '1.0.0',\n description: '自动持久化配置到 localStorage',\n storageKey: 'metona-toast-config',\n\n install() {\n // 加载已保存的配置\n if (typeof localStorage !== 'undefined') {\n try {\n const saved = localStorage.getItem(this.storageKey);\n return saved ? JSON.parse(saved) : null;\n } catch (_) { return null; }\n }\n return null;\n },\n\n save(config) {\n if (typeof localStorage !== 'undefined') {\n try { localStorage.setItem(this.storageKey, JSON.stringify(config)); } catch (_) {}\n }\n },\n\n uninstall() {\n if (typeof localStorage !== 'undefined') {\n try { localStorage.removeItem(this.storageKey); } catch (_) {}\n }\n },\n },\n\n /**\n * 无障碍插件 — 屏幕阅读器公告\n */\n accessibility: {\n name: 'accessibility',\n version: '1.0.0',\n description: '通过屏幕阅读器朗读 Toast 内容',\n\n announce(toast) {\n if (typeof document === 'undefined') return;\n const el = document.createElement('div');\n el.setAttribute('aria-live', 'assertive');\n el.setAttribute('aria-atomic', 'true');\n el.style.cssText = 'position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;';\n const typeName = t(toast.type) || toast.type;\n el.textContent = `${typeName}: ${toast.title || ''} ${toast.message || ''}`;\n document.body.appendChild(el);\n setTimeout(() => { if (el.parentNode) el.parentNode.removeChild(el); }, 3000);\n },\n },\n};\n\n/**\n * 插件工具\n */\nconst pluginUtils = {\n createManager() { return new PluginManager(); },\n register(name, plugin) { return defaultPluginManager.register(name, plugin); },\n unregister(name) { return defaultPluginManager.unregister(name); },\n get(name) { return defaultPluginManager.get(name); },\n has(name) { return defaultPluginManager.has(name); },\n getAll() { return defaultPluginManager.getAll(); },\n getNames() { return defaultPluginManager.getNames(); },\n enable(name) { return defaultPluginManager.enable(name); },\n disable(name) { return defaultPluginManager.disable(name); },\n isEnabled(name) { return defaultPluginManager.isEnabled(name); },\n getPreset(name) { return presetPlugins[name] || null; },\n getAllPresets() { return { ...presetPlugins }; },\n\n createPlugin(config) {\n return {\n name: config.name || 'custom',\n version: config.version || '1.0.0',\n description: config.description || '',\n hooks: config.hooks || {},\n install: config.install || null,\n uninstall: config.uninstall || null,\n ...config,\n };\n },\n\n validatePlugin(plugin) {\n const errors = [];\n if (!plugin || typeof plugin !== 'object') errors.push('Plugin must be an object');\n if (!plugin.name && !plugin.version) errors.push('Plugin must have a name or version');\n return { valid: errors.length === 0, errors };\n },\n};\n\nconst defaultPluginManager = new PluginManager();\n\nexport { presetPlugins, pluginUtils, defaultPluginManager, PluginManager };\n","/**\n * MetonaToast - 轻量级Toast通知库\n * @module metona-toast\n * @version 2.0.0\n * @author thzxx\n * @description 轻量、零依赖、精致美观的Toast通知库。单文件,开箱即用。\n * @license MIT\n */\n\nimport { meToast, Toast } from './core.js';\nimport { animationUtils } from './animations.js';\nimport { themeUtils } from './themes.js';\nimport { i18nUtils } from './i18n.js';\nimport { pluginUtils, presetPlugins } from './plugins.js';\nimport { DEFAULTS } from './constants.js';\n\n// 版本信息\nconst VERSION = '2.0.0';\n\n/**\n * 主对象增强\n */\nconst enhancedMeToast = {\n ...meToast,\n \n version: VERSION,\n \n animations: animationUtils,\n themes: themeUtils,\n i18n: i18nUtils,\n plugins: pluginUtils,\n presetPlugins,\n \n /**\n * 安装插件,并连接必要的生命周期钩子\n */\n use(plugin, options = {}) {\n if (typeof plugin === 'string') {\n const preset = presetPlugins[plugin];\n if (!preset) {\n console.warn(`Preset plugin \"${plugin}\" not found`);\n return this;\n }\n this.plugins.register(plugin, { ...preset, ...options });\n\n // 连接插件钩子\n if (plugin === 'accessibility') {\n Toast.on('afterShow', (toast) => preset.announce(toast));\n }\n if (plugin === 'persistence') {\n const saved = preset.install();\n if (saved) this.configure(saved);\n Toast.on('afterClose', () => { preset.save(this.getConfig()); });\n }\n } else if (plugin && typeof plugin === 'object') {\n const name = plugin.name || 'custom';\n this.plugins.register(name, { ...plugin, ...options });\n }\n\n return this;\n },\n \n /**\n * 初始化\n */\n init(options = {}) {\n if (options.config) {\n this.configure(options.config);\n }\n \n if (options.theme) {\n this.themes.switchTheme(options.theme);\n }\n \n if (options.locale) {\n this.i18n.switchLocale(options.locale);\n }\n \n if (options.plugins && Array.isArray(options.plugins)) {\n options.plugins.forEach((plugin) => {\n this.use(plugin);\n });\n }\n \n return this;\n },\n \n /**\n * 销毁\n */\n destroy() {\n this.dismiss();\n \n if (this.plugins && typeof this.plugins.destroy === 'function') {\n this.plugins.destroy();\n }\n \n if (this.themes) {\n if (typeof this.themes.clearThemeListeners === 'function') {\n this.themes.clearThemeListeners();\n }\n if (typeof this.themes.unwatchSystemTheme === 'function') {\n this.themes.unwatchSystemTheme();\n }\n }\n \n if (this.i18n && typeof this.i18n.clearLocaleListeners === 'function') {\n this.i18n.clearLocaleListeners();\n }\n \n if (this.animations && typeof this.animations.cancelAll === 'function') {\n this.animations.cancelAll();\n }\n \n if (typeof document !== 'undefined') {\n const containers = document.querySelectorAll('.met-container');\n containers.forEach((c) => c.parentNode && c.parentNode.removeChild(c));\n \n const style = document.getElementById('metona-toast-styles');\n if (style) style.parentNode.removeChild(style);\n }\n \n this._toasts.clear();\n },\n \n /**\n * 获取状态\n */\n getStatus() {\n return {\n version: VERSION,\n toasts: this._toasts.size,\n theme: this.themes?.getCurrentTheme?.() || 'auto',\n locale: this.i18n?.getCurrentLocale?.() || 'zh-CN',\n plugins: this.plugins?.getNames?.() || [],\n animations: this.animations?.getActiveCount?.() || 0,\n };\n },\n \n /**\n * 获取配置\n */\n getConfig() {\n return { ...this._config };\n },\n \n /**\n * 更新配置\n */\n updateConfig(config) {\n if (config && typeof config === 'object') {\n this._config = { ...this._config, ...config };\n }\n return this;\n },\n \n /**\n * 重置配置\n */\n resetConfig() {\n this._config = { ...DEFAULTS };\n return this;\n },\n \n /**\n * 获取Toast列表\n */\n getToasts() {\n return Array.from(this._toasts.values());\n },\n \n /**\n * 检查是否有Toast\n */\n hasToasts() {\n return this._toasts.size > 0;\n },\n \n /**\n * 获取Toast\n */\n getToast(id) {\n if (!id) return null;\n return this._toasts.get(id) || null;\n },\n \n /**\n * 关闭所有Toast\n */\n closeAll() {\n this._toasts.forEach((t) => t.close());\n },\n \n /**\n * 清除所有Toast\n */\n clearAll() {\n this._toasts.forEach((t) => t.close());\n },\n \n /**\n * 暂停所有Toast\n */\n pauseAll() {\n this._toasts.forEach((t) => t._pause());\n },\n \n /**\n * 恢复所有Toast\n */\n resumeAll() {\n this._toasts.forEach((t) => t._resume());\n },\n \n /**\n * 更新所有Toast\n */\n updateAll(partial) {\n if (partial && typeof partial === 'object') {\n this._toasts.forEach((t) => t.update(partial));\n }\n },\n \n /**\n * 查找Toast\n */\n findToasts(predicate) {\n if (typeof predicate !== 'function') return [];\n return Array.from(this._toasts.values()).filter(predicate);\n },\n \n /**\n * 按类型查找Toast\n */\n findByType(type) {\n return this.findToasts((t) => t.type === type);\n },\n \n /**\n * 按位置查找Toast\n */\n findByPosition(position) {\n return this.findToasts((t) => t.config.position === position);\n },\n \n};\n// 初始化主题和国际化\nif (typeof themeUtils.initTheme === 'function') {\n themeUtils.initTheme();\n}\nif (typeof i18nUtils.initI18n === 'function') {\n i18nUtils.initI18n();\n}\n\n// 浏览器环境全局注册\nif (typeof window !== 'undefined') {\n window.MeToast = enhancedMeToast;\n window.Met = enhancedMeToast;\n \n // Notification API — 页面不可见时自动发送系统通知\n enhancedMeToast._notify = (toast) => {\n if (typeof Notification === 'undefined') return;\n if (Notification.permission === 'denied') return;\n if (!document.hidden) return;\n if (Notification.permission === 'default') {\n Notification.requestPermission().then(p => { if (p === 'granted') sendNotification(toast); });\n return;\n }\n sendNotification(toast);\n };\n const sendNotification = (toast) => {\n try {\n new Notification(toast.title || toast.type, { body: toast.message });\n } catch (_) {}\n };\n Toast.on('afterShow', (toast) => {\n if (toast.config.notifyWhenHidden) enhancedMeToast._notify(toast);\n });\n}\n\n// 导出\nexport default enhancedMeToast;\nexport { enhancedMeToast as meToast, enhancedMeToast as Met, enhancedMeToast as MeToast, Toast, VERSION };\n"],"names":["i18nT","t"],"mappings":"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IAAI,MAAM,EAAE,qBAAqB;AACjC,IAAI,MAAM,EAAE,4EAA4E;AACxF,IAAI,WAAW,EAAE,4EAA4E;AAC7F,IAAI,UAAU,EAAE,qBAAqB;AACrC,IAAI,YAAY,EAAE,qBAAqB;AACvC,GAAG;AACH,EAAE,IAAI,EAAE;AACR,IAAI,EAAE,EAAE,wBAAwB;AAChC,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,MAAM,EAAE,2BAA2B;AACvC,IAAI,MAAM,EAAE,0EAA0E;AACtF,IAAI,WAAW,EAAE,yEAAyE;AAC1F,IAAI,UAAU,EAAE,2BAA2B;AAC3C,IAAI,YAAY,EAAE,2BAA2B;AAC7C,GAAG;AACH,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,IAAI,EAAE;AACR,IAAI,EAAE,EAAE,2BAA2B;AACnC,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,MAAM,EAAE,yBAAyB;AACrC,IAAI,MAAM,EAAE,sFAAsF;AAClG,IAAI,WAAW,EAAE,sFAAsF;AACvG,IAAI,UAAU,EAAE,yBAAyB;AACzC,IAAI,YAAY,EAAE,yBAAyB;AAC3C,GAAG;AACH,CAAC;;ACvRD;AACA;AACA;AACA;AACA;AACA;AACA;AAKA,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK;AAC/B,EAAE,OAAO,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACO,MAAM,YAAY,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK;AACtD;AACA,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,OAAO;AAC9C;AACA;AACA,EAAE,IAAI,YAAY,IAAI,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE;AACtE,IAAI,O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"} \ No newline at end of file +{"version":3,"file":"metona-toast.cjs.js","sources":["../src/utils.js","../src/icons.js","../src/locales.js","../src/constants.js","../src/styles.js","../src/themes.js","../src/i18n.js","../src/core.js","../src/animations.js","../src/plugins.js","../src/index.js"],"sourcesContent":["/**\r\n * MetonaToast Utils - 工具函数\r\n * @module utils\r\n * @version 2.0.0\r\n * @description 通用工具函数集合\r\n */\r\n\r\n/**\r\n * 生成唯一ID\r\n * @returns {string} 唯一ID\r\n */\r\nexport const generateId = () => {\r\n return 'met-' + Date.now().toString(36) + '-' + Math.random().toString(36).slice(2, 8);\r\n};\r\n\r\n/**\r\n * HTML转义\r\n * @param {string} s - 输入字符串\r\n * @returns {string} 转义后的字符串\r\n */\r\nexport const escapeHTML = (s) => {\r\n if (typeof document === 'undefined') {\r\n // Node.js环境\r\n return String(s == null ? '' : s)\r\n .replace(/&/g, '&')\r\n .replace(//g, '>')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''');\r\n }\r\n \r\n const div = document.createElement('div');\r\n div.textContent = String(s == null ? '' : s);\r\n return div.innerHTML;\r\n};\r\n\r\n/**\r\n * 事件绑定\r\n * @param {HTMLElement} el - 元素\r\n * @param {string} evt - 事件名\r\n * @param {Function} handler - 事件处理函数\r\n * @param {Object} opts - 选项\r\n * @returns {Function} 清理函数\r\n */\r\nexport const on = (el, evt, handler, opts) => {\r\n el.addEventListener(evt, handler, opts);\r\n return () => el.removeEventListener(evt, handler, opts);\r\n};\r\n\r\n/**\r\n * 检测暗色模式偏好\r\n * @returns {boolean} 是否偏好暗色模式\r\n */\r\nexport const prefersDark = () => {\r\n return typeof window !== 'undefined' && \r\n window.matchMedia && \r\n window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n};\r\n\r\n/**\r\n * 防抖函数\r\n * @param {Function} func - 要防抖的函数\r\n * @param {number} wait - 等待时间(毫秒)\r\n * @param {boolean} immediate - 是否立即执行\r\n * @returns {Function} 防抖后的函数\r\n */\r\nexport const debounce = (func, wait, immediate = false) => {\r\n let timeout;\r\n return function executedFunction(...args) {\r\n const context = this;\r\n const later = () => {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n const callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n};\r\n\r\n/**\r\n * 节流函数\r\n * @param {Function} func - 要节流的函数\r\n * @param {number} limit - 限制时间(毫秒)\r\n * @returns {Function} 节流后的函数\r\n */\r\nexport const throttle = (func, limit) => {\r\n let inThrottle;\r\n return function executedFunction(...args) {\r\n const context = this;\r\n if (!inThrottle) {\r\n func.apply(context, args);\r\n inThrottle = true;\r\n setTimeout(() => inThrottle = false, limit);\r\n }\r\n };\r\n};\r\n\r\n/**\r\n * 深度合并对象\r\n * @param {Object} target - 目标对象\r\n * @param {Object} source - 源对象\r\n * @returns {Object} 合并后的对象\r\n */\r\nexport const deepMerge = (target, source) => {\r\n const output = { ...target };\r\n \r\n Object.keys(source).forEach(key => {\r\n if (source[key] instanceof Object && key in target && target[key] instanceof Object) {\r\n output[key] = deepMerge(target[key], source[key]);\r\n } else {\r\n output[key] = source[key];\r\n }\r\n });\r\n \r\n return output;\r\n};\r\n\r\n/**\r\n * 检查是否为浏览器环境\r\n * @returns {boolean} 是否为浏览器环境\r\n */\r\nexport const isBrowser = () => {\r\n return typeof window !== 'undefined' && typeof document !== 'undefined';\r\n};\r\n\r\n/**\r\n * 安全获取嵌套对象属性\r\n * @param {Object} obj - 对象\r\n * @param {string} path - 属性路径\r\n * @param {*} defaultValue - 默认值\r\n * @returns {*} 属性值\r\n */\r\nexport const getNestedValue = (obj, path, defaultValue = undefined) => {\r\n const keys = path.split('.');\r\n let result = obj;\r\n \r\n for (const key of keys) {\r\n result = result?.[key];\r\n if (result === undefined) return defaultValue;\r\n }\r\n \r\n return result;\r\n};\r\n\r\n/**\r\n * 格式化文件大小\r\n * @param {number} bytes - 字节数\r\n * @param {number} decimals - 小数位数\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatFileSize = (bytes, decimals = 2) => {\r\n if (bytes === 0) return '0 Bytes';\r\n \r\n const k = 1024;\r\n const dm = decimals < 0 ? 0 : decimals;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n \r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n \r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n};\r\n\r\n/**\r\n * 格式化日期\r\n * @param {Date|string|number} date - 日期\r\n * @param {string} format - 格式\r\n * @returns {string} 格式化后的日期字符串\r\n */\r\nexport const formatDate = (date, format = 'YYYY-MM-DD HH:mm:ss') => {\r\n const d = new Date(date);\r\n \r\n const year = d.getFullYear();\r\n const month = String(d.getMonth() + 1).padStart(2, '0');\r\n const day = String(d.getDate()).padStart(2, '0');\r\n const hours = String(d.getHours()).padStart(2, '0');\r\n const minutes = String(d.getMinutes()).padStart(2, '0');\r\n const seconds = String(d.getSeconds()).padStart(2, '0');\r\n \r\n return format\r\n .replace('YYYY', year)\r\n .replace('MM', month)\r\n .replace('DD', day)\r\n .replace('HH', hours)\r\n .replace('mm', minutes)\r\n .replace('ss', seconds);\r\n};\r\n\r\n/**\r\n * 生成随机数\r\n * @param {number} min - 最小值\r\n * @param {number} max - 最大值\r\n * @returns {number} 随机数\r\n */\r\nexport const random = (min, max) => {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n};\r\n\r\n/**\r\n * 检查元素是否在视口中\r\n * @param {HTMLElement} el - 元素\r\n * @returns {boolean} 是否在视口中\r\n */\r\nexport const isInViewport = (el) => {\r\n const rect = el.getBoundingClientRect();\r\n return (\r\n rect.top >= 0 &&\r\n rect.left >= 0 &&\r\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\r\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\r\n );\r\n};\r\n\r\n/**\r\n * 平滑滚动到元素\r\n * @param {HTMLElement} el - 元素\r\n * @param {Object} options - 选项\r\n */\r\nexport const scrollToElement = (el, options = {}) => {\r\n const defaultOptions = {\r\n behavior: 'smooth',\r\n block: 'start',\r\n inline: 'nearest',\r\n };\r\n \r\n el.scrollIntoView({ ...defaultOptions, ...options });\r\n};\r\n\r\n/**\r\n * 复制文本到剪贴板\r\n * @param {string} text - 文本\r\n * @returns {Promise} 是否成功\r\n */\r\nexport const copyToClipboard = async (text) => {\r\n try {\r\n if (navigator.clipboard) {\r\n await navigator.clipboard.writeText(text);\r\n return true;\r\n }\r\n \r\n // 降级方案\r\n const textarea = document.createElement('textarea');\r\n textarea.value = text;\r\n textarea.style.position = 'fixed';\r\n textarea.style.opacity = '0';\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(textarea);\r\n \r\n return true;\r\n } catch (err) {\r\n console.error('Failed to copy text: ', err);\r\n return false;\r\n }\r\n};\r\n\r\n/**\r\n * 检测设备类型\r\n * @returns {string} 设备类型\r\n */\r\nexport const getDeviceType = () => {\r\n const ua = navigator.userAgent;\r\n \r\n if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {\r\n return 'tablet';\r\n }\r\n \r\n if (/Mobile|Android|iP(hone|od)|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/.test(ua)) {\r\n return 'mobile';\r\n }\r\n \r\n return 'desktop';\r\n};\r\n\r\n/**\r\n * 检测浏览器\r\n * @returns {Object} 浏览器信息\r\n */\r\nexport const getBrowserInfo = () => {\r\n const ua = navigator.userAgent;\r\n let browser = 'unknown';\r\n let version = 'unknown';\r\n \r\n if (ua.includes('Firefox/')) {\r\n browser = 'Firefox';\r\n version = ua.split('Firefox/')[1];\r\n } else if (ua.includes('Edg/')) {\r\n browser = 'Edge';\r\n version = ua.split('Edg/')[1];\r\n } else if (ua.includes('Chrome/')) {\r\n browser = 'Chrome';\r\n version = ua.split('Chrome/')[1];\r\n } else if (ua.includes('Safari/')) {\r\n browser = 'Safari';\r\n version = ua.split('Version/')[1];\r\n }\r\n \r\n return { browser, version };\r\n};\r\n\r\n/**\r\n * 检测操作系统\r\n * @returns {string} 操作系统\r\n */\r\nexport const getOS = () => {\r\n const ua = navigator.userAgent;\r\n \r\n if (ua.includes('Win')) return 'Windows';\r\n if (ua.includes('Mac')) return 'MacOS';\r\n if (ua.includes('Linux')) return 'Linux';\r\n if (ua.includes('Android')) return 'Android';\r\n if (ua.includes('iOS') || ua.includes('iPhone') || ua.includes('iPad')) return 'iOS';\r\n \r\n return 'Unknown';\r\n};\r\n\r\n/**\r\n * 检测网络状态\r\n * @returns {Object} 网络信息\r\n */\r\nexport const getNetworkInfo = () => {\r\n if (!navigator.connection) {\r\n return { online: navigator.onLine, type: 'unknown', speed: 'unknown' };\r\n }\r\n \r\n const connection = navigator.connection;\r\n \r\n return {\r\n online: navigator.onLine,\r\n type: connection.effectiveType || 'unknown',\r\n speed: connection.downlink || 'unknown',\r\n rtt: connection.rtt || 'unknown',\r\n };\r\n};\r\n\r\n/**\r\n * 存储数据到localStorage\r\n * @param {string} key - 键\r\n * @param {*} value - 值\r\n * @param {number} expiry - 过期时间(毫秒)\r\n */\r\nexport const setStorage = (key, value, expiry = null) => {\r\n const item = {\r\n value,\r\n timestamp: Date.now(),\r\n expiry: expiry ? Date.now() + expiry : null,\r\n };\r\n \r\n localStorage.setItem(key, JSON.stringify(item));\r\n};\r\n\r\n/**\r\n * 从localStorage获取数据\r\n * @param {string} key - 键\r\n * @param {*} defaultValue - 默认值\r\n * @returns {*} 值\r\n */\r\nexport const getStorage = (key, defaultValue = null) => {\r\n const itemStr = localStorage.getItem(key);\r\n \r\n if (!itemStr) return defaultValue;\r\n \r\n try {\r\n const item = JSON.parse(itemStr);\r\n \r\n // 检查是否过期\r\n if (item.expiry && Date.now() > item.expiry) {\r\n localStorage.removeItem(key);\r\n return defaultValue;\r\n }\r\n \r\n return item.value;\r\n } catch (err) {\r\n console.error('Error parsing storage item:', err);\r\n return defaultValue;\r\n }\r\n};\r\n\r\n/**\r\n * 从localStorage删除数据\r\n * @param {string} key - 键\r\n */\r\nexport const removeStorage = (key) => {\r\n localStorage.removeItem(key);\r\n};\r\n\r\n/**\r\n * 清空localStorage\r\n */\r\nexport const clearStorage = () => {\r\n localStorage.clear();\r\n};\r\n\r\n/**\r\n * 生成UUID\r\n * @returns {string} UUID\r\n */\r\nexport const generateUUID = () => {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n const r = (Math.random() * 16) | 0;\r\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n};\r\n\r\n/**\r\n * 检查是否支持某个CSS属性\r\n * @param {string} property - CSS属性\r\n * @returns {boolean} 是否支持\r\n */\r\nexport const supportsCSSProperty = (property) => {\r\n return typeof document !== 'undefined' && \r\n property in document.documentElement.style;\r\n};\r\n\r\n/**\r\n * 检查是否支持某个JavaScript API\r\n * @param {string} api - API名称\r\n * @returns {boolean} 是否支持\r\n */\r\nexport const supportsAPI = (api) => {\r\n return api in window || api in navigator;\r\n};\r\n\r\n/**\r\n * 获取URL参数\r\n * @param {string} name - 参数名\r\n * @returns {string|null} 参数值\r\n */\r\nexport const getURLParam = (name) => {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n return urlParams.get(name);\r\n};\r\n\r\n/**\r\n * 设置URL参数\r\n * @param {string} name - 参数名\r\n * @param {string} value - 参数值\r\n */\r\nexport const setURLParam = (name, value) => {\r\n const url = new URL(window.location);\r\n url.searchParams.set(name, value);\r\n window.history.pushState({}, '', url);\r\n};\r\n\r\n/**\r\n * 删除URL参数\r\n * @param {string} name - 参数名\r\n */\r\nexport const removeURLParam = (name) => {\r\n const url = new URL(window.location);\r\n url.searchParams.delete(name);\r\n window.history.pushState({}, '', url);\r\n};\r\n\r\n/**\r\n * 格式化数字\r\n * @param {number} number - 数字\r\n * @param {number} decimals - 小数位数\r\n * @param {string} decimalSeparator - 小数分隔符\r\n * @param {string} thousandsSeparator - 千位分隔符\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatNumber = (number, decimals = 0, decimalSeparator = '.', thousandsSeparator = ',') => {\r\n const fixed = number.toFixed(decimals);\r\n const [intPart, decPart] = fixed.split('.');\r\n \r\n const formattedInt = intPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator);\r\n \r\n return decimals > 0 ? `${formattedInt}${decimalSeparator}${decPart}` : formattedInt;\r\n};\r\n\r\n/**\r\n * 格式化货币\r\n * @param {number} amount - 金额\r\n * @param {string} currency - 货币代码\r\n * @param {string} locale - 地区\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatCurrency = (amount, currency = 'USD', locale = 'en-US') => {\r\n return new Intl.NumberFormat(locale, {\r\n style: 'currency',\r\n currency,\r\n }).format(amount);\r\n};\r\n\r\n/**\r\n * 格式化百分比\r\n * @param {number} value - 值\r\n * @param {number} decimals - 小数位数\r\n * @param {string} locale - 地区\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatPercent = (value, decimals = 2, locale = 'en-US') => {\r\n return new Intl.NumberFormat(locale, {\r\n style: 'percent',\r\n minimumFractionDigits: decimals,\r\n maximumFractionDigits: decimals,\r\n }).format(value / 100);\r\n};\r\n\r\n/**\r\n * 检查是否为空值\r\n * @param {*} value - 值\r\n * @returns {boolean} 是否为空\r\n */\r\nexport const isEmpty = (value) => {\r\n if (value === null || value === undefined) return true;\r\n if (typeof value === 'string') return value.trim().length === 0;\r\n if (Array.isArray(value)) return value.length === 0;\r\n if (typeof value === 'object') return Object.keys(value).length === 0;\r\n return false;\r\n};\r\n\r\n/**\r\n * 深拷贝对象\r\n * @param {*} obj - 对象\r\n * @returns {*} 拷贝后的对象\r\n */\r\nexport const deepClone = (obj) => {\r\n if (obj === null || typeof obj !== 'object') return obj;\r\n if (obj instanceof Date) return new Date(obj.getTime());\r\n if (obj instanceof RegExp) return new RegExp(obj);\r\n if (obj instanceof Map) return new Map([...obj].map(([k, v]) => [k, deepClone(v)]));\r\n if (obj instanceof Set) return new Set([...obj].map(item => deepClone(item)));\r\n \r\n const cloned = Array.isArray(obj) ? [] : {};\r\n \r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n cloned[key] = deepClone(obj[key]);\r\n }\r\n }\r\n \r\n return cloned;\r\n};\r\n\r\n/**\r\n * 比较两个对象是否相等\r\n * @param {*} obj1 - 对象1\r\n * @param {*} obj2 - 对象2\r\n * @returns {boolean} 是否相等\r\n */\r\nexport const isEqual = (obj1, obj2) => {\r\n if (obj1 === obj2) return true;\r\n if (obj1 === null || obj2 === null) return false;\r\n if (typeof obj1 !== typeof obj2) return false;\r\n \r\n if (typeof obj1 !== 'object') return obj1 === obj2;\r\n \r\n const keys1 = Object.keys(obj1);\r\n const keys2 = Object.keys(obj2);\r\n \r\n if (keys1.length !== keys2.length) return false;\r\n \r\n for (const key of keys1) {\r\n if (!keys2.includes(key)) return false;\r\n if (!isEqual(obj1[key], obj2[key])) return false;\r\n }\r\n \r\n return true;\r\n};\r\n\r\n/**\r\n * 验证邮箱格式\r\n * @param {string} email - 邮箱\r\n * @returns {boolean} 是否有效\r\n */\r\nexport const isValidEmail = (email) => {\r\n const re = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n return re.test(email);\r\n};\r\n\r\n/**\r\n * 验证URL格式\r\n * @param {string} url - URL\r\n * @returns {boolean} 是否有效\r\n */\r\nexport const isValidURL = (url) => {\r\n try {\r\n new URL(url);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n};\r\n\r\n/**\r\n * 验证手机号格式\r\n * @param {string} phone - 手机号\r\n * @returns {boolean} 是否有效\r\n */\r\nexport const isValidPhone = (phone) => {\r\n const re = /^1[3-9]\\d{9}$/;\r\n return re.test(phone);\r\n};\r\n\r\n/**\r\n * 验证身份证号格式\r\n * @param {string} idCard - 身份证号\r\n * @returns {boolean} 是否有效\r\n */\r\nexport const isValidIDCard = (idCard) => {\r\n const re = /^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$/;\r\n return re.test(idCard);\r\n};\r\n\r\n/**\r\n * 生成随机颜色\r\n * @returns {string} 颜色值\r\n */\r\nexport const randomColor = () => {\r\n return '#' + Math.floor(Math.random() * 16777215).toString(16).padStart(6, '0');\r\n};\r\n\r\n/**\r\n * 颜色转RGBA\r\n * @param {string} color - 颜色值\r\n * @param {number} alpha - 透明度\r\n * @returns {string} RGBA颜色值\r\n */\r\nexport const colorToRGBA = (color, alpha = 1) => {\r\n const hex = color.replace('#', '');\r\n const r = parseInt(hex.substring(0, 2), 16);\r\n const g = parseInt(hex.substring(2, 4), 16);\r\n const b = parseInt(hex.substring(4, 6), 16);\r\n \r\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\r\n};\r\n\r\n/**\r\n * 获取颜色亮度\r\n * @param {string} color - 颜色值\r\n * @returns {number} 亮度值(0-255)\r\n */\r\nexport const getColorBrightness = (color) => {\r\n const hex = color.replace('#', '');\r\n const r = parseInt(hex.substring(0, 2), 16);\r\n const g = parseInt(hex.substring(2, 4), 16);\r\n const b = parseInt(hex.substring(4, 6), 16);\r\n \r\n return (r * 299 + g * 587 + b * 114) / 1000;\r\n};\r\n\r\n/**\r\n * 判断是否为浅色\r\n * @param {string} color - 颜色值\r\n * @returns {boolean} 是否为浅色\r\n */\r\nexport const isLightColor = (color) => {\r\n return getColorBrightness(color) > 128;\r\n};\r\n\r\n/**\r\n * 获取对比色\r\n * @param {string} color - 颜色值\r\n * @returns {string} 对比色\r\n */\r\nexport const getContrastColor = (color) => {\r\n return isLightColor(color) ? '#000000' : '#FFFFFF';\r\n};\r\n\r\n/**\r\n * 生成渐变色\r\n * @param {string} color1 - 起始颜色\r\n * @param {string} color2 - 结束颜色\r\n * @param {number} steps - 步数\r\n * @returns {Array} 颜色数组\r\n */\r\nexport const generateGradient = (color1, color2, steps = 10) => {\r\n const hex = (color) => {\r\n const c = color.replace('#', '');\r\n return [\r\n parseInt(c.substring(0, 2), 16),\r\n parseInt(c.substring(2, 4), 16),\r\n parseInt(c.substring(4, 6), 16),\r\n ];\r\n };\r\n \r\n const [r1, g1, b1] = hex(color1);\r\n const [r2, g2, b2] = hex(color2);\r\n \r\n const gradient = [];\r\n \r\n for (let i = 0; i < steps; i++) {\r\n const r = Math.round(r1 + (r2 - r1) * (i / (steps - 1)));\r\n const g = Math.round(g1 + (g2 - g1) * (i / (steps - 1)));\r\n const b = Math.round(b1 + (b2 - b1) * (i / (steps - 1)));\r\n \r\n gradient.push(`#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`);\r\n }\r\n \r\n return gradient;\r\n};\r\n\r\n/**\r\n * 获取字符长度(支持中文)\r\n * @param {string} str - 字符串\r\n * @returns {number} 长度\r\n */\r\nexport const getStringLength = (str) => {\r\n let length = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n const code = str.charCodeAt(i);\r\n if (code > 0 && code <= 128) {\r\n length += 1;\r\n } else {\r\n length += 2;\r\n }\r\n }\r\n return length;\r\n};\r\n\r\n/**\r\n * 截取字符串(支持中文)\r\n * @param {string} str - 字符串\r\n * @param {number} length - 长度\r\n * @param {string} suffix - 后缀\r\n * @returns {string} 截取后的字符串\r\n */\r\nexport const truncateString = (str, length, suffix = '...') => {\r\n let currentLength = 0;\r\n let result = '';\r\n \r\n for (let i = 0; i < str.length; i++) {\r\n const char = str[i];\r\n const code = str.charCodeAt(i);\r\n \r\n if (code > 0 && code <= 128) {\r\n currentLength += 1;\r\n } else {\r\n currentLength += 2;\r\n }\r\n \r\n if (currentLength > length) {\r\n return result + suffix;\r\n }\r\n \r\n result += char;\r\n }\r\n \r\n return result;\r\n};\r\n\r\n/**\r\n * 驼峰转换\r\n * @param {string} str - 字符串\r\n * @returns {string} 驼峰格式字符串\r\n */\r\nexport const toCamelCase = (str) => {\r\n return str\r\n .replace(/[-_\\s]+(.)?/g, (_, c) => (c ? c.toUpperCase() : ''))\r\n .replace(/^[A-Z]/, (c) => c.toLowerCase());\r\n};\r\n\r\n/**\r\n * 短横线转换\r\n * @param {string} str - 字符串\r\n * @returns {string} 短横线格式字符串\r\n */\r\nexport const toKebabCase = (str) => {\r\n return str\r\n .replace(/([a-z])([A-Z])/g, '$1-$2')\r\n .replace(/[\\s_]+/g, '-')\r\n .toLowerCase();\r\n};\r\n\r\n/**\r\n * 下划线转换\r\n * @param {string} str - 字符串\r\n * @returns {string} 下划线格式字符串\r\n */\r\nexport const toSnakeCase = (str) => {\r\n return str\r\n .replace(/([a-z])([A-Z])/g, '$1_$2')\r\n .replace(/[\\s\\-]+/g, '_')\r\n .toLowerCase();\r\n};\r\n\r\n/**\r\n * 首字母大写\r\n * @param {string} str - 字符串\r\n * @returns {string} 首字母大写字符串\r\n */\r\nexport const capitalize = (str) => {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n};\r\n\r\n/**\r\n * 每个单词首字母大写\r\n * @param {string} str - 字符串\r\n * @returns {string} 每个单词首字母大写字符串\r\n */\r\nexport const capitalizeWords = (str) => {\r\n return str.replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n};\r\n\r\n/**\r\n * 移除HTML标签\r\n * @param {string} html - HTML字符串\r\n * @returns {string} 纯文本\r\n */\r\nexport const stripHTML = (html) => {\r\n const tmp = document.createElement('div');\r\n tmp.innerHTML = html;\r\n return tmp.textContent || tmp.innerText || '';\r\n};\r\n\r\n/**\r\n * 转义正则表达式\r\n * @param {string} str - 字符串\r\n * @returns {string} 转义后的字符串\r\n */\r\nexport const escapeRegExp = (str) => {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n};\r\n\r\n/**\r\n * 生成随机字符串\r\n * @param {number} length - 长度\r\n * @param {string} chars - 字符集\r\n * @returns {string} 随机字符串\r\n */\r\nexport const randomString = (length = 8, chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') => {\r\n let result = '';\r\n for (let i = 0; i < length; i++) {\r\n result += chars.charAt(Math.floor(Math.random() * chars.length));\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * 延迟执行\r\n * @param {number} ms - 毫秒数\r\n * @returns {Promise} Promise对象\r\n */\r\nexport const sleep = (ms) => {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n};\r\n\r\n/**\r\n * 重试函数\r\n * @param {Function} fn - 函数\r\n * @param {number} maxAttempts - 最大尝试次数\r\n * @param {number} delay - 延迟时间\r\n * @returns {Promise} Promise对象\r\n */\r\nexport const retry = async (fn, maxAttempts = 3, delay = 1000) => {\r\n let lastError;\r\n \r\n for (let attempt = 1; attempt <= maxAttempts; attempt++) {\r\n try {\r\n return await fn();\r\n } catch (err) {\r\n lastError = err;\r\n if (attempt < maxAttempts) {\r\n await sleep(delay * attempt);\r\n }\r\n }\r\n }\r\n \r\n throw lastError;\r\n};\r\n\r\n/**\r\n * 超时控制\r\n * @param {Promise} promise - Promise对象\r\n * @param {number} ms - 毫秒数\r\n * @returns {Promise} Promise对象\r\n */\r\nexport const timeout = (promise, ms) => {\r\n return Promise.race([\r\n promise,\r\n new Promise((_, reject) => {\r\n setTimeout(() => reject(new Error('Timeout')), ms);\r\n }),\r\n ]);\r\n};\r\n\r\n/**\r\n * 并发控制\r\n * @param {Array} tasks - 任务数组\r\n * @param {number} concurrency - 并发数\r\n * @returns {Promise} Promise对象\r\n */\r\nexport const parallel = async (tasks, concurrency = 5) => {\r\n const results = [];\r\n const executing = new Set();\r\n \r\n for (const [index, task] of tasks.entries()) {\r\n const p = Promise.resolve().then(() => task());\r\n results.push(p);\r\n executing.add(p);\r\n \r\n const clean = () => executing.delete(p);\r\n p.then(clean, clean);\r\n \r\n if (executing.size >= concurrency) {\r\n await Promise.race(executing);\r\n }\r\n }\r\n \r\n return Promise.all(results);\r\n};\r\n\r\n/**\r\n * 序列执行\r\n * @param {Array} tasks - 任务数组\r\n * @returns {Promise} Promise对象\r\n */\r\nexport const sequence = async (tasks) => {\r\n const results = [];\r\n \r\n for (const task of tasks) {\r\n results.push(await task());\r\n }\r\n \r\n return results;\r\n};\r\n\r\n/**\r\n * 缓存函数\r\n * @param {Function} fn - 函数\r\n * @param {number} maxSize - 最大缓存数\r\n * @returns {Function} 缓存后的函数\r\n */\r\nexport const memoize = (fn, maxSize = 100) => {\r\n const cache = new Map();\r\n \r\n return (...args) => {\r\n const key = JSON.stringify(args);\r\n \r\n if (cache.has(key)) {\r\n return cache.get(key);\r\n }\r\n \r\n const result = fn(...args);\r\n \r\n if (cache.size >= maxSize) {\r\n const firstKey = cache.keys().next().value;\r\n cache.delete(firstKey);\r\n }\r\n \r\n cache.set(key, result);\r\n \r\n return result;\r\n };\r\n};\r\n\r\n/**\r\n * 单例模式\r\n * @param {Function} fn - 函数\r\n * @returns {Function} 单例函数\r\n */\r\nexport const singleton = (fn) => {\r\n let instance;\r\n \r\n return (...args) => {\r\n if (!instance) {\r\n instance = fn(...args);\r\n }\r\n return instance;\r\n };\r\n};\r\n\r\n/**\r\n * 观察者模式\r\n * @returns {Object} 观察者对象\r\n */\r\nexport const createObserver = () => {\r\n const listeners = new Map();\r\n \r\n return {\r\n on(event, callback) {\r\n if (!listeners.has(event)) {\r\n listeners.set(event, new Set());\r\n }\r\n listeners.get(event).add(callback);\r\n \r\n return () => this.off(event, callback);\r\n },\r\n \r\n off(event, callback) {\r\n if (listeners.has(event)) {\r\n listeners.get(event).delete(callback);\r\n }\r\n },\r\n \r\n emit(event, ...args) {\r\n if (listeners.has(event)) {\r\n listeners.get(event).forEach(callback => callback(...args));\r\n }\r\n },\r\n \r\n once(event, callback) {\r\n const wrapper = (...args) => {\r\n callback(...args);\r\n this.off(event, wrapper);\r\n };\r\n this.on(event, wrapper);\r\n },\r\n \r\n clear() {\r\n listeners.clear();\r\n },\r\n };\r\n};\r\n\r\n/**\r\n * 状态机\r\n * @param {Object} config - 配置\r\n * @returns {Object} 状态机对象\r\n */\r\nexport const createStateMachine = (config) => {\r\n let currentState = config.initial;\r\n const listeners = new Map();\r\n \r\n return {\r\n get state() {\r\n return currentState;\r\n },\r\n \r\n transition(event) {\r\n const transitions = config.transitions[currentState];\r\n if (!transitions || !transitions[event]) {\r\n throw new Error(`Invalid transition: ${event} from ${currentState}`);\r\n }\r\n \r\n const nextState = transitions[event];\r\n const prevState = currentState;\r\n currentState = nextState;\r\n \r\n if (listeners.has(nextState)) {\r\n listeners.get(nextState).forEach(callback => callback(prevState, nextState));\r\n }\r\n \r\n return nextState;\r\n },\r\n \r\n on(state, callback) {\r\n if (!listeners.has(state)) {\r\n listeners.set(state, new Set());\r\n }\r\n listeners.get(state).add(callback);\r\n \r\n return () => this.off(state, callback);\r\n },\r\n \r\n off(state, callback) {\r\n if (listeners.has(state)) {\r\n listeners.get(state).delete(callback);\r\n }\r\n },\r\n \r\n can(event) {\r\n const transitions = config.transitions[currentState];\r\n return transitions && transitions[event] !== undefined;\r\n },\r\n };\r\n};\r\n","/**\r\n * MetonaToast Icons — 图标SVG定义\r\n * @module icons\r\n * @version 2.0.0\r\n * @description 80+ 内置SVG图标\r\n */\r\n\r\nexport const ICONS = {\r\n success: `\r\n \r\n `,\r\n \r\n error: `\r\n \r\n \r\n \r\n `,\r\n \r\n warning: `\r\n \r\n \r\n \r\n `,\r\n \r\n info: `\r\n \r\n \r\n \r\n `,\r\n \r\n loading: `\r\n \r\n `,\r\n \r\n close: `\r\n \r\n \r\n `,\r\n \r\n check: `\r\n \r\n `,\r\n \r\n x: `\r\n \r\n \r\n `,\r\n \r\n alert: `\r\n \r\n \r\n \r\n `,\r\n \r\n question: `\r\n \r\n \r\n \r\n `,\r\n \r\n star: `\r\n \r\n `,\r\n \r\n heart: `\r\n \r\n `,\r\n \r\n bell: `\r\n \r\n \r\n `,\r\n \r\n mail: `\r\n \r\n \r\n `,\r\n \r\n settings: `\r\n \r\n \r\n `,\r\n \r\n user: `\r\n \r\n \r\n `,\r\n \r\n home: `\r\n \r\n \r\n `,\r\n \r\n search: `\r\n \r\n \r\n `,\r\n \r\n plus: `\r\n \r\n \r\n `,\r\n \r\n minus: `\r\n \r\n `,\r\n \r\n edit: `\r\n \r\n \r\n `,\r\n \r\n trash: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n download: `\r\n \r\n \r\n \r\n `,\r\n \r\n upload: `\r\n \r\n \r\n \r\n `,\r\n \r\n share: `\r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n link: `\r\n \r\n \r\n `,\r\n \r\n external: `\r\n \r\n \r\n \r\n `,\r\n \r\n clock: `\r\n \r\n \r\n `,\r\n \r\n calendar: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n map: `\r\n \r\n \r\n \r\n `,\r\n \r\n compass: `\r\n \r\n \r\n `,\r\n \r\n globe: `\r\n \r\n \r\n \r\n `,\r\n \r\n wifi: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n cloud: `\r\n \r\n `,\r\n \r\n sun: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n moon: `\r\n \r\n `,\r\n \r\n zap: `\r\n \r\n `,\r\n \r\n activity: `\r\n \r\n `,\r\n \r\n cpu: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n database: `\r\n \r\n \r\n \r\n `,\r\n \r\n server: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n terminal: `\r\n \r\n \r\n `,\r\n \r\n code: `\r\n \r\n \r\n `,\r\n \r\n git: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n package: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n layers: `\r\n \r\n \r\n \r\n `,\r\n \r\n grid: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n list: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n filter: `\r\n \r\n `,\r\n \r\n sort: `\r\n \r\n \r\n `,\r\n \r\n refresh: `\r\n \r\n \r\n \r\n `,\r\n \r\n sync: `\r\n \r\n \r\n \r\n `,\r\n \r\n power: `\r\n \r\n \r\n `,\r\n \r\n battery: `\r\n \r\n \r\n `,\r\n \r\n bluetooth: `\r\n \r\n `,\r\n \r\n volume: `\r\n \r\n \r\n `,\r\n \r\n mic: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n camera: `\r\n \r\n \r\n `,\r\n \r\n image: `\r\n \r\n \r\n \r\n `,\r\n \r\n video: `\r\n \r\n \r\n `,\r\n \r\n music: `\r\n \r\n \r\n \r\n `,\r\n \r\n file: `\r\n \r\n \r\n `,\r\n \r\n folder: `\r\n \r\n `,\r\n \r\n clipboard: `\r\n \r\n \r\n `,\r\n \r\n save: `\r\n \r\n \r\n \r\n `,\r\n \r\n print: `\r\n \r\n \r\n \r\n `,\r\n \r\n eye: `\r\n \r\n \r\n `,\r\n \r\n eyeOff: `\r\n \r\n \r\n `,\r\n \r\n lock: `\r\n \r\n \r\n `,\r\n \r\n unlock: `\r\n \r\n \r\n `,\r\n \r\n shield: `\r\n \r\n `,\r\n \r\n key: `\r\n \r\n `,\r\n \r\n flag: `\r\n \r\n \r\n `,\r\n \r\n bookmark: `\r\n \r\n `,\r\n \r\n tag: `\r\n \r\n \r\n `,\r\n \r\n gift: `\r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n award: `\r\n \r\n \r\n `,\r\n \r\n target: `\r\n \r\n \r\n \r\n `,\r\n \r\n crosshair: `\r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n move: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n maximize: `\r\n \r\n `,\r\n \r\n minimize: `\r\n \r\n `,\r\n \r\n copy: `\r\n \r\n \r\n `,\r\n \r\n cut: `\r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n paste: `\r\n \r\n \r\n `,\r\n \r\n rotateCw: `\r\n \r\n \r\n `,\r\n \r\n rotateCcw: `\r\n \r\n \r\n `,\r\n \r\n zoomIn: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n zoomOut: `\r\n \r\n \r\n \r\n `,\r\n \r\n crop: `\r\n \r\n \r\n `,\r\n \r\n sliders: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n toggleLeft: `\r\n \r\n \r\n `,\r\n \r\n toggleRight: `\r\n \r\n \r\n `,\r\n \r\n checkCircle: `\r\n \r\n \r\n `,\r\n \r\n xCircle: `\r\n \r\n \r\n \r\n `,\r\n \r\n alertCircle: `\r\n \r\n \r\n \r\n `,\r\n \r\n infoCircle: `\r\n \r\n \r\n \r\n `,\r\n \r\n helpCircle: `\r\n \r\n \r\n \r\n `,\r\n \r\n alertTriangle: `\r\n \r\n \r\n \r\n `,\r\n \r\n checkSquare: `\r\n \r\n \r\n `,\r\n \r\n square: `\r\n \r\n `,\r\n \r\n circle: `\r\n \r\n `,\r\n \r\n triangle: `\r\n \r\n `,\r\n \r\n hexagon: `\r\n \r\n `,\r\n \r\n octagon: `\r\n \r\n `,\r\n \r\n pentagon: `\r\n \r\n `,\r\n \r\n diamond: `\r\n \r\n `,\r\n};\r\n","/**\r\n * MetonaToast Locales — 国际化翻译数据\r\n * @module locales\r\n * @version 2.0.0\r\n * @description 内置 zh-CN / en-US 完整翻译\r\n */\r\n\r\nexport const LOCALES = {\r\n 'zh-CN': {\r\n close: '关闭',\r\n loading: '加载中...',\r\n success: '操作成功',\r\n error: '操作失败',\r\n warning: '警告',\r\n info: '信息',\r\n confirm: '确认',\r\n cancel: '取消',\r\n yes: '是',\r\n no: '否',\r\n ok: '确定',\r\n retry: '重试',\r\n undo: '撤销',\r\n redo: '重做',\r\n save: '保存',\r\n delete: '删除',\r\n edit: '编辑',\r\n add: '添加',\r\n remove: '移除',\r\n search: '搜索',\r\n filter: '筛选',\r\n sort: '排序',\r\n refresh: '刷新',\r\n sync: '同步',\r\n upload: '上传',\r\n download: '下载',\r\n share: '分享',\r\n copy: '复制',\r\n cut: '剪切',\r\n paste: '粘贴',\r\n print: '打印',\r\n export: '导出',\r\n import: '导入',\r\n settings: '设置',\r\n help: '帮助',\r\n about: '关于',\r\n version: '版本',\r\n language: '语言',\r\n theme: '主题',\r\n dark: '暗色',\r\n light: '亮色',\r\n auto: '自动',\r\n notifications: '通知',\r\n enable: '启用',\r\n disable: '禁用',\r\n on: '开启',\r\n off: '关闭',\r\n max: '最大',\r\n min: '最小',\r\n expand: '展开',\r\n collapse: '折叠',\r\n fullscreen: '全屏',\r\n exitFullscreen: '退出全屏',\r\n zoomIn: '放大',\r\n zoomOut: '缩小',\r\n reset: '重置',\r\n apply: '应用',\r\n submit: '提交',\r\n send: '发送',\r\n receive: '接收',\r\n connect: '连接',\r\n disconnect: '断开',\r\n start: '开始',\r\n stop: '停止',\r\n pause: '暂停',\r\n resume: '继续',\r\n next: '下一个',\r\n previous: '上一个',\r\n first: '第一个',\r\n last: '最后一个',\r\n back: '返回',\r\n forward: '前进',\r\n home: '首页',\r\n menu: '菜单',\r\n more: '更多',\r\n less: '更少',\r\n show: '显示',\r\n hide: '隐藏',\r\n visible: '可见',\r\n hidden: '隐藏',\r\n enabled: '已启用',\r\n disabled: '已禁用',\r\n active: '活跃',\r\n inactive: '非活跃',\r\n online: '在线',\r\n offline: '离线',\r\n connected: '已连接',\r\n disconnected: '已断开',\r\n loading: '加载中',\r\n loaded: '已加载',\r\n saving: '保存中',\r\n saved: '已保存',\r\n deleting: '删除中',\r\n deleted: '已删除',\r\n uploading: '上传中',\r\n uploaded: '已上传',\r\n downloading: '下载中',\r\n downloaded: '已下载',\r\n processing: '处理中',\r\n processed: '已处理',\r\n syncing: '同步中',\r\n synced: '已同步',\r\n sending: '发送中',\r\n sent: '已发送',\r\n receiving: '接收中',\r\n received: '已接收',\r\n connecting: '连接中',\r\n error: '错误',\r\n warning: '警告',\r\n info: '信息',\r\n success: '成功',\r\n question: '问题',\r\n help: '帮助',\r\n feedback: '反馈',\r\n report: '报告',\r\n bug: '错误',\r\n feature: '功能',\r\n improvement: '改进',\r\n suggestion: '建议',\r\n request: '请求',\r\n response: '响应',\r\n status: '状态',\r\n progress: '进度',\r\n complete: '完成',\r\n incomplete: '未完成',\r\n pending: '待处理',\r\n processing: '处理中',\r\n failed: '失败',\r\n cancelled: '已取消',\r\n timeout: '超时',\r\n expired: '已过期',\r\n invalid: '无效',\r\n valid: '有效',\r\n required: '必填',\r\n optional: '可选',\r\n enabled: '启用',\r\n disabled: '禁用',\r\n allowed: '允许',\r\n denied: '拒绝',\r\n approved: '已批准',\r\n rejected: '已拒绝',\r\n accepted: '已接受',\r\n declined: '已拒绝',\r\n confirmed: '已确认',\r\n unconfirmed: '未确认',\r\n verified: '已验证',\r\n unverified: '未验证',\r\n authenticated: '已认证',\r\n unauthenticated: '未认证',\r\n authorized: '已授权',\r\n unauthorized: '未授权',\r\n public: '公开',\r\n private: '私有',\r\n protected: '受保护',\r\n internal: '内部',\r\n external: '外部',\r\n local: '本地',\r\n remote: '远程',\r\n global: '全局',\r\n system: '系统',\r\n user: '用户',\r\n admin: '管理员',\r\n moderator: '版主',\r\n guest: '访客',\r\n member: '成员',\r\n owner: '所有者',\r\n creator: '创建者',\r\n editor: '编辑者',\r\n viewer: '查看者',\r\n subscriber: '订阅者',\r\n follower: '关注者',\r\n following: '关注中',\r\n friend: '朋友',\r\n contact: '联系人',\r\n group: '群组',\r\n team: '团队',\r\n organization: '组织',\r\n company: '公司',\r\n department: '部门',\r\n project: '项目',\r\n task: '任务',\r\n issue: '问题',\r\n ticket: '工单',\r\n request: '请求',\r\n response: '响应',\r\n message: '消息',\r\n notification: '通知',\r\n alert: '警报',\r\n reminder: '提醒',\r\n event: '事件',\r\n activity: '活动',\r\n log: '日志',\r\n report: '报告',\r\n analytics: '分析',\r\n statistics: '统计',\r\n metrics: '指标',\r\n performance: '性能',\r\n security: '安全',\r\n privacy: '隐私',\r\n compliance: '合规',\r\n policy: '政策',\r\n terms: '条款',\r\n conditions: '条件',\r\n agreement: '协议',\r\n contract: '合同',\r\n license: '许可证',\r\n copyright: '版权',\r\n trademark: '商标',\r\n patent: '专利',\r\n tradeSecret: '商业秘密',\r\n confidential: '机密',\r\n sensitive: '敏感',\r\n critical: '关键',\r\n important: '重要',\r\n urgent: '紧急',\r\n high: '高',\r\n medium: '中',\r\n low: '低',\r\n none: '无',\r\n all: '全部',\r\n any: '任何',\r\n some: '一些',\r\n each: '每个',\r\n every: '每个',\r\n both: '两者',\r\n neither: '两者都不',\r\n either: '任一',\r\n other: '其他',\r\n another: '另一个',\r\n this: '这个',\r\n that: '那个',\r\n these: '这些',\r\n those: '那些',\r\n here: '这里',\r\n there: '那里',\r\n where: '哪里',\r\n when: '何时',\r\n why: '为什么',\r\n how: '如何',\r\n what: '什么',\r\n who: '谁',\r\n which: '哪个',\r\n whose: '谁的',\r\n whom: '谁',\r\n myself: '我自己',\r\n yourself: '你自己',\r\n himself: '他自己',\r\n herself: '她自己',\r\n itself: '它自己',\r\n ourselves: '我们自己',\r\n yourselves: '你们自己',\r\n themselves: '他们自己',\r\n mine: '我的',\r\n yours: '你的',\r\n his: '他的',\r\n hers: '她的',\r\n its: '它的',\r\n ours: '我们的',\r\n yours: '你们的',\r\n theirs: '他们的',\r\n me: '我',\r\n you: '你',\r\n him: '他',\r\n her: '她',\r\n it: '它',\r\n us: '我们',\r\n them: '他们',\r\n my: '我的',\r\n your: '你的',\r\n his: '他的',\r\n her: '她的',\r\n its: '它的',\r\n our: '我们的',\r\n your: '你们的',\r\n their: '他们的',\r\n i: '我',\r\n you: '你',\r\n he: '他',\r\n she: '她',\r\n it: '它',\r\n we: '我们',\r\n they: '他们',\r\n am: '是',\r\n is: '是',\r\n are: '是',\r\n was: '是',\r\n were: '是',\r\n be: '是',\r\n been: '是',\r\n being: '是',\r\n have: '有',\r\n has: '有',\r\n had: '有',\r\n having: '有',\r\n do: '做',\r\n does: '做',\r\n did: '做',\r\n doing: '做',\r\n will: '会',\r\n would: '会',\r\n shall: '将',\r\n should: '应该',\r\n may: '可以',\r\n might: '可能',\r\n can: '能',\r\n could: '能',\r\n must: '必须',\r\n need: '需要',\r\n dare: '敢',\r\n ought: '应该',\r\n used: '过去常常',\r\n to: '到',\r\n of: '的',\r\n in: '在',\r\n for: '为了',\r\n on: '在',\r\n with: '和',\r\n at: '在',\r\n by: '通过',\r\n from: '从',\r\n into: '进入',\r\n during: '在...期间',\r\n before: '在...之前',\r\n after: '在...之后',\r\n above: '在...上面',\r\n below: '在...下面',\r\n between: '在...之间',\r\n under: '在...下面',\r\n over: '在...上面',\r\n across: '穿过',\r\n through: '通过',\r\n into: '进入',\r\n towards: '朝向',\r\n upon: '在...上面',\r\n about: '关于',\r\n against: '反对',\r\n among: '在...之中',\r\n along: '沿着',\r\n around: '周围',\r\n beyond: '超出',\r\n but: '但是',\r\n despite: '尽管',\r\n except: '除了',\r\n inside: '里面',\r\n outside: '外面',\r\n since: '自从',\r\n until: '直到',\r\n unless: '除非',\r\n whether: '是否',\r\n while: '当...时候',\r\n although: '虽然',\r\n because: '因为',\r\n if: '如果',\r\n once: '一旦',\r\n since: '自从',\r\n so: '所以',\r\n that: '那个',\r\n though: '虽然',\r\n till: '直到',\r\n unless: '除非',\r\n until: '直到',\r\n when: '当...时候',\r\n whenever: '每当',\r\n where: '哪里',\r\n wherever: '无论哪里',\r\n whereas: '然而',\r\n wherever: '无论哪里',\r\n while: '当...时候',\r\n why: '为什么',\r\n },\r\n \r\n 'en-US': {\r\n close: 'Close',\r\n loading: 'Loading...',\r\n success: 'Success',\r\n error: 'Error',\r\n warning: 'Warning',\r\n info: 'Info',\r\n confirm: 'Confirm',\r\n cancel: 'Cancel',\r\n yes: 'Yes',\r\n no: 'No',\r\n ok: 'OK',\r\n retry: 'Retry',\r\n undo: 'Undo',\r\n redo: 'Redo',\r\n save: 'Save',\r\n delete: 'Delete',\r\n edit: 'Edit',\r\n add: 'Add',\r\n remove: 'Remove',\r\n search: 'Search',\r\n filter: 'Filter',\r\n sort: 'Sort',\r\n refresh: 'Refresh',\r\n sync: 'Sync',\r\n upload: 'Upload',\r\n download: 'Download',\r\n share: 'Share',\r\n copy: 'Copy',\r\n cut: 'Cut',\r\n paste: 'Paste',\r\n print: 'Print',\r\n export: 'Export',\r\n import: 'Import',\r\n settings: 'Settings',\r\n help: 'Help',\r\n about: 'About',\r\n version: 'Version',\r\n language: 'Language',\r\n theme: 'Theme',\r\n dark: 'Dark',\r\n light: 'Light',\r\n auto: 'Auto',\r\n notifications: 'Notifications',\r\n enable: 'Enable',\r\n disable: 'Disable',\r\n on: 'On',\r\n off: 'Off',\r\n max: 'Max',\r\n min: 'Min',\r\n expand: 'Expand',\r\n collapse: 'Collapse',\r\n fullscreen: 'Fullscreen',\r\n exitFullscreen: 'Exit Fullscreen',\r\n zoomIn: 'Zoom In',\r\n zoomOut: 'Zoom Out',\r\n reset: 'Reset',\r\n apply: 'Apply',\r\n submit: 'Submit',\r\n send: 'Send',\r\n receive: 'Receive',\r\n connect: 'Connect',\r\n disconnect: 'Disconnect',\r\n start: 'Start',\r\n stop: 'Stop',\r\n pause: 'Pause',\r\n resume: 'Resume',\r\n next: 'Next',\r\n previous: 'Previous',\r\n first: 'First',\r\n last: 'Last',\r\n back: 'Back',\r\n forward: 'Forward',\r\n home: 'Home',\r\n menu: 'Menu',\r\n more: 'More',\r\n less: 'Less',\r\n show: 'Show',\r\n hide: 'Hide',\r\n visible: 'Visible',\r\n hidden: 'Hidden',\r\n enabled: 'Enabled',\r\n disabled: 'Disabled',\r\n active: 'Active',\r\n inactive: 'Inactive',\r\n online: 'Online',\r\n offline: 'Offline',\r\n connected: 'Connected',\r\n disconnected: 'Disconnected',\r\n loading: 'Loading',\r\n loaded: 'Loaded',\r\n saving: 'Saving',\r\n saved: 'Saved',\r\n deleting: 'Deleting',\r\n deleted: 'Deleted',\r\n uploading: 'Uploading',\r\n uploaded: 'Uploaded',\r\n downloading: 'Downloading',\r\n downloaded: 'Downloaded',\r\n processing: 'Processing',\r\n processed: 'Processed',\r\n syncing: 'Syncing',\r\n synced: 'Synced',\r\n sending: 'Sending',\r\n sent: 'Sent',\r\n receiving: 'Receiving',\r\n received: 'Received',\r\n connecting: 'Connecting',\r\n error: 'Error',\r\n warning: 'Warning',\r\n info: 'Info',\r\n success: 'Success',\r\n question: 'Question',\r\n help: 'Help',\r\n feedback: 'Feedback',\r\n report: 'Report',\r\n bug: 'Bug',\r\n feature: 'Feature',\r\n improvement: 'Improvement',\r\n suggestion: 'Suggestion',\r\n request: 'Request',\r\n response: 'Response',\r\n status: 'Status',\r\n progress: 'Progress',\r\n complete: 'Complete',\r\n incomplete: 'Incomplete',\r\n pending: 'Pending',\r\n processing: 'Processing',\r\n failed: 'Failed',\r\n cancelled: 'Cancelled',\r\n timeout: 'Timeout',\r\n expired: 'Expired',\r\n invalid: 'Invalid',\r\n valid: 'Valid',\r\n required: 'Required',\r\n optional: 'Optional',\r\n enabled: 'Enabled',\r\n disabled: 'Disabled',\r\n allowed: 'Allowed',\r\n denied: 'Denied',\r\n approved: 'Approved',\r\n rejected: 'Rejected',\r\n accepted: 'Accepted',\r\n declined: 'Declined',\r\n confirmed: 'Confirmed',\r\n unconfirmed: 'Unconfirmed',\r\n verified: 'Verified',\r\n unverified: 'Unverified',\r\n authenticated: 'Authenticated',\r\n unauthenticated: 'Unauthenticated',\r\n authorized: 'Authorized',\r\n unauthorized: 'Unauthorized',\r\n public: 'Public',\r\n private: 'Private',\r\n protected: 'Protected',\r\n internal: 'Internal',\r\n external: 'External',\r\n local: 'Local',\r\n remote: 'Remote',\r\n global: 'Global',\r\n system: 'System',\r\n user: 'User',\r\n admin: 'Admin',\r\n moderator: 'Moderator',\r\n guest: 'Guest',\r\n member: 'Member',\r\n owner: 'Owner',\r\n creator: 'Creator',\r\n editor: 'Editor',\r\n viewer: 'Viewer',\r\n subscriber: 'Subscriber',\r\n follower: 'Follower',\r\n following: 'Following',\r\n friend: 'Friend',\r\n contact: 'Contact',\r\n group: 'Group',\r\n team: 'Team',\r\n organization: 'Organization',\r\n company: 'Company',\r\n department: 'Department',\r\n project: 'Project',\r\n task: 'Task',\r\n issue: 'Issue',\r\n ticket: 'Ticket',\r\n request: 'Request',\r\n response: 'Response',\r\n message: 'Message',\r\n notification: 'Notification',\r\n alert: 'Alert',\r\n reminder: 'Reminder',\r\n event: 'Event',\r\n activity: 'Activity',\r\n log: 'Log',\r\n report: 'Report',\r\n analytics: 'Analytics',\r\n statistics: 'Statistics',\r\n metrics: 'Metrics',\r\n performance: 'Performance',\r\n security: 'Security',\r\n privacy: 'Privacy',\r\n compliance: 'Compliance',\r\n policy: 'Policy',\r\n terms: 'Terms',\r\n conditions: 'Conditions',\r\n agreement: 'Agreement',\r\n contract: 'Contract',\r\n license: 'License',\r\n copyright: 'Copyright',\r\n trademark: 'Trademark',\r\n patent: 'Patent',\r\n tradeSecret: 'Trade Secret',\r\n confidential: 'Confidential',\r\n sensitive: 'Sensitive',\r\n critical: 'Critical',\r\n important: 'Important',\r\n urgent: 'Urgent',\r\n high: 'High',\r\n medium: 'Medium',\r\n low: 'Low',\r\n none: 'None',\r\n all: 'All',\r\n any: 'Any',\r\n some: 'Some',\r\n each: 'Each',\r\n every: 'Every',\r\n both: 'Both',\r\n neither: 'Neither',\r\n either: 'Either',\r\n other: 'Other',\r\n another: 'Another',\r\n this: 'This',\r\n that: 'That',\r\n these: 'These',\r\n those: 'Those',\r\n here: 'Here',\r\n there: 'There',\r\n where: 'Where',\r\n when: 'When',\r\n why: 'Why',\r\n how: 'How',\r\n what: 'What',\r\n who: 'Who',\r\n which: 'Which',\r\n whose: 'Whose',\r\n whom: 'Whom',\r\n myself: 'Myself',\r\n yourself: 'Yourself',\r\n himself: 'Himself',\r\n herself: 'Herself',\r\n itself: 'Itself',\r\n ourselves: 'Ourselves',\r\n yourselves: 'Yourselves',\r\n themselves: 'Themselves',\r\n mine: 'Mine',\r\n yours: 'Yours',\r\n his: 'His',\r\n hers: 'Hers',\r\n its: 'Its',\r\n ours: 'Ours',\r\n yours: 'Yours',\r\n theirs: 'Theirs',\r\n me: 'Me',\r\n you: 'You',\r\n him: 'Him',\r\n her: 'Her',\r\n it: 'It',\r\n us: 'Us',\r\n them: 'Them',\r\n my: 'My',\r\n your: 'Your',\r\n his: 'His',\r\n her: 'Her',\r\n its: 'Its',\r\n our: 'Our',\r\n your: 'Your',\r\n their: 'Their',\r\n i: 'I',\r\n you: 'You',\r\n he: 'He',\r\n she: 'She',\r\n it: 'It',\r\n we: 'We',\r\n they: 'They',\r\n am: 'Am',\r\n is: 'Is',\r\n are: 'Are',\r\n was: 'Was',\r\n were: 'Were',\r\n be: 'Be',\r\n been: 'Been',\r\n being: 'Being',\r\n have: 'Have',\r\n has: 'Has',\r\n had: 'Had',\r\n having: 'Having',\r\n do: 'Do',\r\n does: 'Does',\r\n did: 'Did',\r\n doing: 'Doing',\r\n will: 'Will',\r\n would: 'Would',\r\n shall: 'Shall',\r\n should: 'Should',\r\n may: 'May',\r\n might: 'Might',\r\n can: 'Can',\r\n could: 'Could',\r\n must: 'Must',\r\n need: 'Need',\r\n dare: 'Dare',\r\n ought: 'Ought',\r\n used: 'Used',\r\n to: 'To',\r\n of: 'Of',\r\n in: 'In',\r\n for: 'For',\r\n on: 'On',\r\n with: 'With',\r\n at: 'At',\r\n by: 'By',\r\n from: 'From',\r\n into: 'Into',\r\n during: 'During',\r\n before: 'Before',\r\n after: 'After',\r\n above: 'Above',\r\n below: 'Below',\r\n between: 'Between',\r\n under: 'Under',\r\n over: 'Over',\r\n across: 'Across',\r\n through: 'Through',\r\n into: 'Into',\r\n towards: 'Towards',\r\n upon: 'Upon',\r\n about: 'About',\r\n against: 'Against',\r\n among: 'Among',\r\n along: 'Along',\r\n around: 'Around',\r\n beyond: 'Beyond',\r\n but: 'But',\r\n despite: 'Despite',\r\n except: 'Except',\r\n inside: 'Inside',\r\n outside: 'Outside',\r\n since: 'Since',\r\n until: 'Until',\r\n unless: 'Unless',\r\n whether: 'Whether',\r\n while: 'While',\r\n although: 'Although',\r\n because: 'Because',\r\n if: 'If',\r\n once: 'Once',\r\n since: 'Since',\r\n so: 'So',\r\n that: 'That',\r\n though: 'Though',\r\n till: 'Till',\r\n unless: 'Unless',\r\n until: 'Until',\r\n when: 'When',\r\n whenever: 'Whenever',\r\n where: 'Where',\r\n wherever: 'Wherever',\r\n whereas: 'Whereas',\r\n wherever: 'Wherever',\r\n while: 'While',\r\n why: 'Why',\r\n },\r\n};\r\n","/**\r\n * MetonaToast Constants - 常量定义\r\n * @module constants\r\n * @version 2.0.0\r\n * @description 默认配置、颜色、动画、主题等常量\r\n */\r\n\r\n/**\r\n * 默认配置\r\n */\r\nexport const DEFAULTS = Object.freeze({\r\n // 基础配置\r\n position: 'top-right',\r\n duration: 4000,\r\n max: 6,\r\n gap: 12,\r\n offset: 24,\r\n \r\n // 交互配置\r\n pauseOnHover: true,\r\n closeOnClick: true,\r\n draggable: true,\r\n \r\n // 显示配置\r\n showProgress: true,\r\n progressDirection: 'horizontal',\r\n icon: true,\r\n closeButton: true,\r\n \r\n // 主题配置\r\n theme: 'auto',\r\n animation: 'slide',\r\n \r\n // 布局配置\r\n zIndex: 9999,\r\n width: 360,\r\n \r\n // 自定义配置\r\n className: '',\r\n style: {},\r\n \r\n // 回调函数\r\n onShow: null,\r\n onClose: null,\r\n onClick: null,\r\n onUpdate: null,\r\n \r\n // 高级\r\n resetTimerOnUpdate: false,\r\n notifyWhenHidden: false,\r\n \r\n // 国际化\r\n locale: 'zh-CN',\r\n \r\n // 插件\r\n plugins: [],\r\n});\r\n\r\n// Icons — 从 icons.js 导入并重新导出(保持向后兼容)\r\nimport { ICONS } from './icons.js';\r\nexport { ICONS };\r\n\r\n/**\r\n * 类型颜色配置\r\n */\r\nexport const TYPE_COLORS = {\r\n success: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n error: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n warning: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n info: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n loading: { fg: '#6366f1', bg: 'rgba(99, 102, 241, 0.1)' },\r\n default: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n check: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n x: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n alert: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n question: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n star: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n heart: { fg: '#ec4899', bg: 'rgba(236, 72, 153, 0.1)' },\r\n bell: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n mail: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n settings: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n user: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n home: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n search: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n plus: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n minus: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n edit: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n trash: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n download: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n upload: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n share: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n link: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n external: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n clock: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n calendar: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n map: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n compass: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n globe: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n wifi: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n cloud: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n sun: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n moon: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n zap: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n activity: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n cpu: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n database: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n server: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n terminal: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n code: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n git: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n package: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n layers: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n grid: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n list: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n filter: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n sort: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n refresh: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n sync: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n power: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n battery: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n bluetooth: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n volume: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n mic: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n camera: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n image: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n video: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n music: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n file: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n folder: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n clipboard: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n save: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n print: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n eye: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n eyeOff: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n lock: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n unlock: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n shield: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n key: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n flag: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n bookmark: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n tag: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n gift: { fg: '#ec4899', bg: 'rgba(236, 72, 153, 0.1)' },\r\n award: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n target: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n crosshair: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n move: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n maximize: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n minimize: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n copy: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n cut: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n paste: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n rotateCw: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n rotateCcw: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n zoomIn: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n zoomOut: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n crop: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n sliders: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n toggleLeft: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n toggleRight: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n checkCircle: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n xCircle: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n alertCircle: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n infoCircle: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n helpCircle: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n alertTriangle: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n checkSquare: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n square: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n circle: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n triangle: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n hexagon: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n octagon: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n pentagon: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n diamond: { fg: '#ec4899', bg: 'rgba(236, 72, 153, 0.1)' },\r\n};\r\n\r\n/**\r\n * 动画配置\r\n */\r\nexport const ANIMATIONS = {\r\n slide: {\r\n enter: { transform: 'translateX(80px)', opacity: 0 },\r\n leave: { transform: 'translateX(120%)', opacity: 0 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n fade: {\r\n enter: { opacity: 0, filter: 'blur(3px)' },\r\n leave: { opacity: 0, filter: 'blur(3px)' },\r\n duration: 500,\r\n easing: 'ease',\r\n },\r\n scale: {\r\n enter: { transform: 'scale(0.55)', opacity: 0 },\r\n leave: { transform: 'scale(0.55)', opacity: 0 },\r\n duration: 450,\r\n easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\r\n },\r\n bounce: {\r\n enter: { transform: 'translateY(-80px)', opacity: 0 },\r\n leave: { transform: 'translateY(20px)', opacity: 0 },\r\n duration: 650,\r\n easing: 'ease',\r\n },\r\n flip: {\r\n enter: { transform: 'perspective(500px) rotateX(-90deg)', opacity: 0 },\r\n leave: { transform: 'perspective(500px) rotateX(90deg)', opacity: 0 },\r\n duration: 500,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n rotate: {\r\n enter: { transform: 'rotate(-25deg) scale(0.6)', opacity: 0 },\r\n leave: { transform: 'rotate(25deg) scale(0.6)', opacity: 0 },\r\n duration: 500,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n zoom: {\r\n enter: { transform: 'scale(0.1)', opacity: 0 },\r\n leave: { transform: 'scale(0.1)', opacity: 0 },\r\n duration: 500,\r\n easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\r\n },\r\n slideUp: {\r\n enter: { transform: 'translateY(60px)', opacity: 0 },\r\n leave: { transform: 'translateY(-120%)', opacity: 0 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n slideDown: {\r\n enter: { transform: 'translateY(-60px)', opacity: 0 },\r\n leave: { transform: 'translateY(120%)', opacity: 0 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n slideLeft: {\r\n enter: { transform: 'translateX(-90px)', opacity: 0 },\r\n leave: { transform: 'translateX(120%)', opacity: 0 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n slideRight: {\r\n enter: { transform: 'translateX(90px)', opacity: 0 },\r\n leave: { transform: 'translateX(-120%)', opacity: 0 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n};\r\n\r\n/**\r\n * 主题配置\r\n */\r\nexport const THEMES = {\r\n light: {\r\n bg: 'rgba(255, 255, 255, 0.96)',\r\n text: '#1f2937',\r\n border: 'rgba(0, 0, 0, 0.06)',\r\n shadow: '0 10px 36px -10px rgba(0, 0, 0, 0.18), 0 4px 14px -4px rgba(0, 0, 0, 0.08)',\r\n hoverShadow: '0 14px 48px -10px rgba(0, 0, 0, 0.22), 0 6px 18px -4px rgba(0, 0, 0, 0.10)',\r\n progressBg: 'rgba(0, 0, 0, 0.06)',\r\n closeHoverBg: 'rgba(0, 0, 0, 0.06)',\r\n },\r\n dark: {\r\n bg: 'rgba(28, 32, 40, 0.94)',\r\n text: '#e6e8eb',\r\n border: 'rgba(255, 255, 255, 0.08)',\r\n shadow: '0 10px 36px -10px rgba(0, 0, 0, 0.6), 0 4px 14px -4px rgba(0, 0, 0, 0.4)',\r\n hoverShadow: '0 14px 48px -8px rgba(0, 0, 0, 0.6), 0 6px 18px -4px rgba(0, 0, 0, 0.4)',\r\n progressBg: 'rgba(255, 255, 255, 0.08)',\r\n closeHoverBg: 'rgba(255, 255, 255, 0.08)',\r\n },\r\n auto: 'auto',\r\n warm: {\r\n bg: 'rgba(255, 251, 235, 0.96)',\r\n text: '#78350f',\r\n border: 'rgba(245, 158, 11, 0.2)',\r\n shadow: '0 10px 36px -10px rgba(245, 158, 11, 0.18), 0 4px 14px -4px rgba(245, 158, 11, 0.08)',\r\n hoverShadow: '0 14px 48px -10px rgba(245, 158, 11, 0.22), 0 6px 18px -4px rgba(245, 158, 11, 0.10)',\r\n progressBg: 'rgba(245, 158, 11, 0.1)',\r\n closeHoverBg: 'rgba(245, 158, 11, 0.1)',\r\n },\r\n};\r\n\r\n/**\r\n * 位置配置\r\n */\r\nexport const POSITIONS = [\r\n 'top-left',\r\n 'top-center',\r\n 'top-right',\r\n 'bottom-left',\r\n 'bottom-center',\r\n 'bottom-right',\r\n];\r\n\r\n/**\r\n * 类型配置\r\n */\r\nexport const TYPES = [\r\n 'default', 'success', 'error', 'warning', 'info', 'loading',\r\n 'check', 'x', 'alert', 'question', 'star', 'heart', 'bell', 'mail',\r\n 'settings', 'user', 'home', 'search', 'plus', 'minus', 'edit', 'trash',\r\n 'download', 'upload', 'share', 'link', 'external', 'clock', 'calendar',\r\n 'map', 'compass', 'globe', 'wifi', 'cloud', 'sun', 'moon', 'zap',\r\n 'activity', 'cpu', 'database', 'server', 'terminal', 'code', 'git',\r\n 'package', 'layers', 'grid', 'list', 'filter', 'sort', 'refresh', 'sync',\r\n 'power', 'battery', 'bluetooth', 'volume', 'mic', 'camera', 'image', 'video',\r\n 'music', 'file', 'folder', 'clipboard', 'save', 'print', 'eye', 'eyeOff',\r\n 'lock', 'unlock', 'shield', 'key', 'flag', 'bookmark', 'tag', 'gift',\r\n 'award', 'target', 'crosshair', 'move', 'maximize', 'minimize',\r\n 'copy', 'cut', 'paste', 'rotateCw', 'rotateCcw', 'zoomIn', 'zoomOut',\r\n 'crop', 'sliders', 'toggleLeft', 'toggleRight',\r\n 'checkCircle', 'xCircle', 'alertCircle', 'infoCircle', 'helpCircle',\r\n 'alertTriangle', 'checkSquare', 'square', 'circle', 'triangle',\r\n 'hexagon', 'octagon', 'pentagon', 'diamond',\r\n];\r\n\r\n// Locales — 从 locales.js 导入并重新导出(保持向后兼容)\r\nimport { LOCALES } from './locales.js';\r\nexport { LOCALES };\r\n\r\n/**\r\n * 进度条方向\r\n */\r\nexport const PROGRESS_DIRECTIONS = ['horizontal', 'vertical'];\r\n\r\n/**\r\n * 动画类型\r\n */\r\nexport const ANIMATION_TYPES = ['slide', 'fade', 'scale', 'bounce', 'flip', 'rotate', 'zoom', 'slideUp', 'slideDown', 'slideLeft', 'slideRight'];\r\n\r\n/**\r\n * 主题类型\r\n */\r\nexport const THEME_TYPES = ['light', 'dark', 'auto'];\r\n","/**\r\n * MetonaToast Styles - 样式管理\r\n * @module styles\r\n * @version 2.0.0\r\n * @description 样式注入、更新和主题管理\r\n */\r\n\r\nimport { THEMES } from './constants.js';\r\n\r\n// 样式缓存\r\nlet injectedStyles = null;\r\nlet styleElement = null;\r\n\r\n/**\r\n * 生成CSS样式\r\n * @param {Object} theme - 主题配置\r\n * @returns {string} CSS字符串\r\n */\r\nconst generateCSS = (theme) => {\r\n return `\r\n /* MetonaToast 基础样式 */\r\n .met-container {\r\n pointer-events: none;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 12px;\r\n box-sizing: border-box;\r\n padding: 24px;\r\n max-width: 100vw;\r\n position: fixed;\r\n z-index: 9999;\r\n }\r\n \r\n /* 位置样式 — 顶部位置用 column-reverse,新 toast 出现在最上方 */\r\n .met-container.top-left {\r\n top: 0;\r\n left: 0;\r\n align-items: flex-start;\r\n flex-direction: column-reverse;\r\n }\r\n \r\n .met-container.top-center {\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n align-items: center;\r\n flex-direction: column-reverse;\r\n }\r\n \r\n .met-container.top-right {\r\n top: 0;\r\n right: 0;\r\n align-items: flex-end;\r\n flex-direction: column-reverse;\r\n }\r\n \r\n .met-container.bottom-left {\r\n bottom: 0;\r\n left: 0;\r\n align-items: flex-start;\r\n flex-direction: column-reverse;\r\n }\r\n \r\n .met-container.bottom-center {\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n align-items: center;\r\n flex-direction: column-reverse;\r\n }\r\n \r\n .met-container.bottom-right {\r\n bottom: 0;\r\n right: 0;\r\n align-items: flex-end;\r\n flex-direction: column-reverse;\r\n }\r\n \r\n /* Toast基础样式 */\r\n .met-toast {\r\n position: relative;\r\n display: flex;\r\n align-items: flex-start;\r\n gap: 12px;\r\n padding: 14px 16px;\r\n border-radius: 12px;\r\n box-sizing: border-box;\r\n backdrop-filter: blur(14px) saturate(180%);\r\n -webkit-backdrop-filter: blur(14px) saturate(180%);\r\n font: 14px/1.5 -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\r\n user-select: none;\r\n -webkit-user-select: none;\r\n transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), \r\n box-shadow 0.25s ease, \r\n opacity 0.25s ease;\r\n will-change: transform, opacity;\r\n flex-shrink: 0;\r\n pointer-events: auto;\r\n min-width: 240px;\r\n max-width: calc(100vw - 48px);\r\n width: 360px;\r\n border: 1px solid var(--met-border, rgba(0,0,0,0.06));\r\n background: var(--met-bg, rgba(255,255,255,0.96));\r\n color: var(--met-text, #1f2937);\r\n box-shadow: var(--met-shadow, 0 10px 36px -10px rgba(0,0,0,0.18), 0 4px 14px -4px rgba(0,0,0,0.08));\r\n }\r\n \r\n /* 悬停效果 */\r\n .met-toast:hover {\r\n box-shadow: var(--met-hover-shadow, 0 14px 48px -10px rgba(0,0,0,0.22), 0 6px 18px -4px rgba(0,0,0,0.10)) !important;\r\n }\r\n \r\n /* 可点击状态 */\r\n .met-toast.met-clickable {\r\n cursor: pointer;\r\n }\r\n \r\n /* 图标样式 */\r\n .met-icon {\r\n flex-shrink: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 24px;\r\n height: 24px;\r\n margin-top: 1px;\r\n }\r\n \r\n /* 内容样式 */\r\n .met-content {\r\n flex: 1;\r\n min-width: 0;\r\n word-wrap: break-word;\r\n overflow-wrap: break-word;\r\n }\r\n \r\n /* 标题样式 */\r\n .met-title {\r\n font-weight: 600;\r\n font-size: 14px;\r\n letter-spacing: 0.1px;\r\n }\r\n \r\n /* 消息样式 */\r\n .met-message {\r\n font-size: 13px;\r\n opacity: 0.85;\r\n margin-top: 2px;\r\n }\r\n \r\n /* 关闭按钮样式 */\r\n .met-close {\r\n flex-shrink: 0;\r\n background: transparent;\r\n border: 0;\r\n padding: 4px;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 6px;\r\n transition: background 0.2s, color 0.2s;\r\n line-height: 0;\r\n color: inherit;\r\n opacity: 0.5;\r\n }\r\n \r\n .met-close:hover {\r\n opacity: 1;\r\n background: var(--met-close-hover-bg, rgba(0,0,0,0.06));\r\n }\r\n \r\n /* 进度条样式 - 水平 */\r\n .met-progress {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n height: 3px;\r\n overflow: hidden;\r\n background: var(--met-progress-bg, rgba(0,0,0,0.06));\r\n border-radius: 0 0 12px 12px;\r\n }\r\n \r\n /* 进度条样式 - 垂直 */\r\n .met-progress-v {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n bottom: 0;\r\n width: 3px;\r\n overflow: hidden;\r\n background: var(--met-progress-bg, rgba(0,0,0,0.06));\r\n border-radius: 12px 0 0 12px;\r\n }\r\n \r\n /* 进度条指示器 - 水平 */\r\n .met-bar {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n height: 100%;\r\n width: 100%;\r\n transform-origin: left;\r\n transform: scaleX(1);\r\n }\r\n \r\n /* 进度条指示器 - 垂直 */\r\n .met-bar-v {\r\n position: absolute;\r\n left: 0;\r\n bottom: 0;\r\n width: 100%;\r\n height: 100%;\r\n transform-origin: bottom;\r\n transform: scaleY(1);\r\n }\r\n \r\n /* 侧边指示器 */\r\n .met-side {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n bottom: 0;\r\n width: 4px;\r\n border-radius: 12px 0 0 12px;\r\n }\r\n \r\n /* 加载动画 */\r\n .met-spin {\r\n animation: met-rot 1s linear infinite;\r\n transform-origin: 50% 50%;\r\n }\r\n \r\n /* 离开状态 */\r\n .met-toast.met-leaving {\r\n pointer-events: none;\r\n z-index: 1;\r\n }\r\n \r\n /* 动画关键帧 */\r\n @keyframes met-rot {\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n \r\n /* === 进入动画:初始隐藏态 === */\r\n .met-anim-slide.met-toast,\r\n .met-anim-fade.met-toast,\r\n .met-anim-scale.met-toast,\r\n .met-anim-bounce.met-toast,\r\n .met-anim-flip.met-toast,\r\n .met-anim-rotate.met-toast,\r\n .met-anim-zoom.met-toast,\r\n .met-anim-slideUp.met-toast,\r\n .met-anim-slideDown.met-toast,\r\n .met-anim-slideLeft.met-toast,\r\n .met-anim-slideRight.met-toast {\r\n opacity: 0;\r\n }\r\n \r\n /* === 进入动画:@keyframes 定义 === */\r\n @keyframes met-slide-in {\r\n 0% { transform: translateX(80px); opacity: 0; }\r\n 65% { transform: translateX(-6px); opacity: 1; }\r\n 100% { transform: translateX(0); opacity: 1; }\r\n }\r\n @keyframes met-fade-in {\r\n 0% { opacity: 0; filter: blur(3px); }\r\n 100% { opacity: 1; filter: blur(0); }\r\n }\r\n @keyframes met-scale-in {\r\n 0% { transform: scale(0.55); opacity: 0; }\r\n 65% { transform: scale(1.07); opacity: 1; }\r\n 100% { transform: scale(1); opacity: 1; }\r\n }\r\n @keyframes met-bounce-in {\r\n 0% { transform: translateY(-80px); opacity: 0; animation-timing-function: ease-in; }\r\n 45% { transform: translateY(14px); opacity: 1; animation-timing-function: ease-out; }\r\n 65% { transform: translateY(-12px); animation-timing-function: ease-in; }\r\n 82% { transform: translateY(4px); animation-timing-function: ease-out; }\r\n 100% { transform: translateY(0); opacity: 1; }\r\n }\r\n @keyframes met-flip-in {\r\n 0% { transform: perspective(500px) rotateX(-90deg); opacity: 0; }\r\n 60% { transform: perspective(500px) rotateX(8deg); opacity: 1; }\r\n 85% { transform: perspective(500px) rotateX(-2deg); }\r\n 100% { transform: perspective(500px) rotateX(0); opacity: 1; }\r\n }\r\n @keyframes met-rotate-in {\r\n 0% { transform: rotate(-25deg) scale(0.6); opacity: 0; }\r\n 60% { transform: rotate(4deg) scale(1.05); opacity: 1; }\r\n 85% { transform: rotate(-1deg) scale(0.98); }\r\n 100% { transform: rotate(0) scale(1); opacity: 1; }\r\n }\r\n @keyframes met-zoom-in {\r\n 0% { transform: scale(0.1); opacity: 0; }\r\n 50% { transform: scale(1.12); opacity: 1; }\r\n 75% { transform: scale(0.94); }\r\n 100% { transform: scale(1); opacity: 1; }\r\n }\r\n @keyframes met-slideUp-in {\r\n 0% { transform: translateY(60px); opacity: 0; }\r\n 70% { transform: translateY(-6px); opacity: 1; }\r\n 100% { transform: translateY(0); opacity: 1; }\r\n }\r\n @keyframes met-slideDown-in {\r\n 0% { transform: translateY(-60px); opacity: 0; }\r\n 70% { transform: translateY(6px); opacity: 1; }\r\n 100% { transform: translateY(0); opacity: 1; }\r\n }\r\n @keyframes met-slideLeft-in {\r\n 0% { transform: translateX(-90px); opacity: 0; }\r\n 65% { transform: translateX(6px); opacity: 1; }\r\n 100% { transform: translateX(0); opacity: 1; }\r\n }\r\n @keyframes met-slideRight-in {\r\n 0% { transform: translateX(90px); opacity: 0; }\r\n 65% { transform: translateX(-6px); opacity: 1; }\r\n 100% { transform: translateX(0); opacity: 1; }\r\n }\r\n \r\n /* === 进入动画:绑定到 .met-show === */\r\n .met-anim-slide.met-toast.met-show { animation: met-slide-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n .met-anim-fade.met-toast.met-show { animation: met-fade-in 0.50s ease forwards; }\r\n .met-anim-scale.met-toast.met-show { animation: met-scale-in 0.45s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }\r\n .met-anim-bounce.met-toast.met-show { animation: met-bounce-in 0.65s ease forwards; }\r\n .met-anim-flip.met-toast.met-show { animation: met-flip-in 0.50s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n .met-anim-rotate.met-toast.met-show { animation: met-rotate-in 0.50s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n .met-anim-zoom.met-toast.met-show { animation: met-zoom-in 0.50s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }\r\n .met-anim-slideUp.met-toast.met-show { animation: met-slideUp-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n .met-anim-slideDown.met-toast.met-show { animation: met-slideDown-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n .met-anim-slideLeft.met-toast.met-show { animation: met-slideLeft-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n .met-anim-slideRight.met-toast.met-show { animation: met-slideRight-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n \r\n /* 响应式设计 */\r\n @media (prefers-reduced-motion: reduce) {\r\n .met-toast {\r\n transition: opacity 0.15s !important;\r\n }\r\n \r\n .met-toast.met-show {\r\n animation: none !important;\r\n opacity: 1 !important;\r\n }\r\n \r\n .met-spin {\r\n animation-duration: 2.5s !important;\r\n }\r\n }\r\n \r\n @media (max-width: 480px) {\r\n .met-container {\r\n padding: 12px !important;\r\n }\r\n \r\n .met-toast {\r\n width: 100% !important;\r\n min-width: 0 !important;\r\n }\r\n }\r\n \r\n /* 暗色主题特定样式 */\r\n .met-toast.met-theme-dark {\r\n background: rgba(28, 32, 40, 0.94);\r\n color: #e6e8eb;\r\n border-color: rgba(255, 255, 255, 0.08);\r\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.6), \r\n 0 4px 14px -4px rgba(0, 0, 0, 0.4);\r\n }\r\n \r\n .met-toast.met-theme-dark:hover {\r\n box-shadow: 0 14px 48px -8px rgba(0, 0, 0, 0.6), \r\n 0 6px 18px -4px rgba(0, 0, 0, 0.4) !important;\r\n }\r\n \r\n .met-toast.met-theme-dark .met-close:hover {\r\n background: rgba(255, 255, 255, 0.08);\r\n }\r\n \r\n .met-toast.met-theme-dark .met-progress,\r\n .met-toast.met-theme-dark .met-progress-v {\r\n background: rgba(255, 255, 255, 0.08);\r\n }\r\n \r\n /* 亮色主题特定样式 */\r\n .met-toast.met-theme-light {\r\n background: rgba(255, 255, 255, 0.96);\r\n color: #1f2937;\r\n border-color: rgba(0, 0, 0, 0.06);\r\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.18), \r\n 0 4px 14px -4px rgba(0, 0, 0, 0.08);\r\n }\r\n \r\n .met-toast.met-theme-light:hover {\r\n box-shadow: 0 14px 48px -10px rgba(0, 0, 0, 0.22), \r\n 0 6px 18px -4px rgba(0, 0, 0, 0.10) !important;\r\n }\r\n \r\n .met-toast.met-theme-light .met-close:hover {\r\n background: rgba(0, 0, 0, 0.06);\r\n }\r\n \r\n .met-toast.met-theme-light .met-progress,\r\n .met-toast.met-theme-light .met-progress-v {\r\n background: rgba(0, 0, 0, 0.06);\r\n }\r\n \r\n /* 自定义主题支持 */\r\n .met-toast[data-theme] {\r\n --met-bg: var(--met-theme-bg);\r\n --met-text: var(--met-theme-text);\r\n --met-border: var(--met-theme-border);\r\n --met-shadow: var(--met-theme-shadow);\r\n }\r\n \r\n /* 动画性能优化 */\r\n .met-toast {\r\n backface-visibility: hidden;\r\n -webkit-backface-visibility: hidden;\r\n perspective: 1000;\r\n }\r\n \r\n /* 滚动条样式 */\r\n .met-container::-webkit-scrollbar {\r\n width: 6px;\r\n height: 6px;\r\n }\r\n \r\n .met-container::-webkit-scrollbar-track {\r\n background: transparent;\r\n }\r\n \r\n .met-container::-webkit-scrollbar-thumb {\r\n background: rgba(0, 0, 0, 0.2);\r\n border-radius: 3px;\r\n }\r\n \r\n .met-container::-webkit-scrollbar-thumb:hover {\r\n background: rgba(0, 0, 0, 0.3);\r\n }\r\n \r\n /* 打印样式 */\r\n @media print {\r\n .met-container {\r\n display: none !important;\r\n }\r\n .met-toast {\r\n display: none !important;\r\n }\r\n }\r\n \r\n /* 高对比度模式 */\r\n @media (forced-colors: active) {\r\n .met-toast {\r\n border: 2px solid ButtonText;\r\n }\r\n \r\n .met-close {\r\n border: 1px solid ButtonText;\r\n }\r\n }\r\n \r\n /* 焦点样式 */\r\n .met-toast:focus-visible {\r\n outline: 2px solid #3b82f6;\r\n outline-offset: 2px;\r\n }\r\n \r\n .met-close:focus-visible {\r\n outline: 2px solid #3b82f6;\r\n outline-offset: 2px;\r\n }\r\n \r\n /* 禁用状态 */\r\n .met-toast:disabled,\r\n .met-toast[disabled] {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n }\r\n \r\n /* 加载状态 */\r\n .met-toast.met-loading {\r\n cursor: wait;\r\n }\r\n \r\n /* 成功状态 */\r\n .met-toast.met-success {\r\n border-left: 4px solid #10b981;\r\n }\r\n \r\n /* 错误状态 */\r\n .met-toast.met-error {\r\n border-left: 4px solid #ef4444;\r\n }\r\n \r\n /* 警告状态 */\r\n .met-toast.met-warning {\r\n border-left: 4px solid #f59e0b;\r\n }\r\n \r\n /* 信息状态 */\r\n .met-toast.met-info {\r\n border-left: 4px solid #3b82f6;\r\n }\r\n \r\n /* 加载状态 */\r\n .met-toast.met-loading {\r\n border-left: 4px solid #6366f1;\r\n }\r\n \r\n /* 进度条动画 */\r\n .met-bar,\r\n .met-bar-v {\r\n transition: transform 0.1s linear;\r\n }\r\n \r\n /* 容器动画 */\r\n .met-container {\r\n transition: all 0.3s ease;\r\n }\r\n \r\n /* Toast进入动画 */\r\n .met-toast.met-enter {\r\n animation: met-enter 0.3s ease forwards;\r\n }\r\n \r\n /* Toast离开动画 */\r\n .met-toast.met-leave {\r\n animation: met-leave 0.3s ease forwards;\r\n }\r\n \r\n @keyframes met-enter {\r\n from {\r\n opacity: 0;\r\n transform: translateY(-20px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n }\r\n \r\n @keyframes met-leave {\r\n from {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n to {\r\n opacity: 0;\r\n transform: translateY(-20px);\r\n }\r\n }\r\n \r\n /* 响应式字体大小 */\r\n @media (max-width: 768px) {\r\n .met-toast {\r\n font-size: 13px;\r\n }\r\n \r\n .met-title {\r\n font-size: 13px;\r\n }\r\n \r\n .met-message {\r\n font-size: 12px;\r\n }\r\n }\r\n \r\n @media (max-width: 480px) {\r\n .met-toast {\r\n font-size: 12px;\r\n padding: 12px 14px;\r\n }\r\n \r\n .met-title {\r\n font-size: 12px;\r\n }\r\n \r\n .met-message {\r\n font-size: 11px;\r\n }\r\n }\r\n \r\n /* 无障碍支持 */\r\n .met-toast[role=\"alert\"] {\r\n /* 警告类型Toast的特殊样式 */\r\n }\r\n \r\n .met-toast[role=\"status\"] {\r\n /* 状态类型Toast的特殊样式 */\r\n }\r\n \r\n /* 高对比度模式增强 */\r\n @media (prefers-contrast: high) {\r\n .met-toast {\r\n border-width: 2px;\r\n }\r\n \r\n .met-close {\r\n border: 1px solid currentColor;\r\n }\r\n }\r\n \r\n /* 暗色模式自动检测 */\r\n @media (prefers-color-scheme: dark) {\r\n .met-theme-auto .met-toast {\r\n background: rgba(28, 32, 40, 0.94);\r\n color: #e6e8eb;\r\n border-color: rgba(255, 255, 255, 0.08);\r\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.6), \r\n 0 4px 14px -4px rgba(0, 0, 0, 0.4);\r\n }\r\n \r\n .met-theme-auto .met-toast:hover {\r\n box-shadow: 0 14px 48px -8px rgba(0, 0, 0, 0.6), \r\n 0 6px 18px -4px rgba(0, 0, 0, 0.4) !important;\r\n }\r\n \r\n .met-theme-auto .met-close:hover {\r\n background: rgba(255, 255, 255, 0.08);\r\n }\r\n \r\n .met-theme-auto .met-progress,\r\n .met-theme-auto .met-progress-v {\r\n background: rgba(255, 255, 255, 0.08);\r\n }\r\n }\r\n \r\n /* 亮色模式自动检测 */\r\n @media (prefers-color-scheme: light) {\r\n .met-theme-auto .met-toast {\r\n background: rgba(255, 255, 255, 0.96);\r\n color: #1f2937;\r\n border-color: rgba(0, 0, 0, 0.06);\r\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.18), \r\n 0 4px 14px -4px rgba(0, 0, 0, 0.08);\r\n }\r\n \r\n .met-theme-auto .met-toast:hover {\r\n box-shadow: 0 14px 48px -10px rgba(0, 0, 0, 0.22), \r\n 0 6px 18px -4px rgba(0, 0, 0, 0.10) !important;\r\n }\r\n \r\n .met-theme-auto .met-close:hover {\r\n background: rgba(0, 0, 0, 0.06);\r\n }\r\n \r\n .met-theme-auto .met-progress,\r\n .met-theme-auto .met-progress-v {\r\n background: rgba(0, 0, 0, 0.06);\r\n }\r\n }\r\n \r\n /* 动画性能优化 */\r\n .met-toast {\r\n transform: translateZ(0);\r\n -webkit-transform: translateZ(0);\r\n }\r\n \r\n /* 触摸设备优化 */\r\n @media (hover: none) {\r\n .met-toast:hover {\r\n box-shadow: inherit;\r\n }\r\n }\r\n \r\n /* 滚动时固定位置 */\r\n .met-container {\r\n position: fixed;\r\n z-index: 9999;\r\n }\r\n \r\n /* 全屏模式 */\r\n :fullscreen .met-container {\r\n z-index: 2147483647;\r\n }\r\n \r\n /* 画中画模式 */\r\n :picture-in-picture .met-container {\r\n z-index: 2147483647;\r\n }\r\n \r\n /* 安全区域适配 */\r\n @supports (padding: max(0px)) {\r\n .met-container {\r\n padding: max(24px, env(safe-area-inset-top)) \r\n max(24px, env(safe-area-inset-right)) \r\n max(24px, env(safe-area-inset-bottom)) \r\n max(24px, env(safe-area-inset-left));\r\n }\r\n }\r\n \r\n /* 暗色模式安全区域 */\r\n @media (prefers-color-scheme: dark) {\r\n @supports (padding: max(0px)) {\r\n .met-container {\r\n padding: max(24px, env(safe-area-inset-top)) \r\n max(24px, env(safe-area-inset-right)) \r\n max(24px, env(safe-area-inset-bottom)) \r\n max(24px, env(safe-area-inset-left));\r\n }\r\n }\r\n }\r\n \r\n /* 高分辨率屏幕优化 */\r\n @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {\r\n .met-toast {\r\n border-width: 0.5px;\r\n }\r\n }\r\n \r\n /* 触摸设备优化 */\r\n @media (hover: none) and (pointer: coarse) {\r\n .met-toast {\r\n min-height: 48px;\r\n }\r\n \r\n .met-close {\r\n min-width: 48px;\r\n min-height: 48px;\r\n }\r\n }\r\n \r\n /* 键盘导航优化 */\r\n .met-toast:focus {\r\n outline: 2px solid #3b82f6;\r\n outline-offset: 2px;\r\n }\r\n \r\n .met-toast:focus:not(:focus-visible) {\r\n outline: none;\r\n }\r\n \r\n .met-toast:focus-visible {\r\n outline: 2px solid #3b82f6;\r\n outline-offset: 2px;\r\n }\r\n \r\n /* 减少动画模式 */\r\n @media (prefers-reduced-motion: reduce) {\r\n .met-toast {\r\n transition: opacity 0.15s ease !important;\r\n animation: none !important;\r\n }\r\n \r\n .met-bar,\r\n .met-bar-v {\r\n transition: none !important;\r\n }\r\n \r\n .met-container {\r\n transition: none !important;\r\n }\r\n }\r\n \r\n /* 高对比度模式 */\r\n @media (prefers-contrast: high) {\r\n .met-toast {\r\n border-width: 3px;\r\n border-style: solid;\r\n }\r\n \r\n .met-close {\r\n border: 2px solid currentColor;\r\n border-radius: 4px;\r\n }\r\n \r\n .met-progress,\r\n .met-progress-v {\r\n height: 4px;\r\n }\r\n \r\n .met-bar,\r\n .met-bar-v {\r\n height: 100%;\r\n }\r\n }\r\n \r\n /* 低分辨率屏幕优化 */\r\n @media (max-resolution: 1dppx) {\r\n .met-toast {\r\n border-width: 1px;\r\n }\r\n }\r\n \r\n /* 触摸设备优化 */\r\n @media (hover: none) and (pointer: coarse) {\r\n .met-toast {\r\n min-height: 52px;\r\n padding: 16px 18px;\r\n }\r\n \r\n .met-close {\r\n min-width: 52px;\r\n min-height: 52px;\r\n padding: 8px;\r\n }\r\n \r\n .met-icon {\r\n width: 28px;\r\n height: 28px;\r\n }\r\n }\r\n \r\n /* 大屏幕优化 */\r\n @media (min-width: 1200px) {\r\n .met-toast {\r\n width: 400px;\r\n }\r\n }\r\n \r\n /* 超大屏幕优化 */\r\n @media (min-width: 1920px) {\r\n .met-toast {\r\n width: 440px;\r\n }\r\n }\r\n \r\n /* 小屏幕优化 */\r\n @media (max-width: 320px) {\r\n .met-toast {\r\n width: 100%;\r\n min-width: 0;\r\n padding: 12px 14px;\r\n }\r\n \r\n .met-container {\r\n padding: 8px;\r\n }\r\n }\r\n \r\n /* 横屏优化 */\r\n @media (orientation: landscape) and (max-height: 500px) {\r\n .met-container {\r\n padding: 12px 24px;\r\n }\r\n \r\n .met-toast {\r\n min-height: 44px;\r\n padding: 10px 14px;\r\n }\r\n }\r\n \r\n /* 竖屏优化 */\r\n @media (orientation: portrait) and (max-width: 500px) {\r\n .met-container {\r\n padding: 12px;\r\n }\r\n \r\n .met-toast {\r\n width: 100%;\r\n min-width: 0;\r\n }\r\n }\r\n \r\n /* 无障碍支持 */\r\n .met-toast[aria-live=\"assertive\"] {\r\n /* 紧急通知样式 */\r\n }\r\n \r\n .met-toast[aria-live=\"polite\"] {\r\n /* 普通通知样式 */\r\n }\r\n \r\n /* 焦点陷阱 */\r\n .met-toast:focus-within {\r\n /* 包含焦点元素的Toast样式 */\r\n }\r\n \r\n /* 加载状态 */\r\n .met-toast[aria-busy=\"true\"] {\r\n cursor: wait;\r\n }\r\n \r\n /* 禁用状态 */\r\n .met-toast[aria-disabled=\"true\"] {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n }\r\n \r\n /* 隐藏状态 */\r\n .met-toast[aria-hidden=\"true\"] {\r\n display: none;\r\n }\r\n \r\n /* 展开状态 */\r\n .met-toast[aria-expanded=\"true\"] {\r\n /* 展开状态样式 */\r\n }\r\n \r\n /* 选中状态 */\r\n .met-toast[aria-selected=\"true\"] {\r\n /* 选中状态样式 */\r\n }\r\n \r\n /* 按下状态 */\r\n .met-toast:active {\r\n transform: scale(0.98);\r\n }\r\n \r\n /* 加载状态动画 */\r\n .met-toast.met-loading::after {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background: linear-gradient(\r\n 90deg,\r\n transparent,\r\n rgba(255, 255, 255, 0.1),\r\n transparent\r\n );\r\n animation: met-loading 1.5s infinite;\r\n }\r\n \r\n @keyframes met-loading {\r\n 0% {\r\n transform: translateX(-100%);\r\n }\r\n 100% {\r\n transform: translateX(100%);\r\n }\r\n }\r\n \r\n /* 成功状态动画 */\r\n .met-toast.met-success::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 4px;\r\n height: 100%;\r\n background: #10b981;\r\n border-radius: 12px 0 0 12px;\r\n animation: met-success 0.3s ease;\r\n }\r\n \r\n @keyframes met-success {\r\n from {\r\n transform: scaleY(0);\r\n }\r\n to {\r\n transform: scaleY(1);\r\n }\r\n }\r\n \r\n /* 错误状态动画 */\r\n .met-toast.met-error::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 4px;\r\n height: 100%;\r\n background: #ef4444;\r\n border-radius: 12px 0 0 12px;\r\n animation: met-error 0.3s ease;\r\n }\r\n \r\n @keyframes met-error {\r\n from {\r\n transform: scaleY(0);\r\n }\r\n to {\r\n transform: scaleY(1);\r\n }\r\n }\r\n \r\n /* 警告状态动画 */\r\n .met-toast.met-warning::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 4px;\r\n height: 100%;\r\n background: #f59e0b;\r\n border-radius: 12px 0 0 12px;\r\n animation: met-warning 0.3s ease;\r\n }\r\n \r\n @keyframes met-warning {\r\n from {\r\n transform: scaleY(0);\r\n }\r\n to {\r\n transform: scaleY(1);\r\n }\r\n }\r\n \r\n /* 信息状态动画 */\r\n .met-toast.met-info::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 4px;\r\n height: 100%;\r\n background: #3b82f6;\r\n border-radius: 12px 0 0 12px;\r\n animation: met-info 0.3s ease;\r\n }\r\n \r\n @keyframes met-info {\r\n from {\r\n transform: scaleY(0);\r\n }\r\n to {\r\n transform: scaleY(1);\r\n }\r\n }\r\n \r\n /* 加载状态动画 */\r\n .met-toast.met-loading::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 4px;\r\n height: 100%;\r\n background: #6366f1;\r\n border-radius: 12px 0 0 12px;\r\n animation: met-loading-bar 1s infinite;\r\n }\r\n \r\n @keyframes met-loading-bar {\r\n 0% {\r\n transform: scaleY(0);\r\n transform-origin: top;\r\n }\r\n 50% {\r\n transform: scaleY(1);\r\n transform-origin: top;\r\n }\r\n 51% {\r\n transform-origin: bottom;\r\n }\r\n 100% {\r\n transform: scaleY(0);\r\n transform-origin: bottom;\r\n }\r\n }\r\n \r\n /* 进度条脉冲动画 */\r\n .met-bar,\r\n .met-bar-v {\r\n animation: met-pulse 2s infinite;\r\n }\r\n \r\n @keyframes met-pulse {\r\n 0%, 100% {\r\n opacity: 1;\r\n }\r\n 50% {\r\n opacity: 0.8;\r\n }\r\n }\r\n \r\n /* Toast堆叠效果 */\r\n .met-toast + .met-toast {\r\n margin-top: 8px;\r\n }\r\n \r\n /* Toast分组 */\r\n .met-toast-group {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n }\r\n \r\n /* Toast头部 */\r\n .met-toast-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin-bottom: 8px;\r\n }\r\n \r\n /* Toast底部 */\r\n .met-toast-footer {\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n gap: 8px;\r\n margin-top: 12px;\r\n }\r\n \r\n /* Toast操作按钮 */\r\n .met-toast-action {\r\n background: transparent;\r\n border: 1px solid currentColor;\r\n padding: 6px 12px;\r\n border-radius: 6px;\r\n cursor: pointer;\r\n font-size: 12px;\r\n opacity: 0.7;\r\n transition: opacity 0.2s;\r\n }\r\n \r\n .met-toast-action:hover {\r\n opacity: 1;\r\n }\r\n \r\n /* Toast进度文本 */\r\n .met-toast-progress-text {\r\n font-size: 12px;\r\n opacity: 0.7;\r\n margin-left: 8px;\r\n }\r\n \r\n /* Toast时间戳 */\r\n .met-toast-timestamp {\r\n font-size: 11px;\r\n opacity: 0.5;\r\n margin-left: auto;\r\n }\r\n \r\n /* Toast头像 */\r\n .met-toast-avatar {\r\n width: 32px;\r\n height: 32px;\r\n border-radius: 50%;\r\n object-fit: cover;\r\n flex-shrink: 0;\r\n }\r\n \r\n /* Toast图片 */\r\n .met-toast-image {\r\n max-width: 100%;\r\n max-height: 200px;\r\n border-radius: 8px;\r\n margin-top: 8px;\r\n object-fit: cover;\r\n }\r\n \r\n /* Toast视频 */\r\n .met-toast-video {\r\n max-width: 100%;\r\n max-height: 200px;\r\n border-radius: 8px;\r\n margin-top: 8px;\r\n }\r\n \r\n /* Toast音频 */\r\n .met-toast-audio {\r\n width: 100%;\r\n margin-top: 8px;\r\n }\r\n \r\n /* Toast代码块 */\r\n .met-toast-code {\r\n background: rgba(0, 0, 0, 0.05);\r\n padding: 8px 12px;\r\n border-radius: 6px;\r\n font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;\r\n font-size: 12px;\r\n margin-top: 8px;\r\n overflow-x: auto;\r\n }\r\n \r\n .met-theme-dark .met-toast-code {\r\n background: rgba(255, 255, 255, 0.05);\r\n }\r\n \r\n /* Toast引用 */\r\n .met-toast-quote {\r\n border-left: 3px solid currentColor;\r\n padding-left: 12px;\r\n margin-top: 8px;\r\n opacity: 0.8;\r\n }\r\n \r\n /* Toast列表 */\r\n .met-toast-list {\r\n margin: 8px 0 0 0;\r\n padding-left: 20px;\r\n }\r\n \r\n .met-toast-list li {\r\n margin-bottom: 4px;\r\n }\r\n \r\n /* Toast表格 */\r\n .met-toast-table {\r\n width: 100%;\r\n border-collapse: collapse;\r\n margin-top: 8px;\r\n font-size: 12px;\r\n }\r\n \r\n .met-toast-table th,\r\n .met-toast-table td {\r\n border: 1px solid rgba(0, 0, 0, 0.1);\r\n padding: 6px 8px;\r\n text-align: left;\r\n }\r\n \r\n .met-theme-dark .met-toast-table th,\r\n .met-theme-dark .met-toast-table td {\r\n border-color: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-table th {\r\n background: rgba(0, 0, 0, 0.05);\r\n font-weight: 600;\r\n }\r\n \r\n .met-theme-dark .met-toast-table th {\r\n background: rgba(255, 255, 255, 0.05);\r\n }\r\n \r\n /* Toast分割线 */\r\n .met-toast-divider {\r\n height: 1px;\r\n background: rgba(0, 0, 0, 0.1);\r\n margin: 12px 0;\r\n }\r\n \r\n .met-theme-dark .met-toast-divider {\r\n background: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n /* Toast标签 */\r\n .met-toast-tag {\r\n display: inline-block;\r\n background: rgba(0, 0, 0, 0.05);\r\n padding: 2px 8px;\r\n border-radius: 4px;\r\n font-size: 11px;\r\n margin-right: 4px;\r\n margin-bottom: 4px;\r\n }\r\n \r\n .met-theme-dark .met-toast-tag {\r\n background: rgba(255, 255, 255, 0.05);\r\n }\r\n \r\n /* Toast徽章 */\r\n .met-toast-badge {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: #3b82f6;\r\n color: white;\r\n padding: 2px 8px;\r\n border-radius: 10px;\r\n font-size: 11px;\r\n font-weight: 600;\r\n min-width: 20px;\r\n height: 20px;\r\n }\r\n \r\n /* Toast进度环 */\r\n .met-toast-progress-ring {\r\n width: 40px;\r\n height: 40px;\r\n transform: rotate(-90deg);\r\n }\r\n \r\n .met-toast-progress-ring circle {\r\n fill: none;\r\n stroke-width: 3;\r\n stroke-linecap: round;\r\n }\r\n \r\n .met-toast-progress-ring .met-progress-ring-bg {\r\n stroke: rgba(0, 0, 0, 0.1);\r\n }\r\n \r\n .met-theme-dark .met-toast-progress-ring .met-progress-ring-bg {\r\n stroke: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-progress-ring .met-progress-ring-fill {\r\n stroke: #3b82f6;\r\n stroke-dasharray: 100;\r\n stroke-dashoffset: 100;\r\n transition: stroke-dashoffset 0.3s ease;\r\n }\r\n \r\n /* Toast滑块 */\r\n .met-toast-slider {\r\n width: 100%;\r\n height: 4px;\r\n background: rgba(0, 0, 0, 0.1);\r\n border-radius: 2px;\r\n margin-top: 8px;\r\n position: relative;\r\n }\r\n \r\n .met-theme-dark .met-toast-slider {\r\n background: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-slider-fill {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n height: 100%;\r\n background: #3b82f6;\r\n border-radius: 2px;\r\n transition: width 0.3s ease;\r\n }\r\n \r\n /* Toast开关 */\r\n .met-toast-switch {\r\n position: relative;\r\n display: inline-block;\r\n width: 36px;\r\n height: 20px;\r\n margin-top: 8px;\r\n }\r\n \r\n .met-toast-switch input {\r\n opacity: 0;\r\n width: 0;\r\n height: 0;\r\n }\r\n \r\n .met-toast-switch-slider {\r\n position: absolute;\r\n cursor: pointer;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background: rgba(0, 0, 0, 0.1);\r\n border-radius: 20px;\r\n transition: 0.3s;\r\n }\r\n \r\n .met-theme-dark .met-toast-switch-slider {\r\n background: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-switch-slider:before {\r\n content: '';\r\n position: absolute;\r\n height: 16px;\r\n width: 16px;\r\n left: 2px;\r\n bottom: 2px;\r\n background: white;\r\n border-radius: 50%;\r\n transition: 0.3s;\r\n }\r\n \r\n .met-toast-switch input:checked + .met-toast-switch-slider {\r\n background: #3b82f6;\r\n }\r\n \r\n .met-toast-switch input:checked + .met-toast-switch-slider:before {\r\n transform: translateX(16px);\r\n }\r\n \r\n /* Toast复选框 */\r\n .met-toast-checkbox {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n margin-top: 8px;\r\n cursor: pointer;\r\n }\r\n \r\n .met-toast-checkbox input {\r\n width: 16px;\r\n height: 16px;\r\n cursor: pointer;\r\n }\r\n \r\n /* Toast单选框 */\r\n .met-toast-radio {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n margin-top: 8px;\r\n cursor: pointer;\r\n }\r\n \r\n .met-toast-radio input {\r\n width: 16px;\r\n height: 16px;\r\n cursor: pointer;\r\n }\r\n \r\n /* Toast输入框 */\r\n .met-toast-input {\r\n width: 100%;\r\n padding: 8px 12px;\r\n border: 1px solid rgba(0, 0, 0, 0.1);\r\n border-radius: 6px;\r\n font-size: 13px;\r\n margin-top: 8px;\r\n background: transparent;\r\n color: inherit;\r\n }\r\n \r\n .met-theme-dark .met-toast-input {\r\n border-color: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-input:focus {\r\n outline: none;\r\n border-color: #3b82f6;\r\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\r\n }\r\n \r\n /* Toast文本域 */\r\n .met-toast-textarea {\r\n width: 100%;\r\n padding: 8px 12px;\r\n border: 1px solid rgba(0, 0, 0, 0.1);\r\n border-radius: 6px;\r\n font-size: 13px;\r\n margin-top: 8px;\r\n background: transparent;\r\n color: inherit;\r\n resize: vertical;\r\n min-height: 80px;\r\n }\r\n \r\n .met-theme-dark .met-toast-textarea {\r\n border-color: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-textarea:focus {\r\n outline: none;\r\n border-color: #3b82f6;\r\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\r\n }\r\n \r\n /* Toast选择框 */\r\n .met-toast-select {\r\n width: 100%;\r\n padding: 8px 12px;\r\n border: 1px solid rgba(0, 0, 0, 0.1);\r\n border-radius: 6px;\r\n font-size: 13px;\r\n margin-top: 8px;\r\n background: transparent;\r\n color: inherit;\r\n cursor: pointer;\r\n }\r\n \r\n .met-theme-dark .met-toast-select {\r\n border-color: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-select:focus {\r\n outline: none;\r\n border-color: #3b82f6;\r\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\r\n }\r\n \r\n /* Toast下拉菜单 */\r\n .met-toast-dropdown {\r\n position: relative;\r\n display: inline-block;\r\n }\r\n \r\n .met-toast-dropdown-content {\r\n display: none;\r\n position: absolute;\r\n background: ${theme.bg};\r\n min-width: 160px;\r\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);\r\n border-radius: 8px;\r\n z-index: 1;\r\n padding: 8px 0;\r\n margin-top: 4px;\r\n }\r\n \r\n .met-theme-dark .met-toast-dropdown-content {\r\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);\r\n }\r\n \r\n .met-toast-dropdown:hover .met-toast-dropdown-content {\r\n display: block;\r\n }\r\n \r\n .met-toast-dropdown-item {\r\n padding: 8px 16px;\r\n cursor: pointer;\r\n font-size: 13px;\r\n }\r\n \r\n .met-toast-dropdown-item:hover {\r\n background: rgba(0, 0, 0, 0.05);\r\n }\r\n \r\n .met-theme-dark .met-toast-dropdown-item:hover {\r\n background: rgba(255, 255, 255, 0.05);\r\n }\r\n \r\n /* Toast工具提示 */\r\n .met-toast-tooltip {\r\n position: relative;\r\n display: inline-block;\r\n }\r\n \r\n .met-toast-tooltip .met-toast-tooltip-text {\r\n visibility: hidden;\r\n width: 120px;\r\n background: ${theme.bg};\r\n color: ${theme.text};\r\n text-align: center;\r\n border-radius: 6px;\r\n padding: 6px 8px;\r\n position: absolute;\r\n z-index: 1;\r\n bottom: 125%;\r\n left: 50%;\r\n margin-left: -60px;\r\n opacity: 0;\r\n transition: opacity 0.3s;\r\n font-size: 12px;\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\r\n }\r\n \r\n .met-theme-dark .met-toast-tooltip .met-toast-tooltip-text {\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\r\n }\r\n \r\n .met-toast-tooltip:hover .met-toast-tooltip-text {\r\n visibility: visible;\r\n opacity: 1;\r\n }\r\n \r\n /* Toast弹出框 */\r\n .met-toast-popover {\r\n position: relative;\r\n display: inline-block;\r\n }\r\n \r\n .met-toast-popover .met-toast-popover-content {\r\n visibility: hidden;\r\n background: ${theme.bg};\r\n color: ${theme.text};\r\n border-radius: 8px;\r\n padding: 12px 16px;\r\n position: absolute;\r\n z-index: 1;\r\n bottom: 125%;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n opacity: 0;\r\n transition: opacity 0.3s;\r\n min-width: 200px;\r\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);\r\n }\r\n \r\n .met-theme-dark .met-toast-popover .met-toast-popover-content {\r\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\r\n }\r\n \r\n .met-toast-popover:hover .met-toast-popover-content {\r\n visibility: visible;\r\n opacity: 1;\r\n }\r\n \r\n /* Toast模态框 */\r\n .met-toast-modal {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 10000;\r\n }\r\n \r\n .met-toast-modal-content {\r\n background: ${theme.bg};\r\n color: ${theme.text};\r\n border-radius: 12px;\r\n padding: 24px;\r\n max-width: 500px;\r\n width: 90%;\r\n max-height: 80vh;\r\n overflow-y: auto;\r\n }\r\n \r\n /* Toast抽屉 */\r\n .met-toast-drawer {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(0, 0, 0, 0.5);\r\n z-index: 10000;\r\n }\r\n \r\n .met-toast-drawer-content {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n width: 300px;\r\n height: 100%;\r\n background: ${theme.bg};\r\n color: ${theme.text};\r\n padding: 24px;\r\n transform: translateX(100%);\r\n transition: transform 0.3s ease;\r\n }\r\n \r\n .met-toast-drawer.open .met-toast-drawer-content {\r\n transform: translateX(0);\r\n }\r\n \r\n /* Toast通知栏 */\r\n .met-toast-notification-bar {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n background: ${theme.bg};\r\n color: ${theme.text};\r\n padding: 12px 24px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n z-index: 9999;\r\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\r\n }\r\n \r\n /* Toast状态栏 */\r\n .met-toast-status-bar {\r\n position: fixed;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n background: ${theme.bg};\r\n color: ${theme.text};\r\n padding: 8px 24px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n z-index: 9999;\r\n font-size: 12px;\r\n box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.1);\r\n }\r\n `;\r\n};\r\n\r\n/**\r\n * 注入样式\r\n * @param {Object} theme - 主题配置\r\n */\r\nexport const injectStyles = (theme = THEMES.light) => {\r\n // 检查是否在浏览器环境\r\n if (typeof document === 'undefined') return;\r\n \r\n // 检查是否已注入\r\n if (styleElement && document.getElementById('metona-toast-styles')) {\r\n return;\r\n }\r\n \r\n // 生成CSS\r\n const css = generateCSS(theme);\r\n \r\n // 创建样式元素\r\n styleElement = document.createElement('style');\r\n styleElement.id = 'metona-toast-styles';\r\n styleElement.textContent = css.replace(/\\s+/g, ' ');\r\n \r\n // 添加到文档头\r\n document.head.appendChild(styleElement);\r\n \r\n // 缓存样式\r\n injectedStyles = css;\r\n};\r\n\r\n/**\r\n * 更新样式\r\n * @param {Object} theme - 新主题配置\r\n */\r\nexport const updateStyles = (theme) => {\r\n if (!styleElement) {\r\n injectStyles(theme);\r\n return;\r\n }\r\n \r\n const css = generateCSS(theme);\r\n styleElement.textContent = css.replace(/\\s+/g, ' ');\r\n injectedStyles = css;\r\n};\r\n\r\n/**\r\n * 移除样式\r\n */\r\nexport const removeStyles = () => {\r\n if (styleElement && styleElement.parentNode) {\r\n styleElement.parentNode.removeChild(styleElement);\r\n }\r\n \r\n styleElement = null;\r\n injectedStyles = null;\r\n};\r\n\r\n/**\r\n * 获取当前样式\r\n * @returns {string|null} 当前CSS字符串\r\n */\r\nexport const getStyles = () => {\r\n return injectedStyles;\r\n};\r\n\r\n/**\r\n * 检查样式是否已注入\r\n * @returns {boolean} 是否已注入\r\n */\r\nexport const isStylesInjected = () => {\r\n return !!styleElement && !!document.getElementById('metona-toast-styles');\r\n};\r\n\r\n/**\r\n * 重置样式\r\n */\r\nexport const resetStyles = () => {\r\n removeStyles();\r\n injectStyles();\r\n};\r\n\r\n/**\r\n * 添加自定义CSS\r\n * @param {string} css - CSS字符串\r\n */\r\nexport const addCustomCSS = (css) => {\r\n if (!styleElement) {\r\n injectStyles();\r\n }\r\n \r\n const customStyle = document.createElement('style');\r\n customStyle.id = 'metona-toast-custom-styles';\r\n customStyle.textContent = css;\r\n document.head.appendChild(customStyle);\r\n};\r\n\r\n/**\r\n * 移除自定义CSS\r\n */\r\nexport const removeCustomCSS = () => {\r\n const customStyle = document.getElementById('metona-toast-custom-styles');\r\n if (customStyle && customStyle.parentNode) {\r\n customStyle.parentNode.removeChild(customStyle);\r\n }\r\n};\r\n\r\n/**\r\n * 生成主题变量\r\n * @param {Object} theme - 主题配置\r\n * @returns {string} CSS变量字符串\r\n */\r\nexport const generateThemeVariables = (theme) => {\r\n return `\r\n :root {\r\n --met-theme-bg: ${theme.bg};\r\n --met-theme-text: ${theme.text};\r\n --met-theme-border: ${theme.border};\r\n --met-theme-shadow: ${theme.shadow};\r\n --met-theme-hover-shadow: ${theme.hoverShadow};\r\n --met-theme-progress-bg: ${theme.progressBg};\r\n --met-theme-close-hover-bg: ${theme.closeHoverBg};\r\n }\r\n `;\r\n};\r\n\r\n/**\r\n * 应用主题变量\r\n * @param {Object} theme - 主题配置\r\n */\r\nexport const applyThemeVariables = (theme) => {\r\n const css = generateThemeVariables(theme);\r\n addCustomCSS(css);\r\n};\r\n\r\n/**\r\n * 清除主题变量\r\n */\r\nexport const clearThemeVariables = () => {\r\n removeCustomCSS();\r\n};\r\n\r\n/**\r\n * 获取系统主题\r\n * @returns {string} 系统主题\r\n */\r\nexport const getSystemTheme = () => {\r\n if (typeof window === 'undefined') return 'light';\r\n \r\n return window.matchMedia && \r\n window.matchMedia('(prefers-color-scheme: dark)').matches \r\n ? 'dark' \r\n : 'light';\r\n};\r\n\r\n/**\r\n * 监听系统主题变化\r\n * @param {Function} callback - 回调函数\r\n * @returns {Function} 取消监听函数\r\n */\r\nexport const watchSystemTheme = (callback) => {\r\n if (typeof window === 'undefined' || !window.matchMedia) {\r\n return () => {};\r\n }\r\n \r\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\r\n \r\n const handler = (e) => {\r\n callback(e.matches ? 'dark' : 'light');\r\n };\r\n \r\n mediaQuery.addEventListener('change', handler);\r\n \r\n return () => {\r\n mediaQuery.removeEventListener('change', handler);\r\n };\r\n};\r\n\r\n/**\r\n * 自动应用系统主题\r\n * @returns {Function} 取消监听函数\r\n */\r\nexport const autoApplySystemTheme = () => {\r\n const applyTheme = (theme) => {\r\n updateStyles(THEMES[theme]);\r\n applyThemeVariables(THEMES[theme]);\r\n };\r\n \r\n // 应用当前系统主题\r\n applyTheme(getSystemTheme());\r\n \r\n // 监听系统主题变化\r\n return watchSystemTheme(applyTheme);\r\n};\r\n","/**\r\n * MetonaToast Themes - 主题管理\r\n * @module themes\r\n * @version 2.0.0\r\n * @description 主题系统、自定义主题和主题切换\r\n */\r\n\r\nimport { THEMES } from './constants.js';\r\nimport { prefersDark } from './utils.js';\r\n\r\n// 当前主题状态\r\nlet currentTheme = 'auto';\r\nlet themeListeners = new Set();\r\nlet systemThemeMediaQuery = null;\r\nlet systemThemeListener = null;\r\n\r\n/**\r\n * 获取系统主题\r\n * @returns {string} 系统主题 ('light' 或 'dark')\r\n */\r\nexport const getSystemTheme = () => {\r\n if (typeof window === 'undefined') return 'light';\r\n return prefersDark() ? 'dark' : 'light';\r\n};\r\n\r\n/**\r\n * 获取主题(别名)\r\n * @param {string} theme - 主题名称\r\n * @returns {string} 解析后的主题\r\n */\r\nexport const getTheme = (theme) => {\r\n return resolveTheme(theme);\r\n};\r\n\r\n/**\r\n * 解析主题\r\n * @param {string} theme - 主题名称\r\n * @returns {string} 解析后的主题\r\n */\r\nexport const resolveTheme = (theme) => {\r\n if (theme === 'auto') {\r\n // 优先使用用户设置的全局主题,否则使用系统主题\r\n if (currentTheme && currentTheme !== 'auto') {\r\n return currentTheme;\r\n }\r\n return getSystemTheme();\r\n }\r\n return theme;\r\n};\r\n\r\n/**\r\n * 获取主题配置\r\n * @param {string} theme - 主题名称\r\n * @returns {Object} 主题配置\r\n */\r\nexport const getThemeConfig = (theme) => {\r\n const resolved = resolveTheme(theme);\r\n return THEMES[resolved] || THEMES.light;\r\n};\r\n\r\n/**\r\n * 应用主题\r\n * @param {string} theme - 主题名称\r\n */\r\nexport const applyTheme = (theme) => {\r\n currentTheme = theme;\r\n const resolved = resolveTheme(theme);\r\n \r\n // 应用主题到文档\r\n if (typeof document !== 'undefined') {\r\n document.documentElement.setAttribute('data-met-theme', resolved);\r\n document.documentElement.classList.remove('met-theme-light', 'met-theme-dark', 'met-theme-auto');\r\n document.documentElement.classList.add(`met-theme-${resolved}`);\r\n \r\n // 设置CSS变量\r\n const config = getThemeConfig(theme);\r\n setThemeVariables(config);\r\n }\r\n \r\n // 通知监听器\r\n notifyThemeListeners(theme, resolved);\r\n};\r\n\r\n/**\r\n * 设置主题CSS变量\r\n * @param {Object} config - 主题配置\r\n */\r\nexport const setThemeVariables = (config) => {\r\n if (typeof document === 'undefined') return;\r\n \r\n const root = document.documentElement;\r\n root.style.setProperty('--met-bg', config.bg);\r\n root.style.setProperty('--met-text', config.text);\r\n root.style.setProperty('--met-border', config.border);\r\n root.style.setProperty('--met-shadow', config.shadow);\r\n root.style.setProperty('--met-hover-shadow', config.hoverShadow);\r\n root.style.setProperty('--met-progress-bg', config.progressBg);\r\n root.style.setProperty('--met-close-hover-bg', config.closeHoverBg);\r\n \r\n // 设置颜色变量\r\n root.style.setProperty('--met-success', '#10b981');\r\n root.style.setProperty('--met-error', '#ef4444');\r\n root.style.setProperty('--met-warning', '#f59e0b');\r\n root.style.setProperty('--met-info', '#3b82f6');\r\n root.style.setProperty('--met-loading', '#6366f1');\r\n};\r\n\r\n/**\r\n * 清除主题CSS变量\r\n */\r\nexport const clearThemeVariables = () => {\r\n if (typeof document === 'undefined') return;\r\n \r\n const root = document.documentElement;\r\n const variables = [\r\n '--met-bg',\r\n '--met-text',\r\n '--met-border',\r\n '--met-shadow',\r\n '--met-hover-shadow',\r\n '--met-progress-bg',\r\n '--met-close-hover-bg',\r\n '--met-success',\r\n '--met-error',\r\n '--met-warning',\r\n '--met-info',\r\n '--met-loading',\r\n ];\r\n \r\n variables.forEach((variable) => {\r\n root.style.removeProperty(variable);\r\n });\r\n};\r\n\r\n/**\r\n * 获取当前主题\r\n * @returns {string} 当前主题\r\n */\r\nexport const getCurrentTheme = () => {\r\n return currentTheme;\r\n};\r\n\r\n/**\r\n * 获取解析后的主题\r\n * @returns {string} 解析后的主题\r\n */\r\nexport const getResolvedTheme = () => {\r\n return resolveTheme(currentTheme);\r\n};\r\n\r\n/**\r\n * 切换主题\r\n * @param {string} theme - 新主题\r\n */\r\nexport const switchTheme = (theme) => {\r\n applyTheme(theme);\r\n saveTheme(theme);\r\n};\r\n\r\n/**\r\n * 切换亮色/暗色主题\r\n */\r\nexport const toggleTheme = () => {\r\n const resolved = getResolvedTheme();\r\n const newTheme = resolved === 'dark' ? 'light' : 'dark';\r\n switchTheme(newTheme);\r\n};\r\n\r\n/**\r\n * 重置为自动主题\r\n */\r\nexport const resetToAuto = () => {\r\n switchTheme('auto');\r\n};\r\n\r\n/**\r\n * 保存主题到本地存储\r\n * @param {string} theme - 主题名称\r\n */\r\nexport const saveTheme = (theme) => {\r\n if (typeof localStorage !== 'undefined') {\r\n try {\r\n localStorage.setItem('metona-toast-theme', theme);\r\n } catch (e) {\r\n console.warn('Failed to save theme:', e);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * 从本地存储加载主题\r\n * @returns {string} 主题名称\r\n */\r\nexport const loadTheme = () => {\r\n if (typeof localStorage !== 'undefined') {\r\n try {\r\n return localStorage.getItem('metona-toast-theme') || 'auto';\r\n } catch (e) {\r\n console.warn('Failed to load theme:', e);\r\n }\r\n }\r\n return 'auto';\r\n};\r\n\r\n/**\r\n * 初始化主题系统\r\n */\r\nexport const initTheme = () => {\r\n // 加载保存的主题\r\n const savedTheme = loadTheme();\r\n applyTheme(savedTheme);\r\n \r\n // 监听系统主题变化\r\n watchSystemTheme();\r\n};\r\n\r\n/**\r\n * 监听系统主题变化\r\n */\r\nexport const watchSystemTheme = () => {\r\n if (typeof window === 'undefined' || !window.matchMedia) return;\r\n \r\n // 移除旧的监听器\r\n if (systemThemeMediaQuery && systemThemeListener) {\r\n systemThemeMediaQuery.removeEventListener('change', systemThemeListener);\r\n }\r\n \r\n // 创建新的监听器\r\n systemThemeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\r\n systemThemeListener = (e) => {\r\n if (currentTheme === 'auto') {\r\n applyTheme('auto');\r\n }\r\n };\r\n \r\n systemThemeMediaQuery.addEventListener('change', systemThemeListener);\r\n};\r\n\r\n/**\r\n * 停止监听系统主题变化\r\n */\r\nexport const unwatchSystemTheme = () => {\r\n if (systemThemeMediaQuery && systemThemeListener) {\r\n systemThemeMediaQuery.removeEventListener('change', systemThemeListener);\r\n systemThemeMediaQuery = null;\r\n systemThemeListener = null;\r\n }\r\n};\r\n\r\n/**\r\n * 添加主题监听器\r\n * @param {Function} listener - 监听器函数\r\n * @returns {Function} 移除监听器函数\r\n */\r\nexport const addThemeListener = (listener) => {\r\n themeListeners.add(listener);\r\n \r\n return () => {\r\n themeListeners.delete(listener);\r\n };\r\n};\r\n\r\n/**\r\n * 移除主题监听器\r\n * @param {Function} listener - 监听器函数\r\n */\r\nexport const removeThemeListener = (listener) => {\r\n themeListeners.delete(listener);\r\n};\r\n\r\n/**\r\n * 通知主题监听器\r\n * @param {string} theme - 主题名称\r\n * @param {string} resolved - 解析后的主题\r\n */\r\nconst notifyThemeListeners = (theme, resolved) => {\r\n themeListeners.forEach((listener) => {\r\n try {\r\n listener(theme, resolved);\r\n } catch (e) {\r\n console.error('Theme listener error:', e);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * 清除所有主题监听器\r\n */\r\nexport const clearThemeListeners = () => {\r\n themeListeners.clear();\r\n};\r\n\r\n/**\r\n * 注册自定义主题\r\n * @param {string} name - 主题名称\r\n * @param {Object} config - 主题配置\r\n */\r\nexport const registerTheme = (name, config) => {\r\n THEMES[name] = {\r\n bg: config.bg || THEMES.light.bg,\r\n text: config.text || THEMES.light.text,\r\n border: config.border || THEMES.light.border,\r\n shadow: config.shadow || THEMES.light.shadow,\r\n hoverShadow: config.hoverShadow || THEMES.light.hoverShadow,\r\n progressBg: config.progressBg || THEMES.light.progressBg,\r\n closeHoverBg: config.closeHoverBg || THEMES.light.closeHoverBg,\r\n };\r\n};\r\n\r\n/**\r\n * 注销自定义主题\r\n * @param {string} name - 主题名称\r\n */\r\nexport const unregisterTheme = (name) => {\r\n if (name === 'light' || name === 'dark' || name === 'auto') {\r\n console.warn('Cannot unregister built-in theme:', name);\r\n return;\r\n }\r\n \r\n delete THEMES[name];\r\n};\r\n\r\n/**\r\n * 获取所有主题\r\n * @returns {Object} 主题映射\r\n */\r\nexport const getAllThemes = () => {\r\n return { ...THEMES };\r\n};\r\n\r\n/**\r\n * 获取主题名称列表\r\n * @returns {Array} 主题名称数组\r\n */\r\nexport const getThemeNames = () => {\r\n return Object.keys(THEMES);\r\n};\r\n\r\n/**\r\n * 检查主题是否存在\r\n * @param {string} name - 主题名称\r\n * @returns {boolean} 是否存在\r\n */\r\nexport const hasTheme = (name) => {\r\n return name in THEMES;\r\n};\r\n\r\n/**\r\n * 获取主题预览\r\n * @param {string} theme - 主题名称\r\n * @returns {Object} 主题预览\r\n */\r\nexport const getThemePreview = (theme) => {\r\n const config = getThemeConfig(theme);\r\n const resolved = resolveTheme(theme);\r\n \r\n return {\r\n name: theme,\r\n resolved,\r\n colors: {\r\n background: config.bg,\r\n text: config.text,\r\n border: config.border,\r\n },\r\n isDark: resolved === 'dark',\r\n isLight: resolved === 'light',\r\n isAuto: theme === 'auto',\r\n };\r\n};\r\n\r\n/**\r\n * 生成主题CSS\r\n * @param {string} theme - 主题名称\r\n * @returns {string} CSS字符串\r\n */\r\nexport const generateThemeCSS = (theme) => {\r\n const config = getThemeConfig(theme);\r\n const resolved = resolveTheme(theme);\r\n \r\n return `\r\n .met-theme-${resolved} {\r\n --met-bg: ${config.bg};\r\n --met-text: ${config.text};\r\n --met-border: ${config.border};\r\n --met-shadow: ${config.shadow};\r\n --met-hover-shadow: ${config.hoverShadow};\r\n --met-progress-bg: ${config.progressBg};\r\n --met-close-hover-bg: ${config.closeHoverBg};\r\n }\r\n `;\r\n};\r\n\r\n/**\r\n * 应用主题CSS\r\n * @param {string} theme - 主题名称\r\n */\r\nexport const applyThemeCSS = (theme) => {\r\n if (typeof document === 'undefined') return;\r\n \r\n const css = generateThemeCSS(theme);\r\n const styleId = 'metona-toast-theme-css';\r\n \r\n // 移除旧样式\r\n const oldStyle = document.getElementById(styleId);\r\n if (oldStyle) {\r\n oldStyle.remove();\r\n }\r\n \r\n // 添加新样式\r\n const style = document.createElement('style');\r\n style.id = styleId;\r\n style.textContent = css;\r\n document.head.appendChild(style);\r\n};\r\n\r\n/**\r\n * 移除主题CSS\r\n */\r\nexport const removeThemeCSS = () => {\r\n if (typeof document === 'undefined') return;\r\n \r\n const styleId = 'metona-toast-theme-css';\r\n const style = document.getElementById(styleId);\r\n if (style) {\r\n style.remove();\r\n }\r\n};\r\n\r\n/**\r\n * 主题工具 — 代理层,直接引用模块函数\r\n */\r\nexport const themeUtils = {\r\n getSystemTheme,\r\n resolveTheme,\r\n getThemeConfig,\r\n applyTheme,\r\n getCurrentTheme,\r\n getResolvedTheme,\r\n switchTheme,\r\n toggleTheme,\r\n resetToAuto,\r\n initTheme,\r\n watchSystemTheme,\r\n unwatchSystemTheme,\r\n addThemeListener,\r\n removeThemeListener,\r\n clearThemeListeners,\r\n registerTheme,\r\n unregisterTheme,\r\n getAllThemes,\r\n getThemeNames,\r\n hasTheme,\r\n getThemePreview,\r\n generateThemeCSS,\r\n applyThemeCSS,\r\n removeThemeCSS,\r\n saveTheme,\r\n loadTheme,\r\n};\r\n\r\n/**\r\n * 预设主题\r\n */\r\nexport const presetThemes = {\r\n /**\r\n * 浅色主题\r\n */\r\n light: {\r\n name: '浅色',\r\n description: '明亮清晰的主题',\r\n config: THEMES.light,\r\n },\r\n \r\n /**\r\n * 深色主题\r\n */\r\n dark: {\r\n name: '深色',\r\n description: '护眼舒适的暗色主题',\r\n config: THEMES.dark,\r\n },\r\n \r\n /**\r\n * 自动主题\r\n */\r\n auto: {\r\n name: '自动',\r\n description: '跟随系统主题设置',\r\n config: 'auto',\r\n },\r\n \r\n warm: {\r\n name: '暖色',\r\n description: '温馨舒适的暖色主题',\r\n config: THEMES.warm,\r\n },\r\n};\r\n\r\n// 注册预设主题\r\nObject.entries(presetThemes).forEach(([name, theme]) => {\r\n if (name !== 'auto' && theme.config !== 'auto') {\r\n THEMES[name] = theme.config;\r\n }\r\n});\r\n\r\n/**\r\n * 创建主题管理器\r\n * @returns {Object} 主题管理器\r\n */\r\nexport const createThemeManager = () => {\r\n return {\r\n getSystemTheme,\r\n resolveTheme,\r\n getThemeConfig,\r\n applyTheme,\r\n getCurrentTheme,\r\n getResolvedTheme,\r\n switchTheme,\r\n toggleTheme,\r\n resetToAuto,\r\n initTheme,\r\n watchSystemTheme,\r\n unwatchSystemTheme,\r\n addThemeListener,\r\n removeThemeListener,\r\n clearThemeListeners,\r\n registerTheme,\r\n unregisterTheme,\r\n getAllThemes,\r\n getThemeNames,\r\n hasTheme,\r\n getThemePreview,\r\n generateThemeCSS,\r\n applyThemeCSS,\r\n removeThemeCSS,\r\n saveTheme,\r\n loadTheme,\r\n };\r\n};\r\n\r\nexport { themeUtils as default };\r\n","/**\r\n * MetonaToast i18n - 国际化管理\r\n * @module i18n\r\n * @version 2.0.0\r\n * @description 多语言支持、语言切换和翻译管理\r\n */\r\n\r\nimport { LOCALES } from './constants.js';\r\n\r\n// 当前语言状态\r\nlet currentLocale = 'zh-CN';\r\nlet localeListeners = new Set();\r\nlet fallbackLocale = 'zh-CN';\r\n\r\n/**\r\n * 获取当前语言\r\n * @returns {string} 当前语言\r\n */\r\nexport const getCurrentLocale = () => {\r\n return currentLocale;\r\n};\r\n\r\n/**\r\n * 设置当前语言\r\n * @param {string} locale - 语言代码\r\n */\r\nexport const setCurrentLocale = (locale) => {\r\n if (!LOCALES[locale]) {\r\n console.warn(`Locale \"${locale}\" not found, falling back to \"${fallbackLocale}\"`);\r\n locale = fallbackLocale;\r\n }\r\n \r\n currentLocale = locale;\r\n notifyLocaleListeners(locale);\r\n saveLocale(locale);\r\n};\r\n\r\n/**\r\n * 获取回退语言\r\n * @returns {string} 回退语言\r\n */\r\nexport const getFallbackLocale = () => {\r\n return fallbackLocale;\r\n};\r\n\r\n/**\r\n * 设置回退语言\r\n * @param {string} locale - 语言代码\r\n */\r\nexport const setFallbackLocale = (locale) => {\r\n if (!LOCALES[locale]) {\r\n console.warn(`Fallback locale \"${locale}\" not found`);\r\n return;\r\n }\r\n \r\n fallbackLocale = locale;\r\n};\r\n\r\n/**\r\n * 翻译函数\r\n * @param {string} key - 翻译键\r\n * @param {Object} params - 插值参数\r\n * @returns {string} 翻译后的字符串\r\n */\r\nexport const t = (key, params = {}) => {\r\n // 尝试当前语言\r\n const currentTranslation = getTranslation(currentLocale, key);\r\n if (currentTranslation !== undefined) {\r\n return interpolate(currentTranslation, params);\r\n }\r\n \r\n // 尝试回退语言\r\n if (currentLocale !== fallbackLocale) {\r\n const fallbackTranslation = getTranslation(fallbackLocale, key);\r\n if (fallbackTranslation !== undefined) {\r\n return interpolate(fallbackTranslation, params);\r\n }\r\n }\r\n \r\n // 返回键名\r\n console.warn(`Translation missing for key \"${key}\" in locale \"${currentLocale}\"`);\r\n return key;\r\n};\r\n\r\n/**\r\n * 获取翻译\r\n * @param {string} locale - 语言代码\r\n * @param {string} key - 翻译键\r\n * @returns {string|undefined} 翻译字符串\r\n */\r\nconst getTranslation = (locale, key) => {\r\n const localeData = LOCALES[locale];\r\n if (!localeData) return undefined;\r\n \r\n // 支持嵌套键 (如 'common.close')\r\n const keys = key.split('.');\r\n let result = localeData;\r\n \r\n for (const k of keys) {\r\n if (result && typeof result === 'object' && k in result) {\r\n result = result[k];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n \r\n return typeof result === 'string' ? result : undefined;\r\n};\r\n\r\n/**\r\n * 插值函数\r\n * @param {string} str - 包含占位符的字符串\r\n * @param {Object} params - 插值参数\r\n * @returns {string} 插值后的字符串\r\n */\r\nconst interpolate = (str, params) => {\r\n return str.replace(/\\{(\\w+)\\}/g, (match, key) => {\r\n return params[key] !== undefined ? params[key] : match;\r\n });\r\n};\r\n\r\n/**\r\n * 检查翻译是否存在\r\n * @param {string} key - 翻译键\r\n * @returns {boolean} 是否存在\r\n */\r\nexport const hasTranslation = (key) => {\r\n return getTranslation(currentLocale, key) !== undefined ||\r\n getTranslation(fallbackLocale, key) !== undefined;\r\n};\r\n\r\n/**\r\n * 获取所有翻译\r\n * @param {string} locale - 语言代码\r\n * @returns {Object} 翻译对象\r\n */\r\nexport const getTranslations = (locale) => {\r\n return LOCALES[locale] || {};\r\n};\r\n\r\n/**\r\n * 添加翻译\r\n * @param {string} locale - 语言代码\r\n * @param {Object} translations - 翻译对象\r\n */\r\nexport const addTranslations = (locale, translations) => {\r\n if (!LOCALES[locale]) {\r\n LOCALES[locale] = {};\r\n }\r\n \r\n deepMerge(LOCALES[locale], translations);\r\n};\r\n\r\n/**\r\n * 深度合并对象\r\n * @param {Object} target - 目标对象\r\n * @param {Object} source - 源对象\r\n * @returns {Object} 合并后的对象\r\n */\r\nconst deepMerge = (target, source) => {\r\n for (const key in source) {\r\n if (source[key] instanceof Object && key in target && target[key] instanceof Object) {\r\n deepMerge(target[key], source[key]);\r\n } else {\r\n target[key] = source[key];\r\n }\r\n }\r\n return target;\r\n};\r\n\r\n/**\r\n * 移除翻译\r\n * @param {string} locale - 语言代码\r\n * @param {string} key - 翻译键\r\n */\r\nexport const removeTranslation = (locale, key) => {\r\n const localeData = LOCALES[locale];\r\n if (!localeData) return;\r\n \r\n const keys = key.split('.');\r\n let current = localeData;\r\n \r\n for (let i = 0; i < keys.length - 1; i++) {\r\n if (current[keys[i]] && typeof current[keys[i]] === 'object') {\r\n current = current[keys[i]];\r\n } else {\r\n return;\r\n }\r\n }\r\n \r\n delete current[keys[keys.length - 1]];\r\n};\r\n\r\n/**\r\n * 清除翻译\r\n * @param {string} locale - 语言代码\r\n */\r\nexport const clearTranslations = (locale) => {\r\n if (LOCALES[locale]) {\r\n LOCALES[locale] = {};\r\n }\r\n};\r\n\r\n/**\r\n * 获取支持的语言列表\r\n * @returns {Array} 语言代码数组\r\n */\r\nexport const getSupportedLocales = () => {\r\n return Object.keys(LOCALES);\r\n};\r\n\r\n/**\r\n * 检查语言是否支持\r\n * @param {string} locale - 语言代码\r\n * @returns {boolean} 是否支持\r\n */\r\nexport const isLocaleSupported = (locale) => {\r\n return locale in LOCALES;\r\n};\r\n\r\n/**\r\n * 获取语言名称\r\n * @param {string} locale - 语言代码\r\n * @returns {string} 语言名称\r\n */\r\nexport const getLocaleName = (locale) => {\r\n const names = {\r\n 'zh-CN': '简体中文',\r\n 'zh-TW': '繁體中文',\r\n 'en-US': 'English (US)',\r\n 'en-GB': 'English (UK)',\r\n 'ja': '日本語',\r\n 'ko': '한국어',\r\n 'fr': 'Français',\r\n 'de': 'Deutsch',\r\n 'es': 'Español',\r\n 'pt': 'Português',\r\n 'ru': 'Русский',\r\n 'ar': 'العربية',\r\n 'hi': 'हिन्दी',\r\n 'th': 'ไทย',\r\n 'vi': 'Tiếng Việt',\r\n 'id': 'Bahasa Indonesia',\r\n 'ms': 'Bahasa Melayu',\r\n 'tr': 'Türkçe',\r\n 'it': 'Italiano',\r\n 'nl': 'Nederlands',\r\n 'pl': 'Polski',\r\n 'uk': 'Українська',\r\n 'cs': 'Čeština',\r\n 'sv': 'Svenska',\r\n 'da': 'Dansk',\r\n 'fi': 'Suomi',\r\n 'nb': 'Norsk',\r\n 'el': 'Ελληνικά',\r\n 'he': 'עברית',\r\n 'hu': 'Magyar',\r\n 'ro': 'Română',\r\n 'bg': 'Български',\r\n 'hr': 'Hrvatski',\r\n 'sk': 'Slovenčina',\r\n 'sl': 'Slovenščina',\r\n 'et': 'Eesti',\r\n 'lv': 'Latviešu',\r\n 'lt': 'Lietuvių',\r\n 'ca': 'Català',\r\n 'gl': 'Galego',\r\n 'eu': 'Euskara',\r\n 'cy': 'Cymraeg',\r\n 'ga': 'Gaeilge',\r\n 'mt': 'Malti',\r\n 'is': 'Íslenska',\r\n 'mk': 'Македонски',\r\n 'sq': 'Shqip',\r\n 'sr': 'Српски',\r\n 'bs': 'Bosanski',\r\n 'me': 'Crnogorski',\r\n 'ka': 'ქართული',\r\n 'hy': 'Հայերեն',\r\n 'az': 'Azərbaycan',\r\n 'uz': \"O'zbek\",\r\n 'kk': 'Қазақ',\r\n 'ky': 'Кыргыз',\r\n 'tg': 'Тоҷикӣ',\r\n 'tk': 'Türkmen',\r\n 'mn': 'Монгол',\r\n 'ne': 'नेपाली',\r\n 'si': 'සිංහල',\r\n 'my': 'မြန်မာ',\r\n 'km': 'ខ្មែរ',\r\n 'lo': 'ລາວ',\r\n 'am': 'አማርኛ',\r\n 'sw': 'Kiswahili',\r\n 'yo': 'Yorùbá',\r\n 'ig': 'Igbo',\r\n 'ha': 'Hausa',\r\n 'zu': 'isiZulu',\r\n 'af': 'Afrikaans',\r\n 'xh': 'isiXhosa',\r\n 'st': 'Sesotho',\r\n 'tn': 'Setswana',\r\n 'ts': 'Xitsonga',\r\n 'ss': 'siSwati',\r\n 've': 'Tshivenda',\r\n 'nr': 'isiNdebele',\r\n };\r\n \r\n return names[locale] || locale;\r\n};\r\n\r\n/**\r\n * 获取语言方向\r\n * @param {string} locale - 语言代码\r\n * @returns {string} 语言方向 ('ltr' 或 'rtl')\r\n */\r\nexport const getLocaleDirection = (locale) => {\r\n const rtlLocales = ['ar', 'he', 'fa', 'ur', 'yi', 'ps', 'sd', 'ug'];\r\n return rtlLocales.includes(locale) ? 'rtl' : 'ltr';\r\n};\r\n\r\n/**\r\n * 获取语言信息\r\n * @param {string} locale - 语言代码\r\n * @returns {Object} 语言信息\r\n */\r\nexport const getLocaleInfo = (locale) => {\r\n return {\r\n code: locale,\r\n name: getLocaleName(locale),\r\n direction: getLocaleDirection(locale),\r\n isSupported: isLocaleSupported(locale),\r\n isCurrent: locale === currentLocale,\r\n isFallback: locale === fallbackLocale,\r\n };\r\n};\r\n\r\n/**\r\n * 获取所有语言信息\r\n * @returns {Array} 语言信息数组\r\n */\r\nexport const getAllLocaleInfo = () => {\r\n return getSupportedLocales().map(getLocaleInfo);\r\n};\r\n\r\n/**\r\n * 保存语言到本地存储\r\n * @param {string} locale - 语言代码\r\n */\r\nexport const saveLocale = (locale) => {\r\n if (typeof localStorage !== 'undefined') {\r\n try {\r\n localStorage.setItem('metona-toast-locale', locale);\r\n } catch (e) {\r\n console.warn('Failed to save locale:', e);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * 从本地存储加载语言\r\n * @returns {string} 语言代码\r\n */\r\nexport const loadLocale = () => {\r\n if (typeof localStorage !== 'undefined') {\r\n try {\r\n return localStorage.getItem('metona-toast-locale') || getDefaultLocale();\r\n } catch (e) {\r\n console.warn('Failed to load locale:', e);\r\n }\r\n }\r\n return getDefaultLocale();\r\n};\r\n\r\n/**\r\n * 获取默认语言\r\n * @returns {string} 语言代码\r\n */\r\nexport const getDefaultLocale = () => {\r\n if (typeof navigator !== 'undefined') {\r\n // 尝试从浏览器获取语言\r\n const browserLocale = navigator.language || navigator.userLanguage;\r\n if (browserLocale && isLocaleSupported(browserLocale)) {\r\n return browserLocale;\r\n }\r\n \r\n // 尝试语言代码的前两位\r\n const shortLocale = browserLocale?.split('-')[0];\r\n if (shortLocale && isLocaleSupported(shortLocale)) {\r\n return shortLocale;\r\n }\r\n }\r\n \r\n return fallbackLocale;\r\n};\r\n\r\n/**\r\n * 初始化国际化系统\r\n */\r\nexport const initI18n = () => {\r\n const savedLocale = loadLocale();\r\n setCurrentLocale(savedLocale);\r\n};\r\n\r\n/**\r\n * 切换语言\r\n * @param {string} locale - 新语言\r\n */\r\nexport const switchLocale = (locale) => {\r\n setCurrentLocale(locale);\r\n};\r\n\r\n/**\r\n * 添加语言监听器\r\n * @param {Function} listener - 监听器函数\r\n * @returns {Function} 移除监听器函数\r\n */\r\nexport const addLocaleListener = (listener) => {\r\n localeListeners.add(listener);\r\n \r\n return () => {\r\n localeListeners.delete(listener);\r\n };\r\n};\r\n\r\n/**\r\n * 移除语言监听器\r\n * @param {Function} listener - 监听器函数\r\n */\r\nexport const removeLocaleListener = (listener) => {\r\n localeListeners.delete(listener);\r\n};\r\n\r\n/**\r\n * 通知语言监听器\r\n * @param {string} locale - 语言代码\r\n */\r\nconst notifyLocaleListeners = (locale) => {\r\n localeListeners.forEach((listener) => {\r\n try {\r\n listener(locale);\r\n } catch (e) {\r\n console.error('Locale listener error:', e);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * 清除所有语言监听器\r\n */\r\nexport const clearLocaleListeners = () => {\r\n localeListeners.clear();\r\n};\r\n\r\n/**\r\n * 格式化数字\r\n * @param {number} number - 数字\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatNumber = (number, options = {}) => {\r\n try {\r\n return new Intl.NumberFormat(currentLocale, options).format(number);\r\n } catch (e) {\r\n return number.toString();\r\n }\r\n};\r\n\r\n/**\r\n * 格式化货币\r\n * @param {number} amount - 金额\r\n * @param {string} currency - 货币代码\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatCurrency = (amount, currency = 'USD', options = {}) => {\r\n try {\r\n return new Intl.NumberFormat(currentLocale, {\r\n style: 'currency',\r\n currency,\r\n ...options,\r\n }).format(amount);\r\n } catch (e) {\r\n return amount.toString();\r\n }\r\n};\r\n\r\n/**\r\n * 格式化百分比\r\n * @param {number} value - 值\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatPercent = (value, options = {}) => {\r\n try {\r\n return new Intl.NumberFormat(currentLocale, {\r\n style: 'percent',\r\n minimumFractionDigits: 0,\r\n maximumFractionDigits: 2,\r\n ...options,\r\n }).format(value / 100);\r\n } catch (e) {\r\n return `${value}%`;\r\n }\r\n};\r\n\r\n/**\r\n * 格式化日期\r\n * @param {Date|number|string} date - 日期\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatDate = (date, options = {}) => {\r\n try {\r\n const dateObj = date instanceof Date ? date : new Date(date);\r\n return new Intl.DateTimeFormat(currentLocale, options).format(dateObj);\r\n } catch (e) {\r\n return date.toString();\r\n }\r\n};\r\n\r\n/**\r\n * 格式化时间\r\n * @param {Date|number|string} date - 日期\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatTime = (date, options = {}) => {\r\n return formatDate(date, {\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n second: 'numeric',\r\n ...options,\r\n });\r\n};\r\n\r\n/**\r\n * 格式化相对时间\r\n * @param {Date|number|string} date - 日期\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatRelativeTime = (date, options = {}) => {\r\n try {\r\n const dateObj = date instanceof Date ? date : new Date(date);\r\n const now = new Date();\r\n const diff = dateObj - now;\r\n \r\n const rtf = new Intl.RelativeTimeFormat(currentLocale, {\r\n numeric: 'auto',\r\n ...options,\r\n });\r\n \r\n const units = [\r\n { unit: 'year', ms: 365 * 24 * 60 * 60 * 1000 },\r\n { unit: 'month', ms: 30 * 24 * 60 * 60 * 1000 },\r\n { unit: 'week', ms: 7 * 24 * 60 * 60 * 1000 },\r\n { unit: 'day', ms: 24 * 60 * 60 * 1000 },\r\n { unit: 'hour', ms: 60 * 60 * 1000 },\r\n { unit: 'minute', ms: 60 * 1000 },\r\n { unit: 'second', ms: 1000 },\r\n ];\r\n \r\n for (const { unit, ms } of units) {\r\n if (Math.abs(diff) >= ms || unit === 'second') {\r\n const value = Math.round(diff / ms);\r\n return rtf.format(value, unit);\r\n }\r\n }\r\n \r\n return date.toString();\r\n } catch (e) {\r\n return date.toString();\r\n }\r\n};\r\n\r\n/**\r\n * 格式化列表\r\n * @param {Array} list - 列表\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatList = (list, options = {}) => {\r\n try {\r\n return new Intl.ListFormat(currentLocale, options).format(list);\r\n } catch (e) {\r\n return list.join(', ');\r\n }\r\n};\r\n\r\n/**\r\n * 格式化复数\r\n * @param {number} count - 数量\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatPlural = (count, options = {}) => {\r\n try {\r\n return new Intl.PluralRules(currentLocale, options).select(count);\r\n } catch (e) {\r\n return count === 1 ? 'one' : 'other';\r\n }\r\n};\r\n\r\n/**\r\n * 复数翻译\r\n * @param {string} key - 翻译键\r\n * @param {number} count - 数量\r\n * @param {Object} params - 插值参数\r\n * @returns {string} 翻译后的字符串\r\n */\r\nexport const plural = (key, count, params = {}) => {\r\n const pluralForm = formatPlural(count);\r\n const pluralKey = `${key}.${pluralForm}`;\r\n \r\n if (hasTranslation(pluralKey)) {\r\n return t(pluralKey, { ...params, count });\r\n }\r\n \r\n // 尝试通用形式\r\n if (hasTranslation(key)) {\r\n return t(key, { ...params, count });\r\n }\r\n \r\n return key;\r\n};\r\n\r\n/**\r\n * 日期时间格式化选项\r\n */\r\nexport const dateTimeFormats = {\r\n short: {\r\n year: 'numeric',\r\n month: 'short',\r\n day: 'numeric',\r\n },\r\n medium: {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n },\r\n long: {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n weekday: 'long',\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n second: 'numeric',\r\n },\r\n time: {\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n second: 'numeric',\r\n },\r\n date: {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n },\r\n weekday: {\r\n weekday: 'long',\r\n },\r\n month: {\r\n month: 'long',\r\n },\r\n year: {\r\n year: 'numeric',\r\n },\r\n};\r\n\r\n/**\r\n * 数字格式化选项\r\n */\r\nexport const numberFormats = {\r\n integer: {\r\n maximumFractionDigits: 0,\r\n },\r\n decimal: {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n },\r\n percent: {\r\n style: 'percent',\r\n minimumFractionDigits: 0,\r\n maximumFractionDigits: 2,\r\n },\r\n currency: {\r\n style: 'currency',\r\n currency: 'USD',\r\n },\r\n};\r\n\r\n/**\r\n * 国际化工具 — 代理层,直接引用模块函数\r\n */\r\nexport const i18nUtils = {\r\n t,\r\n plural,\r\n getCurrentLocale,\r\n setCurrentLocale,\r\n switchLocale,\r\n getFallbackLocale,\r\n setFallbackLocale,\r\n hasTranslation,\r\n getTranslations,\r\n addTranslations,\r\n removeTranslation,\r\n clearTranslations,\r\n getSupportedLocales,\r\n isLocaleSupported,\r\n getLocaleName,\r\n getLocaleDirection,\r\n getLocaleInfo,\r\n getAllLocaleInfo,\r\n formatNumber,\r\n formatCurrency,\r\n formatPercent,\r\n formatDate,\r\n formatTime,\r\n formatRelativeTime,\r\n formatList,\r\n formatPlural,\r\n addLocaleListener,\r\n removeLocaleListener,\r\n clearLocaleListeners,\r\n initI18n,\r\n saveLocale,\r\n loadLocale,\r\n getDefaultLocale,\r\n};\r\n\r\n/**\r\n * 预设语言包\r\n */\r\nexport const presetLocales = {\r\n 'zh-CN': {\r\n name: '简体中文',\r\n nativeName: '简体中文',\r\n direction: 'ltr',\r\n translations: LOCALES['zh-CN'],\r\n },\r\n \r\n 'en-US': {\r\n name: 'English (US)',\r\n nativeName: 'English (US)',\r\n direction: 'ltr',\r\n translations: LOCALES['en-US'],\r\n },\r\n};\r\n\r\n/**\r\n * 创建国际化管理器\r\n * @returns {Object} 国际化管理器\r\n */\r\nexport const createI18nManager = () => {\r\n return {\r\n t,\r\n plural,\r\n getCurrentLocale,\r\n setCurrentLocale,\r\n switchLocale,\r\n getFallbackLocale,\r\n setFallbackLocale,\r\n hasTranslation,\r\n getTranslations,\r\n addTranslations,\r\n removeTranslation,\r\n clearTranslations,\r\n getSupportedLocales,\r\n isLocaleSupported,\r\n getLocaleName,\r\n getLocaleDirection,\r\n getLocaleInfo,\r\n getAllLocaleInfo,\r\n formatNumber,\r\n formatCurrency,\r\n formatPercent,\r\n formatDate,\r\n formatTime,\r\n formatRelativeTime,\r\n formatList,\r\n formatPlural,\r\n addLocaleListener,\r\n removeLocaleListener,\r\n clearLocaleListeners,\r\n initI18n,\r\n saveLocale,\r\n loadLocale,\r\n getDefaultLocale,\r\n };\r\n};\r\n\r\nexport { i18nUtils as default };\r\n","/**\r\n * MetonaToast Core - 核心Toast逻辑\r\n * @module core\r\n * @version 2.0.0\r\n * @description 重构后的核心模块,包含Toast类的优化实现\r\n */\r\n\r\nimport { generateId, escapeHTML } from './utils.js';\r\nimport { DEFAULTS, ICONS, TYPE_COLORS, THEMES } from './constants.js';\r\nimport { injectStyles } from './styles.js';\r\nimport { getTheme, applyTheme } from './themes.js';\r\nimport { t as i18nT, setCurrentLocale, getLocaleDirection, getCurrentLocale } from './i18n.js';\r\n\r\n// 模块级共享容器缓存,所有 Toast 实例共用\r\n// 使用 Map 而非 WeakMap:document.body 在页面存活期间永不被 GC,\r\n// 容器需要显式通过 destroy() 清理,WeakMap 在此场景无实际收益。\r\nconst _containerCache = new Map();\r\n\r\n/**\r\n * 参数标准化工具\r\n * 支持多种调用方式:\r\n * - success('message')\r\n * - success({ message: 'text' })\r\n * - success({ title: 'title', message: 'text' })\r\n * - success('message', { duration: 5000 })\r\n */\r\nconst normalizeArgs = (args, defaultType = 'default') => {\r\n const [first, second] = args;\r\n \r\n // 情况1: success('message')\r\n if (typeof first === 'string') {\r\n return {\r\n ...second,\r\n type: second?.type || defaultType,\r\n message: first,\r\n };\r\n }\r\n \r\n // 情况2: success({ message: 'text' }) 或 success({ title: 't', message: 'm' })\r\n if (first && typeof first === 'object') {\r\n return {\r\n ...first,\r\n type: first.type || defaultType,\r\n };\r\n }\r\n \r\n // 情况3: success() 无参数\r\n return {\r\n type: defaultType,\r\n message: '',\r\n };\r\n};\r\n\r\n/**\r\n * Toast类 - 核心通知组件\r\n */\r\nclass Toast {\r\n // 静态钩子系统\r\n static _hooks = new Map();\r\n static on(name, fn) {\r\n if (!this._hooks.has(name)) this._hooks.set(name, []);\r\n this._hooks.get(name).push(fn);\r\n return () => this.off(name, fn);\r\n }\r\n static off(name, fn) {\r\n const list = this._hooks.get(name);\r\n if (list) this._hooks.set(name, list.filter(f => f !== fn));\r\n }\r\n static trigger(name, toast) {\r\n const list = this._hooks.get(name);\r\n if (list) list.forEach(fn => { try { fn(toast); } catch (e) { console.error('Hook error:', name, e); } });\r\n }\r\n\r\n constructor(opts) {\r\n this.id = opts.id || generateId();\r\n this.type = opts.type || 'default';\r\n this.title = opts.title || '';\r\n this.message = opts.message ?? opts.content ?? '';\r\n this.html = opts.html || '';\r\n this.iconHTML = opts.iconHTML || '';\r\n this.config = { ...DEFAULTS, ...opts };\r\n // 防止嵌套对象被多个 toast 实例共享引用\r\n if (opts.style && typeof opts.style === 'object') {\r\n this.config.style = { ...opts.style };\r\n }\r\n this.el = null;\r\n this.barEl = null;\r\n this.rafId = null;\r\n this.remaining = this.config.duration;\r\n this.startedAt = 0;\r\n this.paused = false;\r\n this.closing = false;\r\n this._cleanups = [];\r\n this.group = opts.group || null;\r\n }\r\n\r\n _palette() {\r\n const theme = getTheme(this.config.theme);\r\n const c = TYPE_COLORS[this.type] || TYPE_COLORS.default;\r\n const tc = THEMES[theme] || THEMES.light;\r\n const t = { bg: tc.bg, border: tc.border, shadow: tc.shadow };\r\n return { theme, c, t };\r\n }\r\n\r\n create() {\r\n if (typeof window === 'undefined' || typeof document === 'undefined') return this;\r\n \r\n Toast.trigger('beforeShow', this);\r\n injectStyles();\r\n \r\n const container = this._getContainer();\r\n const { theme, c, t } = this._palette();\r\n \r\n this._limitToasts(container);\r\n \r\n const el = document.createElement('div');\r\n el.className = this._buildClassName(theme);\r\n el.setAttribute('role', (this.type === 'error' || this.type === 'warning') ? 'alert' : 'status');\r\n el.setAttribute('aria-live', this.type === 'error' ? 'assertive' : 'polite');\r\n el.dataset.id = this.id;\r\n \r\n this._applyStyles(el, theme, t);\r\n this._buildContent(el, c);\r\n \r\n this.el = el;\r\n // Chrome bug: column-reverse + appendChild 会导致重叠。改用 column + insertBefore\r\n const pos = this.config.position || 'top-right';\r\n if (pos.startsWith('top')) {\r\n container.insertBefore(el, container.firstChild);\r\n } else {\r\n container.appendChild(el);\r\n }\r\n \r\n this._bindEvents(el);\r\n this._startTimer();\r\n \r\n // 进入动画\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n el.classList.add('met-show');\r\n });\r\n });\r\n \r\n if (typeof this.config.onShow === 'function') {\r\n try {\r\n this.config.onShow(this);\r\n } catch (e) {\r\n console.error('onShow callback error:', e);\r\n }\r\n }\r\n \r\n Toast.trigger('afterShow', this);\r\n \r\n return this;\r\n }\r\n\r\n _getContainer() {\r\n const position = this.config.position || 'top-right';\r\n const zIndex = this.config.zIndex || 9999;\r\n \r\n if (_containerCache.has(document.body)) {\r\n const containers = _containerCache.get(document.body);\r\n if (containers.has(position)) {\r\n return containers.get(position);\r\n }\r\n } else {\r\n _containerCache.set(document.body, new Map());\r\n }\r\n \r\n const el = document.createElement('div');\r\n el.className = `met-container ${position}`;\r\n el.setAttribute('aria-label', 'Notifications');\r\n el.setAttribute('role', 'region');\r\n \r\n // cssText 完全接管布局,不依赖 CSS class\r\n const posStyles = {\r\n 'top-left': 'top:0;left:0;align-items:flex-start',\r\n 'top-center': 'top:0;left:0;right:0;align-items:center',\r\n 'top-right': 'top:0;right:0;align-items:flex-end',\r\n 'bottom-left': 'bottom:0;left:0;align-items:flex-start',\r\n 'bottom-center':'bottom:0;left:0;right:0;align-items:center',\r\n 'bottom-right': 'bottom:0;right:0;align-items:flex-end',\r\n };\r\n el.style.cssText = `\r\n display:flex;\r\n flex-direction:column;\r\n gap:${this.config.gap || 12}px;\r\n box-sizing:border-box;\r\n padding:${this.config.offset || 24}px;\r\n max-width:100vw;\r\n position:fixed;\r\n z-index:${zIndex};\r\n pointer-events:none;\r\n ${posStyles[position] || 'top:0;right:0;align-items:flex-end'}\r\n `;\r\n \r\n document.body.appendChild(el);\r\n _containerCache.get(document.body).set(position, el);\r\n \r\n return el;\r\n }\r\n\r\n _limitToasts(container) {\r\n const max = this.config.max || 6;\r\n const list = Array.from(container.querySelectorAll('.met-toast'));\r\n if (list.length >= max) {\r\n const first = list[0];\r\n const id = first && first.dataset.id;\r\n if (id) {\r\n const old = meToast._toasts.get(id);\r\n if (old) old.close(true);\r\n }\r\n }\r\n }\r\n\r\n _buildClassName(theme) {\r\n // CSS 支持的动画类型,未列出的 fallback 到 slide\r\n const CSS_ANIMS = ['slide','fade','scale','bounce','flip','rotate','zoom',\r\n 'slideUp','slideDown','slideLeft','slideRight'];\r\n const anim = CSS_ANIMS.includes(this.config.animation) ? this.config.animation : 'slide';\r\n return [\r\n 'met-toast',\r\n `met-${this.type}`,\r\n `met-theme-${theme}`,\r\n `met-anim-${anim}`,\r\n (this.config.closeOnClick || this.config.draggable) ? 'met-clickable' : '',\r\n this.config.className || '',\r\n ].filter(Boolean).join(' ');\r\n }\r\n\r\n _applyStyles(el, theme, t) {\r\n const widthValue = typeof this.config.width === 'number'\r\n ? `${this.config.width}px`\r\n : (typeof this.config.width === 'string' ? this.config.width : '360px');\r\n \r\n // 只强制核心布局属性,动画/滤镜/颜色由 CSS class 控制\r\n const set = (p, v) => el.style.setProperty(p, v, 'important');\r\n set('position', 'relative');\r\n set('flex-shrink', '0');\r\n set('min-width', '240px');\r\n set('max-width', 'calc(100vw - 48px)');\r\n set('width', widthValue);\r\n // 用户自定义样式最后应用\r\n if (this.config.style && Object.keys(this.config.style).length > 0) {\r\n Object.entries(this.config.style).forEach(([k, v]) => { el.style[k] = v; });\r\n }\r\n }\r\n\r\n _buildContent(el, c) {\r\n // 自定义渲染函数 — 完全接管 DOM 构建\r\n if (typeof this.config.render === 'function') {\r\n el.innerHTML = this.config.render(this);\r\n this.barEl = el.querySelector('.met-bar, .met-bar-v');\r\n return;\r\n }\r\n \r\n const showIcon = this.config.icon !== false && (this.iconHTML || ICONS[this.type]);\r\n const showClose = this.config.closeButton !== false;\r\n const showProgress = this.config.showProgress !== false && this.config.duration > 0;\r\n const showSide = (!showIcon && this.type !== 'default');\r\n \r\n const safeTitle = this.title ? `
${escapeHTML(this.title)}
` : '';\r\n const safeMessage = this.html\r\n ? `
${this.html}
`\r\n : (this.message ? `
${escapeHTML(this.message)}
` : '');\r\n \r\n const iconHTML = showIcon\r\n ? `
${this.iconHTML || ICONS[this.type]}
` : '';\r\n const closeHTML = showClose\r\n ? ``\r\n : '';\r\n const progressHTML = showProgress\r\n ? (this.config.progressDirection === 'vertical'\r\n ? `
`\r\n : `
`)\r\n : '';\r\n const sideHTML = showSide\r\n ? `
` : '';\r\n \r\n el.innerHTML = `\r\n ${iconHTML}\r\n ${sideHTML}\r\n
\r\n ${safeTitle}\r\n ${safeMessage}\r\n
\r\n ${closeHTML}\r\n ${progressHTML}\r\n `;\r\n \r\n this.barEl = el.querySelector('.met-bar, .met-bar-v');\r\n }\r\n\r\n _bindEvents(el) {\r\n const eventHandler = (e) => {\r\n const target = e.target;\r\n \r\n if (target.closest('.met-close')) {\r\n e.stopPropagation();\r\n this.close();\r\n return;\r\n }\r\n \r\n if (this.config.closeOnClick && !target.closest('.met-close')) {\r\n if (typeof this.config.onClick === 'function') {\r\n try {\r\n this.config.onClick(this);\r\n } catch (err) {\r\n console.error('onClick callback error:', err);\r\n }\r\n }\r\n this.close();\r\n return;\r\n }\r\n };\r\n \r\n el.addEventListener('click', eventHandler);\r\n this._cleanups.push(() => el.removeEventListener('click', eventHandler));\r\n \r\n if (this.config.pauseOnHover && this.config.duration > 0) {\r\n const mouseEnter = () => this._pause();\r\n const mouseLeave = () => this._resume();\r\n \r\n el.addEventListener('mouseenter', mouseEnter);\r\n el.addEventListener('mouseleave', mouseLeave);\r\n \r\n this._cleanups.push(() => {\r\n el.removeEventListener('mouseenter', mouseEnter);\r\n el.removeEventListener('mouseleave', mouseLeave);\r\n });\r\n }\r\n \r\n if (this.config.draggable) {\r\n this._bindDrag(el);\r\n }\r\n }\r\n\r\n _bindDrag(el) {\r\n let sx = 0, sy = 0, dx = 0, dy = 0, dragging = false;\r\n \r\n const down = (e) => {\r\n if (e.target.closest('.met-close')) return;\r\n dragging = true;\r\n sx = e.clientX; \r\n sy = e.clientY;\r\n el.setPointerCapture(e.pointerId);\r\n el.style.transition = 'none';\r\n this._pause();\r\n };\r\n \r\n const move = (e) => {\r\n if (!dragging) return;\r\n dx = e.clientX - sx; \r\n dy = e.clientY - sy;\r\n el.style.transform = `translate(${dx}px, ${dy}px) rotate(${dx * 0.1}deg)`;\r\n el.style.opacity = String(Math.max(0, 1 - Math.abs(dx) / 200));\r\n };\r\n \r\n const up = (e) => {\r\n if (!dragging) return;\r\n dragging = false;\r\n el.releasePointerCapture(e.pointerId);\r\n el.style.transition = '';\r\n \r\n if (Math.abs(dx) > 120) {\r\n el.style.transform = `translate(${dx * 2}px, ${dy}px) rotate(${dx * 0.2}deg)`;\r\n el.style.opacity = '0';\r\n setTimeout(() => this.close(true), 250);\r\n } else {\r\n el.style.transform = '';\r\n el.style.opacity = '';\r\n this._resume();\r\n }\r\n dx = dy = 0;\r\n };\r\n \r\n el.addEventListener('pointerdown', down);\r\n el.addEventListener('pointermove', move);\r\n el.addEventListener('pointerup', up);\r\n el.addEventListener('pointercancel', up);\r\n \r\n this._cleanups.push(() => {\r\n el.removeEventListener('pointerdown', down);\r\n el.removeEventListener('pointermove', move);\r\n el.removeEventListener('pointerup', up);\r\n el.removeEventListener('pointercancel', up);\r\n });\r\n }\r\n\r\n _startTimer() {\r\n if (this.config.duration <= 0) return;\r\n \r\n this.startedAt = Date.now();\r\n this.remaining = this.config.duration;\r\n \r\n const tick = () => {\r\n if (this.paused || this.closing) return;\r\n \r\n const elapsed = Date.now() - this.startedAt;\r\n this.remaining = Math.max(0, this.config.duration - elapsed);\r\n \r\n if (this.barEl) {\r\n const ratio = this.remaining / this.config.duration;\r\n const t = this.config.progressDirection === 'vertical'\r\n ? `scaleY(${ratio})` : `scaleX(${ratio})`;\r\n this.barEl.style.transform = t;\r\n }\r\n \r\n if (this.remaining <= 0) { \r\n this.close(); \r\n return; \r\n }\r\n \r\n this.rafId = requestAnimationFrame(tick);\r\n };\r\n \r\n this.rafId = requestAnimationFrame(tick);\r\n }\r\n\r\n _pause() {\r\n if (this.paused || this.config.duration <= 0) return;\r\n this.paused = true;\r\n cancelAnimationFrame(this.rafId);\r\n this.remaining = Math.max(0, this.config.duration - (Date.now() - this.startedAt));\r\n }\r\n\r\n _resume() {\r\n if (!this.paused) return;\r\n this.paused = false;\r\n this.startedAt = Date.now() - (this.config.duration - this.remaining);\r\n this._startTimer();\r\n }\r\n\r\n update(partial) {\r\n Toast.trigger('beforeUpdate', this);\r\n if (partial.type) this.type = partial.type;\r\n if (partial.title !== undefined) this.title = partial.title;\r\n if (partial.message !== undefined) this.message = partial.message;\r\n if (partial.html !== undefined) this.html = partial.html;\r\n \r\n if (!this.el) { Toast.trigger('afterUpdate', this); return this; }\r\n \r\n const content = this.el.querySelector('.met-content');\r\n if (content) {\r\n const safeTitle = this.title ? `
${escapeHTML(this.title)}
` : '';\r\n const safeMessage = this.html\r\n ? `
${this.html}
`\r\n : (this.message ? `
${escapeHTML(this.message)}
` : '');\r\n content.innerHTML = `${safeTitle}${safeMessage}`;\r\n }\r\n \r\n // resetTimerOnUpdate: 更新内容后重置计时器\r\n if (this.config.resetTimerOnUpdate && this.config.duration > 0) {\r\n cancelAnimationFrame(this.rafId);\r\n this.startedAt = Date.now();\r\n this.remaining = this.config.duration;\r\n this._startTimer();\r\n }\r\n \r\n if (typeof this.config.onUpdate === 'function') {\r\n try { this.config.onUpdate(this); } catch (e) { console.error('onUpdate callback error:', e); }\r\n }\r\n \r\n Toast.trigger('afterUpdate', this);\r\n return this;\r\n }\r\n\r\n close(immediate = false) {\r\n if (this.closing) return;\r\n this.closing = true;\r\n \r\n Toast.trigger('beforeClose', this);\r\n cancelAnimationFrame(this.rafId);\r\n this._cleanups.forEach(fn => { try { fn(); } catch (_) {} });\r\n this._cleanups = [];\r\n \r\n const el = this.el;\r\n if (!el) { \r\n meToast._remove(this.id); \r\n return; \r\n }\r\n \r\n // 立即脱离文档流:记录当前位置,然后设为 absolute,让下方 toast 自然上移\r\n const container = el.parentNode;\r\n if (container && !immediate) {\r\n const elRect = el.getBoundingClientRect();\r\n const containerRect = container.getBoundingClientRect();\r\n el.style.position = 'absolute';\r\n el.style.top = (elRect.top - containerRect.top) + 'px';\r\n el.style.left = (elRect.left - containerRect.left) + 'px';\r\n el.style.width = elRect.width + 'px';\r\n el.style.margin = '0';\r\n }\r\n \r\n el.classList.add('met-leaving');\r\n el.classList.remove('met-show');\r\n \r\n const pos = this.config.position || 'top-right';\r\n const isRTL = getLocaleDirection(getCurrentLocale()) === 'rtl';\r\n let transform = 'scale(.96)';\r\n \r\n if (pos.includes('right')) transform = isRTL ? 'translateX(-120%)' : 'translateX(120%)';\r\n else if (pos.includes('left')) transform = isRTL ? 'translateX(120%)' : 'translateX(-120%)';\r\n else if (pos.startsWith('top')) transform = 'translateY(-20px)';\r\n else transform = 'translateY(20px)';\r\n \r\n el.style.transform = transform;\r\n el.style.opacity = '0';\r\n \r\n setTimeout(() => this._destroy(), immediate ? 0 : 300);\r\n }\r\n\r\n _destroy() {\r\n if (this.el && this.el.parentNode) {\r\n this.el.parentNode.removeChild(this.el);\r\n }\r\n this.el = null;\r\n \r\n if (typeof this.config.onClose === 'function') {\r\n try {\r\n this.config.onClose(this);\r\n } catch (e) {\r\n console.error('onClose callback error:', e);\r\n }\r\n }\r\n \r\n Toast.trigger('afterClose', this);\r\n meToast._remove(this.id);\r\n }\r\n}\r\n\r\n// ========== HTML模板辅助函数 ==========\r\n\r\n/**\r\n * 按钮行模板 — confirm/prompt 共用\r\n * @param {string} buttons - 按钮HTML\r\n * @returns {string} 按钮行HTML\r\n */\r\nconst _btnRow = (buttons) => `\r\n
\r\n ${buttons}\r\n
`;\r\n\r\n/**\r\n * 确认对话框模板\r\n * @param {Object} opts - 选项\r\n * @returns {string} HTML\r\n */\r\nconst _confirmHTML = (opts) => {\r\n const confirmText = opts.confirmText || i18nT('confirm');\r\n const cancelText = opts.cancelText || i18nT('cancel');\r\n const confirmColor = opts.confirmColor || '#10b981';\r\n const cancelColor = opts.cancelColor || '#6b7280';\r\n return _btnRow(`\r\n \r\n \r\n `);\r\n};\r\n\r\n/**\r\n * 输入对话框模板\r\n * @param {Object} opts - 选项\r\n * @returns {string} HTML\r\n */\r\nconst _promptHTML = (opts) => {\r\n const submitText = opts.submitText || i18nT('confirm');\r\n const cancelText = opts.cancelText || i18nT('cancel');\r\n const submitColor = opts.submitColor || '#3b82f6';\r\n const cancelColor = opts.cancelColor || '#6b7280';\r\n return `\r\n \r\n ${_btnRow(`\r\n \r\n \r\n `)}\r\n `;\r\n};\r\n\r\n/**\r\n * 进度条模板\r\n * @param {Object} opts - 选项\r\n * @returns {string} HTML\r\n */\r\nconst _progressHTML = (opts) => {\r\n const color = opts.progressColor || '#3b82f6';\r\n return `\r\n
\r\n
\r\n
\r\n
0%
\r\n `;\r\n};\r\n\r\n/**\r\n * Action Toast 模板\r\n * @param {Array} actions - 操作按钮数组 [{ text, onClick, style }]\r\n * @returns {string} HTML\r\n */\r\nconst _actionHTML = (actions) => {\r\n if (!Array.isArray(actions) || actions.length === 0) return '';\r\n const buttons = actions.map((a, i) => {\r\n const bg = a.style?.background || a.color || '#6366f1';\r\n const cls = `met-action-btn-${i}`;\r\n return ``;\r\n }).join('');\r\n return _btnRow(buttons);\r\n};\r\n\r\n/**\r\n * 主对象\r\n */\r\nconst meToast = {\r\n _toasts: new Map(),\r\n _config: { ...DEFAULTS },\r\n version: '2.0.0',\r\n \r\n configure(opts) {\r\n if (!opts || typeof opts !== 'object') return this;\r\n this._config = { ...this._config, ...opts };\r\n \r\n if (opts.theme) {\r\n applyTheme(opts.theme);\r\n }\r\n \r\n if (opts.locale) {\r\n setCurrentLocale(opts.locale);\r\n }\r\n \r\n return this;\r\n },\r\n \r\n _emit(opts) {\r\n const merged = { ...this._config, ...opts };\r\n if (merged.content && !merged.message) merged.message = merged.content;\r\n \r\n const t = new Toast(merged);\r\n t.create();\r\n this._toasts.set(t.id, t);\r\n \r\n return t;\r\n },\r\n \r\n _remove(id) { \r\n this._toasts.delete(id); \r\n },\r\n \r\n find(id) { \r\n if (!id) return undefined;\r\n return this._toasts.get(id); \r\n },\r\n \r\n /**\r\n * 显示默认Toast\r\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\r\n * @param {Object} [opts] - 选项对象(当第一个参数是字符串时)\r\n */\r\n show(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'default');\r\n return this._emit(normalized);\r\n },\r\n \r\n /**\r\n * 显示成功Toast\r\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\r\n * @param {Object} [opts] - 选项对象\r\n */\r\n success(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'success');\r\n return this._emit(normalized);\r\n },\r\n \r\n /**\r\n * 显示错误Toast\r\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\r\n * @param {Object} [opts] - 选项对象\r\n */\r\n error(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'error');\r\n return this._emit(normalized);\r\n },\r\n \r\n /**\r\n * 显示警告Toast\r\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\r\n * @param {Object} [opts] - 选项对象\r\n */\r\n warning(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'warning');\r\n return this._emit(normalized);\r\n },\r\n \r\n /**\r\n * 显示信息Toast\r\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\r\n * @param {Object} [opts] - 选项对象\r\n */\r\n info(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'info');\r\n return this._emit(normalized);\r\n },\r\n \r\n /**\r\n * 显示加载Toast\r\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\r\n * @param {Object} [opts] - 选项对象\r\n */\r\n loading(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'loading');\r\n normalized.duration = 0;\r\n normalized.closeButton = false;\r\n normalized.showProgress = false;\r\n \r\n const t = this._emit(normalized);\r\n \r\n return {\r\n id: t.id,\r\n success: (msg, o = {}) => this._resolve(t, 'success', msg, o),\r\n error: (msg, o = {}) => this._resolve(t, 'error', msg, o),\r\n info: (msg, o = {}) => this._resolve(t, 'info', msg, o),\r\n warning: (msg, o = {}) => this._resolve(t, 'warning', msg, o),\r\n update: (p) => { t.update(p); return this; },\r\n dismiss: () => t.close(),\r\n };\r\n },\r\n \r\n promise(promise, opts = {}) {\r\n if (!promise || typeof promise.then !== 'function') {\r\n console.error('MeToast.promise: first argument must be a Promise');\r\n return Promise.reject(new Error('Invalid promise'));\r\n }\r\n \r\n const loadingMsg = opts.loading || i18nT('loading');\r\n const successMsg = opts.success || i18nT('success');\r\n const errorMsg = opts.error || i18nT('error');\r\n \r\n const ctrl = this.loading(loadingMsg);\r\n \r\n return Promise.resolve(promise)\r\n .then((data) => { \r\n ctrl.success(successMsg); \r\n return data; \r\n })\r\n .catch((err) => { \r\n ctrl.error(errorMsg); \r\n throw err; \r\n });\r\n },\r\n \r\n _resolve(loadingToast, type, message, opts) {\r\n const id = loadingToast.id;\r\n const old = this._toasts.get(id);\r\n if (!old) return null;\r\n \r\n const position = old.config.position;\r\n old.close();\r\n \r\n return this._emit({ ...opts, type, message, position });\r\n },\r\n \r\n /**\r\n * 确认对话框\r\n * @param {string} message - 消息内容\r\n * @param {Object} [opts] - 选项\r\n * @returns {Promise}\r\n */\r\n confirm(message, opts = {}) {\r\n if (typeof message !== 'string') {\r\n console.error('MeToast.confirm: message must be a string');\r\n return Promise.resolve(false);\r\n }\r\n \r\n return new Promise((resolve) => {\r\n let resolved = false;\r\n const safeResolve = (val) => { if (!resolved) { resolved = true; clearTimeout(safetyTimeout); resolve(val); } };\r\n const safetyTimeout = setTimeout(() => safeResolve(false), 10000);\r\n \r\n const t = this._emit({\r\n ...opts,\r\n type: opts.type || 'warning',\r\n message,\r\n duration: 0,\r\n closeButton: false,\r\n closeOnClick: false,\r\n draggable: false,\r\n html: _confirmHTML(opts),\r\n });\r\n \r\n setTimeout(() => {\r\n const confirmBtn = t.el?.querySelector('.met-confirm-btn');\r\n const cancelBtn = t.el?.querySelector('.met-cancel-btn');\r\n \r\n if (confirmBtn) {\r\n confirmBtn.addEventListener('click', () => {\r\n t.close();\r\n safeResolve(true);\r\n });\r\n }\r\n \r\n if (cancelBtn) {\r\n cancelBtn.addEventListener('click', () => {\r\n t.close();\r\n safeResolve(false);\r\n });\r\n }\r\n }, 0);\r\n });\r\n },\r\n \r\n /**\r\n * 输入对话框\r\n * @param {string} message - 消息内容\r\n * @param {Object} [opts] - 选项\r\n * @returns {Promise}\r\n */\r\n prompt(message, opts = {}) {\r\n if (typeof message !== 'string') {\r\n console.error('MeToast.prompt: message must be a string');\r\n return Promise.resolve(null);\r\n }\r\n \r\n return new Promise((resolve) => {\r\n let resolved = false;\r\n const safeResolve = (val) => { if (!resolved) { resolved = true; clearTimeout(safetyTimeout); resolve(val); } };\r\n const safetyTimeout = setTimeout(() => safeResolve(null), 10000);\r\n \r\n const t = this._emit({\r\n ...opts,\r\n type: opts.type || 'info',\r\n message,\r\n duration: 0,\r\n closeButton: false,\r\n closeOnClick: false,\r\n draggable: false,\r\n html: _promptHTML(opts),\r\n });\r\n \r\n setTimeout(() => {\r\n const input = t.el?.querySelector('.met-input');\r\n const submitBtn = t.el?.querySelector('.met-submit-btn');\r\n const cancelBtn = t.el?.querySelector('.met-cancel-btn');\r\n \r\n if (input) {\r\n input.focus();\r\n \r\n input.addEventListener('keydown', (e) => {\r\n if (e.key === 'Enter') {\r\n t.close();\r\n safeResolve(input.value);\r\n }\r\n });\r\n }\r\n \r\n if (submitBtn) {\r\n submitBtn.addEventListener('click', () => {\r\n t.close();\r\n safeResolve(input?.value || null);\r\n });\r\n }\r\n \r\n if (cancelBtn) {\r\n cancelBtn.addEventListener('click', () => {\r\n t.close();\r\n safeResolve(null);\r\n });\r\n }\r\n }, 0);\r\n });\r\n },\r\n \r\n /**\r\n * 进度Toast\r\n * @param {string|Object} messageOrOpts - 消息或选项\r\n * @param {Object} [opts] - 选项\r\n * @returns {Object} 控制对象\r\n */\r\n progress(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'info');\r\n normalized.duration = 0;\r\n normalized.closeButton = false;\r\n normalized.showProgress = false;\r\n \r\n const t = this._emit({\r\n ...normalized,\r\n html: _progressHTML(opts),\r\n });\r\n \r\n return {\r\n id: t.id,\r\n \r\n setProgress(percent) {\r\n const fill = t.el?.querySelector('.met-progress-fill');\r\n const text = t.el?.querySelector('.met-progress-text');\r\n \r\n if (fill) {\r\n fill.style.width = `${Math.min(100, Math.max(0, percent))}%`;\r\n }\r\n \r\n if (text) {\r\n text.textContent = `${Math.round(percent)}%`;\r\n }\r\n },\r\n \r\n complete(message) {\r\n this.setProgress(100);\r\n setTimeout(() => {\r\n t.update({\r\n type: 'success',\r\n message: message || i18nT('success'),\r\n html: '',\r\n });\r\n setTimeout(() => t.close(), 1000);\r\n }, 300);\r\n },\r\n \r\n error(message) {\r\n t.update({\r\n type: 'error',\r\n message: message || i18nT('error'),\r\n html: '',\r\n });\r\n setTimeout(() => t.close(), 2000);\r\n },\r\n \r\n dismiss() {\r\n t.close();\r\n },\r\n };\r\n },\r\n \r\n /**\r\n * 倒计时Toast\r\n * @param {string} message - 消息内容\r\n * @param {number} seconds - 秒数\r\n * @param {Object} [opts] - 选项\r\n * @returns {Object} 控制对象\r\n */\r\n countdown(message, seconds = 10, opts = {}) {\r\n if (typeof message !== 'string') {\r\n console.error('MeToast.countdown: message must be a string');\r\n return { cancel: () => {}, pause: () => {}, resume: () => {} };\r\n }\r\n \r\n let remaining = Math.max(1, parseInt(seconds) || 10);\r\n let timer = null;\r\n \r\n const t = this._emit({\r\n ...opts,\r\n type: opts.type || 'warning',\r\n message: message.replace(/\\{seconds\\}/g, remaining),\r\n duration: 0,\r\n closeButton: true,\r\n showProgress: false,\r\n });\r\n \r\n const tick = () => {\r\n remaining--;\r\n \r\n if (remaining <= 0) {\r\n clearInterval(timer);\r\n t.close();\r\n \r\n if (typeof opts.onComplete === 'function') {\r\n try {\r\n opts.onComplete();\r\n } catch (e) {\r\n console.error('countdown onComplete error:', e);\r\n }\r\n }\r\n return;\r\n }\r\n \r\n t.update({\r\n message: message.replace(/\\{seconds\\}/g, remaining),\r\n });\r\n };\r\n \r\n timer = setInterval(tick, 1000);\r\n \r\n return {\r\n id: t.id,\r\n \r\n cancel() {\r\n clearInterval(timer);\r\n t.close();\r\n },\r\n \r\n pause() {\r\n clearInterval(timer);\r\n },\r\n \r\n resume() {\r\n clearInterval(timer);\r\n timer = setInterval(tick, 1000);\r\n },\r\n };\r\n },\r\n \r\n /**\r\n * Action Toast — 带操作按钮的通知\r\n * @param {string|Object} messageOrOpts - 消息\r\n * @param {Array} actions - 操作按钮 [{ text, onClick, color }]\r\n * @param {Object} [opts] - 选项\r\n * @returns {Object} toast实例 + dismiss\r\n */\r\n action(messageOrOpts, actions = [], opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'info');\r\n normalized.duration = opts.duration ?? 0;\r\n normalized.closeButton = opts.closeButton ?? true;\r\n \r\n const t = this._emit({\r\n ...normalized,\r\n html: (normalized.html || '') + _actionHTML(actions),\r\n });\r\n \r\n if (Array.isArray(actions)) {\r\n setTimeout(() => {\r\n actions.forEach((a, i) => {\r\n const btn = t.el?.querySelector(`.met-action-btn-${i}`);\r\n if (btn && typeof a.onClick === 'function') {\r\n btn.addEventListener('click', () => {\r\n try { a.onClick(t); } catch (e) { console.error('Action onClick error:', e); }\r\n if (a.close !== false) t.close();\r\n });\r\n }\r\n });\r\n }, 0);\r\n }\r\n \r\n return { id: t.id, toast: t, dismiss: () => t.close() };\r\n },\r\n\r\n /**\r\n * 队列Toast\r\n * @param {Array} messages - 消息数组\r\n * @param {Object} [opts] - 选项\r\n * @returns {Promise}\r\n */\r\n queue(messages, opts = {}) {\r\n if (!Array.isArray(messages)) {\r\n console.error('MeToast.queue: messages must be an array');\r\n return { then: (fn) => Promise.resolve().then(fn), cancel: () => {} };\r\n }\r\n \r\n let cancelled = false;\r\n const promise = new Promise((resolve) => {\r\n let index = 0;\r\n const delay = opts.delay || 1000;\r\n const userOnClose = opts.onClose;\r\n \r\n const showNext = () => {\r\n if (cancelled || index >= messages.length) {\r\n resolve();\r\n return;\r\n }\r\n \r\n const message = messages[index];\r\n index++;\r\n \r\n const msg = typeof message === 'string' ? message : (message?.message || '');\r\n const msgObj = (typeof message === 'object' && message !== null) ? message : {};\r\n const msgOnClose = msgObj.onClose;\r\n \r\n this._emit({\r\n ...opts,\r\n ...msgObj,\r\n message: msg,\r\n duration: msgObj.duration || opts.duration || 3000,\r\n onClose: (toast) => {\r\n if (typeof msgOnClose === 'function') {\r\n try { msgOnClose(toast); } catch (_) {}\r\n }\r\n if (typeof userOnClose === 'function') {\r\n try { userOnClose(toast); } catch (_) {}\r\n }\r\n setTimeout(showNext, delay);\r\n },\r\n });\r\n };\r\n \r\n showNext();\r\n });\r\n return {\r\n then: (fn, rj) => promise.then(fn, rj),\r\n catch: (rj) => promise.catch(rj),\r\n cancel: () => { cancelled = true; },\r\n };\r\n },\r\n \r\n /**\r\n * 堆叠Toast\r\n * @param {Array} messages - 消息数组\r\n * @param {Object} [opts] - 选项\r\n */\r\n stack(messages, opts = {}) {\r\n if (!Array.isArray(messages)) {\r\n console.error('MeToast.stack: messages must be an array');\r\n return;\r\n }\r\n \r\n messages.forEach((message, index) => {\r\n setTimeout(() => {\r\n const msg = typeof message === 'string' ? message : (message?.message || '');\r\n \r\n this._emit({\r\n ...opts,\r\n ...((typeof message === 'object' && message !== null) ? message : {}),\r\n message: msg,\r\n });\r\n }, index * (opts.stagger || 100));\r\n });\r\n },\r\n \r\n dismiss(id) {\r\n if (id) { \r\n const t = this._toasts.get(id); \r\n if (t) t.close(); \r\n return; \r\n }\r\n this._toasts.forEach(t => t.close());\r\n },\r\n \r\n clear(position) {\r\n this._toasts.forEach(t => {\r\n if (!position || t.config.position === position) t.close();\r\n });\r\n },\r\n \r\n destroy() {\r\n this.dismiss();\r\n \r\n if (typeof document !== 'undefined') {\r\n const containers = document.querySelectorAll('.met-container');\r\n containers.forEach(c => c.parentNode && c.parentNode.removeChild(c));\r\n \r\n const style = document.getElementById('metona-toast-styles');\r\n if (style) style.parentNode.removeChild(style);\r\n }\r\n \r\n this._toasts.clear();\r\n _containerCache.clear();\r\n },\r\n \r\n getAll() {\r\n return new Map(this._toasts);\r\n },\r\n \r\n count() {\r\n return this._toasts.size;\r\n },\r\n \r\n /**\r\n * 创建Toast分组 — 返回一个自动添加 group 参数的子对象\r\n * @param {string} name - 分组名称\r\n * @returns {Object}\r\n */\r\n group(name) {\r\n const self = this;\r\n const methods = ['show','success','error','warning','info','loading','action'];\r\n const g = { _group: name };\r\n methods.forEach(m => {\r\n g[m] = (...args) => {\r\n const lastArg = args[args.length - 1];\r\n const isObj = typeof lastArg === 'object' && lastArg !== null && !Array.isArray(lastArg);\r\n // 单对象参数:直接合并group\r\n if (isObj && args.length === 1) {\r\n return self[m]({ ...lastArg, group: name });\r\n }\r\n // 末尾是配置对象:pop后合并\r\n if (isObj) {\r\n args.pop();\r\n return self[m](...args, { ...lastArg, group: name });\r\n }\r\n // 无配置对象\r\n return self[m](...args, { group: name });\r\n };\r\n });\r\n g.dismiss = () => self.dismissGroup(name);\r\n g.count = () => self._groupCount(name);\r\n return g;\r\n },\r\n \r\n /**\r\n * 按组关闭Toast\r\n * @param {string} name - 分组名称\r\n */\r\n dismissGroup(name) {\r\n this._toasts.forEach(t => { if (t.group === name) t.close(); });\r\n },\r\n \r\n _groupCount(name) {\r\n let c = 0;\r\n this._toasts.forEach(t => { if (t.group === name) c++; });\r\n return c;\r\n },\r\n};\r\n\r\nexport { meToast as default, meToast, Toast };\r\n","/**\r\n * MetonaToast Animations - 动画管理\r\n * @module animations\r\n * @version 2.0.0\r\n * @description 动画效果管理和自定义\r\n */\r\n\r\nimport { ANIMATIONS } from './constants.js';\r\n\r\n// 动画缓存\r\nconst animationCache = new Map();\r\n\r\n/**\r\n * 动画管理器类\r\n */\r\nclass AnimationManager {\r\n constructor() {\r\n this.animations = new Map();\r\n this.activeAnimations = new Map();\r\n this.animationId = 0;\r\n \r\n // 注册默认动画\r\n this._registerDefaults();\r\n }\r\n \r\n /**\r\n * 注册默认动画\r\n */\r\n _registerDefaults() {\r\n Object.entries(ANIMATIONS).forEach(([name, config]) => {\r\n this.register(name, config);\r\n });\r\n }\r\n \r\n /**\r\n * 注册动画\r\n * @param {string} name - 动画名称\r\n * @param {Object} config - 动画配置\r\n */\r\n register(name, config) {\r\n const animation = {\r\n name,\r\n enter: config.enter || {},\r\n leave: config.leave || {},\r\n duration: config.duration || 300,\r\n easing: config.easing || 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n delay: config.delay || 0,\r\n iterations: config.iterations || 1,\r\n direction: config.direction || 'normal',\r\n fillMode: config.fillMode || 'forwards',\r\n };\r\n \r\n this.animations.set(name, animation);\r\n animationCache.set(name, animation);\r\n }\r\n \r\n /**\r\n * 注销动画\r\n * @param {string} name - 动画名称\r\n */\r\n unregister(name) {\r\n this.animations.delete(name);\r\n animationCache.delete(name);\r\n }\r\n \r\n /**\r\n * 获取动画配置\r\n * @param {string} name - 动画名称\r\n * @returns {Object|null} 动画配置\r\n */\r\n get(name) {\r\n return this.animations.get(name) || ANIMATIONS[name] || null;\r\n }\r\n \r\n /**\r\n * 应用动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @param {string} animationName - 动画名称\r\n * @param {Object} options - 额外选项\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n apply(element, animationName, options = {}) {\r\n return new Promise((resolve, reject) => {\r\n const animation = this.get(animationName);\r\n if (!animation) {\r\n resolve();\r\n return;\r\n }\r\n \r\n const config = { ...animation, ...options };\r\n const animId = ++this.animationId;\r\n \r\n // 设置初始状态\r\n Object.assign(element.style, config.enter);\r\n \r\n // 强制重绘\r\n element.offsetHeight;\r\n \r\n // 创建动画\r\n const keyframes = [\r\n { ...config.enter },\r\n { ...config.leave },\r\n ];\r\n \r\n const animationOptions = {\r\n duration: config.duration,\r\n easing: config.easing,\r\n delay: config.delay,\r\n iterations: config.iterations,\r\n direction: config.direction,\r\n fill: config.fillMode,\r\n };\r\n \r\n // 应用动画\r\n const anim = element.animate(keyframes, animationOptions);\r\n \r\n // 存储活动动画\r\n this.activeAnimations.set(animId, {\r\n element,\r\n animation: anim,\r\n config,\r\n });\r\n \r\n // 动画完成处理\r\n anim.onfinish = () => {\r\n Object.assign(element.style, config.leave);\r\n this.activeAnimations.delete(animId);\r\n resolve();\r\n };\r\n \r\n // 动画取消处理 — reject 让调用者感知取消\r\n anim.oncancel = () => {\r\n this.activeAnimations.delete(animId);\r\n reject(new Error(`Animation \"${animationName}\" was cancelled`));\r\n };\r\n });\r\n }\r\n \r\n /**\r\n * 应用进入动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @param {string} animationName - 动画名称\r\n * @param {Object} options - 额外选项\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n enter(element, animationName, options = {}) {\r\n const animation = this.get(animationName);\r\n if (!animation) {\r\n return Promise.resolve();\r\n }\r\n \r\n return this.apply(element, animationName, {\r\n ...options,\r\n direction: 'normal',\r\n });\r\n }\r\n \r\n /**\r\n * 应用离开动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @param {string} animationName - 动画名称\r\n * @param {Object} options - 额外选项\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n leave(element, animationName, options = {}) {\r\n const animation = this.get(animationName);\r\n if (!animation) {\r\n return Promise.resolve();\r\n }\r\n \r\n return this.apply(element, animationName, {\r\n ...options,\r\n direction: 'reverse',\r\n });\r\n }\r\n \r\n /**\r\n * 取消所有动画\r\n */\r\n cancelAll() {\r\n this.activeAnimations.forEach(({ animation }) => {\r\n animation.cancel();\r\n });\r\n \r\n this.activeAnimations.clear();\r\n }\r\n \r\n /**\r\n * 取消元素动画\r\n * @param {HTMLElement} element - 目标元素\r\n */\r\n cancel(element) {\r\n this.activeAnimations.forEach(({ element: el, animation }, id) => {\r\n if (el === element) {\r\n animation.cancel();\r\n this.activeAnimations.delete(id);\r\n }\r\n });\r\n }\r\n \r\n /**\r\n * 暂停所有动画\r\n */\r\n pauseAll() {\r\n this.activeAnimations.forEach(({ animation }) => {\r\n animation.pause();\r\n });\r\n }\r\n \r\n /**\r\n * 恢复所有动画\r\n */\r\n resumeAll() {\r\n this.activeAnimations.forEach(({ animation }) => {\r\n animation.play();\r\n });\r\n }\r\n \r\n /**\r\n * 暂停元素动画\r\n * @param {HTMLElement} element - 目标元素\r\n */\r\n pause(element) {\r\n this.activeAnimations.forEach(({ element: el, animation }) => {\r\n if (el === element) {\r\n animation.pause();\r\n }\r\n });\r\n }\r\n \r\n /**\r\n * 恢复元素动画\r\n * @param {HTMLElement} element - 目标元素\r\n */\r\n resume(element) {\r\n this.activeAnimations.forEach(({ element: el, animation }) => {\r\n if (el === element) {\r\n animation.play();\r\n }\r\n });\r\n }\r\n \r\n /**\r\n * 获取活动动画数量\r\n * @returns {number} 动画数量\r\n */\r\n getActiveCount() {\r\n return this.activeAnimations.size;\r\n }\r\n \r\n /**\r\n * 获取所有活动动画\r\n * @returns {Map} 活动动画映射\r\n */\r\n getActiveAnimations() {\r\n return new Map(this.activeAnimations);\r\n }\r\n \r\n /**\r\n * 检查元素是否有活动动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @returns {boolean} 是否有活动动画\r\n */\r\n hasActiveAnimation(element) {\r\n for (const { element: el } of this.activeAnimations.values()) {\r\n if (el === element) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n \r\n /**\r\n * 获取动画配置\r\n * @returns {Object} 动画配置\r\n */\r\n getConfig() {\r\n return {\r\n animations: Array.from(this.animations.keys()),\r\n activeCount: this.getActiveCount(),\r\n };\r\n }\r\n \r\n /**\r\n * 重置动画管理器\r\n */\r\n reset() {\r\n this.cancelAll();\r\n this.animations.clear();\r\n this._registerDefaults();\r\n }\r\n \r\n /**\r\n * 销毁动画管理器\r\n */\r\n destroy() {\r\n this.cancelAll();\r\n this.animations.clear();\r\n this.activeAnimations.clear();\r\n }\r\n}\r\n\r\n/**\r\n * 预设动画效果\r\n */\r\nconst presetAnimations = {\r\n bounce: {\r\n enter: { transform: 'translateY(-80px)', opacity: 0 },\r\n leave: { transform: 'translateY(20px)', opacity: 1 },\r\n duration: 650,\r\n easing: 'ease',\r\n },\r\n slideUp: {\r\n enter: { transform: 'translateY(60px)', opacity: 0 },\r\n leave: { transform: 'translateY(0)', opacity: 1 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n slideDown: {\r\n enter: { transform: 'translateY(-60px)', opacity: 0 },\r\n leave: { transform: 'translateY(0)', opacity: 1 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n slideLeft: {\r\n enter: { transform: 'translateX(-90px)', opacity: 0 },\r\n leave: { transform: 'translateX(0)', opacity: 1 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n slideRight: {\r\n enter: { transform: 'translateX(90px)', opacity: 0 },\r\n leave: { transform: 'translateX(0)', opacity: 1 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n\r\n};\r\n\r\n// 注册预设动画\r\nObject.entries(presetAnimations).forEach(([name, config]) => {\r\n ANIMATIONS[name] = config;\r\n});\r\n\r\n/**\r\n * 创建动画管理器实例\r\n * @returns {AnimationManager} 动画管理器实例\r\n */\r\nexport const createAnimationManager = () => {\r\n return new AnimationManager();\r\n};\r\n\r\n// 创建默认实例\r\nconst defaultAnimationManager = createAnimationManager();\r\n\r\n/**\r\n * 动画工具函数\r\n */\r\nexport const animationUtils = {\r\n /**\r\n * 应用动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @param {string} animationName - 动画名称\r\n * @param {Object} options - 额外选项\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n apply(element, animationName, options = {}) {\r\n return defaultAnimationManager.apply(element, animationName, options);\r\n },\r\n \r\n /**\r\n * 应用进入动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @param {string} animationName - 动画名称\r\n * @param {Object} options - 额外选项\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n enter(element, animationName, options = {}) {\r\n return defaultAnimationManager.enter(element, animationName, options);\r\n },\r\n \r\n /**\r\n * 应用离开动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @param {string} animationName - 动画名称\r\n * @param {Object} options - 额外选项\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n leave(element, animationName, options = {}) {\r\n return defaultAnimationManager.leave(element, animationName, options);\r\n },\r\n \r\n /**\r\n * 取消所有动画\r\n */\r\n cancelAll() {\r\n defaultAnimationManager.cancelAll();\r\n },\r\n \r\n /**\r\n * 取消元素动画\r\n * @param {HTMLElement} element - 目标元素\r\n */\r\n cancel(element) {\r\n defaultAnimationManager.cancel(element);\r\n },\r\n \r\n /**\r\n * 暂停所有动画\r\n */\r\n pauseAll() {\r\n defaultAnimationManager.pauseAll();\r\n },\r\n \r\n /**\r\n * 恢复所有动画\r\n */\r\n resumeAll() {\r\n defaultAnimationManager.resumeAll();\r\n },\r\n \r\n /**\r\n * 暂停元素动画\r\n * @param {HTMLElement} element - 目标元素\r\n */\r\n pause(element) {\r\n defaultAnimationManager.pause(element);\r\n },\r\n \r\n /**\r\n * 恢复元素动画\r\n * @param {HTMLElement} element - 目标元素\r\n */\r\n resume(element) {\r\n defaultAnimationManager.resume(element);\r\n },\r\n \r\n /**\r\n * 获取活动动画数量\r\n * @returns {number} 动画数量\r\n */\r\n getActiveCount() {\r\n return defaultAnimationManager.getActiveCount();\r\n },\r\n \r\n /**\r\n * 检查元素是否有活动动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @returns {boolean} 是否有活动动画\r\n */\r\n hasActiveAnimation(element) {\r\n return defaultAnimationManager.hasActiveAnimation(element);\r\n },\r\n \r\n /**\r\n * 注册动画\r\n * @param {string} name - 动画名称\r\n * @param {Object} config - 动画配置\r\n */\r\n register(name, config) {\r\n defaultAnimationManager.register(name, config);\r\n },\r\n \r\n /**\r\n * 注销动画\r\n * @param {string} name - 动画名称\r\n */\r\n unregister(name) {\r\n defaultAnimationManager.unregister(name);\r\n },\r\n \r\n /**\r\n * 获取动画配置\r\n * @param {string} name - 动画名称\r\n * @returns {Object|null} 动画配置\r\n */\r\n get(name) {\r\n return defaultAnimationManager.get(name);\r\n },\r\n \r\n /**\r\n * 获取所有动画名称\r\n * @returns {Array} 动画名称数组\r\n */\r\n getAnimationNames() {\r\n return Array.from(defaultAnimationManager.animations.keys());\r\n },\r\n \r\n /**\r\n * 获取动画配置\r\n * @returns {Object} 动画配置\r\n */\r\n getConfig() {\r\n return defaultAnimationManager.getConfig();\r\n },\r\n \r\n /**\r\n * 重置动画管理器\r\n */\r\n reset() {\r\n defaultAnimationManager.reset();\r\n },\r\n \r\n /**\r\n * 销毁动画管理器\r\n */\r\n destroy() {\r\n defaultAnimationManager.destroy();\r\n },\r\n};\r\n\r\n/**\r\n * 动画预设\r\n */\r\nexport const animationPresets = presetAnimations;\r\n\r\n/**\r\n * 创建自定义动画\r\n * @param {Object} config - 动画配置\r\n * @returns {Object} 动画配置\r\n */\r\nexport const createAnimation = (config) => {\r\n return {\r\n enter: config.enter || {},\r\n leave: config.leave || {},\r\n duration: config.duration || 300,\r\n easing: config.easing || 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n delay: config.delay || 0,\r\n iterations: config.iterations || 1,\r\n direction: config.direction || 'normal',\r\n fillMode: config.fillMode || 'forwards',\r\n };\r\n};\r\n\r\n/**\r\n * 组合动画\r\n * @param {Array} animations - 动画数组\r\n * @returns {Object} 组合后的动画配置\r\n */\r\nexport const combineAnimations = (animations) => {\r\n const combined = {\r\n enter: {},\r\n leave: {},\r\n duration: 0,\r\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n delay: 0,\r\n iterations: 1,\r\n direction: 'normal',\r\n fillMode: 'forwards',\r\n };\r\n \r\n animations.forEach((anim) => {\r\n if (anim.enter) {\r\n Object.assign(combined.enter, anim.enter);\r\n }\r\n if (anim.leave) {\r\n Object.assign(combined.leave, anim.leave);\r\n }\r\n if (anim.duration) {\r\n combined.duration = Math.max(combined.duration, anim.duration);\r\n }\r\n if (anim.easing) {\r\n combined.easing = anim.easing;\r\n }\r\n if (anim.delay) {\r\n combined.delay = Math.max(combined.delay, anim.delay);\r\n }\r\n });\r\n \r\n return combined;\r\n};\r\n\r\n/**\r\n * 链式动画\r\n * @param {Array} animations - 动画数组\r\n * @returns {Promise} 动画完成Promise\r\n */\r\nexport const chainAnimations = async (element, animations) => {\r\n for (const anim of animations) {\r\n await defaultAnimationManager.apply(element, anim.name, anim.options);\r\n }\r\n};\r\n\r\n/**\r\n * 并行动画\r\n * @param {Array} animations - 动画数组\r\n * @returns {Promise} 动画完成Promise\r\n */\r\nexport const parallelAnimations = (element, animations) => {\r\n return Promise.all(\r\n animations.map((anim) => \r\n defaultAnimationManager.apply(element, anim.name, anim.options)\r\n )\r\n );\r\n};\r\n\r\n/**\r\n * 延迟动画\r\n * @param {number} delay - 延迟时间(毫秒)\r\n * @returns {Promise} Promise对象\r\n */\r\nexport const delayAnimation = (delay) => {\r\n return new Promise((resolve) => setTimeout(resolve, delay));\r\n};\r\n\r\n/**\r\n * 动画队列\r\n */\r\nexport class AnimationQueue {\r\n constructor() {\r\n this.queue = [];\r\n this.isProcessing = false;\r\n }\r\n \r\n /**\r\n * 添加动画到队列\r\n * @param {Function} animationFn - 动画函数\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n add(animationFn) {\r\n return new Promise((resolve, reject) => {\r\n this.queue.push({\r\n fn: animationFn,\r\n resolve,\r\n reject,\r\n });\r\n \r\n this._process();\r\n });\r\n }\r\n \r\n /**\r\n * 处理队列\r\n */\r\n async _process() {\r\n if (this.isProcessing || this.queue.length === 0) {\r\n return;\r\n }\r\n \r\n this.isProcessing = true;\r\n \r\n while (this.queue.length > 0) {\r\n const { fn, resolve, reject } = this.queue.shift();\r\n \r\n try {\r\n const result = await fn();\r\n resolve(result);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n }\r\n \r\n this.isProcessing = false;\r\n }\r\n \r\n /**\r\n * 清空队列\r\n */\r\n clear() {\r\n this.queue = [];\r\n }\r\n \r\n /**\r\n * 暂停队列\r\n */\r\n pause() {\r\n this.isProcessing = true;\r\n }\r\n \r\n /**\r\n * 恢复队列\r\n */\r\n resume() {\r\n this.isProcessing = false;\r\n this._process();\r\n }\r\n \r\n /**\r\n * 获取队列长度\r\n * @returns {number} 队列长度\r\n */\r\n get length() {\r\n return this.queue.length;\r\n }\r\n \r\n /**\r\n * 检查是否正在处理\r\n * @returns {boolean} 是否正在处理\r\n */\r\n get processing() {\r\n return this.isProcessing;\r\n }\r\n}\r\n\r\n/**\r\n * 创建动画队列\r\n * @returns {AnimationQueue} 动画队列实例\r\n */\r\nexport const createAnimationQueue = () => {\r\n return new AnimationQueue();\r\n};\r\n\r\n/**\r\n * 动画性能监控\r\n */\r\nexport class AnimationPerformanceMonitor {\r\n constructor() {\r\n this.metrics = {\r\n totalAnimations: 0,\r\n activeAnimations: 0,\r\n averageDuration: 0,\r\n maxDuration: 0,\r\n minDuration: Infinity,\r\n };\r\n \r\n this.history = [];\r\n }\r\n \r\n /**\r\n * 记录动画开始\r\n * @param {string} animationName - 动画名称\r\n */\r\n recordStart(animationName) {\r\n this.metrics.totalAnimations++;\r\n this.metrics.activeAnimations++;\r\n \r\n this.history.push({\r\n name: animationName,\r\n startTime: performance.now(),\r\n endTime: null,\r\n duration: null,\r\n });\r\n }\r\n \r\n /**\r\n * 记录动画结束\r\n * @param {string} animationName - 动画名称\r\n */\r\n recordEnd(animationName) {\r\n this.metrics.activeAnimations--;\r\n \r\n const entry = this.history.find(\r\n (h) => h.name === animationName && h.endTime === null\r\n );\r\n \r\n if (entry) {\r\n entry.endTime = performance.now();\r\n entry.duration = entry.endTime - entry.startTime;\r\n \r\n // 更新统计\r\n this.metrics.maxDuration = Math.max(this.metrics.maxDuration, entry.duration);\r\n this.metrics.minDuration = Math.min(this.metrics.minDuration, entry.duration);\r\n \r\n // 计算平均值\r\n const completed = this.history.filter((h) => h.duration !== null);\r\n this.metrics.averageDuration = \r\n completed.reduce((sum, h) => sum + h.duration, 0) / completed.length;\r\n }\r\n }\r\n \r\n /**\r\n * 获取指标\r\n * @returns {Object} 性能指标\r\n */\r\n getMetrics() {\r\n return { ...this.metrics };\r\n }\r\n \r\n /**\r\n * 获取历史记录\r\n * @returns {Array} 历史记录\r\n */\r\n getHistory() {\r\n return [...this.history];\r\n }\r\n \r\n /**\r\n * 重置监控\r\n */\r\n reset() {\r\n this.metrics = {\r\n totalAnimations: 0,\r\n activeAnimations: 0,\r\n averageDuration: 0,\r\n maxDuration: 0,\r\n minDuration: Infinity,\r\n };\r\n \r\n this.history = [];\r\n }\r\n}\r\n\r\n/**\r\n * 创建性能监控实例\r\n * @returns {AnimationPerformanceMonitor} 性能监控实例\r\n */\r\nexport const createPerformanceMonitor = () => {\r\n return new AnimationPerformanceMonitor();\r\n};\r\n\r\n/**\r\n * 动画缓存管理\r\n */\r\nexport const animationCacheManager = {\r\n /**\r\n * 缓存动画\r\n * @param {string} key - 缓存键\r\n * @param {Object} animation - 动画配置\r\n */\r\n set(key, animation) {\r\n animationCache.set(key, animation);\r\n },\r\n \r\n /**\r\n * 获取缓存动画\r\n * @param {string} key - 缓存键\r\n * @returns {Object|null} 动画配置\r\n */\r\n get(key) {\r\n return animationCache.get(key) || null;\r\n },\r\n \r\n /**\r\n * 检查缓存\r\n * @param {string} key - 缓存键\r\n * @returns {boolean} 是否存在\r\n */\r\n has(key) {\r\n return animationCache.has(key);\r\n },\r\n \r\n /**\r\n * 删除缓存\r\n * @param {string} key - 缓存键\r\n */\r\n delete(key) {\r\n animationCache.delete(key);\r\n },\r\n \r\n /**\r\n * 清空缓存\r\n */\r\n clear() {\r\n animationCache.clear();\r\n },\r\n \r\n /**\r\n * 获取缓存大小\r\n * @returns {number} 缓存大小\r\n */\r\n size() {\r\n return animationCache.size;\r\n },\r\n};\r\n\r\nexport { AnimationManager, defaultAnimationManager };\r\n","/**\r\n * MetonaToast Plugins - 插件系统\r\n * @module plugins\r\n * @version 2.0.0\r\n * @description 插件管理器 + 3 款预设插件 (keyboard / persistence / accessibility)\r\n */\r\n\r\nimport { t } from './i18n.js';\r\n\r\n/**\r\n * 插件管理器\r\n */\r\nclass PluginManager {\r\n constructor() {\r\n this.plugins = new Map();\r\n this.initialized = false;\r\n }\r\n\r\n register(name, plugin) {\r\n if (this.plugins.has(name)) {\r\n console.warn(`Plugin \"${name}\" is already registered`);\r\n return this;\r\n }\r\n if (!plugin || typeof plugin !== 'object' || (!plugin.name && !plugin.version)) {\r\n console.error(`Invalid plugin \"${name}\"`);\r\n return this;\r\n }\r\n\r\n this.plugins.set(name, { name, ...plugin, installed: false, enabled: true });\r\n\r\n if (plugin.install) {\r\n try { plugin.install(this); this.plugins.get(name).installed = true; }\r\n catch (e) { console.error(`Failed to install plugin \"${name}\":`, e); }\r\n }\r\n return this;\r\n }\r\n\r\n unregister(name) {\r\n const plugin = this.plugins.get(name);\r\n if (!plugin) return this;\r\n if (plugin.uninstall) {\r\n try { plugin.uninstall(this); } catch (e) { console.error(`Failed to uninstall plugin \"${name}\":`, e); }\r\n }\r\n this.plugins.delete(name);\r\n return this;\r\n }\r\n\r\n get(name) { return this.plugins.get(name) || null; }\r\n has(name) { return this.plugins.has(name); }\r\n getAll() { return Array.from(this.plugins.values()); }\r\n getNames() { return Array.from(this.plugins.keys()); }\r\n\r\n enable(name) {\r\n const p = this.plugins.get(name);\r\n if (p) p.enabled = true;\r\n return this;\r\n }\r\n disable(name) {\r\n const p = this.plugins.get(name);\r\n if (p) p.enabled = false;\r\n return this;\r\n }\r\n isEnabled(name) {\r\n const p = this.plugins.get(name);\r\n return p ? p.enabled : false;\r\n }\r\n\r\n destroy() {\r\n this.plugins.forEach((p, name) => {\r\n if (p.destroy) { try { p.destroy(this); } catch (e) {} }\r\n });\r\n this.plugins.clear();\r\n }\r\n}\r\n\r\n/**\r\n * 预设插件\r\n */\r\nconst presetPlugins = {\r\n\r\n /**\r\n * 键盘快捷键插件 — ESC 关闭所有 Toast\r\n */\r\n keyboard: {\r\n name: 'keyboard',\r\n version: '1.0.0',\r\n description: 'ESC 关闭所有 Toast',\r\n\r\n _handler: null,\r\n\r\n install() {\r\n if (typeof document === 'undefined') return;\r\n this._handler = (e) => {\r\n if (e.key === 'Escape') {\r\n // 点击所有关闭按钮\r\n document.querySelectorAll('.met-toast .met-close').forEach(btn => {\r\n try { btn.click(); } catch (_) {}\r\n });\r\n }\r\n };\r\n document.addEventListener('keydown', this._handler);\r\n },\r\n\r\n uninstall() {\r\n if (this._handler && typeof document !== 'undefined') {\r\n document.removeEventListener('keydown', this._handler);\r\n this._handler = null;\r\n }\r\n },\r\n },\r\n\r\n /**\r\n * 持久化插件 — 自动保存/加载配置到 localStorage\r\n */\r\n persistence: {\r\n name: 'persistence',\r\n version: '1.0.0',\r\n description: '自动持久化配置到 localStorage',\r\n storageKey: 'metona-toast-config',\r\n\r\n install() {\r\n // 加载已保存的配置\r\n if (typeof localStorage !== 'undefined') {\r\n try {\r\n const saved = localStorage.getItem(this.storageKey);\r\n return saved ? JSON.parse(saved) : null;\r\n } catch (_) { return null; }\r\n }\r\n return null;\r\n },\r\n\r\n save(config) {\r\n if (typeof localStorage !== 'undefined') {\r\n try { localStorage.setItem(this.storageKey, JSON.stringify(config)); } catch (_) {}\r\n }\r\n },\r\n\r\n uninstall() {\r\n if (typeof localStorage !== 'undefined') {\r\n try { localStorage.removeItem(this.storageKey); } catch (_) {}\r\n }\r\n },\r\n },\r\n\r\n /**\r\n * 无障碍插件 — 屏幕阅读器公告\r\n */\r\n accessibility: {\r\n name: 'accessibility',\r\n version: '1.0.0',\r\n description: '通过屏幕阅读器朗读 Toast 内容',\r\n\r\n announce(toast) {\r\n if (typeof document === 'undefined') return;\r\n const el = document.createElement('div');\r\n el.setAttribute('aria-live', 'assertive');\r\n el.setAttribute('aria-atomic', 'true');\r\n el.style.cssText = 'position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;';\r\n const typeName = t(toast.type) || toast.type;\r\n el.textContent = `${typeName}: ${toast.title || ''} ${toast.message || ''}`;\r\n document.body.appendChild(el);\r\n setTimeout(() => { if (el.parentNode) el.parentNode.removeChild(el); }, 3000);\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * 插件工具\r\n */\r\nconst pluginUtils = {\r\n createManager() { return new PluginManager(); },\r\n register(name, plugin) { return defaultPluginManager.register(name, plugin); },\r\n unregister(name) { return defaultPluginManager.unregister(name); },\r\n get(name) { return defaultPluginManager.get(name); },\r\n has(name) { return defaultPluginManager.has(name); },\r\n getAll() { return defaultPluginManager.getAll(); },\r\n getNames() { return defaultPluginManager.getNames(); },\r\n enable(name) { return defaultPluginManager.enable(name); },\r\n disable(name) { return defaultPluginManager.disable(name); },\r\n isEnabled(name) { return defaultPluginManager.isEnabled(name); },\r\n getPreset(name) { return presetPlugins[name] || null; },\r\n getAllPresets() { return { ...presetPlugins }; },\r\n\r\n createPlugin(config) {\r\n return {\r\n name: config.name || 'custom',\r\n version: config.version || '1.0.0',\r\n description: config.description || '',\r\n hooks: config.hooks || {},\r\n install: config.install || null,\r\n uninstall: config.uninstall || null,\r\n ...config,\r\n };\r\n },\r\n\r\n validatePlugin(plugin) {\r\n const errors = [];\r\n if (!plugin || typeof plugin !== 'object') errors.push('Plugin must be an object');\r\n if (!plugin.name && !plugin.version) errors.push('Plugin must have a name or version');\r\n return { valid: errors.length === 0, errors };\r\n },\r\n};\r\n\r\nconst defaultPluginManager = new PluginManager();\r\n\r\nexport { presetPlugins, pluginUtils, defaultPluginManager, PluginManager };\r\n","/**\r\n * MetonaToast - 轻量级Toast通知库\r\n * @module metona-toast\r\n * @version 2.0.0\r\n * @author thzxx\r\n * @description 轻量、零依赖、精致美观的Toast通知库。单文件,开箱即用。\r\n * @license MIT\r\n */\r\n\r\nimport { meToast, Toast } from './core.js';\r\nimport { animationUtils } from './animations.js';\r\nimport { themeUtils } from './themes.js';\r\nimport { i18nUtils } from './i18n.js';\r\nimport { pluginUtils, presetPlugins } from './plugins.js';\r\nimport { DEFAULTS } from './constants.js';\r\n\r\n// 版本信息\r\nconst VERSION = '2.0.0';\r\n\r\n/**\r\n * 主对象增强\r\n */\r\nconst enhancedMeToast = {\r\n ...meToast,\r\n \r\n version: VERSION,\r\n \r\n animations: animationUtils,\r\n themes: themeUtils,\r\n i18n: i18nUtils,\r\n plugins: pluginUtils,\r\n presetPlugins,\r\n \r\n /**\r\n * 安装插件,并连接必要的生命周期钩子\r\n */\r\n use(plugin, options = {}) {\r\n if (typeof plugin === 'string') {\r\n const preset = presetPlugins[plugin];\r\n if (!preset) {\r\n console.warn(`Preset plugin \"${plugin}\" not found`);\r\n return this;\r\n }\r\n this.plugins.register(plugin, { ...preset, ...options });\r\n\r\n // 连接插件钩子\r\n if (plugin === 'accessibility') {\r\n Toast.on('afterShow', (toast) => preset.announce(toast));\r\n }\r\n if (plugin === 'persistence') {\r\n const saved = preset.install();\r\n if (saved) this.configure(saved);\r\n Toast.on('afterClose', () => { preset.save(this.getConfig()); });\r\n }\r\n } else if (plugin && typeof plugin === 'object') {\r\n const name = plugin.name || 'custom';\r\n this.plugins.register(name, { ...plugin, ...options });\r\n }\r\n\r\n return this;\r\n },\r\n \r\n /**\r\n * 初始化\r\n */\r\n init(options = {}) {\r\n if (options.config) {\r\n this.configure(options.config);\r\n }\r\n \r\n if (options.theme) {\r\n this.themes.switchTheme(options.theme);\r\n }\r\n \r\n if (options.locale) {\r\n this.i18n.switchLocale(options.locale);\r\n }\r\n \r\n if (options.plugins && Array.isArray(options.plugins)) {\r\n options.plugins.forEach((plugin) => {\r\n this.use(plugin);\r\n });\r\n }\r\n \r\n return this;\r\n },\r\n \r\n /**\r\n * 销毁\r\n */\r\n destroy() {\r\n this.dismiss();\r\n \r\n if (this.plugins && typeof this.plugins.destroy === 'function') {\r\n this.plugins.destroy();\r\n }\r\n \r\n if (this.themes) {\r\n if (typeof this.themes.clearThemeListeners === 'function') {\r\n this.themes.clearThemeListeners();\r\n }\r\n if (typeof this.themes.unwatchSystemTheme === 'function') {\r\n this.themes.unwatchSystemTheme();\r\n }\r\n }\r\n \r\n if (this.i18n && typeof this.i18n.clearLocaleListeners === 'function') {\r\n this.i18n.clearLocaleListeners();\r\n }\r\n \r\n if (this.animations && typeof this.animations.cancelAll === 'function') {\r\n this.animations.cancelAll();\r\n }\r\n \r\n if (typeof document !== 'undefined') {\r\n const containers = document.querySelectorAll('.met-container');\r\n containers.forEach((c) => c.parentNode && c.parentNode.removeChild(c));\r\n \r\n const style = document.getElementById('metona-toast-styles');\r\n if (style) style.parentNode.removeChild(style);\r\n }\r\n \r\n this._toasts.clear();\r\n },\r\n \r\n /**\r\n * 获取状态\r\n */\r\n getStatus() {\r\n return {\r\n version: VERSION,\r\n toasts: this._toasts.size,\r\n theme: this.themes?.getCurrentTheme?.() || 'auto',\r\n locale: this.i18n?.getCurrentLocale?.() || 'zh-CN',\r\n plugins: this.plugins?.getNames?.() || [],\r\n animations: this.animations?.getActiveCount?.() || 0,\r\n };\r\n },\r\n \r\n /**\r\n * 获取配置\r\n */\r\n getConfig() {\r\n return { ...this._config };\r\n },\r\n \r\n /**\r\n * 更新配置\r\n */\r\n updateConfig(config) {\r\n if (config && typeof config === 'object') {\r\n this._config = { ...this._config, ...config };\r\n }\r\n return this;\r\n },\r\n \r\n /**\r\n * 重置配置\r\n */\r\n resetConfig() {\r\n this._config = { ...DEFAULTS };\r\n return this;\r\n },\r\n \r\n /**\r\n * 获取Toast列表\r\n */\r\n getToasts() {\r\n return Array.from(this._toasts.values());\r\n },\r\n \r\n /**\r\n * 检查是否有Toast\r\n */\r\n hasToasts() {\r\n return this._toasts.size > 0;\r\n },\r\n \r\n /**\r\n * 获取Toast\r\n */\r\n getToast(id) {\r\n if (!id) return null;\r\n return this._toasts.get(id) || null;\r\n },\r\n \r\n /**\r\n * 关闭所有Toast\r\n */\r\n closeAll() {\r\n this._toasts.forEach((t) => t.close());\r\n },\r\n \r\n /**\r\n * 清除所有Toast\r\n */\r\n clearAll() {\r\n this._toasts.forEach((t) => t.close());\r\n },\r\n \r\n /**\r\n * 暂停所有Toast\r\n */\r\n pauseAll() {\r\n this._toasts.forEach((t) => t._pause());\r\n },\r\n \r\n /**\r\n * 恢复所有Toast\r\n */\r\n resumeAll() {\r\n this._toasts.forEach((t) => t._resume());\r\n },\r\n \r\n /**\r\n * 更新所有Toast\r\n */\r\n updateAll(partial) {\r\n if (partial && typeof partial === 'object') {\r\n this._toasts.forEach((t) => t.update(partial));\r\n }\r\n },\r\n \r\n /**\r\n * 查找Toast\r\n */\r\n findToasts(predicate) {\r\n if (typeof predicate !== 'function') return [];\r\n return Array.from(this._toasts.values()).filter(predicate);\r\n },\r\n \r\n /**\r\n * 按类型查找Toast\r\n */\r\n findByType(type) {\r\n return this.findToasts((t) => t.type === type);\r\n },\r\n \r\n /**\r\n * 按位置查找Toast\r\n */\r\n findByPosition(position) {\r\n return this.findToasts((t) => t.config.position === position);\r\n },\r\n \r\n};\r\n// 初始化主题和国际化\r\nif (typeof themeUtils.initTheme === 'function') {\r\n themeUtils.initTheme();\r\n}\r\nif (typeof i18nUtils.initI18n === 'function') {\r\n i18nUtils.initI18n();\r\n}\r\n\r\n// 浏览器环境全局注册\r\nif (typeof window !== 'undefined') {\r\n window.MeToast = enhancedMeToast;\r\n window.Met = enhancedMeToast;\r\n \r\n // Notification API — 页面不可见时自动发送系统通知\r\n enhancedMeToast._notify = (toast) => {\r\n if (typeof Notification === 'undefined') return;\r\n if (Notification.permission === 'denied') return;\r\n if (!document.hidden) return;\r\n if (Notification.permission === 'default') {\r\n Notification.requestPermission().then(p => { if (p === 'granted') sendNotification(toast); });\r\n return;\r\n }\r\n sendNotification(toast);\r\n };\r\n const sendNotification = (toast) => {\r\n try {\r\n new Notification(toast.title || toast.type, { body: toast.message });\r\n } catch (_) {}\r\n };\r\n Toast.on('afterShow', (toast) => {\r\n if (toast.config.notifyWhenHidden) enhancedMeToast._notify(toast);\r\n });\r\n}\r\n\r\n// 导出\r\nexport default enhancedMeToast;\r\nexport { enhancedMeToast as meToast, enhancedMeToast as Met, enhancedMeToast as MeToast, Toast, VERSION };\r\n"],"names":["i18nT","t"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,UAAU,GAAG,MAAM;AAChC,EAAE,OAAO,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzF,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK;AACjC,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACvC;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,IAAI,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;AACrC,OAAO,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;AAC7B,OAAO,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;AAC5B,OAAO,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;AAC5B,OAAO,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC9B,OAAO,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/B,GAAG;AACH;AACA,EAAE,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5C,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC,IAAI,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC/C,EAAE,OAAO,GAAG,CAAC,SAAS,CAAC;AACvB,CAAC,CAAC;AAcF;AACA;AACA;AACA;AACA;AACO,MAAM,WAAW,GAAG,MAAM;AACjC,EAAE,OAAO,OAAO,MAAM,KAAK,WAAW;AACtC,SAAS,MAAM,CAAC,UAAU;AAC1B,SAAS,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC;AACnE,CAAC;;ACzDD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,KAAK,GAAG;AACrB,EAAE,OAAO,EAAE,CAAC;AACZ;AACA,QAAQ,CAAC;AACT;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,OAAO,EAAE,CAAC;AACZ;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,OAAO,EAAE,CAAC;AACZ;AACA,QAAQ,CAAC;AACT;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA,QAAQ,CAAC;AACT;AACA,EAAE,CAAC,EAAE,CAAC;AACN;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,QAAQ,EAAE,CAAC;AACb;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA,QAAQ,CAAC;AACT;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,QAAQ,EAAE,CAAC;AACb;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,MAAM,EAAE,CAAC;AACX;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,QAAQ,EAAE,CAAC;AACb;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,MAAM,EAAE,CAAC;AACX;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,QAAQ,EAAE,CAAC;AACb;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,QAAQ,EAAE,CAAC;AACb;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,GAAG,EAAE,CAAC;AACR;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,OAAO,EAAE,CAAC;AACZ;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA,QAAQ,CAAC;AACT;AACA,EAAE,GAAG,EAAE,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA,QAAQ,CAAC;AACT;AACA,EAAE,GAAG,EAAE,CAAC;AACR;AACA,QAAQ,CAAC;AACT;AACA,EAAE,QAAQ,EAAE,CAAC;AACb;AACA,QAAQ,CAAC;AACT;AACA,EAAE,GAAG,EAAE,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,QAAQ,EAAE,CAAC;AACb;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,MAAM,EAAE,CAAC;AACX;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,QAAQ,EAAE,CAAC;AACb;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,GAAG,EAAE,CAAC;AACR;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,OAAO,EAAE,CAAC;AACZ;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,MAAM,EAAE,CAAC;AACX;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,MAAM,EAAE,CAAC;AACX;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,OAAO,EAAE,CAAC;AACZ;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,OAAO,EAAE,CAAC;AACZ;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,SAAS,EAAE,CAAC;AACd;AACA,QAAQ,CAAC;AACT;AACA,EAAE,MAAM,EAAE,CAAC;AACX;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,GAAG,EAAE,CAAC;AACR;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,MAAM,EAAE,CAAC;AACX;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,MAAM,EAAE,CAAC;AACX;AACA,QAAQ,CAAC;AACT;AACA,EAAE,SAAS,EAAE,CAAC;AACd;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,GAAG,EAAE,CAAC;AACR;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,MAAM,EAAE,CAAC;AACX;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,MAAM,EAAE,CAAC;AACX;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,MAAM,EAAE,CAAC;AACX;AACA,QAAQ,CAAC;AACT;AACA,EAAE,GAAG,EAAE,CAAC;AACR;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,QAAQ,EAAE,CAAC;AACb;AACA,QAAQ,CAAC;AACT;AACA,EAAE,GAAG,EAAE,CAAC;AACR;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,MAAM,EAAE,CAAC;AACX;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,SAAS,EAAE,CAAC;AACd;AACA;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,QAAQ,EAAE,CAAC;AACb;AACA,QAAQ,CAAC;AACT;AACA,EAAE,QAAQ,EAAE,CAAC;AACb;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,GAAG,EAAE,CAAC;AACR;AACA;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,QAAQ,EAAE,CAAC;AACb;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,SAAS,EAAE,CAAC;AACd;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,MAAM,EAAE,CAAC;AACX;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,OAAO,EAAE,CAAC;AACZ;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,OAAO,EAAE,CAAC;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,UAAU,EAAE,CAAC;AACf;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,WAAW,EAAE,CAAC;AAChB;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,WAAW,EAAE,CAAC;AAChB;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,OAAO,EAAE,CAAC;AACZ;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,WAAW,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,UAAU,EAAE,CAAC;AACf;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,UAAU,EAAE,CAAC;AACf;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,aAAa,EAAE,CAAC;AAClB;AACA;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,WAAW,EAAE,CAAC;AAChB;AACA;AACA,QAAQ,CAAC;AACT;AACA,EAAE,MAAM,EAAE,CAAC;AACX;AACA,QAAQ,CAAC;AACT;AACA,EAAE,MAAM,EAAE,CAAC;AACX;AACA,QAAQ,CAAC;AACT;AACA,EAAE,QAAQ,EAAE,CAAC;AACb;AACA,QAAQ,CAAC;AACT;AACA,EAAE,OAAO,EAAE,CAAC;AACZ;AACA,QAAQ,CAAC;AACT;AACA,EAAE,OAAO,EAAE,CAAC;AACZ;AACA,QAAQ,CAAC;AACT;AACA,EAAE,QAAQ,EAAE,CAAC;AACb;AACA,QAAQ,CAAC;AACT;AACA,EAAE,OAAO,EAAE,CAAC;AACZ;AACA,QAAQ,CAAC;AACT,CAAC;;AC1lBD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,OAAO,GAAG;AACvB,EAAE,OAAO,EAAE;AACX,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,OAAO,EAAE,MAAM;AACnB,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,aAAa,EAAE,IAAI;AACvB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,cAAc,EAAE,MAAM;AAC1B,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,QAAQ,EAAE,KAAK;AACnB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,QAAQ,EAAE,KAAK;AACnB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,QAAQ,EAAE,KAAK;AACnB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,YAAY,EAAE,KAAK;AACvB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,MAAM,EAAE,KAAK;AACjB,IAAI,MAAM,EAAE,KAAK;AACjB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,QAAQ,EAAE,KAAK;AACnB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,QAAQ,EAAE,KAAK;AACnB,IAAI,WAAW,EAAE,KAAK;AACtB,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,MAAM,EAAE,KAAK;AACjB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,QAAQ,EAAE,KAAK;AACnB,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,WAAW,EAAE,IAAI;AACrB,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,QAAQ,EAAE,KAAK;AACnB,IAAI,QAAQ,EAAE,KAAK;AACnB,IAAI,QAAQ,EAAE,KAAK;AACnB,IAAI,QAAQ,EAAE,KAAK;AACnB,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,WAAW,EAAE,KAAK;AACtB,IAAI,QAAQ,EAAE,KAAK;AACnB,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,aAAa,EAAE,KAAK;AACxB,IAAI,eAAe,EAAE,KAAK;AAC1B,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,YAAY,EAAE,KAAK;AACvB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,MAAM,EAAE,KAAK;AACjB,IAAI,MAAM,EAAE,KAAK;AACjB,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,QAAQ,EAAE,KAAK;AACnB,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,WAAW,EAAE,IAAI;AACrB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,WAAW,EAAE,MAAM;AACvB,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,IAAI,EAAE,GAAG;AACb,IAAI,MAAM,EAAE,GAAG;AACf,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,IAAI,EAAE,GAAG;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,OAAO,EAAE,MAAM;AACnB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,IAAI,EAAE,GAAG;AACb,IAAI,MAAM,EAAE,KAAK;AACjB,IAAI,QAAQ,EAAE,KAAK;AACnB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,MAAM,EAAE,KAAK;AACjB,IAAI,SAAS,EAAE,MAAM;AACrB,IAAI,UAAU,EAAE,MAAM;AACtB,IAAI,UAAU,EAAE,MAAM;AACtB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,MAAM,EAAE,KAAK;AACjB,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,IAAI,EAAE,GAAG;AACb,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,IAAI,EAAE,GAAG;AACb,IAAI,KAAK,EAAE,GAAG;AACd,IAAI,IAAI,EAAE,GAAG;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,MAAM,EAAE,GAAG;AACf,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,IAAI,EAAE,GAAG;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,KAAK,EAAE,GAAG;AACd,IAAI,IAAI,EAAE,GAAG;AACb,IAAI,KAAK,EAAE,GAAG;AACd,IAAI,KAAK,EAAE,GAAG;AACd,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,KAAK,EAAE,GAAG;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,IAAI,EAAE,GAAG;AACb,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,IAAI,EAAE,GAAG;AACb,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,IAAI,EAAE,GAAG;AACb,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,QAAQ,EAAE,MAAM;AACpB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,QAAQ,EAAE,MAAM;AACpB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,GAAG,EAAE,KAAK;AACd,GAAG;AACH;AACA,EAAE,OAAO,EAAE;AACX,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,aAAa,EAAE,eAAe;AAClC,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,cAAc,EAAE,iBAAiB;AACrC,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,OAAO,EAAE,UAAU;AACvB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,SAAS,EAAE,WAAW;AAC1B,IAAI,YAAY,EAAE,cAAc;AAChC,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,SAAS,EAAE,WAAW;AAC1B,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,WAAW,EAAE,aAAa;AAC9B,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,SAAS,EAAE,WAAW;AAC1B,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,SAAS,EAAE,WAAW;AAC1B,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,WAAW,EAAE,aAAa;AAC9B,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,SAAS,EAAE,WAAW;AAC1B,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,SAAS,EAAE,WAAW;AAC1B,IAAI,WAAW,EAAE,aAAa;AAC9B,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,aAAa,EAAE,eAAe;AAClC,IAAI,eAAe,EAAE,iBAAiB;AACtC,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,YAAY,EAAE,cAAc;AAChC,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,SAAS,EAAE,WAAW;AAC1B,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,SAAS,EAAE,WAAW;AAC1B,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,SAAS,EAAE,WAAW;AAC1B,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,YAAY,EAAE,cAAc;AAChC,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,YAAY,EAAE,cAAc;AAChC,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,SAAS,EAAE,WAAW;AAC1B,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,WAAW,EAAE,aAAa;AAC9B,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,SAAS,EAAE,WAAW;AAC1B,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,SAAS,EAAE,WAAW;AAC1B,IAAI,SAAS,EAAE,WAAW;AAC1B,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,WAAW,EAAE,cAAc;AAC/B,IAAI,YAAY,EAAE,cAAc;AAChC,IAAI,SAAS,EAAE,WAAW;AAC1B,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,SAAS,EAAE,WAAW;AAC1B,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,SAAS,EAAE,WAAW;AAC1B,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,UAAU,EAAE,YAAY;AAC5B,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,CAAC,EAAE,GAAG;AACV,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,GAAG,EAAE,KAAK;AACd,GAAG;AACH,CAAC;;AC/uBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;AACtC;AACA,EAAE,QAAQ,EAAE,WAAW;AACvB,EAAE,QAAQ,EAAE,IAAI;AAChB,EAAE,GAAG,EAAE,CAAC;AACR,EAAE,GAAG,EAAE,EAAE;AACT,EAAE,MAAM,EAAE,EAAE;AACZ;AACA;AACA,EAAE,YAAY,EAAE,IAAI;AACpB,EAAE,YAAY,EAAE,IAAI;AACpB,EAAE,SAAS,EAAE,IAAI;AACjB;AACA;AACA,EAAE,YAAY,EAAE,IAAI;AACpB,EAAE,iBAAiB,EAAE,YAAY;AACjC,EAAE,IAAI,EAAE,IAAI;AACZ,EAAE,WAAW,EAAE,IAAI;AACnB;AACA;AACA,EAAE,KAAK,EAAE,MAAM;AACf,EAAE,SAAS,EAAE,OAAO;AACpB;AACA;AACA,EAAE,MAAM,EAAE,IAAI;AACd,EAAE,KAAK,EAAE,GAAG;AACZ;AACA;AACA,EAAE,SAAS,EAAE,EAAE;AACf,EAAE,KAAK,EAAE,EAAE;AACX;AACA;AACA,EAAE,MAAM,EAAE,IAAI;AACd,EAAE,OAAO,EAAE,IAAI;AACf,EAAE,OAAO,EAAE,IAAI;AACf,EAAE,QAAQ,EAAE,IAAI;AAChB;AACA;AACA,EAAE,kBAAkB,EAAE,KAAK;AAC3B,EAAE,gBAAgB,EAAE,KAAK;AACzB;AACA;AACA,EAAE,MAAM,EAAE,OAAO;AACjB;AACA;AACA,EAAE,OAAO,EAAE,EAAE;AACb,CAAC,CAAC,CAAC;AAKH;AACA;AACA;AACA;AACO,MAAM,WAAW,GAAG;AAC3B,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC3D,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,wBAAwB,EAAE;AACxD,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC3D,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACxD,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC3D,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AAC5D,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACzD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,wBAAwB,EAAE;AACpD,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACzD,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC5D,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACxD,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACzD,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACxD,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACxD,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AAC7D,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACxD,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACxD,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AAC3D,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACxD,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,wBAAwB,EAAE;AACxD,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACxD,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,wBAAwB,EAAE;AACxD,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC5D,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC1D,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACzD,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACxD,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AAC7D,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACzD,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC5D,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACvD,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC3D,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACzD,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACxD,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACzD,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACvD,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACxD,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACvD,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,wBAAwB,EAAE;AAC3D,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AACxD,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC5D,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AAC3D,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC5D,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACxD,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,wBAAwB,EAAE;AACtD,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC3D,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC1D,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AACzD,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AACzD,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC1D,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AACzD,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC3D,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACxD,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,wBAAwB,EAAE;AACxD,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC3D,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC7D,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AAC3D,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,wBAAwB,EAAE;AACtD,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AAC3D,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACzD,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,wBAAwB,EAAE;AACxD,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACzD,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AACzD,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC1D,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AAC9D,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACxD,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AAC1D,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACvD,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AAC3D,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACxD,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC1D,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC1D,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACvD,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,wBAAwB,EAAE;AACvD,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC5D,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACvD,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACxD,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACzD,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,wBAAwB,EAAE;AACzD,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AAC9D,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AACzD,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC5D,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,wBAAwB,EAAE;AAC3D,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACxD,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,wBAAwB,EAAE;AACtD,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACzD,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC5D,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC7D,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC1D,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,wBAAwB,EAAE;AAC1D,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AACzD,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AAC5D,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AAC/D,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC/D,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC/D,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,wBAAwB,EAAE;AAC1D,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC/D,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC9D,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC9D,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AACjE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC/D,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AAC3D,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;AAC3D,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC5D,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC3D,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,wBAAwB,EAAE;AAC1D,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC5D,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE;AAC3D,CAAC,CAAC;AACF;AACA;AACA;AACA;AACO,MAAM,UAAU,GAAG;AAC1B,EAAE,KAAK,EAAE;AACT,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE;AACxD,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE;AACxD,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,MAAM,EAAE,sCAAsC;AAClD,GAAG;AACH,EAAE,IAAI,EAAE;AACR,IAAI,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE;AAC9C,IAAI,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE;AAC9C,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,MAAM,EAAE,MAAM;AAClB,GAAG;AACH,EAAE,KAAK,EAAE;AACT,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE;AACnD,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE;AACnD,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,MAAM,EAAE,mCAAmC;AAC/C,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,EAAE;AACzD,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE;AACxD,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,MAAM,EAAE,MAAM;AAClB,GAAG;AACH,EAAE,IAAI,EAAE;AACR,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,oCAAoC,EAAE,OAAO,EAAE,CAAC,EAAE;AAC1E,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,mCAAmC,EAAE,OAAO,EAAE,CAAC,EAAE;AACzE,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,MAAM,EAAE,sCAAsC;AAClD,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,2BAA2B,EAAE,OAAO,EAAE,CAAC,EAAE;AACjE,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE,OAAO,EAAE,CAAC,EAAE;AAChE,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,MAAM,EAAE,sCAAsC;AAClD,GAAG;AACH,EAAE,IAAI,EAAE;AACR,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE;AAClD,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,MAAM,EAAE,mCAAmC;AAC/C,GAAG;AACH,EAAE,OAAO,EAAE;AACX,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE;AACxD,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,EAAE;AACzD,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,MAAM,EAAE,sCAAsC;AAClD,GAAG;AACH,EAAE,SAAS,EAAE;AACb,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,EAAE;AACzD,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE;AACxD,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,MAAM,EAAE,sCAAsC;AAClD,GAAG;AACH,EAAE,SAAS,EAAE;AACb,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,EAAE;AACzD,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE;AACxD,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,MAAM,EAAE,sCAAsC;AAClD,GAAG;AACH,EAAE,UAAU,EAAE;AACd,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE;AACxD,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,EAAE;AACzD,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,MAAM,EAAE,sCAAsC;AAClD,GAAG;AACH,CAAC,CAAC;AACF;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG;AACtB,EAAE,KAAK,EAAE;AACT,IAAI,EAAE,EAAE,2BAA2B;AACnC,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,MAAM,EAAE,qBAAqB;AACjC,IAAI,MAAM,EAAE,4EAA4E;AACxF,IAAI,WAAW,EAAE,4EAA4E;AAC7F,IAAI,UAAU,EAAE,qBAAqB;AACrC,IAAI,YAAY,EAAE,qBAAqB;AACvC,GAAG;AACH,EAAE,IAAI,EAAE;AACR,IAAI,EAAE,EAAE,wBAAwB;AAChC,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,MAAM,EAAE,2BAA2B;AACvC,IAAI,MAAM,EAAE,0EAA0E;AACtF,IAAI,WAAW,EAAE,yEAAyE;AAC1F,IAAI,UAAU,EAAE,2BAA2B;AAC3C,IAAI,YAAY,EAAE,2BAA2B;AAC7C,GAAG;AACH,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,IAAI,EAAE;AACR,IAAI,EAAE,EAAE,2BAA2B;AACnC,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,MAAM,EAAE,yBAAyB;AACrC,IAAI,MAAM,EAAE,sFAAsF;AAClG,IAAI,WAAW,EAAE,sFAAsF;AACvG,IAAI,UAAU,EAAE,yBAAyB;AACzC,IAAI,YAAY,EAAE,yBAAyB;AAC3C,GAAG;AACH,CAAC;;ACvRD;AACA;AACA;AACA;AACA;AACA;AACA;AAKA,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK;AAC/B,EAAE,OAAO,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACO,MAAM,YAAY,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK;AACtD;AACA,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,OAAO;AAC9C;AACA;AACA,EAAE,IAAI,YAAY,IAAI,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE;AACtE,IAAI,O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"} \ No newline at end of file diff --git a/dist/metona-toast.esm.js.map b/dist/metona-toast.esm.js.map index c862ff7..4cb07f1 100644 --- a/dist/metona-toast.esm.js.map +++ b/dist/metona-toast.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"metona-toast.esm.js","sources":["../src/utils.js","../src/icons.js","../src/locales.js","../src/constants.js","../src/styles.js","../src/themes.js","../src/i18n.js","../src/core.js","../src/animations.js","../src/plugins.js","../src/index.js"],"sourcesContent":["/**\n * MetonaToast Utils - 工具函数\n * @module utils\n * @version 2.0.0\n * @description 通用工具函数集合\n */\n\n/**\n * 生成唯一ID\n * @returns {string} 唯一ID\n */\nexport const generateId = () => {\n return 'met-' + Date.now().toString(36) + '-' + Math.random().toString(36).slice(2, 8);\n};\n\n/**\n * HTML转义\n * @param {string} s - 输入字符串\n * @returns {string} 转义后的字符串\n */\nexport const escapeHTML = (s) => {\n if (typeof document === 'undefined') {\n // Node.js环境\n return String(s == null ? '' : s)\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n }\n \n const div = document.createElement('div');\n div.textContent = String(s == null ? '' : s);\n return div.innerHTML;\n};\n\n/**\n * 事件绑定\n * @param {HTMLElement} el - 元素\n * @param {string} evt - 事件名\n * @param {Function} handler - 事件处理函数\n * @param {Object} opts - 选项\n * @returns {Function} 清理函数\n */\nexport const on = (el, evt, handler, opts) => {\n el.addEventListener(evt, handler, opts);\n return () => el.removeEventListener(evt, handler, opts);\n};\n\n/**\n * 检测暗色模式偏好\n * @returns {boolean} 是否偏好暗色模式\n */\nexport const prefersDark = () => {\n return typeof window !== 'undefined' && \n window.matchMedia && \n window.matchMedia('(prefers-color-scheme: dark)').matches;\n};\n\n/**\n * 防抖函数\n * @param {Function} func - 要防抖的函数\n * @param {number} wait - 等待时间(毫秒)\n * @param {boolean} immediate - 是否立即执行\n * @returns {Function} 防抖后的函数\n */\nexport const debounce = (func, wait, immediate = false) => {\n let timeout;\n return function executedFunction(...args) {\n const context = this;\n const later = () => {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n};\n\n/**\n * 节流函数\n * @param {Function} func - 要节流的函数\n * @param {number} limit - 限制时间(毫秒)\n * @returns {Function} 节流后的函数\n */\nexport const throttle = (func, limit) => {\n let inThrottle;\n return function executedFunction(...args) {\n const context = this;\n if (!inThrottle) {\n func.apply(context, args);\n inThrottle = true;\n setTimeout(() => inThrottle = false, limit);\n }\n };\n};\n\n/**\n * 深度合并对象\n * @param {Object} target - 目标对象\n * @param {Object} source - 源对象\n * @returns {Object} 合并后的对象\n */\nexport const deepMerge = (target, source) => {\n const output = { ...target };\n \n Object.keys(source).forEach(key => {\n if (source[key] instanceof Object && key in target && target[key] instanceof Object) {\n output[key] = deepMerge(target[key], source[key]);\n } else {\n output[key] = source[key];\n }\n });\n \n return output;\n};\n\n/**\n * 检查是否为浏览器环境\n * @returns {boolean} 是否为浏览器环境\n */\nexport const isBrowser = () => {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n};\n\n/**\n * 安全获取嵌套对象属性\n * @param {Object} obj - 对象\n * @param {string} path - 属性路径\n * @param {*} defaultValue - 默认值\n * @returns {*} 属性值\n */\nexport const getNestedValue = (obj, path, defaultValue = undefined) => {\n const keys = path.split('.');\n let result = obj;\n \n for (const key of keys) {\n result = result?.[key];\n if (result === undefined) return defaultValue;\n }\n \n return result;\n};\n\n/**\n * 格式化文件大小\n * @param {number} bytes - 字节数\n * @param {number} decimals - 小数位数\n * @returns {string} 格式化后的字符串\n */\nexport const formatFileSize = (bytes, decimals = 2) => {\n if (bytes === 0) return '0 Bytes';\n \n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n \n const i = Math.floor(Math.log(bytes) / Math.log(k));\n \n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n};\n\n/**\n * 格式化日期\n * @param {Date|string|number} date - 日期\n * @param {string} format - 格式\n * @returns {string} 格式化后的日期字符串\n */\nexport const formatDate = (date, format = 'YYYY-MM-DD HH:mm:ss') => {\n const d = new Date(date);\n \n const year = d.getFullYear();\n const month = String(d.getMonth() + 1).padStart(2, '0');\n const day = String(d.getDate()).padStart(2, '0');\n const hours = String(d.getHours()).padStart(2, '0');\n const minutes = String(d.getMinutes()).padStart(2, '0');\n const seconds = String(d.getSeconds()).padStart(2, '0');\n \n return format\n .replace('YYYY', year)\n .replace('MM', month)\n .replace('DD', day)\n .replace('HH', hours)\n .replace('mm', minutes)\n .replace('ss', seconds);\n};\n\n/**\n * 生成随机数\n * @param {number} min - 最小值\n * @param {number} max - 最大值\n * @returns {number} 随机数\n */\nexport const random = (min, max) => {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\n\n/**\n * 检查元素是否在视口中\n * @param {HTMLElement} el - 元素\n * @returns {boolean} 是否在视口中\n */\nexport const isInViewport = (el) => {\n const rect = el.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n};\n\n/**\n * 平滑滚动到元素\n * @param {HTMLElement} el - 元素\n * @param {Object} options - 选项\n */\nexport const scrollToElement = (el, options = {}) => {\n const defaultOptions = {\n behavior: 'smooth',\n block: 'start',\n inline: 'nearest',\n };\n \n el.scrollIntoView({ ...defaultOptions, ...options });\n};\n\n/**\n * 复制文本到剪贴板\n * @param {string} text - 文本\n * @returns {Promise} 是否成功\n */\nexport const copyToClipboard = async (text) => {\n try {\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n return true;\n }\n \n // 降级方案\n const textarea = document.createElement('textarea');\n textarea.value = text;\n textarea.style.position = 'fixed';\n textarea.style.opacity = '0';\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n \n return true;\n } catch (err) {\n console.error('Failed to copy text: ', err);\n return false;\n }\n};\n\n/**\n * 检测设备类型\n * @returns {string} 设备类型\n */\nexport const getDeviceType = () => {\n const ua = navigator.userAgent;\n \n if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {\n return 'tablet';\n }\n \n if (/Mobile|Android|iP(hone|od)|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/.test(ua)) {\n return 'mobile';\n }\n \n return 'desktop';\n};\n\n/**\n * 检测浏览器\n * @returns {Object} 浏览器信息\n */\nexport const getBrowserInfo = () => {\n const ua = navigator.userAgent;\n let browser = 'unknown';\n let version = 'unknown';\n \n if (ua.includes('Firefox/')) {\n browser = 'Firefox';\n version = ua.split('Firefox/')[1];\n } else if (ua.includes('Edg/')) {\n browser = 'Edge';\n version = ua.split('Edg/')[1];\n } else if (ua.includes('Chrome/')) {\n browser = 'Chrome';\n version = ua.split('Chrome/')[1];\n } else if (ua.includes('Safari/')) {\n browser = 'Safari';\n version = ua.split('Version/')[1];\n }\n \n return { browser, version };\n};\n\n/**\n * 检测操作系统\n * @returns {string} 操作系统\n */\nexport const getOS = () => {\n const ua = navigator.userAgent;\n \n if (ua.includes('Win')) return 'Windows';\n if (ua.includes('Mac')) return 'MacOS';\n if (ua.includes('Linux')) return 'Linux';\n if (ua.includes('Android')) return 'Android';\n if (ua.includes('iOS') || ua.includes('iPhone') || ua.includes('iPad')) return 'iOS';\n \n return 'Unknown';\n};\n\n/**\n * 检测网络状态\n * @returns {Object} 网络信息\n */\nexport const getNetworkInfo = () => {\n if (!navigator.connection) {\n return { online: navigator.onLine, type: 'unknown', speed: 'unknown' };\n }\n \n const connection = navigator.connection;\n \n return {\n online: navigator.onLine,\n type: connection.effectiveType || 'unknown',\n speed: connection.downlink || 'unknown',\n rtt: connection.rtt || 'unknown',\n };\n};\n\n/**\n * 存储数据到localStorage\n * @param {string} key - 键\n * @param {*} value - 值\n * @param {number} expiry - 过期时间(毫秒)\n */\nexport const setStorage = (key, value, expiry = null) => {\n const item = {\n value,\n timestamp: Date.now(),\n expiry: expiry ? Date.now() + expiry : null,\n };\n \n localStorage.setItem(key, JSON.stringify(item));\n};\n\n/**\n * 从localStorage获取数据\n * @param {string} key - 键\n * @param {*} defaultValue - 默认值\n * @returns {*} 值\n */\nexport const getStorage = (key, defaultValue = null) => {\n const itemStr = localStorage.getItem(key);\n \n if (!itemStr) return defaultValue;\n \n try {\n const item = JSON.parse(itemStr);\n \n // 检查是否过期\n if (item.expiry && Date.now() > item.expiry) {\n localStorage.removeItem(key);\n return defaultValue;\n }\n \n return item.value;\n } catch (err) {\n console.error('Error parsing storage item:', err);\n return defaultValue;\n }\n};\n\n/**\n * 从localStorage删除数据\n * @param {string} key - 键\n */\nexport const removeStorage = (key) => {\n localStorage.removeItem(key);\n};\n\n/**\n * 清空localStorage\n */\nexport const clearStorage = () => {\n localStorage.clear();\n};\n\n/**\n * 生成UUID\n * @returns {string} UUID\n */\nexport const generateUUID = () => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\n/**\n * 检查是否支持某个CSS属性\n * @param {string} property - CSS属性\n * @returns {boolean} 是否支持\n */\nexport const supportsCSSProperty = (property) => {\n return typeof document !== 'undefined' && \n property in document.documentElement.style;\n};\n\n/**\n * 检查是否支持某个JavaScript API\n * @param {string} api - API名称\n * @returns {boolean} 是否支持\n */\nexport const supportsAPI = (api) => {\n return api in window || api in navigator;\n};\n\n/**\n * 获取URL参数\n * @param {string} name - 参数名\n * @returns {string|null} 参数值\n */\nexport const getURLParam = (name) => {\n const urlParams = new URLSearchParams(window.location.search);\n return urlParams.get(name);\n};\n\n/**\n * 设置URL参数\n * @param {string} name - 参数名\n * @param {string} value - 参数值\n */\nexport const setURLParam = (name, value) => {\n const url = new URL(window.location);\n url.searchParams.set(name, value);\n window.history.pushState({}, '', url);\n};\n\n/**\n * 删除URL参数\n * @param {string} name - 参数名\n */\nexport const removeURLParam = (name) => {\n const url = new URL(window.location);\n url.searchParams.delete(name);\n window.history.pushState({}, '', url);\n};\n\n/**\n * 格式化数字\n * @param {number} number - 数字\n * @param {number} decimals - 小数位数\n * @param {string} decimalSeparator - 小数分隔符\n * @param {string} thousandsSeparator - 千位分隔符\n * @returns {string} 格式化后的字符串\n */\nexport const formatNumber = (number, decimals = 0, decimalSeparator = '.', thousandsSeparator = ',') => {\n const fixed = number.toFixed(decimals);\n const [intPart, decPart] = fixed.split('.');\n \n const formattedInt = intPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator);\n \n return decimals > 0 ? `${formattedInt}${decimalSeparator}${decPart}` : formattedInt;\n};\n\n/**\n * 格式化货币\n * @param {number} amount - 金额\n * @param {string} currency - 货币代码\n * @param {string} locale - 地区\n * @returns {string} 格式化后的字符串\n */\nexport const formatCurrency = (amount, currency = 'USD', locale = 'en-US') => {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n }).format(amount);\n};\n\n/**\n * 格式化百分比\n * @param {number} value - 值\n * @param {number} decimals - 小数位数\n * @param {string} locale - 地区\n * @returns {string} 格式化后的字符串\n */\nexport const formatPercent = (value, decimals = 2, locale = 'en-US') => {\n return new Intl.NumberFormat(locale, {\n style: 'percent',\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value / 100);\n};\n\n/**\n * 检查是否为空值\n * @param {*} value - 值\n * @returns {boolean} 是否为空\n */\nexport const isEmpty = (value) => {\n if (value === null || value === undefined) return true;\n if (typeof value === 'string') return value.trim().length === 0;\n if (Array.isArray(value)) return value.length === 0;\n if (typeof value === 'object') return Object.keys(value).length === 0;\n return false;\n};\n\n/**\n * 深拷贝对象\n * @param {*} obj - 对象\n * @returns {*} 拷贝后的对象\n */\nexport const deepClone = (obj) => {\n if (obj === null || typeof obj !== 'object') return obj;\n if (obj instanceof Date) return new Date(obj.getTime());\n if (obj instanceof RegExp) return new RegExp(obj);\n if (obj instanceof Map) return new Map([...obj].map(([k, v]) => [k, deepClone(v)]));\n if (obj instanceof Set) return new Set([...obj].map(item => deepClone(item)));\n \n const cloned = Array.isArray(obj) ? [] : {};\n \n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n cloned[key] = deepClone(obj[key]);\n }\n }\n \n return cloned;\n};\n\n/**\n * 比较两个对象是否相等\n * @param {*} obj1 - 对象1\n * @param {*} obj2 - 对象2\n * @returns {boolean} 是否相等\n */\nexport const isEqual = (obj1, obj2) => {\n if (obj1 === obj2) return true;\n if (obj1 === null || obj2 === null) return false;\n if (typeof obj1 !== typeof obj2) return false;\n \n if (typeof obj1 !== 'object') return obj1 === obj2;\n \n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n \n if (keys1.length !== keys2.length) return false;\n \n for (const key of keys1) {\n if (!keys2.includes(key)) return false;\n if (!isEqual(obj1[key], obj2[key])) return false;\n }\n \n return true;\n};\n\n/**\n * 验证邮箱格式\n * @param {string} email - 邮箱\n * @returns {boolean} 是否有效\n */\nexport const isValidEmail = (email) => {\n const re = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return re.test(email);\n};\n\n/**\n * 验证URL格式\n * @param {string} url - URL\n * @returns {boolean} 是否有效\n */\nexport const isValidURL = (url) => {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n};\n\n/**\n * 验证手机号格式\n * @param {string} phone - 手机号\n * @returns {boolean} 是否有效\n */\nexport const isValidPhone = (phone) => {\n const re = /^1[3-9]\\d{9}$/;\n return re.test(phone);\n};\n\n/**\n * 验证身份证号格式\n * @param {string} idCard - 身份证号\n * @returns {boolean} 是否有效\n */\nexport const isValidIDCard = (idCard) => {\n const re = /^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$/;\n return re.test(idCard);\n};\n\n/**\n * 生成随机颜色\n * @returns {string} 颜色值\n */\nexport const randomColor = () => {\n return '#' + Math.floor(Math.random() * 16777215).toString(16).padStart(6, '0');\n};\n\n/**\n * 颜色转RGBA\n * @param {string} color - 颜色值\n * @param {number} alpha - 透明度\n * @returns {string} RGBA颜色值\n */\nexport const colorToRGBA = (color, alpha = 1) => {\n const hex = color.replace('#', '');\n const r = parseInt(hex.substring(0, 2), 16);\n const g = parseInt(hex.substring(2, 4), 16);\n const b = parseInt(hex.substring(4, 6), 16);\n \n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n};\n\n/**\n * 获取颜色亮度\n * @param {string} color - 颜色值\n * @returns {number} 亮度值(0-255)\n */\nexport const getColorBrightness = (color) => {\n const hex = color.replace('#', '');\n const r = parseInt(hex.substring(0, 2), 16);\n const g = parseInt(hex.substring(2, 4), 16);\n const b = parseInt(hex.substring(4, 6), 16);\n \n return (r * 299 + g * 587 + b * 114) / 1000;\n};\n\n/**\n * 判断是否为浅色\n * @param {string} color - 颜色值\n * @returns {boolean} 是否为浅色\n */\nexport const isLightColor = (color) => {\n return getColorBrightness(color) > 128;\n};\n\n/**\n * 获取对比色\n * @param {string} color - 颜色值\n * @returns {string} 对比色\n */\nexport const getContrastColor = (color) => {\n return isLightColor(color) ? '#000000' : '#FFFFFF';\n};\n\n/**\n * 生成渐变色\n * @param {string} color1 - 起始颜色\n * @param {string} color2 - 结束颜色\n * @param {number} steps - 步数\n * @returns {Array} 颜色数组\n */\nexport const generateGradient = (color1, color2, steps = 10) => {\n const hex = (color) => {\n const c = color.replace('#', '');\n return [\n parseInt(c.substring(0, 2), 16),\n parseInt(c.substring(2, 4), 16),\n parseInt(c.substring(4, 6), 16),\n ];\n };\n \n const [r1, g1, b1] = hex(color1);\n const [r2, g2, b2] = hex(color2);\n \n const gradient = [];\n \n for (let i = 0; i < steps; i++) {\n const r = Math.round(r1 + (r2 - r1) * (i / (steps - 1)));\n const g = Math.round(g1 + (g2 - g1) * (i / (steps - 1)));\n const b = Math.round(b1 + (b2 - b1) * (i / (steps - 1)));\n \n gradient.push(`#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`);\n }\n \n return gradient;\n};\n\n/**\n * 获取字符长度(支持中文)\n * @param {string} str - 字符串\n * @returns {number} 长度\n */\nexport const getStringLength = (str) => {\n let length = 0;\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n if (code > 0 && code <= 128) {\n length += 1;\n } else {\n length += 2;\n }\n }\n return length;\n};\n\n/**\n * 截取字符串(支持中文)\n * @param {string} str - 字符串\n * @param {number} length - 长度\n * @param {string} suffix - 后缀\n * @returns {string} 截取后的字符串\n */\nexport const truncateString = (str, length, suffix = '...') => {\n let currentLength = 0;\n let result = '';\n \n for (let i = 0; i < str.length; i++) {\n const char = str[i];\n const code = str.charCodeAt(i);\n \n if (code > 0 && code <= 128) {\n currentLength += 1;\n } else {\n currentLength += 2;\n }\n \n if (currentLength > length) {\n return result + suffix;\n }\n \n result += char;\n }\n \n return result;\n};\n\n/**\n * 驼峰转换\n * @param {string} str - 字符串\n * @returns {string} 驼峰格式字符串\n */\nexport const toCamelCase = (str) => {\n return str\n .replace(/[-_\\s]+(.)?/g, (_, c) => (c ? c.toUpperCase() : ''))\n .replace(/^[A-Z]/, (c) => c.toLowerCase());\n};\n\n/**\n * 短横线转换\n * @param {string} str - 字符串\n * @returns {string} 短横线格式字符串\n */\nexport const toKebabCase = (str) => {\n return str\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_]+/g, '-')\n .toLowerCase();\n};\n\n/**\n * 下划线转换\n * @param {string} str - 字符串\n * @returns {string} 下划线格式字符串\n */\nexport const toSnakeCase = (str) => {\n return str\n .replace(/([a-z])([A-Z])/g, '$1_$2')\n .replace(/[\\s\\-]+/g, '_')\n .toLowerCase();\n};\n\n/**\n * 首字母大写\n * @param {string} str - 字符串\n * @returns {string} 首字母大写字符串\n */\nexport const capitalize = (str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\n/**\n * 每个单词首字母大写\n * @param {string} str - 字符串\n * @returns {string} 每个单词首字母大写字符串\n */\nexport const capitalizeWords = (str) => {\n return str.replace(/\\b\\w/g, (char) => char.toUpperCase());\n};\n\n/**\n * 移除HTML标签\n * @param {string} html - HTML字符串\n * @returns {string} 纯文本\n */\nexport const stripHTML = (html) => {\n const tmp = document.createElement('div');\n tmp.innerHTML = html;\n return tmp.textContent || tmp.innerText || '';\n};\n\n/**\n * 转义正则表达式\n * @param {string} str - 字符串\n * @returns {string} 转义后的字符串\n */\nexport const escapeRegExp = (str) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n};\n\n/**\n * 生成随机字符串\n * @param {number} length - 长度\n * @param {string} chars - 字符集\n * @returns {string} 随机字符串\n */\nexport const randomString = (length = 8, chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') => {\n let result = '';\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return result;\n};\n\n/**\n * 延迟执行\n * @param {number} ms - 毫秒数\n * @returns {Promise} Promise对象\n */\nexport const sleep = (ms) => {\n return new Promise(resolve => setTimeout(resolve, ms));\n};\n\n/**\n * 重试函数\n * @param {Function} fn - 函数\n * @param {number} maxAttempts - 最大尝试次数\n * @param {number} delay - 延迟时间\n * @returns {Promise} Promise对象\n */\nexport const retry = async (fn, maxAttempts = 3, delay = 1000) => {\n let lastError;\n \n for (let attempt = 1; attempt <= maxAttempts; attempt++) {\n try {\n return await fn();\n } catch (err) {\n lastError = err;\n if (attempt < maxAttempts) {\n await sleep(delay * attempt);\n }\n }\n }\n \n throw lastError;\n};\n\n/**\n * 超时控制\n * @param {Promise} promise - Promise对象\n * @param {number} ms - 毫秒数\n * @returns {Promise} Promise对象\n */\nexport const timeout = (promise, ms) => {\n return Promise.race([\n promise,\n new Promise((_, reject) => {\n setTimeout(() => reject(new Error('Timeout')), ms);\n }),\n ]);\n};\n\n/**\n * 并发控制\n * @param {Array} tasks - 任务数组\n * @param {number} concurrency - 并发数\n * @returns {Promise} Promise对象\n */\nexport const parallel = async (tasks, concurrency = 5) => {\n const results = [];\n const executing = new Set();\n \n for (const [index, task] of tasks.entries()) {\n const p = Promise.resolve().then(() => task());\n results.push(p);\n executing.add(p);\n \n const clean = () => executing.delete(p);\n p.then(clean, clean);\n \n if (executing.size >= concurrency) {\n await Promise.race(executing);\n }\n }\n \n return Promise.all(results);\n};\n\n/**\n * 序列执行\n * @param {Array} tasks - 任务数组\n * @returns {Promise} Promise对象\n */\nexport const sequence = async (tasks) => {\n const results = [];\n \n for (const task of tasks) {\n results.push(await task());\n }\n \n return results;\n};\n\n/**\n * 缓存函数\n * @param {Function} fn - 函数\n * @param {number} maxSize - 最大缓存数\n * @returns {Function} 缓存后的函数\n */\nexport const memoize = (fn, maxSize = 100) => {\n const cache = new Map();\n \n return (...args) => {\n const key = JSON.stringify(args);\n \n if (cache.has(key)) {\n return cache.get(key);\n }\n \n const result = fn(...args);\n \n if (cache.size >= maxSize) {\n const firstKey = cache.keys().next().value;\n cache.delete(firstKey);\n }\n \n cache.set(key, result);\n \n return result;\n };\n};\n\n/**\n * 单例模式\n * @param {Function} fn - 函数\n * @returns {Function} 单例函数\n */\nexport const singleton = (fn) => {\n let instance;\n \n return (...args) => {\n if (!instance) {\n instance = fn(...args);\n }\n return instance;\n };\n};\n\n/**\n * 观察者模式\n * @returns {Object} 观察者对象\n */\nexport const createObserver = () => {\n const listeners = new Map();\n \n return {\n on(event, callback) {\n if (!listeners.has(event)) {\n listeners.set(event, new Set());\n }\n listeners.get(event).add(callback);\n \n return () => this.off(event, callback);\n },\n \n off(event, callback) {\n if (listeners.has(event)) {\n listeners.get(event).delete(callback);\n }\n },\n \n emit(event, ...args) {\n if (listeners.has(event)) {\n listeners.get(event).forEach(callback => callback(...args));\n }\n },\n \n once(event, callback) {\n const wrapper = (...args) => {\n callback(...args);\n this.off(event, wrapper);\n };\n this.on(event, wrapper);\n },\n \n clear() {\n listeners.clear();\n },\n };\n};\n\n/**\n * 状态机\n * @param {Object} config - 配置\n * @returns {Object} 状态机对象\n */\nexport const createStateMachine = (config) => {\n let currentState = config.initial;\n const listeners = new Map();\n \n return {\n get state() {\n return currentState;\n },\n \n transition(event) {\n const transitions = config.transitions[currentState];\n if (!transitions || !transitions[event]) {\n throw new Error(`Invalid transition: ${event} from ${currentState}`);\n }\n \n const nextState = transitions[event];\n const prevState = currentState;\n currentState = nextState;\n \n if (listeners.has(nextState)) {\n listeners.get(nextState).forEach(callback => callback(prevState, nextState));\n }\n \n return nextState;\n },\n \n on(state, callback) {\n if (!listeners.has(state)) {\n listeners.set(state, new Set());\n }\n listeners.get(state).add(callback);\n \n return () => this.off(state, callback);\n },\n \n off(state, callback) {\n if (listeners.has(state)) {\n listeners.get(state).delete(callback);\n }\n },\n \n can(event) {\n const transitions = config.transitions[currentState];\n return transitions && transitions[event] !== undefined;\n },\n };\n};\n","/**\n * MetonaToast Icons — 图标SVG定义\n * @module icons\n * @version 2.0.0\n * @description 80+ 内置SVG图标\n */\n\nexport const ICONS = {\n success: `\n \n `,\n \n error: `\n \n \n \n `,\n \n warning: `\n \n \n \n `,\n \n info: `\n \n \n \n `,\n \n loading: `\n \n `,\n \n close: `\n \n \n `,\n \n check: `\n \n `,\n \n x: `\n \n \n `,\n \n alert: `\n \n \n \n `,\n \n question: `\n \n \n \n `,\n \n star: `\n \n `,\n \n heart: `\n \n `,\n \n bell: `\n \n \n `,\n \n mail: `\n \n \n `,\n \n settings: `\n \n \n `,\n \n user: `\n \n \n `,\n \n home: `\n \n \n `,\n \n search: `\n \n \n `,\n \n plus: `\n \n \n `,\n \n minus: `\n \n `,\n \n edit: `\n \n \n `,\n \n trash: `\n \n \n \n \n `,\n \n download: `\n \n \n \n `,\n \n upload: `\n \n \n \n `,\n \n share: `\n \n \n \n \n \n `,\n \n link: `\n \n \n `,\n \n external: `\n \n \n \n `,\n \n clock: `\n \n \n `,\n \n calendar: `\n \n \n \n \n `,\n \n map: `\n \n \n \n `,\n \n compass: `\n \n \n `,\n \n globe: `\n \n \n \n `,\n \n wifi: `\n \n \n \n \n `,\n \n cloud: `\n \n `,\n \n sun: `\n \n \n \n \n \n \n \n \n \n `,\n \n moon: `\n \n `,\n \n zap: `\n \n `,\n \n activity: `\n \n `,\n \n cpu: `\n \n \n \n \n \n \n \n \n \n \n `,\n \n database: `\n \n \n \n `,\n \n server: `\n \n \n \n \n `,\n \n terminal: `\n \n \n `,\n \n code: `\n \n \n `,\n \n git: `\n \n \n \n \n `,\n \n package: `\n \n \n \n \n `,\n \n layers: `\n \n \n \n `,\n \n grid: `\n \n \n \n \n `,\n \n list: `\n \n \n \n \n \n \n `,\n \n filter: `\n \n `,\n \n sort: `\n \n \n `,\n \n refresh: `\n \n \n \n `,\n \n sync: `\n \n \n \n `,\n \n power: `\n \n \n `,\n \n battery: `\n \n \n `,\n \n bluetooth: `\n \n `,\n \n volume: `\n \n \n `,\n \n mic: `\n \n \n \n \n `,\n \n camera: `\n \n \n `,\n \n image: `\n \n \n \n `,\n \n video: `\n \n \n `,\n \n music: `\n \n \n \n `,\n \n file: `\n \n \n `,\n \n folder: `\n \n `,\n \n clipboard: `\n \n \n `,\n \n save: `\n \n \n \n `,\n \n print: `\n \n \n \n `,\n \n eye: `\n \n \n `,\n \n eyeOff: `\n \n \n `,\n \n lock: `\n \n \n `,\n \n unlock: `\n \n \n `,\n \n shield: `\n \n `,\n \n key: `\n \n `,\n \n flag: `\n \n \n `,\n \n bookmark: `\n \n `,\n \n tag: `\n \n \n `,\n \n gift: `\n \n \n \n \n \n `,\n \n award: `\n \n \n `,\n \n target: `\n \n \n \n `,\n \n crosshair: `\n \n \n \n \n \n `,\n \n move: `\n \n \n \n \n \n \n `,\n \n maximize: `\n \n `,\n \n minimize: `\n \n `,\n \n copy: `\n \n \n `,\n \n cut: `\n \n \n \n \n \n `,\n \n paste: `\n \n \n `,\n \n rotateCw: `\n \n \n `,\n \n rotateCcw: `\n \n \n `,\n \n zoomIn: `\n \n \n \n \n `,\n \n zoomOut: `\n \n \n \n `,\n \n crop: `\n \n \n `,\n \n sliders: `\n \n \n \n \n \n \n \n \n \n `,\n \n toggleLeft: `\n \n \n `,\n \n toggleRight: `\n \n \n `,\n \n checkCircle: `\n \n \n `,\n \n xCircle: `\n \n \n \n `,\n \n alertCircle: `\n \n \n \n `,\n \n infoCircle: `\n \n \n \n `,\n \n helpCircle: `\n \n \n \n `,\n \n alertTriangle: `\n \n \n \n `,\n \n checkSquare: `\n \n \n `,\n \n square: `\n \n `,\n \n circle: `\n \n `,\n \n triangle: `\n \n `,\n \n hexagon: `\n \n `,\n \n octagon: `\n \n `,\n \n pentagon: `\n \n `,\n \n diamond: `\n \n `,\n};\n","/**\n * MetonaToast Locales — 国际化翻译数据\n * @module locales\n * @version 2.0.0\n * @description 内置 zh-CN / en-US 完整翻译\n */\n\nexport const LOCALES = {\n 'zh-CN': {\n close: '关闭',\n loading: '加载中...',\n success: '操作成功',\n error: '操作失败',\n warning: '警告',\n info: '信息',\n confirm: '确认',\n cancel: '取消',\n yes: '是',\n no: '否',\n ok: '确定',\n retry: '重试',\n undo: '撤销',\n redo: '重做',\n save: '保存',\n delete: '删除',\n edit: '编辑',\n add: '添加',\n remove: '移除',\n search: '搜索',\n filter: '筛选',\n sort: '排序',\n refresh: '刷新',\n sync: '同步',\n upload: '上传',\n download: '下载',\n share: '分享',\n copy: '复制',\n cut: '剪切',\n paste: '粘贴',\n print: '打印',\n export: '导出',\n import: '导入',\n settings: '设置',\n help: '帮助',\n about: '关于',\n version: '版本',\n language: '语言',\n theme: '主题',\n dark: '暗色',\n light: '亮色',\n auto: '自动',\n notifications: '通知',\n enable: '启用',\n disable: '禁用',\n on: '开启',\n off: '关闭',\n max: '最大',\n min: '最小',\n expand: '展开',\n collapse: '折叠',\n fullscreen: '全屏',\n exitFullscreen: '退出全屏',\n zoomIn: '放大',\n zoomOut: '缩小',\n reset: '重置',\n apply: '应用',\n submit: '提交',\n send: '发送',\n receive: '接收',\n connect: '连接',\n disconnect: '断开',\n start: '开始',\n stop: '停止',\n pause: '暂停',\n resume: '继续',\n next: '下一个',\n previous: '上一个',\n first: '第一个',\n last: '最后一个',\n back: '返回',\n forward: '前进',\n home: '首页',\n menu: '菜单',\n more: '更多',\n less: '更少',\n show: '显示',\n hide: '隐藏',\n visible: '可见',\n hidden: '隐藏',\n enabled: '已启用',\n disabled: '已禁用',\n active: '活跃',\n inactive: '非活跃',\n online: '在线',\n offline: '离线',\n connected: '已连接',\n disconnected: '已断开',\n loading: '加载中',\n loaded: '已加载',\n saving: '保存中',\n saved: '已保存',\n deleting: '删除中',\n deleted: '已删除',\n uploading: '上传中',\n uploaded: '已上传',\n downloading: '下载中',\n downloaded: '已下载',\n processing: '处理中',\n processed: '已处理',\n syncing: '同步中',\n synced: '已同步',\n sending: '发送中',\n sent: '已发送',\n receiving: '接收中',\n received: '已接收',\n connecting: '连接中',\n error: '错误',\n warning: '警告',\n info: '信息',\n success: '成功',\n question: '问题',\n help: '帮助',\n feedback: '反馈',\n report: '报告',\n bug: '错误',\n feature: '功能',\n improvement: '改进',\n suggestion: '建议',\n request: '请求',\n response: '响应',\n status: '状态',\n progress: '进度',\n complete: '完成',\n incomplete: '未完成',\n pending: '待处理',\n processing: '处理中',\n failed: '失败',\n cancelled: '已取消',\n timeout: '超时',\n expired: '已过期',\n invalid: '无效',\n valid: '有效',\n required: '必填',\n optional: '可选',\n enabled: '启用',\n disabled: '禁用',\n allowed: '允许',\n denied: '拒绝',\n approved: '已批准',\n rejected: '已拒绝',\n accepted: '已接受',\n declined: '已拒绝',\n confirmed: '已确认',\n unconfirmed: '未确认',\n verified: '已验证',\n unverified: '未验证',\n authenticated: '已认证',\n unauthenticated: '未认证',\n authorized: '已授权',\n unauthorized: '未授权',\n public: '公开',\n private: '私有',\n protected: '受保护',\n internal: '内部',\n external: '外部',\n local: '本地',\n remote: '远程',\n global: '全局',\n system: '系统',\n user: '用户',\n admin: '管理员',\n moderator: '版主',\n guest: '访客',\n member: '成员',\n owner: '所有者',\n creator: '创建者',\n editor: '编辑者',\n viewer: '查看者',\n subscriber: '订阅者',\n follower: '关注者',\n following: '关注中',\n friend: '朋友',\n contact: '联系人',\n group: '群组',\n team: '团队',\n organization: '组织',\n company: '公司',\n department: '部门',\n project: '项目',\n task: '任务',\n issue: '问题',\n ticket: '工单',\n request: '请求',\n response: '响应',\n message: '消息',\n notification: '通知',\n alert: '警报',\n reminder: '提醒',\n event: '事件',\n activity: '活动',\n log: '日志',\n report: '报告',\n analytics: '分析',\n statistics: '统计',\n metrics: '指标',\n performance: '性能',\n security: '安全',\n privacy: '隐私',\n compliance: '合规',\n policy: '政策',\n terms: '条款',\n conditions: '条件',\n agreement: '协议',\n contract: '合同',\n license: '许可证',\n copyright: '版权',\n trademark: '商标',\n patent: '专利',\n tradeSecret: '商业秘密',\n confidential: '机密',\n sensitive: '敏感',\n critical: '关键',\n important: '重要',\n urgent: '紧急',\n high: '高',\n medium: '中',\n low: '低',\n none: '无',\n all: '全部',\n any: '任何',\n some: '一些',\n each: '每个',\n every: '每个',\n both: '两者',\n neither: '两者都不',\n either: '任一',\n other: '其他',\n another: '另一个',\n this: '这个',\n that: '那个',\n these: '这些',\n those: '那些',\n here: '这里',\n there: '那里',\n where: '哪里',\n when: '何时',\n why: '为什么',\n how: '如何',\n what: '什么',\n who: '谁',\n which: '哪个',\n whose: '谁的',\n whom: '谁',\n myself: '我自己',\n yourself: '你自己',\n himself: '他自己',\n herself: '她自己',\n itself: '它自己',\n ourselves: '我们自己',\n yourselves: '你们自己',\n themselves: '他们自己',\n mine: '我的',\n yours: '你的',\n his: '他的',\n hers: '她的',\n its: '它的',\n ours: '我们的',\n yours: '你们的',\n theirs: '他们的',\n me: '我',\n you: '你',\n him: '他',\n her: '她',\n it: '它',\n us: '我们',\n them: '他们',\n my: '我的',\n your: '你的',\n his: '他的',\n her: '她的',\n its: '它的',\n our: '我们的',\n your: '你们的',\n their: '他们的',\n i: '我',\n you: '你',\n he: '他',\n she: '她',\n it: '它',\n we: '我们',\n they: '他们',\n am: '是',\n is: '是',\n are: '是',\n was: '是',\n were: '是',\n be: '是',\n been: '是',\n being: '是',\n have: '有',\n has: '有',\n had: '有',\n having: '有',\n do: '做',\n does: '做',\n did: '做',\n doing: '做',\n will: '会',\n would: '会',\n shall: '将',\n should: '应该',\n may: '可以',\n might: '可能',\n can: '能',\n could: '能',\n must: '必须',\n need: '需要',\n dare: '敢',\n ought: '应该',\n used: '过去常常',\n to: '到',\n of: '的',\n in: '在',\n for: '为了',\n on: '在',\n with: '和',\n at: '在',\n by: '通过',\n from: '从',\n into: '进入',\n during: '在...期间',\n before: '在...之前',\n after: '在...之后',\n above: '在...上面',\n below: '在...下面',\n between: '在...之间',\n under: '在...下面',\n over: '在...上面',\n across: '穿过',\n through: '通过',\n into: '进入',\n towards: '朝向',\n upon: '在...上面',\n about: '关于',\n against: '反对',\n among: '在...之中',\n along: '沿着',\n around: '周围',\n beyond: '超出',\n but: '但是',\n despite: '尽管',\n except: '除了',\n inside: '里面',\n outside: '外面',\n since: '自从',\n until: '直到',\n unless: '除非',\n whether: '是否',\n while: '当...时候',\n although: '虽然',\n because: '因为',\n if: '如果',\n once: '一旦',\n since: '自从',\n so: '所以',\n that: '那个',\n though: '虽然',\n till: '直到',\n unless: '除非',\n until: '直到',\n when: '当...时候',\n whenever: '每当',\n where: '哪里',\n wherever: '无论哪里',\n whereas: '然而',\n wherever: '无论哪里',\n while: '当...时候',\n why: '为什么',\n },\n \n 'en-US': {\n close: 'Close',\n loading: 'Loading...',\n success: 'Success',\n error: 'Error',\n warning: 'Warning',\n info: 'Info',\n confirm: 'Confirm',\n cancel: 'Cancel',\n yes: 'Yes',\n no: 'No',\n ok: 'OK',\n retry: 'Retry',\n undo: 'Undo',\n redo: 'Redo',\n save: 'Save',\n delete: 'Delete',\n edit: 'Edit',\n add: 'Add',\n remove: 'Remove',\n search: 'Search',\n filter: 'Filter',\n sort: 'Sort',\n refresh: 'Refresh',\n sync: 'Sync',\n upload: 'Upload',\n download: 'Download',\n share: 'Share',\n copy: 'Copy',\n cut: 'Cut',\n paste: 'Paste',\n print: 'Print',\n export: 'Export',\n import: 'Import',\n settings: 'Settings',\n help: 'Help',\n about: 'About',\n version: 'Version',\n language: 'Language',\n theme: 'Theme',\n dark: 'Dark',\n light: 'Light',\n auto: 'Auto',\n notifications: 'Notifications',\n enable: 'Enable',\n disable: 'Disable',\n on: 'On',\n off: 'Off',\n max: 'Max',\n min: 'Min',\n expand: 'Expand',\n collapse: 'Collapse',\n fullscreen: 'Fullscreen',\n exitFullscreen: 'Exit Fullscreen',\n zoomIn: 'Zoom In',\n zoomOut: 'Zoom Out',\n reset: 'Reset',\n apply: 'Apply',\n submit: 'Submit',\n send: 'Send',\n receive: 'Receive',\n connect: 'Connect',\n disconnect: 'Disconnect',\n start: 'Start',\n stop: 'Stop',\n pause: 'Pause',\n resume: 'Resume',\n next: 'Next',\n previous: 'Previous',\n first: 'First',\n last: 'Last',\n back: 'Back',\n forward: 'Forward',\n home: 'Home',\n menu: 'Menu',\n more: 'More',\n less: 'Less',\n show: 'Show',\n hide: 'Hide',\n visible: 'Visible',\n hidden: 'Hidden',\n enabled: 'Enabled',\n disabled: 'Disabled',\n active: 'Active',\n inactive: 'Inactive',\n online: 'Online',\n offline: 'Offline',\n connected: 'Connected',\n disconnected: 'Disconnected',\n loading: 'Loading',\n loaded: 'Loaded',\n saving: 'Saving',\n saved: 'Saved',\n deleting: 'Deleting',\n deleted: 'Deleted',\n uploading: 'Uploading',\n uploaded: 'Uploaded',\n downloading: 'Downloading',\n downloaded: 'Downloaded',\n processing: 'Processing',\n processed: 'Processed',\n syncing: 'Syncing',\n synced: 'Synced',\n sending: 'Sending',\n sent: 'Sent',\n receiving: 'Receiving',\n received: 'Received',\n connecting: 'Connecting',\n error: 'Error',\n warning: 'Warning',\n info: 'Info',\n success: 'Success',\n question: 'Question',\n help: 'Help',\n feedback: 'Feedback',\n report: 'Report',\n bug: 'Bug',\n feature: 'Feature',\n improvement: 'Improvement',\n suggestion: 'Suggestion',\n request: 'Request',\n response: 'Response',\n status: 'Status',\n progress: 'Progress',\n complete: 'Complete',\n incomplete: 'Incomplete',\n pending: 'Pending',\n processing: 'Processing',\n failed: 'Failed',\n cancelled: 'Cancelled',\n timeout: 'Timeout',\n expired: 'Expired',\n invalid: 'Invalid',\n valid: 'Valid',\n required: 'Required',\n optional: 'Optional',\n enabled: 'Enabled',\n disabled: 'Disabled',\n allowed: 'Allowed',\n denied: 'Denied',\n approved: 'Approved',\n rejected: 'Rejected',\n accepted: 'Accepted',\n declined: 'Declined',\n confirmed: 'Confirmed',\n unconfirmed: 'Unconfirmed',\n verified: 'Verified',\n unverified: 'Unverified',\n authenticated: 'Authenticated',\n unauthenticated: 'Unauthenticated',\n authorized: 'Authorized',\n unauthorized: 'Unauthorized',\n public: 'Public',\n private: 'Private',\n protected: 'Protected',\n internal: 'Internal',\n external: 'External',\n local: 'Local',\n remote: 'Remote',\n global: 'Global',\n system: 'System',\n user: 'User',\n admin: 'Admin',\n moderator: 'Moderator',\n guest: 'Guest',\n member: 'Member',\n owner: 'Owner',\n creator: 'Creator',\n editor: 'Editor',\n viewer: 'Viewer',\n subscriber: 'Subscriber',\n follower: 'Follower',\n following: 'Following',\n friend: 'Friend',\n contact: 'Contact',\n group: 'Group',\n team: 'Team',\n organization: 'Organization',\n company: 'Company',\n department: 'Department',\n project: 'Project',\n task: 'Task',\n issue: 'Issue',\n ticket: 'Ticket',\n request: 'Request',\n response: 'Response',\n message: 'Message',\n notification: 'Notification',\n alert: 'Alert',\n reminder: 'Reminder',\n event: 'Event',\n activity: 'Activity',\n log: 'Log',\n report: 'Report',\n analytics: 'Analytics',\n statistics: 'Statistics',\n metrics: 'Metrics',\n performance: 'Performance',\n security: 'Security',\n privacy: 'Privacy',\n compliance: 'Compliance',\n policy: 'Policy',\n terms: 'Terms',\n conditions: 'Conditions',\n agreement: 'Agreement',\n contract: 'Contract',\n license: 'License',\n copyright: 'Copyright',\n trademark: 'Trademark',\n patent: 'Patent',\n tradeSecret: 'Trade Secret',\n confidential: 'Confidential',\n sensitive: 'Sensitive',\n critical: 'Critical',\n important: 'Important',\n urgent: 'Urgent',\n high: 'High',\n medium: 'Medium',\n low: 'Low',\n none: 'None',\n all: 'All',\n any: 'Any',\n some: 'Some',\n each: 'Each',\n every: 'Every',\n both: 'Both',\n neither: 'Neither',\n either: 'Either',\n other: 'Other',\n another: 'Another',\n this: 'This',\n that: 'That',\n these: 'These',\n those: 'Those',\n here: 'Here',\n there: 'There',\n where: 'Where',\n when: 'When',\n why: 'Why',\n how: 'How',\n what: 'What',\n who: 'Who',\n which: 'Which',\n whose: 'Whose',\n whom: 'Whom',\n myself: 'Myself',\n yourself: 'Yourself',\n himself: 'Himself',\n herself: 'Herself',\n itself: 'Itself',\n ourselves: 'Ourselves',\n yourselves: 'Yourselves',\n themselves: 'Themselves',\n mine: 'Mine',\n yours: 'Yours',\n his: 'His',\n hers: 'Hers',\n its: 'Its',\n ours: 'Ours',\n yours: 'Yours',\n theirs: 'Theirs',\n me: 'Me',\n you: 'You',\n him: 'Him',\n her: 'Her',\n it: 'It',\n us: 'Us',\n them: 'Them',\n my: 'My',\n your: 'Your',\n his: 'His',\n her: 'Her',\n its: 'Its',\n our: 'Our',\n your: 'Your',\n their: 'Their',\n i: 'I',\n you: 'You',\n he: 'He',\n she: 'She',\n it: 'It',\n we: 'We',\n they: 'They',\n am: 'Am',\n is: 'Is',\n are: 'Are',\n was: 'Was',\n were: 'Were',\n be: 'Be',\n been: 'Been',\n being: 'Being',\n have: 'Have',\n has: 'Has',\n had: 'Had',\n having: 'Having',\n do: 'Do',\n does: 'Does',\n did: 'Did',\n doing: 'Doing',\n will: 'Will',\n would: 'Would',\n shall: 'Shall',\n should: 'Should',\n may: 'May',\n might: 'Might',\n can: 'Can',\n could: 'Could',\n must: 'Must',\n need: 'Need',\n dare: 'Dare',\n ought: 'Ought',\n used: 'Used',\n to: 'To',\n of: 'Of',\n in: 'In',\n for: 'For',\n on: 'On',\n with: 'With',\n at: 'At',\n by: 'By',\n from: 'From',\n into: 'Into',\n during: 'During',\n before: 'Before',\n after: 'After',\n above: 'Above',\n below: 'Below',\n between: 'Between',\n under: 'Under',\n over: 'Over',\n across: 'Across',\n through: 'Through',\n into: 'Into',\n towards: 'Towards',\n upon: 'Upon',\n about: 'About',\n against: 'Against',\n among: 'Among',\n along: 'Along',\n around: 'Around',\n beyond: 'Beyond',\n but: 'But',\n despite: 'Despite',\n except: 'Except',\n inside: 'Inside',\n outside: 'Outside',\n since: 'Since',\n until: 'Until',\n unless: 'Unless',\n whether: 'Whether',\n while: 'While',\n although: 'Although',\n because: 'Because',\n if: 'If',\n once: 'Once',\n since: 'Since',\n so: 'So',\n that: 'That',\n though: 'Though',\n till: 'Till',\n unless: 'Unless',\n until: 'Until',\n when: 'When',\n whenever: 'Whenever',\n where: 'Where',\n wherever: 'Wherever',\n whereas: 'Whereas',\n wherever: 'Wherever',\n while: 'While',\n why: 'Why',\n },\n};\n","/**\n * MetonaToast Constants - 常量定义\n * @module constants\n * @version 2.0.0\n * @description 默认配置、颜色、动画、主题等常量\n */\n\n/**\n * 默认配置\n */\nexport const DEFAULTS = Object.freeze({\n // 基础配置\n position: 'top-right',\n duration: 4000,\n max: 6,\n gap: 12,\n offset: 24,\n \n // 交互配置\n pauseOnHover: true,\n closeOnClick: true,\n draggable: true,\n \n // 显示配置\n showProgress: true,\n progressDirection: 'horizontal',\n icon: true,\n closeButton: true,\n \n // 主题配置\n theme: 'auto',\n animation: 'slide',\n \n // 布局配置\n zIndex: 9999,\n width: 360,\n \n // 自定义配置\n className: '',\n style: {},\n \n // 回调函数\n onShow: null,\n onClose: null,\n onClick: null,\n onUpdate: null,\n \n // 高级\n resetTimerOnUpdate: false,\n notifyWhenHidden: false,\n \n // 国际化\n locale: 'zh-CN',\n \n // 插件\n plugins: [],\n});\n\n// Icons — 从 icons.js 导入并重新导出(保持向后兼容)\nimport { ICONS } from './icons.js';\nexport { ICONS };\n\n/**\n * 类型颜色配置\n */\nexport const TYPE_COLORS = {\n success: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n error: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n warning: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n info: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n loading: { fg: '#6366f1', bg: 'rgba(99, 102, 241, 0.1)' },\n default: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n check: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n x: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n alert: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n question: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n star: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n heart: { fg: '#ec4899', bg: 'rgba(236, 72, 153, 0.1)' },\n bell: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n mail: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n settings: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n user: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n home: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n search: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n plus: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n minus: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n edit: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n trash: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n download: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n upload: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n share: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n link: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n external: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n clock: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n calendar: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n map: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n compass: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n globe: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n wifi: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n cloud: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n sun: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n moon: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n zap: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n activity: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n cpu: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n database: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n server: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n terminal: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n code: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n git: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n package: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n layers: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n grid: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n list: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n filter: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n sort: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n refresh: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n sync: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n power: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n battery: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n bluetooth: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n volume: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n mic: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n camera: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n image: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n video: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n music: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n file: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n folder: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n clipboard: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n save: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n print: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n eye: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n eyeOff: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n lock: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n unlock: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n shield: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n key: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n flag: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n bookmark: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n tag: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n gift: { fg: '#ec4899', bg: 'rgba(236, 72, 153, 0.1)' },\n award: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n target: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n crosshair: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n move: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n maximize: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n minimize: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n copy: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n cut: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n paste: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n rotateCw: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n rotateCcw: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n zoomIn: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n zoomOut: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n crop: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n sliders: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n toggleLeft: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n toggleRight: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n checkCircle: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n xCircle: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n alertCircle: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n infoCircle: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n helpCircle: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n alertTriangle: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n checkSquare: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n square: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n circle: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n triangle: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n hexagon: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n octagon: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n pentagon: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n diamond: { fg: '#ec4899', bg: 'rgba(236, 72, 153, 0.1)' },\n};\n\n/**\n * 动画配置\n */\nexport const ANIMATIONS = {\n slide: {\n enter: { transform: 'translateX(80px)', opacity: 0 },\n leave: { transform: 'translateX(120%)', opacity: 0 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n fade: {\n enter: { opacity: 0, filter: 'blur(3px)' },\n leave: { opacity: 0, filter: 'blur(3px)' },\n duration: 500,\n easing: 'ease',\n },\n scale: {\n enter: { transform: 'scale(0.55)', opacity: 0 },\n leave: { transform: 'scale(0.55)', opacity: 0 },\n duration: 450,\n easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n },\n bounce: {\n enter: { transform: 'translateY(-80px)', opacity: 0 },\n leave: { transform: 'translateY(20px)', opacity: 0 },\n duration: 650,\n easing: 'ease',\n },\n flip: {\n enter: { transform: 'perspective(500px) rotateX(-90deg)', opacity: 0 },\n leave: { transform: 'perspective(500px) rotateX(90deg)', opacity: 0 },\n duration: 500,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n rotate: {\n enter: { transform: 'rotate(-25deg) scale(0.6)', opacity: 0 },\n leave: { transform: 'rotate(25deg) scale(0.6)', opacity: 0 },\n duration: 500,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n zoom: {\n enter: { transform: 'scale(0.1)', opacity: 0 },\n leave: { transform: 'scale(0.1)', opacity: 0 },\n duration: 500,\n easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n },\n slideUp: {\n enter: { transform: 'translateY(60px)', opacity: 0 },\n leave: { transform: 'translateY(-120%)', opacity: 0 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n slideDown: {\n enter: { transform: 'translateY(-60px)', opacity: 0 },\n leave: { transform: 'translateY(120%)', opacity: 0 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n slideLeft: {\n enter: { transform: 'translateX(-90px)', opacity: 0 },\n leave: { transform: 'translateX(120%)', opacity: 0 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n slideRight: {\n enter: { transform: 'translateX(90px)', opacity: 0 },\n leave: { transform: 'translateX(-120%)', opacity: 0 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n};\n\n/**\n * 主题配置\n */\nexport const THEMES = {\n light: {\n bg: 'rgba(255, 255, 255, 0.96)',\n text: '#1f2937',\n border: 'rgba(0, 0, 0, 0.06)',\n shadow: '0 10px 36px -10px rgba(0, 0, 0, 0.18), 0 4px 14px -4px rgba(0, 0, 0, 0.08)',\n hoverShadow: '0 14px 48px -10px rgba(0, 0, 0, 0.22), 0 6px 18px -4px rgba(0, 0, 0, 0.10)',\n progressBg: 'rgba(0, 0, 0, 0.06)',\n closeHoverBg: 'rgba(0, 0, 0, 0.06)',\n },\n dark: {\n bg: 'rgba(28, 32, 40, 0.94)',\n text: '#e6e8eb',\n border: 'rgba(255, 255, 255, 0.08)',\n shadow: '0 10px 36px -10px rgba(0, 0, 0, 0.6), 0 4px 14px -4px rgba(0, 0, 0, 0.4)',\n hoverShadow: '0 14px 48px -8px rgba(0, 0, 0, 0.6), 0 6px 18px -4px rgba(0, 0, 0, 0.4)',\n progressBg: 'rgba(255, 255, 255, 0.08)',\n closeHoverBg: 'rgba(255, 255, 255, 0.08)',\n },\n auto: 'auto',\n warm: {\n bg: 'rgba(255, 251, 235, 0.96)',\n text: '#78350f',\n border: 'rgba(245, 158, 11, 0.2)',\n shadow: '0 10px 36px -10px rgba(245, 158, 11, 0.18), 0 4px 14px -4px rgba(245, 158, 11, 0.08)',\n hoverShadow: '0 14px 48px -10px rgba(245, 158, 11, 0.22), 0 6px 18px -4px rgba(245, 158, 11, 0.10)',\n progressBg: 'rgba(245, 158, 11, 0.1)',\n closeHoverBg: 'rgba(245, 158, 11, 0.1)',\n },\n};\n\n/**\n * 位置配置\n */\nexport const POSITIONS = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\n\n/**\n * 类型配置\n */\nexport const TYPES = [\n 'default', 'success', 'error', 'warning', 'info', 'loading',\n 'check', 'x', 'alert', 'question', 'star', 'heart', 'bell', 'mail',\n 'settings', 'user', 'home', 'search', 'plus', 'minus', 'edit', 'trash',\n 'download', 'upload', 'share', 'link', 'external', 'clock', 'calendar',\n 'map', 'compass', 'globe', 'wifi', 'cloud', 'sun', 'moon', 'zap',\n 'activity', 'cpu', 'database', 'server', 'terminal', 'code', 'git',\n 'package', 'layers', 'grid', 'list', 'filter', 'sort', 'refresh', 'sync',\n 'power', 'battery', 'bluetooth', 'volume', 'mic', 'camera', 'image', 'video',\n 'music', 'file', 'folder', 'clipboard', 'save', 'print', 'eye', 'eyeOff',\n 'lock', 'unlock', 'shield', 'key', 'flag', 'bookmark', 'tag', 'gift',\n 'award', 'target', 'crosshair', 'move', 'maximize', 'minimize',\n 'copy', 'cut', 'paste', 'rotateCw', 'rotateCcw', 'zoomIn', 'zoomOut',\n 'crop', 'sliders', 'toggleLeft', 'toggleRight',\n 'checkCircle', 'xCircle', 'alertCircle', 'infoCircle', 'helpCircle',\n 'alertTriangle', 'checkSquare', 'square', 'circle', 'triangle',\n 'hexagon', 'octagon', 'pentagon', 'diamond',\n];\n\n// Locales — 从 locales.js 导入并重新导出(保持向后兼容)\nimport { LOCALES } from './locales.js';\nexport { LOCALES };\n\n/**\n * 进度条方向\n */\nexport const PROGRESS_DIRECTIONS = ['horizontal', 'vertical'];\n\n/**\n * 动画类型\n */\nexport const ANIMATION_TYPES = ['slide', 'fade', 'scale', 'bounce', 'flip', 'rotate', 'zoom', 'slideUp', 'slideDown', 'slideLeft', 'slideRight'];\n\n/**\n * 主题类型\n */\nexport const THEME_TYPES = ['light', 'dark', 'auto'];\n","/**\n * MetonaToast Styles - 样式管理\n * @module styles\n * @version 2.0.0\n * @description 样式注入、更新和主题管理\n */\n\nimport { THEMES } from './constants.js';\n\n// 样式缓存\nlet injectedStyles = null;\nlet styleElement = null;\n\n/**\n * 生成CSS样式\n * @param {Object} theme - 主题配置\n * @returns {string} CSS字符串\n */\nconst generateCSS = (theme) => {\n return `\n /* MetonaToast 基础样式 */\n .met-container {\n pointer-events: none;\n display: flex;\n flex-direction: column;\n gap: 12px;\n box-sizing: border-box;\n padding: 24px;\n max-width: 100vw;\n position: fixed;\n z-index: 9999;\n }\n \n /* 位置样式 — 顶部位置用 column-reverse,新 toast 出现在最上方 */\n .met-container.top-left {\n top: 0;\n left: 0;\n align-items: flex-start;\n flex-direction: column-reverse;\n }\n \n .met-container.top-center {\n top: 0;\n left: 0;\n right: 0;\n align-items: center;\n flex-direction: column-reverse;\n }\n \n .met-container.top-right {\n top: 0;\n right: 0;\n align-items: flex-end;\n flex-direction: column-reverse;\n }\n \n .met-container.bottom-left {\n bottom: 0;\n left: 0;\n align-items: flex-start;\n flex-direction: column-reverse;\n }\n \n .met-container.bottom-center {\n bottom: 0;\n left: 0;\n right: 0;\n align-items: center;\n flex-direction: column-reverse;\n }\n \n .met-container.bottom-right {\n bottom: 0;\n right: 0;\n align-items: flex-end;\n flex-direction: column-reverse;\n }\n \n /* Toast基础样式 */\n .met-toast {\n position: relative;\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 14px 16px;\n border-radius: 12px;\n box-sizing: border-box;\n backdrop-filter: blur(14px) saturate(180%);\n -webkit-backdrop-filter: blur(14px) saturate(180%);\n font: 14px/1.5 -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n user-select: none;\n -webkit-user-select: none;\n transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), \n box-shadow 0.25s ease, \n opacity 0.25s ease;\n will-change: transform, opacity;\n flex-shrink: 0;\n pointer-events: auto;\n min-width: 240px;\n max-width: calc(100vw - 48px);\n width: 360px;\n border: 1px solid var(--met-border, rgba(0,0,0,0.06));\n background: var(--met-bg, rgba(255,255,255,0.96));\n color: var(--met-text, #1f2937);\n box-shadow: var(--met-shadow, 0 10px 36px -10px rgba(0,0,0,0.18), 0 4px 14px -4px rgba(0,0,0,0.08));\n }\n \n /* 悬停效果 */\n .met-toast:hover {\n box-shadow: var(--met-hover-shadow, 0 14px 48px -10px rgba(0,0,0,0.22), 0 6px 18px -4px rgba(0,0,0,0.10)) !important;\n }\n \n /* 可点击状态 */\n .met-toast.met-clickable {\n cursor: pointer;\n }\n \n /* 图标样式 */\n .met-icon {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n margin-top: 1px;\n }\n \n /* 内容样式 */\n .met-content {\n flex: 1;\n min-width: 0;\n word-wrap: break-word;\n overflow-wrap: break-word;\n }\n \n /* 标题样式 */\n .met-title {\n font-weight: 600;\n font-size: 14px;\n letter-spacing: 0.1px;\n }\n \n /* 消息样式 */\n .met-message {\n font-size: 13px;\n opacity: 0.85;\n margin-top: 2px;\n }\n \n /* 关闭按钮样式 */\n .met-close {\n flex-shrink: 0;\n background: transparent;\n border: 0;\n padding: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n transition: background 0.2s, color 0.2s;\n line-height: 0;\n color: inherit;\n opacity: 0.5;\n }\n \n .met-close:hover {\n opacity: 1;\n background: var(--met-close-hover-bg, rgba(0,0,0,0.06));\n }\n \n /* 进度条样式 - 水平 */\n .met-progress {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n height: 3px;\n overflow: hidden;\n background: var(--met-progress-bg, rgba(0,0,0,0.06));\n border-radius: 0 0 12px 12px;\n }\n \n /* 进度条样式 - 垂直 */\n .met-progress-v {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 3px;\n overflow: hidden;\n background: var(--met-progress-bg, rgba(0,0,0,0.06));\n border-radius: 12px 0 0 12px;\n }\n \n /* 进度条指示器 - 水平 */\n .met-bar {\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n width: 100%;\n transform-origin: left;\n transform: scaleX(1);\n }\n \n /* 进度条指示器 - 垂直 */\n .met-bar-v {\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n transform-origin: bottom;\n transform: scaleY(1);\n }\n \n /* 侧边指示器 */\n .met-side {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 4px;\n border-radius: 12px 0 0 12px;\n }\n \n /* 加载动画 */\n .met-spin {\n animation: met-rot 1s linear infinite;\n transform-origin: 50% 50%;\n }\n \n /* 离开状态 */\n .met-toast.met-leaving {\n pointer-events: none;\n z-index: 1;\n }\n \n /* 动画关键帧 */\n @keyframes met-rot {\n to {\n transform: rotate(360deg);\n }\n }\n \n /* === 进入动画:初始隐藏态 === */\n .met-anim-slide.met-toast,\n .met-anim-fade.met-toast,\n .met-anim-scale.met-toast,\n .met-anim-bounce.met-toast,\n .met-anim-flip.met-toast,\n .met-anim-rotate.met-toast,\n .met-anim-zoom.met-toast,\n .met-anim-slideUp.met-toast,\n .met-anim-slideDown.met-toast,\n .met-anim-slideLeft.met-toast,\n .met-anim-slideRight.met-toast {\n opacity: 0;\n }\n \n /* === 进入动画:@keyframes 定义 === */\n @keyframes met-slide-in {\n 0% { transform: translateX(80px); opacity: 0; }\n 65% { transform: translateX(-6px); opacity: 1; }\n 100% { transform: translateX(0); opacity: 1; }\n }\n @keyframes met-fade-in {\n 0% { opacity: 0; filter: blur(3px); }\n 100% { opacity: 1; filter: blur(0); }\n }\n @keyframes met-scale-in {\n 0% { transform: scale(0.55); opacity: 0; }\n 65% { transform: scale(1.07); opacity: 1; }\n 100% { transform: scale(1); opacity: 1; }\n }\n @keyframes met-bounce-in {\n 0% { transform: translateY(-80px); opacity: 0; animation-timing-function: ease-in; }\n 45% { transform: translateY(14px); opacity: 1; animation-timing-function: ease-out; }\n 65% { transform: translateY(-12px); animation-timing-function: ease-in; }\n 82% { transform: translateY(4px); animation-timing-function: ease-out; }\n 100% { transform: translateY(0); opacity: 1; }\n }\n @keyframes met-flip-in {\n 0% { transform: perspective(500px) rotateX(-90deg); opacity: 0; }\n 60% { transform: perspective(500px) rotateX(8deg); opacity: 1; }\n 85% { transform: perspective(500px) rotateX(-2deg); }\n 100% { transform: perspective(500px) rotateX(0); opacity: 1; }\n }\n @keyframes met-rotate-in {\n 0% { transform: rotate(-25deg) scale(0.6); opacity: 0; }\n 60% { transform: rotate(4deg) scale(1.05); opacity: 1; }\n 85% { transform: rotate(-1deg) scale(0.98); }\n 100% { transform: rotate(0) scale(1); opacity: 1; }\n }\n @keyframes met-zoom-in {\n 0% { transform: scale(0.1); opacity: 0; }\n 50% { transform: scale(1.12); opacity: 1; }\n 75% { transform: scale(0.94); }\n 100% { transform: scale(1); opacity: 1; }\n }\n @keyframes met-slideUp-in {\n 0% { transform: translateY(60px); opacity: 0; }\n 70% { transform: translateY(-6px); opacity: 1; }\n 100% { transform: translateY(0); opacity: 1; }\n }\n @keyframes met-slideDown-in {\n 0% { transform: translateY(-60px); opacity: 0; }\n 70% { transform: translateY(6px); opacity: 1; }\n 100% { transform: translateY(0); opacity: 1; }\n }\n @keyframes met-slideLeft-in {\n 0% { transform: translateX(-90px); opacity: 0; }\n 65% { transform: translateX(6px); opacity: 1; }\n 100% { transform: translateX(0); opacity: 1; }\n }\n @keyframes met-slideRight-in {\n 0% { transform: translateX(90px); opacity: 0; }\n 65% { transform: translateX(-6px); opacity: 1; }\n 100% { transform: translateX(0); opacity: 1; }\n }\n \n /* === 进入动画:绑定到 .met-show === */\n .met-anim-slide.met-toast.met-show { animation: met-slide-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n .met-anim-fade.met-toast.met-show { animation: met-fade-in 0.50s ease forwards; }\n .met-anim-scale.met-toast.met-show { animation: met-scale-in 0.45s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }\n .met-anim-bounce.met-toast.met-show { animation: met-bounce-in 0.65s ease forwards; }\n .met-anim-flip.met-toast.met-show { animation: met-flip-in 0.50s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n .met-anim-rotate.met-toast.met-show { animation: met-rotate-in 0.50s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n .met-anim-zoom.met-toast.met-show { animation: met-zoom-in 0.50s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }\n .met-anim-slideUp.met-toast.met-show { animation: met-slideUp-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n .met-anim-slideDown.met-toast.met-show { animation: met-slideDown-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n .met-anim-slideLeft.met-toast.met-show { animation: met-slideLeft-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n .met-anim-slideRight.met-toast.met-show { animation: met-slideRight-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n \n /* 响应式设计 */\n @media (prefers-reduced-motion: reduce) {\n .met-toast {\n transition: opacity 0.15s !important;\n }\n \n .met-toast.met-show {\n animation: none !important;\n opacity: 1 !important;\n }\n \n .met-spin {\n animation-duration: 2.5s !important;\n }\n }\n \n @media (max-width: 480px) {\n .met-container {\n padding: 12px !important;\n }\n \n .met-toast {\n width: 100% !important;\n min-width: 0 !important;\n }\n }\n \n /* 暗色主题特定样式 */\n .met-toast.met-theme-dark {\n background: rgba(28, 32, 40, 0.94);\n color: #e6e8eb;\n border-color: rgba(255, 255, 255, 0.08);\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.6), \n 0 4px 14px -4px rgba(0, 0, 0, 0.4);\n }\n \n .met-toast.met-theme-dark:hover {\n box-shadow: 0 14px 48px -8px rgba(0, 0, 0, 0.6), \n 0 6px 18px -4px rgba(0, 0, 0, 0.4) !important;\n }\n \n .met-toast.met-theme-dark .met-close:hover {\n background: rgba(255, 255, 255, 0.08);\n }\n \n .met-toast.met-theme-dark .met-progress,\n .met-toast.met-theme-dark .met-progress-v {\n background: rgba(255, 255, 255, 0.08);\n }\n \n /* 亮色主题特定样式 */\n .met-toast.met-theme-light {\n background: rgba(255, 255, 255, 0.96);\n color: #1f2937;\n border-color: rgba(0, 0, 0, 0.06);\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.18), \n 0 4px 14px -4px rgba(0, 0, 0, 0.08);\n }\n \n .met-toast.met-theme-light:hover {\n box-shadow: 0 14px 48px -10px rgba(0, 0, 0, 0.22), \n 0 6px 18px -4px rgba(0, 0, 0, 0.10) !important;\n }\n \n .met-toast.met-theme-light .met-close:hover {\n background: rgba(0, 0, 0, 0.06);\n }\n \n .met-toast.met-theme-light .met-progress,\n .met-toast.met-theme-light .met-progress-v {\n background: rgba(0, 0, 0, 0.06);\n }\n \n /* 自定义主题支持 */\n .met-toast[data-theme] {\n --met-bg: var(--met-theme-bg);\n --met-text: var(--met-theme-text);\n --met-border: var(--met-theme-border);\n --met-shadow: var(--met-theme-shadow);\n }\n \n /* 动画性能优化 */\n .met-toast {\n backface-visibility: hidden;\n -webkit-backface-visibility: hidden;\n perspective: 1000;\n }\n \n /* 滚动条样式 */\n .met-container::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n \n .met-container::-webkit-scrollbar-track {\n background: transparent;\n }\n \n .met-container::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.2);\n border-radius: 3px;\n }\n \n .met-container::-webkit-scrollbar-thumb:hover {\n background: rgba(0, 0, 0, 0.3);\n }\n \n /* 打印样式 */\n @media print {\n .met-container {\n display: none !important;\n }\n .met-toast {\n display: none !important;\n }\n }\n \n /* 高对比度模式 */\n @media (forced-colors: active) {\n .met-toast {\n border: 2px solid ButtonText;\n }\n \n .met-close {\n border: 1px solid ButtonText;\n }\n }\n \n /* 焦点样式 */\n .met-toast:focus-visible {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n }\n \n .met-close:focus-visible {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n }\n \n /* 禁用状态 */\n .met-toast:disabled,\n .met-toast[disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n }\n \n /* 加载状态 */\n .met-toast.met-loading {\n cursor: wait;\n }\n \n /* 成功状态 */\n .met-toast.met-success {\n border-left: 4px solid #10b981;\n }\n \n /* 错误状态 */\n .met-toast.met-error {\n border-left: 4px solid #ef4444;\n }\n \n /* 警告状态 */\n .met-toast.met-warning {\n border-left: 4px solid #f59e0b;\n }\n \n /* 信息状态 */\n .met-toast.met-info {\n border-left: 4px solid #3b82f6;\n }\n \n /* 加载状态 */\n .met-toast.met-loading {\n border-left: 4px solid #6366f1;\n }\n \n /* 进度条动画 */\n .met-bar,\n .met-bar-v {\n transition: transform 0.1s linear;\n }\n \n /* 容器动画 */\n .met-container {\n transition: all 0.3s ease;\n }\n \n /* Toast进入动画 */\n .met-toast.met-enter {\n animation: met-enter 0.3s ease forwards;\n }\n \n /* Toast离开动画 */\n .met-toast.met-leave {\n animation: met-leave 0.3s ease forwards;\n }\n \n @keyframes met-enter {\n from {\n opacity: 0;\n transform: translateY(-20px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n \n @keyframes met-leave {\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(-20px);\n }\n }\n \n /* 响应式字体大小 */\n @media (max-width: 768px) {\n .met-toast {\n font-size: 13px;\n }\n \n .met-title {\n font-size: 13px;\n }\n \n .met-message {\n font-size: 12px;\n }\n }\n \n @media (max-width: 480px) {\n .met-toast {\n font-size: 12px;\n padding: 12px 14px;\n }\n \n .met-title {\n font-size: 12px;\n }\n \n .met-message {\n font-size: 11px;\n }\n }\n \n /* 无障碍支持 */\n .met-toast[role=\"alert\"] {\n /* 警告类型Toast的特殊样式 */\n }\n \n .met-toast[role=\"status\"] {\n /* 状态类型Toast的特殊样式 */\n }\n \n /* 高对比度模式增强 */\n @media (prefers-contrast: high) {\n .met-toast {\n border-width: 2px;\n }\n \n .met-close {\n border: 1px solid currentColor;\n }\n }\n \n /* 暗色模式自动检测 */\n @media (prefers-color-scheme: dark) {\n .met-theme-auto .met-toast {\n background: rgba(28, 32, 40, 0.94);\n color: #e6e8eb;\n border-color: rgba(255, 255, 255, 0.08);\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.6), \n 0 4px 14px -4px rgba(0, 0, 0, 0.4);\n }\n \n .met-theme-auto .met-toast:hover {\n box-shadow: 0 14px 48px -8px rgba(0, 0, 0, 0.6), \n 0 6px 18px -4px rgba(0, 0, 0, 0.4) !important;\n }\n \n .met-theme-auto .met-close:hover {\n background: rgba(255, 255, 255, 0.08);\n }\n \n .met-theme-auto .met-progress,\n .met-theme-auto .met-progress-v {\n background: rgba(255, 255, 255, 0.08);\n }\n }\n \n /* 亮色模式自动检测 */\n @media (prefers-color-scheme: light) {\n .met-theme-auto .met-toast {\n background: rgba(255, 255, 255, 0.96);\n color: #1f2937;\n border-color: rgba(0, 0, 0, 0.06);\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.18), \n 0 4px 14px -4px rgba(0, 0, 0, 0.08);\n }\n \n .met-theme-auto .met-toast:hover {\n box-shadow: 0 14px 48px -10px rgba(0, 0, 0, 0.22), \n 0 6px 18px -4px rgba(0, 0, 0, 0.10) !important;\n }\n \n .met-theme-auto .met-close:hover {\n background: rgba(0, 0, 0, 0.06);\n }\n \n .met-theme-auto .met-progress,\n .met-theme-auto .met-progress-v {\n background: rgba(0, 0, 0, 0.06);\n }\n }\n \n /* 动画性能优化 */\n .met-toast {\n transform: translateZ(0);\n -webkit-transform: translateZ(0);\n }\n \n /* 触摸设备优化 */\n @media (hover: none) {\n .met-toast:hover {\n box-shadow: inherit;\n }\n }\n \n /* 滚动时固定位置 */\n .met-container {\n position: fixed;\n z-index: 9999;\n }\n \n /* 全屏模式 */\n :fullscreen .met-container {\n z-index: 2147483647;\n }\n \n /* 画中画模式 */\n :picture-in-picture .met-container {\n z-index: 2147483647;\n }\n \n /* 安全区域适配 */\n @supports (padding: max(0px)) {\n .met-container {\n padding: max(24px, env(safe-area-inset-top)) \n max(24px, env(safe-area-inset-right)) \n max(24px, env(safe-area-inset-bottom)) \n max(24px, env(safe-area-inset-left));\n }\n }\n \n /* 暗色模式安全区域 */\n @media (prefers-color-scheme: dark) {\n @supports (padding: max(0px)) {\n .met-container {\n padding: max(24px, env(safe-area-inset-top)) \n max(24px, env(safe-area-inset-right)) \n max(24px, env(safe-area-inset-bottom)) \n max(24px, env(safe-area-inset-left));\n }\n }\n }\n \n /* 高分辨率屏幕优化 */\n @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {\n .met-toast {\n border-width: 0.5px;\n }\n }\n \n /* 触摸设备优化 */\n @media (hover: none) and (pointer: coarse) {\n .met-toast {\n min-height: 48px;\n }\n \n .met-close {\n min-width: 48px;\n min-height: 48px;\n }\n }\n \n /* 键盘导航优化 */\n .met-toast:focus {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n }\n \n .met-toast:focus:not(:focus-visible) {\n outline: none;\n }\n \n .met-toast:focus-visible {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n }\n \n /* 减少动画模式 */\n @media (prefers-reduced-motion: reduce) {\n .met-toast {\n transition: opacity 0.15s ease !important;\n animation: none !important;\n }\n \n .met-bar,\n .met-bar-v {\n transition: none !important;\n }\n \n .met-container {\n transition: none !important;\n }\n }\n \n /* 高对比度模式 */\n @media (prefers-contrast: high) {\n .met-toast {\n border-width: 3px;\n border-style: solid;\n }\n \n .met-close {\n border: 2px solid currentColor;\n border-radius: 4px;\n }\n \n .met-progress,\n .met-progress-v {\n height: 4px;\n }\n \n .met-bar,\n .met-bar-v {\n height: 100%;\n }\n }\n \n /* 低分辨率屏幕优化 */\n @media (max-resolution: 1dppx) {\n .met-toast {\n border-width: 1px;\n }\n }\n \n /* 触摸设备优化 */\n @media (hover: none) and (pointer: coarse) {\n .met-toast {\n min-height: 52px;\n padding: 16px 18px;\n }\n \n .met-close {\n min-width: 52px;\n min-height: 52px;\n padding: 8px;\n }\n \n .met-icon {\n width: 28px;\n height: 28px;\n }\n }\n \n /* 大屏幕优化 */\n @media (min-width: 1200px) {\n .met-toast {\n width: 400px;\n }\n }\n \n /* 超大屏幕优化 */\n @media (min-width: 1920px) {\n .met-toast {\n width: 440px;\n }\n }\n \n /* 小屏幕优化 */\n @media (max-width: 320px) {\n .met-toast {\n width: 100%;\n min-width: 0;\n padding: 12px 14px;\n }\n \n .met-container {\n padding: 8px;\n }\n }\n \n /* 横屏优化 */\n @media (orientation: landscape) and (max-height: 500px) {\n .met-container {\n padding: 12px 24px;\n }\n \n .met-toast {\n min-height: 44px;\n padding: 10px 14px;\n }\n }\n \n /* 竖屏优化 */\n @media (orientation: portrait) and (max-width: 500px) {\n .met-container {\n padding: 12px;\n }\n \n .met-toast {\n width: 100%;\n min-width: 0;\n }\n }\n \n /* 无障碍支持 */\n .met-toast[aria-live=\"assertive\"] {\n /* 紧急通知样式 */\n }\n \n .met-toast[aria-live=\"polite\"] {\n /* 普通通知样式 */\n }\n \n /* 焦点陷阱 */\n .met-toast:focus-within {\n /* 包含焦点元素的Toast样式 */\n }\n \n /* 加载状态 */\n .met-toast[aria-busy=\"true\"] {\n cursor: wait;\n }\n \n /* 禁用状态 */\n .met-toast[aria-disabled=\"true\"] {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n }\n \n /* 隐藏状态 */\n .met-toast[aria-hidden=\"true\"] {\n display: none;\n }\n \n /* 展开状态 */\n .met-toast[aria-expanded=\"true\"] {\n /* 展开状态样式 */\n }\n \n /* 选中状态 */\n .met-toast[aria-selected=\"true\"] {\n /* 选中状态样式 */\n }\n \n /* 按下状态 */\n .met-toast:active {\n transform: scale(0.98);\n }\n \n /* 加载状态动画 */\n .met-toast.met-loading::after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: linear-gradient(\n 90deg,\n transparent,\n rgba(255, 255, 255, 0.1),\n transparent\n );\n animation: met-loading 1.5s infinite;\n }\n \n @keyframes met-loading {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(100%);\n }\n }\n \n /* 成功状态动画 */\n .met-toast.met-success::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n background: #10b981;\n border-radius: 12px 0 0 12px;\n animation: met-success 0.3s ease;\n }\n \n @keyframes met-success {\n from {\n transform: scaleY(0);\n }\n to {\n transform: scaleY(1);\n }\n }\n \n /* 错误状态动画 */\n .met-toast.met-error::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n background: #ef4444;\n border-radius: 12px 0 0 12px;\n animation: met-error 0.3s ease;\n }\n \n @keyframes met-error {\n from {\n transform: scaleY(0);\n }\n to {\n transform: scaleY(1);\n }\n }\n \n /* 警告状态动画 */\n .met-toast.met-warning::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n background: #f59e0b;\n border-radius: 12px 0 0 12px;\n animation: met-warning 0.3s ease;\n }\n \n @keyframes met-warning {\n from {\n transform: scaleY(0);\n }\n to {\n transform: scaleY(1);\n }\n }\n \n /* 信息状态动画 */\n .met-toast.met-info::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n background: #3b82f6;\n border-radius: 12px 0 0 12px;\n animation: met-info 0.3s ease;\n }\n \n @keyframes met-info {\n from {\n transform: scaleY(0);\n }\n to {\n transform: scaleY(1);\n }\n }\n \n /* 加载状态动画 */\n .met-toast.met-loading::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n background: #6366f1;\n border-radius: 12px 0 0 12px;\n animation: met-loading-bar 1s infinite;\n }\n \n @keyframes met-loading-bar {\n 0% {\n transform: scaleY(0);\n transform-origin: top;\n }\n 50% {\n transform: scaleY(1);\n transform-origin: top;\n }\n 51% {\n transform-origin: bottom;\n }\n 100% {\n transform: scaleY(0);\n transform-origin: bottom;\n }\n }\n \n /* 进度条脉冲动画 */\n .met-bar,\n .met-bar-v {\n animation: met-pulse 2s infinite;\n }\n \n @keyframes met-pulse {\n 0%, 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.8;\n }\n }\n \n /* Toast堆叠效果 */\n .met-toast + .met-toast {\n margin-top: 8px;\n }\n \n /* Toast分组 */\n .met-toast-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n \n /* Toast头部 */\n .met-toast-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 8px;\n }\n \n /* Toast底部 */\n .met-toast-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n margin-top: 12px;\n }\n \n /* Toast操作按钮 */\n .met-toast-action {\n background: transparent;\n border: 1px solid currentColor;\n padding: 6px 12px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n opacity: 0.7;\n transition: opacity 0.2s;\n }\n \n .met-toast-action:hover {\n opacity: 1;\n }\n \n /* Toast进度文本 */\n .met-toast-progress-text {\n font-size: 12px;\n opacity: 0.7;\n margin-left: 8px;\n }\n \n /* Toast时间戳 */\n .met-toast-timestamp {\n font-size: 11px;\n opacity: 0.5;\n margin-left: auto;\n }\n \n /* Toast头像 */\n .met-toast-avatar {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n object-fit: cover;\n flex-shrink: 0;\n }\n \n /* Toast图片 */\n .met-toast-image {\n max-width: 100%;\n max-height: 200px;\n border-radius: 8px;\n margin-top: 8px;\n object-fit: cover;\n }\n \n /* Toast视频 */\n .met-toast-video {\n max-width: 100%;\n max-height: 200px;\n border-radius: 8px;\n margin-top: 8px;\n }\n \n /* Toast音频 */\n .met-toast-audio {\n width: 100%;\n margin-top: 8px;\n }\n \n /* Toast代码块 */\n .met-toast-code {\n background: rgba(0, 0, 0, 0.05);\n padding: 8px 12px;\n border-radius: 6px;\n font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;\n font-size: 12px;\n margin-top: 8px;\n overflow-x: auto;\n }\n \n .met-theme-dark .met-toast-code {\n background: rgba(255, 255, 255, 0.05);\n }\n \n /* Toast引用 */\n .met-toast-quote {\n border-left: 3px solid currentColor;\n padding-left: 12px;\n margin-top: 8px;\n opacity: 0.8;\n }\n \n /* Toast列表 */\n .met-toast-list {\n margin: 8px 0 0 0;\n padding-left: 20px;\n }\n \n .met-toast-list li {\n margin-bottom: 4px;\n }\n \n /* Toast表格 */\n .met-toast-table {\n width: 100%;\n border-collapse: collapse;\n margin-top: 8px;\n font-size: 12px;\n }\n \n .met-toast-table th,\n .met-toast-table td {\n border: 1px solid rgba(0, 0, 0, 0.1);\n padding: 6px 8px;\n text-align: left;\n }\n \n .met-theme-dark .met-toast-table th,\n .met-theme-dark .met-toast-table td {\n border-color: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-table th {\n background: rgba(0, 0, 0, 0.05);\n font-weight: 600;\n }\n \n .met-theme-dark .met-toast-table th {\n background: rgba(255, 255, 255, 0.05);\n }\n \n /* Toast分割线 */\n .met-toast-divider {\n height: 1px;\n background: rgba(0, 0, 0, 0.1);\n margin: 12px 0;\n }\n \n .met-theme-dark .met-toast-divider {\n background: rgba(255, 255, 255, 0.1);\n }\n \n /* Toast标签 */\n .met-toast-tag {\n display: inline-block;\n background: rgba(0, 0, 0, 0.05);\n padding: 2px 8px;\n border-radius: 4px;\n font-size: 11px;\n margin-right: 4px;\n margin-bottom: 4px;\n }\n \n .met-theme-dark .met-toast-tag {\n background: rgba(255, 255, 255, 0.05);\n }\n \n /* Toast徽章 */\n .met-toast-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: #3b82f6;\n color: white;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n min-width: 20px;\n height: 20px;\n }\n \n /* Toast进度环 */\n .met-toast-progress-ring {\n width: 40px;\n height: 40px;\n transform: rotate(-90deg);\n }\n \n .met-toast-progress-ring circle {\n fill: none;\n stroke-width: 3;\n stroke-linecap: round;\n }\n \n .met-toast-progress-ring .met-progress-ring-bg {\n stroke: rgba(0, 0, 0, 0.1);\n }\n \n .met-theme-dark .met-toast-progress-ring .met-progress-ring-bg {\n stroke: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-progress-ring .met-progress-ring-fill {\n stroke: #3b82f6;\n stroke-dasharray: 100;\n stroke-dashoffset: 100;\n transition: stroke-dashoffset 0.3s ease;\n }\n \n /* Toast滑块 */\n .met-toast-slider {\n width: 100%;\n height: 4px;\n background: rgba(0, 0, 0, 0.1);\n border-radius: 2px;\n margin-top: 8px;\n position: relative;\n }\n \n .met-theme-dark .met-toast-slider {\n background: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-slider-fill {\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n background: #3b82f6;\n border-radius: 2px;\n transition: width 0.3s ease;\n }\n \n /* Toast开关 */\n .met-toast-switch {\n position: relative;\n display: inline-block;\n width: 36px;\n height: 20px;\n margin-top: 8px;\n }\n \n .met-toast-switch input {\n opacity: 0;\n width: 0;\n height: 0;\n }\n \n .met-toast-switch-slider {\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.1);\n border-radius: 20px;\n transition: 0.3s;\n }\n \n .met-theme-dark .met-toast-switch-slider {\n background: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-switch-slider:before {\n content: '';\n position: absolute;\n height: 16px;\n width: 16px;\n left: 2px;\n bottom: 2px;\n background: white;\n border-radius: 50%;\n transition: 0.3s;\n }\n \n .met-toast-switch input:checked + .met-toast-switch-slider {\n background: #3b82f6;\n }\n \n .met-toast-switch input:checked + .met-toast-switch-slider:before {\n transform: translateX(16px);\n }\n \n /* Toast复选框 */\n .met-toast-checkbox {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n cursor: pointer;\n }\n \n .met-toast-checkbox input {\n width: 16px;\n height: 16px;\n cursor: pointer;\n }\n \n /* Toast单选框 */\n .met-toast-radio {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n cursor: pointer;\n }\n \n .met-toast-radio input {\n width: 16px;\n height: 16px;\n cursor: pointer;\n }\n \n /* Toast输入框 */\n .met-toast-input {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 6px;\n font-size: 13px;\n margin-top: 8px;\n background: transparent;\n color: inherit;\n }\n \n .met-theme-dark .met-toast-input {\n border-color: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-input:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\n }\n \n /* Toast文本域 */\n .met-toast-textarea {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 6px;\n font-size: 13px;\n margin-top: 8px;\n background: transparent;\n color: inherit;\n resize: vertical;\n min-height: 80px;\n }\n \n .met-theme-dark .met-toast-textarea {\n border-color: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-textarea:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\n }\n \n /* Toast选择框 */\n .met-toast-select {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 6px;\n font-size: 13px;\n margin-top: 8px;\n background: transparent;\n color: inherit;\n cursor: pointer;\n }\n \n .met-theme-dark .met-toast-select {\n border-color: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-select:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\n }\n \n /* Toast下拉菜单 */\n .met-toast-dropdown {\n position: relative;\n display: inline-block;\n }\n \n .met-toast-dropdown-content {\n display: none;\n position: absolute;\n background: ${theme.bg};\n min-width: 160px;\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n z-index: 1;\n padding: 8px 0;\n margin-top: 4px;\n }\n \n .met-theme-dark .met-toast-dropdown-content {\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);\n }\n \n .met-toast-dropdown:hover .met-toast-dropdown-content {\n display: block;\n }\n \n .met-toast-dropdown-item {\n padding: 8px 16px;\n cursor: pointer;\n font-size: 13px;\n }\n \n .met-toast-dropdown-item:hover {\n background: rgba(0, 0, 0, 0.05);\n }\n \n .met-theme-dark .met-toast-dropdown-item:hover {\n background: rgba(255, 255, 255, 0.05);\n }\n \n /* Toast工具提示 */\n .met-toast-tooltip {\n position: relative;\n display: inline-block;\n }\n \n .met-toast-tooltip .met-toast-tooltip-text {\n visibility: hidden;\n width: 120px;\n background: ${theme.bg};\n color: ${theme.text};\n text-align: center;\n border-radius: 6px;\n padding: 6px 8px;\n position: absolute;\n z-index: 1;\n bottom: 125%;\n left: 50%;\n margin-left: -60px;\n opacity: 0;\n transition: opacity 0.3s;\n font-size: 12px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n }\n \n .met-theme-dark .met-toast-tooltip .met-toast-tooltip-text {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n }\n \n .met-toast-tooltip:hover .met-toast-tooltip-text {\n visibility: visible;\n opacity: 1;\n }\n \n /* Toast弹出框 */\n .met-toast-popover {\n position: relative;\n display: inline-block;\n }\n \n .met-toast-popover .met-toast-popover-content {\n visibility: hidden;\n background: ${theme.bg};\n color: ${theme.text};\n border-radius: 8px;\n padding: 12px 16px;\n position: absolute;\n z-index: 1;\n bottom: 125%;\n left: 50%;\n transform: translateX(-50%);\n opacity: 0;\n transition: opacity 0.3s;\n min-width: 200px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);\n }\n \n .met-theme-dark .met-toast-popover .met-toast-popover-content {\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\n }\n \n .met-toast-popover:hover .met-toast-popover-content {\n visibility: visible;\n opacity: 1;\n }\n \n /* Toast模态框 */\n .met-toast-modal {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10000;\n }\n \n .met-toast-modal-content {\n background: ${theme.bg};\n color: ${theme.text};\n border-radius: 12px;\n padding: 24px;\n max-width: 500px;\n width: 90%;\n max-height: 80vh;\n overflow-y: auto;\n }\n \n /* Toast抽屉 */\n .met-toast-drawer {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.5);\n z-index: 10000;\n }\n \n .met-toast-drawer-content {\n position: absolute;\n top: 0;\n right: 0;\n width: 300px;\n height: 100%;\n background: ${theme.bg};\n color: ${theme.text};\n padding: 24px;\n transform: translateX(100%);\n transition: transform 0.3s ease;\n }\n \n .met-toast-drawer.open .met-toast-drawer-content {\n transform: translateX(0);\n }\n \n /* Toast通知栏 */\n .met-toast-notification-bar {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n background: ${theme.bg};\n color: ${theme.text};\n padding: 12px 24px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n z-index: 9999;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n }\n \n /* Toast状态栏 */\n .met-toast-status-bar {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n background: ${theme.bg};\n color: ${theme.text};\n padding: 8px 24px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n z-index: 9999;\n font-size: 12px;\n box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.1);\n }\n `;\n};\n\n/**\n * 注入样式\n * @param {Object} theme - 主题配置\n */\nexport const injectStyles = (theme = THEMES.light) => {\n // 检查是否在浏览器环境\n if (typeof document === 'undefined') return;\n \n // 检查是否已注入\n if (styleElement && document.getElementById('metona-toast-styles')) {\n return;\n }\n \n // 生成CSS\n const css = generateCSS(theme);\n \n // 创建样式元素\n styleElement = document.createElement('style');\n styleElement.id = 'metona-toast-styles';\n styleElement.textContent = css.replace(/\\s+/g, ' ');\n \n // 添加到文档头\n document.head.appendChild(styleElement);\n \n // 缓存样式\n injectedStyles = css;\n};\n\n/**\n * 更新样式\n * @param {Object} theme - 新主题配置\n */\nexport const updateStyles = (theme) => {\n if (!styleElement) {\n injectStyles(theme);\n return;\n }\n \n const css = generateCSS(theme);\n styleElement.textContent = css.replace(/\\s+/g, ' ');\n injectedStyles = css;\n};\n\n/**\n * 移除样式\n */\nexport const removeStyles = () => {\n if (styleElement && styleElement.parentNode) {\n styleElement.parentNode.removeChild(styleElement);\n }\n \n styleElement = null;\n injectedStyles = null;\n};\n\n/**\n * 获取当前样式\n * @returns {string|null} 当前CSS字符串\n */\nexport const getStyles = () => {\n return injectedStyles;\n};\n\n/**\n * 检查样式是否已注入\n * @returns {boolean} 是否已注入\n */\nexport const isStylesInjected = () => {\n return !!styleElement && !!document.getElementById('metona-toast-styles');\n};\n\n/**\n * 重置样式\n */\nexport const resetStyles = () => {\n removeStyles();\n injectStyles();\n};\n\n/**\n * 添加自定义CSS\n * @param {string} css - CSS字符串\n */\nexport const addCustomCSS = (css) => {\n if (!styleElement) {\n injectStyles();\n }\n \n const customStyle = document.createElement('style');\n customStyle.id = 'metona-toast-custom-styles';\n customStyle.textContent = css;\n document.head.appendChild(customStyle);\n};\n\n/**\n * 移除自定义CSS\n */\nexport const removeCustomCSS = () => {\n const customStyle = document.getElementById('metona-toast-custom-styles');\n if (customStyle && customStyle.parentNode) {\n customStyle.parentNode.removeChild(customStyle);\n }\n};\n\n/**\n * 生成主题变量\n * @param {Object} theme - 主题配置\n * @returns {string} CSS变量字符串\n */\nexport const generateThemeVariables = (theme) => {\n return `\n :root {\n --met-theme-bg: ${theme.bg};\n --met-theme-text: ${theme.text};\n --met-theme-border: ${theme.border};\n --met-theme-shadow: ${theme.shadow};\n --met-theme-hover-shadow: ${theme.hoverShadow};\n --met-theme-progress-bg: ${theme.progressBg};\n --met-theme-close-hover-bg: ${theme.closeHoverBg};\n }\n `;\n};\n\n/**\n * 应用主题变量\n * @param {Object} theme - 主题配置\n */\nexport const applyThemeVariables = (theme) => {\n const css = generateThemeVariables(theme);\n addCustomCSS(css);\n};\n\n/**\n * 清除主题变量\n */\nexport const clearThemeVariables = () => {\n removeCustomCSS();\n};\n\n/**\n * 获取系统主题\n * @returns {string} 系统主题\n */\nexport const getSystemTheme = () => {\n if (typeof window === 'undefined') return 'light';\n \n return window.matchMedia && \n window.matchMedia('(prefers-color-scheme: dark)').matches \n ? 'dark' \n : 'light';\n};\n\n/**\n * 监听系统主题变化\n * @param {Function} callback - 回调函数\n * @returns {Function} 取消监听函数\n */\nexport const watchSystemTheme = (callback) => {\n if (typeof window === 'undefined' || !window.matchMedia) {\n return () => {};\n }\n \n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n \n const handler = (e) => {\n callback(e.matches ? 'dark' : 'light');\n };\n \n mediaQuery.addEventListener('change', handler);\n \n return () => {\n mediaQuery.removeEventListener('change', handler);\n };\n};\n\n/**\n * 自动应用系统主题\n * @returns {Function} 取消监听函数\n */\nexport const autoApplySystemTheme = () => {\n const applyTheme = (theme) => {\n updateStyles(THEMES[theme]);\n applyThemeVariables(THEMES[theme]);\n };\n \n // 应用当前系统主题\n applyTheme(getSystemTheme());\n \n // 监听系统主题变化\n return watchSystemTheme(applyTheme);\n};\n","/**\n * MetonaToast Themes - 主题管理\n * @module themes\n * @version 2.0.0\n * @description 主题系统、自定义主题和主题切换\n */\n\nimport { THEMES } from './constants.js';\nimport { prefersDark } from './utils.js';\n\n// 当前主题状态\nlet currentTheme = 'auto';\nlet themeListeners = new Set();\nlet systemThemeMediaQuery = null;\nlet systemThemeListener = null;\n\n/**\n * 获取系统主题\n * @returns {string} 系统主题 ('light' 或 'dark')\n */\nexport const getSystemTheme = () => {\n if (typeof window === 'undefined') return 'light';\n return prefersDark() ? 'dark' : 'light';\n};\n\n/**\n * 获取主题(别名)\n * @param {string} theme - 主题名称\n * @returns {string} 解析后的主题\n */\nexport const getTheme = (theme) => {\n return resolveTheme(theme);\n};\n\n/**\n * 解析主题\n * @param {string} theme - 主题名称\n * @returns {string} 解析后的主题\n */\nexport const resolveTheme = (theme) => {\n if (theme === 'auto') {\n // 优先使用用户设置的全局主题,否则使用系统主题\n if (currentTheme && currentTheme !== 'auto') {\n return currentTheme;\n }\n return getSystemTheme();\n }\n return theme;\n};\n\n/**\n * 获取主题配置\n * @param {string} theme - 主题名称\n * @returns {Object} 主题配置\n */\nexport const getThemeConfig = (theme) => {\n const resolved = resolveTheme(theme);\n return THEMES[resolved] || THEMES.light;\n};\n\n/**\n * 应用主题\n * @param {string} theme - 主题名称\n */\nexport const applyTheme = (theme) => {\n currentTheme = theme;\n const resolved = resolveTheme(theme);\n \n // 应用主题到文档\n if (typeof document !== 'undefined') {\n document.documentElement.setAttribute('data-met-theme', resolved);\n document.documentElement.classList.remove('met-theme-light', 'met-theme-dark', 'met-theme-auto');\n document.documentElement.classList.add(`met-theme-${resolved}`);\n \n // 设置CSS变量\n const config = getThemeConfig(theme);\n setThemeVariables(config);\n }\n \n // 通知监听器\n notifyThemeListeners(theme, resolved);\n};\n\n/**\n * 设置主题CSS变量\n * @param {Object} config - 主题配置\n */\nexport const setThemeVariables = (config) => {\n if (typeof document === 'undefined') return;\n \n const root = document.documentElement;\n root.style.setProperty('--met-bg', config.bg);\n root.style.setProperty('--met-text', config.text);\n root.style.setProperty('--met-border', config.border);\n root.style.setProperty('--met-shadow', config.shadow);\n root.style.setProperty('--met-hover-shadow', config.hoverShadow);\n root.style.setProperty('--met-progress-bg', config.progressBg);\n root.style.setProperty('--met-close-hover-bg', config.closeHoverBg);\n \n // 设置颜色变量\n root.style.setProperty('--met-success', '#10b981');\n root.style.setProperty('--met-error', '#ef4444');\n root.style.setProperty('--met-warning', '#f59e0b');\n root.style.setProperty('--met-info', '#3b82f6');\n root.style.setProperty('--met-loading', '#6366f1');\n};\n\n/**\n * 清除主题CSS变量\n */\nexport const clearThemeVariables = () => {\n if (typeof document === 'undefined') return;\n \n const root = document.documentElement;\n const variables = [\n '--met-bg',\n '--met-text',\n '--met-border',\n '--met-shadow',\n '--met-hover-shadow',\n '--met-progress-bg',\n '--met-close-hover-bg',\n '--met-success',\n '--met-error',\n '--met-warning',\n '--met-info',\n '--met-loading',\n ];\n \n variables.forEach((variable) => {\n root.style.removeProperty(variable);\n });\n};\n\n/**\n * 获取当前主题\n * @returns {string} 当前主题\n */\nexport const getCurrentTheme = () => {\n return currentTheme;\n};\n\n/**\n * 获取解析后的主题\n * @returns {string} 解析后的主题\n */\nexport const getResolvedTheme = () => {\n return resolveTheme(currentTheme);\n};\n\n/**\n * 切换主题\n * @param {string} theme - 新主题\n */\nexport const switchTheme = (theme) => {\n applyTheme(theme);\n saveTheme(theme);\n};\n\n/**\n * 切换亮色/暗色主题\n */\nexport const toggleTheme = () => {\n const resolved = getResolvedTheme();\n const newTheme = resolved === 'dark' ? 'light' : 'dark';\n switchTheme(newTheme);\n};\n\n/**\n * 重置为自动主题\n */\nexport const resetToAuto = () => {\n switchTheme('auto');\n};\n\n/**\n * 保存主题到本地存储\n * @param {string} theme - 主题名称\n */\nexport const saveTheme = (theme) => {\n if (typeof localStorage !== 'undefined') {\n try {\n localStorage.setItem('metona-toast-theme', theme);\n } catch (e) {\n console.warn('Failed to save theme:', e);\n }\n }\n};\n\n/**\n * 从本地存储加载主题\n * @returns {string} 主题名称\n */\nexport const loadTheme = () => {\n if (typeof localStorage !== 'undefined') {\n try {\n return localStorage.getItem('metona-toast-theme') || 'auto';\n } catch (e) {\n console.warn('Failed to load theme:', e);\n }\n }\n return 'auto';\n};\n\n/**\n * 初始化主题系统\n */\nexport const initTheme = () => {\n // 加载保存的主题\n const savedTheme = loadTheme();\n applyTheme(savedTheme);\n \n // 监听系统主题变化\n watchSystemTheme();\n};\n\n/**\n * 监听系统主题变化\n */\nexport const watchSystemTheme = () => {\n if (typeof window === 'undefined' || !window.matchMedia) return;\n \n // 移除旧的监听器\n if (systemThemeMediaQuery && systemThemeListener) {\n systemThemeMediaQuery.removeEventListener('change', systemThemeListener);\n }\n \n // 创建新的监听器\n systemThemeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n systemThemeListener = (e) => {\n if (currentTheme === 'auto') {\n applyTheme('auto');\n }\n };\n \n systemThemeMediaQuery.addEventListener('change', systemThemeListener);\n};\n\n/**\n * 停止监听系统主题变化\n */\nexport const unwatchSystemTheme = () => {\n if (systemThemeMediaQuery && systemThemeListener) {\n systemThemeMediaQuery.removeEventListener('change', systemThemeListener);\n systemThemeMediaQuery = null;\n systemThemeListener = null;\n }\n};\n\n/**\n * 添加主题监听器\n * @param {Function} listener - 监听器函数\n * @returns {Function} 移除监听器函数\n */\nexport const addThemeListener = (listener) => {\n themeListeners.add(listener);\n \n return () => {\n themeListeners.delete(listener);\n };\n};\n\n/**\n * 移除主题监听器\n * @param {Function} listener - 监听器函数\n */\nexport const removeThemeListener = (listener) => {\n themeListeners.delete(listener);\n};\n\n/**\n * 通知主题监听器\n * @param {string} theme - 主题名称\n * @param {string} resolved - 解析后的主题\n */\nconst notifyThemeListeners = (theme, resolved) => {\n themeListeners.forEach((listener) => {\n try {\n listener(theme, resolved);\n } catch (e) {\n console.error('Theme listener error:', e);\n }\n });\n};\n\n/**\n * 清除所有主题监听器\n */\nexport const clearThemeListeners = () => {\n themeListeners.clear();\n};\n\n/**\n * 注册自定义主题\n * @param {string} name - 主题名称\n * @param {Object} config - 主题配置\n */\nexport const registerTheme = (name, config) => {\n THEMES[name] = {\n bg: config.bg || THEMES.light.bg,\n text: config.text || THEMES.light.text,\n border: config.border || THEMES.light.border,\n shadow: config.shadow || THEMES.light.shadow,\n hoverShadow: config.hoverShadow || THEMES.light.hoverShadow,\n progressBg: config.progressBg || THEMES.light.progressBg,\n closeHoverBg: config.closeHoverBg || THEMES.light.closeHoverBg,\n };\n};\n\n/**\n * 注销自定义主题\n * @param {string} name - 主题名称\n */\nexport const unregisterTheme = (name) => {\n if (name === 'light' || name === 'dark' || name === 'auto') {\n console.warn('Cannot unregister built-in theme:', name);\n return;\n }\n \n delete THEMES[name];\n};\n\n/**\n * 获取所有主题\n * @returns {Object} 主题映射\n */\nexport const getAllThemes = () => {\n return { ...THEMES };\n};\n\n/**\n * 获取主题名称列表\n * @returns {Array} 主题名称数组\n */\nexport const getThemeNames = () => {\n return Object.keys(THEMES);\n};\n\n/**\n * 检查主题是否存在\n * @param {string} name - 主题名称\n * @returns {boolean} 是否存在\n */\nexport const hasTheme = (name) => {\n return name in THEMES;\n};\n\n/**\n * 获取主题预览\n * @param {string} theme - 主题名称\n * @returns {Object} 主题预览\n */\nexport const getThemePreview = (theme) => {\n const config = getThemeConfig(theme);\n const resolved = resolveTheme(theme);\n \n return {\n name: theme,\n resolved,\n colors: {\n background: config.bg,\n text: config.text,\n border: config.border,\n },\n isDark: resolved === 'dark',\n isLight: resolved === 'light',\n isAuto: theme === 'auto',\n };\n};\n\n/**\n * 生成主题CSS\n * @param {string} theme - 主题名称\n * @returns {string} CSS字符串\n */\nexport const generateThemeCSS = (theme) => {\n const config = getThemeConfig(theme);\n const resolved = resolveTheme(theme);\n \n return `\n .met-theme-${resolved} {\n --met-bg: ${config.bg};\n --met-text: ${config.text};\n --met-border: ${config.border};\n --met-shadow: ${config.shadow};\n --met-hover-shadow: ${config.hoverShadow};\n --met-progress-bg: ${config.progressBg};\n --met-close-hover-bg: ${config.closeHoverBg};\n }\n `;\n};\n\n/**\n * 应用主题CSS\n * @param {string} theme - 主题名称\n */\nexport const applyThemeCSS = (theme) => {\n if (typeof document === 'undefined') return;\n \n const css = generateThemeCSS(theme);\n const styleId = 'metona-toast-theme-css';\n \n // 移除旧样式\n const oldStyle = document.getElementById(styleId);\n if (oldStyle) {\n oldStyle.remove();\n }\n \n // 添加新样式\n const style = document.createElement('style');\n style.id = styleId;\n style.textContent = css;\n document.head.appendChild(style);\n};\n\n/**\n * 移除主题CSS\n */\nexport const removeThemeCSS = () => {\n if (typeof document === 'undefined') return;\n \n const styleId = 'metona-toast-theme-css';\n const style = document.getElementById(styleId);\n if (style) {\n style.remove();\n }\n};\n\n/**\n * 主题工具 — 代理层,直接引用模块函数\n */\nexport const themeUtils = {\n getSystemTheme,\n resolveTheme,\n getThemeConfig,\n applyTheme,\n getCurrentTheme,\n getResolvedTheme,\n switchTheme,\n toggleTheme,\n resetToAuto,\n initTheme,\n watchSystemTheme,\n unwatchSystemTheme,\n addThemeListener,\n removeThemeListener,\n clearThemeListeners,\n registerTheme,\n unregisterTheme,\n getAllThemes,\n getThemeNames,\n hasTheme,\n getThemePreview,\n generateThemeCSS,\n applyThemeCSS,\n removeThemeCSS,\n saveTheme,\n loadTheme,\n};\n\n/**\n * 预设主题\n */\nexport const presetThemes = {\n /**\n * 浅色主题\n */\n light: {\n name: '浅色',\n description: '明亮清晰的主题',\n config: THEMES.light,\n },\n \n /**\n * 深色主题\n */\n dark: {\n name: '深色',\n description: '护眼舒适的暗色主题',\n config: THEMES.dark,\n },\n \n /**\n * 自动主题\n */\n auto: {\n name: '自动',\n description: '跟随系统主题设置',\n config: 'auto',\n },\n \n warm: {\n name: '暖色',\n description: '温馨舒适的暖色主题',\n config: THEMES.warm,\n },\n};\n\n// 注册预设主题\nObject.entries(presetThemes).forEach(([name, theme]) => {\n if (name !== 'auto' && theme.config !== 'auto') {\n THEMES[name] = theme.config;\n }\n});\n\n/**\n * 创建主题管理器\n * @returns {Object} 主题管理器\n */\nexport const createThemeManager = () => {\n return {\n getSystemTheme,\n resolveTheme,\n getThemeConfig,\n applyTheme,\n getCurrentTheme,\n getResolvedTheme,\n switchTheme,\n toggleTheme,\n resetToAuto,\n initTheme,\n watchSystemTheme,\n unwatchSystemTheme,\n addThemeListener,\n removeThemeListener,\n clearThemeListeners,\n registerTheme,\n unregisterTheme,\n getAllThemes,\n getThemeNames,\n hasTheme,\n getThemePreview,\n generateThemeCSS,\n applyThemeCSS,\n removeThemeCSS,\n saveTheme,\n loadTheme,\n };\n};\n\nexport { themeUtils as default };\n","/**\n * MetonaToast i18n - 国际化管理\n * @module i18n\n * @version 2.0.0\n * @description 多语言支持、语言切换和翻译管理\n */\n\nimport { LOCALES } from './constants.js';\n\n// 当前语言状态\nlet currentLocale = 'zh-CN';\nlet localeListeners = new Set();\nlet fallbackLocale = 'zh-CN';\n\n/**\n * 获取当前语言\n * @returns {string} 当前语言\n */\nexport const getCurrentLocale = () => {\n return currentLocale;\n};\n\n/**\n * 设置当前语言\n * @param {string} locale - 语言代码\n */\nexport const setCurrentLocale = (locale) => {\n if (!LOCALES[locale]) {\n console.warn(`Locale \"${locale}\" not found, falling back to \"${fallbackLocale}\"`);\n locale = fallbackLocale;\n }\n \n currentLocale = locale;\n notifyLocaleListeners(locale);\n saveLocale(locale);\n};\n\n/**\n * 获取回退语言\n * @returns {string} 回退语言\n */\nexport const getFallbackLocale = () => {\n return fallbackLocale;\n};\n\n/**\n * 设置回退语言\n * @param {string} locale - 语言代码\n */\nexport const setFallbackLocale = (locale) => {\n if (!LOCALES[locale]) {\n console.warn(`Fallback locale \"${locale}\" not found`);\n return;\n }\n \n fallbackLocale = locale;\n};\n\n/**\n * 翻译函数\n * @param {string} key - 翻译键\n * @param {Object} params - 插值参数\n * @returns {string} 翻译后的字符串\n */\nexport const t = (key, params = {}) => {\n // 尝试当前语言\n const currentTranslation = getTranslation(currentLocale, key);\n if (currentTranslation !== undefined) {\n return interpolate(currentTranslation, params);\n }\n \n // 尝试回退语言\n if (currentLocale !== fallbackLocale) {\n const fallbackTranslation = getTranslation(fallbackLocale, key);\n if (fallbackTranslation !== undefined) {\n return interpolate(fallbackTranslation, params);\n }\n }\n \n // 返回键名\n console.warn(`Translation missing for key \"${key}\" in locale \"${currentLocale}\"`);\n return key;\n};\n\n/**\n * 获取翻译\n * @param {string} locale - 语言代码\n * @param {string} key - 翻译键\n * @returns {string|undefined} 翻译字符串\n */\nconst getTranslation = (locale, key) => {\n const localeData = LOCALES[locale];\n if (!localeData) return undefined;\n \n // 支持嵌套键 (如 'common.close')\n const keys = key.split('.');\n let result = localeData;\n \n for (const k of keys) {\n if (result && typeof result === 'object' && k in result) {\n result = result[k];\n } else {\n return undefined;\n }\n }\n \n return typeof result === 'string' ? result : undefined;\n};\n\n/**\n * 插值函数\n * @param {string} str - 包含占位符的字符串\n * @param {Object} params - 插值参数\n * @returns {string} 插值后的字符串\n */\nconst interpolate = (str, params) => {\n return str.replace(/\\{(\\w+)\\}/g, (match, key) => {\n return params[key] !== undefined ? params[key] : match;\n });\n};\n\n/**\n * 检查翻译是否存在\n * @param {string} key - 翻译键\n * @returns {boolean} 是否存在\n */\nexport const hasTranslation = (key) => {\n return getTranslation(currentLocale, key) !== undefined ||\n getTranslation(fallbackLocale, key) !== undefined;\n};\n\n/**\n * 获取所有翻译\n * @param {string} locale - 语言代码\n * @returns {Object} 翻译对象\n */\nexport const getTranslations = (locale) => {\n return LOCALES[locale] || {};\n};\n\n/**\n * 添加翻译\n * @param {string} locale - 语言代码\n * @param {Object} translations - 翻译对象\n */\nexport const addTranslations = (locale, translations) => {\n if (!LOCALES[locale]) {\n LOCALES[locale] = {};\n }\n \n deepMerge(LOCALES[locale], translations);\n};\n\n/**\n * 深度合并对象\n * @param {Object} target - 目标对象\n * @param {Object} source - 源对象\n * @returns {Object} 合并后的对象\n */\nconst deepMerge = (target, source) => {\n for (const key in source) {\n if (source[key] instanceof Object && key in target && target[key] instanceof Object) {\n deepMerge(target[key], source[key]);\n } else {\n target[key] = source[key];\n }\n }\n return target;\n};\n\n/**\n * 移除翻译\n * @param {string} locale - 语言代码\n * @param {string} key - 翻译键\n */\nexport const removeTranslation = (locale, key) => {\n const localeData = LOCALES[locale];\n if (!localeData) return;\n \n const keys = key.split('.');\n let current = localeData;\n \n for (let i = 0; i < keys.length - 1; i++) {\n if (current[keys[i]] && typeof current[keys[i]] === 'object') {\n current = current[keys[i]];\n } else {\n return;\n }\n }\n \n delete current[keys[keys.length - 1]];\n};\n\n/**\n * 清除翻译\n * @param {string} locale - 语言代码\n */\nexport const clearTranslations = (locale) => {\n if (LOCALES[locale]) {\n LOCALES[locale] = {};\n }\n};\n\n/**\n * 获取支持的语言列表\n * @returns {Array} 语言代码数组\n */\nexport const getSupportedLocales = () => {\n return Object.keys(LOCALES);\n};\n\n/**\n * 检查语言是否支持\n * @param {string} locale - 语言代码\n * @returns {boolean} 是否支持\n */\nexport const isLocaleSupported = (locale) => {\n return locale in LOCALES;\n};\n\n/**\n * 获取语言名称\n * @param {string} locale - 语言代码\n * @returns {string} 语言名称\n */\nexport const getLocaleName = (locale) => {\n const names = {\n 'zh-CN': '简体中文',\n 'zh-TW': '繁體中文',\n 'en-US': 'English (US)',\n 'en-GB': 'English (UK)',\n 'ja': '日本語',\n 'ko': '한국어',\n 'fr': 'Français',\n 'de': 'Deutsch',\n 'es': 'Español',\n 'pt': 'Português',\n 'ru': 'Русский',\n 'ar': 'العربية',\n 'hi': 'हिन्दी',\n 'th': 'ไทย',\n 'vi': 'Tiếng Việt',\n 'id': 'Bahasa Indonesia',\n 'ms': 'Bahasa Melayu',\n 'tr': 'Türkçe',\n 'it': 'Italiano',\n 'nl': 'Nederlands',\n 'pl': 'Polski',\n 'uk': 'Українська',\n 'cs': 'Čeština',\n 'sv': 'Svenska',\n 'da': 'Dansk',\n 'fi': 'Suomi',\n 'nb': 'Norsk',\n 'el': 'Ελληνικά',\n 'he': 'עברית',\n 'hu': 'Magyar',\n 'ro': 'Română',\n 'bg': 'Български',\n 'hr': 'Hrvatski',\n 'sk': 'Slovenčina',\n 'sl': 'Slovenščina',\n 'et': 'Eesti',\n 'lv': 'Latviešu',\n 'lt': 'Lietuvių',\n 'ca': 'Català',\n 'gl': 'Galego',\n 'eu': 'Euskara',\n 'cy': 'Cymraeg',\n 'ga': 'Gaeilge',\n 'mt': 'Malti',\n 'is': 'Íslenska',\n 'mk': 'Македонски',\n 'sq': 'Shqip',\n 'sr': 'Српски',\n 'bs': 'Bosanski',\n 'me': 'Crnogorski',\n 'ka': 'ქართული',\n 'hy': 'Հայերեն',\n 'az': 'Azərbaycan',\n 'uz': \"O'zbek\",\n 'kk': 'Қазақ',\n 'ky': 'Кыргыз',\n 'tg': 'Тоҷикӣ',\n 'tk': 'Türkmen',\n 'mn': 'Монгол',\n 'ne': 'नेपाली',\n 'si': 'සිංහල',\n 'my': 'မြန်မာ',\n 'km': 'ខ្មែរ',\n 'lo': 'ລາວ',\n 'am': 'አማርኛ',\n 'sw': 'Kiswahili',\n 'yo': 'Yorùbá',\n 'ig': 'Igbo',\n 'ha': 'Hausa',\n 'zu': 'isiZulu',\n 'af': 'Afrikaans',\n 'xh': 'isiXhosa',\n 'st': 'Sesotho',\n 'tn': 'Setswana',\n 'ts': 'Xitsonga',\n 'ss': 'siSwati',\n 've': 'Tshivenda',\n 'nr': 'isiNdebele',\n };\n \n return names[locale] || locale;\n};\n\n/**\n * 获取语言方向\n * @param {string} locale - 语言代码\n * @returns {string} 语言方向 ('ltr' 或 'rtl')\n */\nexport const getLocaleDirection = (locale) => {\n const rtlLocales = ['ar', 'he', 'fa', 'ur', 'yi', 'ps', 'sd', 'ug'];\n return rtlLocales.includes(locale) ? 'rtl' : 'ltr';\n};\n\n/**\n * 获取语言信息\n * @param {string} locale - 语言代码\n * @returns {Object} 语言信息\n */\nexport const getLocaleInfo = (locale) => {\n return {\n code: locale,\n name: getLocaleName(locale),\n direction: getLocaleDirection(locale),\n isSupported: isLocaleSupported(locale),\n isCurrent: locale === currentLocale,\n isFallback: locale === fallbackLocale,\n };\n};\n\n/**\n * 获取所有语言信息\n * @returns {Array} 语言信息数组\n */\nexport const getAllLocaleInfo = () => {\n return getSupportedLocales().map(getLocaleInfo);\n};\n\n/**\n * 保存语言到本地存储\n * @param {string} locale - 语言代码\n */\nexport const saveLocale = (locale) => {\n if (typeof localStorage !== 'undefined') {\n try {\n localStorage.setItem('metona-toast-locale', locale);\n } catch (e) {\n console.warn('Failed to save locale:', e);\n }\n }\n};\n\n/**\n * 从本地存储加载语言\n * @returns {string} 语言代码\n */\nexport const loadLocale = () => {\n if (typeof localStorage !== 'undefined') {\n try {\n return localStorage.getItem('metona-toast-locale') || getDefaultLocale();\n } catch (e) {\n console.warn('Failed to load locale:', e);\n }\n }\n return getDefaultLocale();\n};\n\n/**\n * 获取默认语言\n * @returns {string} 语言代码\n */\nexport const getDefaultLocale = () => {\n if (typeof navigator !== 'undefined') {\n // 尝试从浏览器获取语言\n const browserLocale = navigator.language || navigator.userLanguage;\n if (browserLocale && isLocaleSupported(browserLocale)) {\n return browserLocale;\n }\n \n // 尝试语言代码的前两位\n const shortLocale = browserLocale?.split('-')[0];\n if (shortLocale && isLocaleSupported(shortLocale)) {\n return shortLocale;\n }\n }\n \n return fallbackLocale;\n};\n\n/**\n * 初始化国际化系统\n */\nexport const initI18n = () => {\n const savedLocale = loadLocale();\n setCurrentLocale(savedLocale);\n};\n\n/**\n * 切换语言\n * @param {string} locale - 新语言\n */\nexport const switchLocale = (locale) => {\n setCurrentLocale(locale);\n};\n\n/**\n * 添加语言监听器\n * @param {Function} listener - 监听器函数\n * @returns {Function} 移除监听器函数\n */\nexport const addLocaleListener = (listener) => {\n localeListeners.add(listener);\n \n return () => {\n localeListeners.delete(listener);\n };\n};\n\n/**\n * 移除语言监听器\n * @param {Function} listener - 监听器函数\n */\nexport const removeLocaleListener = (listener) => {\n localeListeners.delete(listener);\n};\n\n/**\n * 通知语言监听器\n * @param {string} locale - 语言代码\n */\nconst notifyLocaleListeners = (locale) => {\n localeListeners.forEach((listener) => {\n try {\n listener(locale);\n } catch (e) {\n console.error('Locale listener error:', e);\n }\n });\n};\n\n/**\n * 清除所有语言监听器\n */\nexport const clearLocaleListeners = () => {\n localeListeners.clear();\n};\n\n/**\n * 格式化数字\n * @param {number} number - 数字\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatNumber = (number, options = {}) => {\n try {\n return new Intl.NumberFormat(currentLocale, options).format(number);\n } catch (e) {\n return number.toString();\n }\n};\n\n/**\n * 格式化货币\n * @param {number} amount - 金额\n * @param {string} currency - 货币代码\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatCurrency = (amount, currency = 'USD', options = {}) => {\n try {\n return new Intl.NumberFormat(currentLocale, {\n style: 'currency',\n currency,\n ...options,\n }).format(amount);\n } catch (e) {\n return amount.toString();\n }\n};\n\n/**\n * 格式化百分比\n * @param {number} value - 值\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatPercent = (value, options = {}) => {\n try {\n return new Intl.NumberFormat(currentLocale, {\n style: 'percent',\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n ...options,\n }).format(value / 100);\n } catch (e) {\n return `${value}%`;\n }\n};\n\n/**\n * 格式化日期\n * @param {Date|number|string} date - 日期\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatDate = (date, options = {}) => {\n try {\n const dateObj = date instanceof Date ? date : new Date(date);\n return new Intl.DateTimeFormat(currentLocale, options).format(dateObj);\n } catch (e) {\n return date.toString();\n }\n};\n\n/**\n * 格式化时间\n * @param {Date|number|string} date - 日期\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatTime = (date, options = {}) => {\n return formatDate(date, {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n ...options,\n });\n};\n\n/**\n * 格式化相对时间\n * @param {Date|number|string} date - 日期\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatRelativeTime = (date, options = {}) => {\n try {\n const dateObj = date instanceof Date ? date : new Date(date);\n const now = new Date();\n const diff = dateObj - now;\n \n const rtf = new Intl.RelativeTimeFormat(currentLocale, {\n numeric: 'auto',\n ...options,\n });\n \n const units = [\n { unit: 'year', ms: 365 * 24 * 60 * 60 * 1000 },\n { unit: 'month', ms: 30 * 24 * 60 * 60 * 1000 },\n { unit: 'week', ms: 7 * 24 * 60 * 60 * 1000 },\n { unit: 'day', ms: 24 * 60 * 60 * 1000 },\n { unit: 'hour', ms: 60 * 60 * 1000 },\n { unit: 'minute', ms: 60 * 1000 },\n { unit: 'second', ms: 1000 },\n ];\n \n for (const { unit, ms } of units) {\n if (Math.abs(diff) >= ms || unit === 'second') {\n const value = Math.round(diff / ms);\n return rtf.format(value, unit);\n }\n }\n \n return date.toString();\n } catch (e) {\n return date.toString();\n }\n};\n\n/**\n * 格式化列表\n * @param {Array} list - 列表\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatList = (list, options = {}) => {\n try {\n return new Intl.ListFormat(currentLocale, options).format(list);\n } catch (e) {\n return list.join(', ');\n }\n};\n\n/**\n * 格式化复数\n * @param {number} count - 数量\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatPlural = (count, options = {}) => {\n try {\n return new Intl.PluralRules(currentLocale, options).select(count);\n } catch (e) {\n return count === 1 ? 'one' : 'other';\n }\n};\n\n/**\n * 复数翻译\n * @param {string} key - 翻译键\n * @param {number} count - 数量\n * @param {Object} params - 插值参数\n * @returns {string} 翻译后的字符串\n */\nexport const plural = (key, count, params = {}) => {\n const pluralForm = formatPlural(count);\n const pluralKey = `${key}.${pluralForm}`;\n \n if (hasTranslation(pluralKey)) {\n return t(pluralKey, { ...params, count });\n }\n \n // 尝试通用形式\n if (hasTranslation(key)) {\n return t(key, { ...params, count });\n }\n \n return key;\n};\n\n/**\n * 日期时间格式化选项\n */\nexport const dateTimeFormats = {\n short: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n },\n medium: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n },\n long: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n weekday: 'long',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n time: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n date: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n },\n weekday: {\n weekday: 'long',\n },\n month: {\n month: 'long',\n },\n year: {\n year: 'numeric',\n },\n};\n\n/**\n * 数字格式化选项\n */\nexport const numberFormats = {\n integer: {\n maximumFractionDigits: 0,\n },\n decimal: {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n },\n percent: {\n style: 'percent',\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n },\n currency: {\n style: 'currency',\n currency: 'USD',\n },\n};\n\n/**\n * 国际化工具 — 代理层,直接引用模块函数\n */\nexport const i18nUtils = {\n t,\n plural,\n getCurrentLocale,\n setCurrentLocale,\n switchLocale,\n getFallbackLocale,\n setFallbackLocale,\n hasTranslation,\n getTranslations,\n addTranslations,\n removeTranslation,\n clearTranslations,\n getSupportedLocales,\n isLocaleSupported,\n getLocaleName,\n getLocaleDirection,\n getLocaleInfo,\n getAllLocaleInfo,\n formatNumber,\n formatCurrency,\n formatPercent,\n formatDate,\n formatTime,\n formatRelativeTime,\n formatList,\n formatPlural,\n addLocaleListener,\n removeLocaleListener,\n clearLocaleListeners,\n initI18n,\n saveLocale,\n loadLocale,\n getDefaultLocale,\n};\n\n/**\n * 预设语言包\n */\nexport const presetLocales = {\n 'zh-CN': {\n name: '简体中文',\n nativeName: '简体中文',\n direction: 'ltr',\n translations: LOCALES['zh-CN'],\n },\n \n 'en-US': {\n name: 'English (US)',\n nativeName: 'English (US)',\n direction: 'ltr',\n translations: LOCALES['en-US'],\n },\n};\n\n/**\n * 创建国际化管理器\n * @returns {Object} 国际化管理器\n */\nexport const createI18nManager = () => {\n return {\n t,\n plural,\n getCurrentLocale,\n setCurrentLocale,\n switchLocale,\n getFallbackLocale,\n setFallbackLocale,\n hasTranslation,\n getTranslations,\n addTranslations,\n removeTranslation,\n clearTranslations,\n getSupportedLocales,\n isLocaleSupported,\n getLocaleName,\n getLocaleDirection,\n getLocaleInfo,\n getAllLocaleInfo,\n formatNumber,\n formatCurrency,\n formatPercent,\n formatDate,\n formatTime,\n formatRelativeTime,\n formatList,\n formatPlural,\n addLocaleListener,\n removeLocaleListener,\n clearLocaleListeners,\n initI18n,\n saveLocale,\n loadLocale,\n getDefaultLocale,\n };\n};\n\nexport { i18nUtils as default };\n","/**\n * MetonaToast Core - 核心Toast逻辑\n * @module core\n * @version 2.0.0\n * @description 重构后的核心模块,包含Toast类的优化实现\n */\n\nimport { generateId, escapeHTML } from './utils.js';\nimport { DEFAULTS, ICONS, TYPE_COLORS, THEMES } from './constants.js';\nimport { injectStyles } from './styles.js';\nimport { getTheme, applyTheme } from './themes.js';\nimport { t as i18nT, setCurrentLocale, getLocaleDirection, getCurrentLocale } from './i18n.js';\n\n// 模块级共享容器缓存,所有 Toast 实例共用\n// 使用 Map 而非 WeakMap:document.body 在页面存活期间永不被 GC,\n// 容器需要显式通过 destroy() 清理,WeakMap 在此场景无实际收益。\nconst _containerCache = new Map();\n\n/**\n * 参数标准化工具\n * 支持多种调用方式:\n * - success('message')\n * - success({ message: 'text' })\n * - success({ title: 'title', message: 'text' })\n * - success('message', { duration: 5000 })\n */\nconst normalizeArgs = (args, defaultType = 'default') => {\n const [first, second] = args;\n \n // 情况1: success('message')\n if (typeof first === 'string') {\n return {\n ...second,\n type: second?.type || defaultType,\n message: first,\n };\n }\n \n // 情况2: success({ message: 'text' }) 或 success({ title: 't', message: 'm' })\n if (first && typeof first === 'object') {\n return {\n ...first,\n type: first.type || defaultType,\n };\n }\n \n // 情况3: success() 无参数\n return {\n type: defaultType,\n message: '',\n };\n};\n\n/**\n * Toast类 - 核心通知组件\n */\nclass Toast {\n // 静态钩子系统\n static _hooks = new Map();\n static on(name, fn) {\n if (!this._hooks.has(name)) this._hooks.set(name, []);\n this._hooks.get(name).push(fn);\n return () => this.off(name, fn);\n }\n static off(name, fn) {\n const list = this._hooks.get(name);\n if (list) this._hooks.set(name, list.filter(f => f !== fn));\n }\n static trigger(name, toast) {\n const list = this._hooks.get(name);\n if (list) list.forEach(fn => { try { fn(toast); } catch (e) { console.error('Hook error:', name, e); } });\n }\n\n constructor(opts) {\n this.id = opts.id || generateId();\n this.type = opts.type || 'default';\n this.title = opts.title || '';\n this.message = opts.message ?? opts.content ?? '';\n this.html = opts.html || '';\n this.iconHTML = opts.iconHTML || '';\n this.config = { ...DEFAULTS, ...opts };\n // 防止嵌套对象被多个 toast 实例共享引用\n if (opts.style && typeof opts.style === 'object') {\n this.config.style = { ...opts.style };\n }\n this.el = null;\n this.barEl = null;\n this.rafId = null;\n this.remaining = this.config.duration;\n this.startedAt = 0;\n this.paused = false;\n this.closing = false;\n this._cleanups = [];\n this.group = opts.group || null;\n }\n\n _palette() {\n const theme = getTheme(this.config.theme);\n const c = TYPE_COLORS[this.type] || TYPE_COLORS.default;\n const tc = THEMES[theme] || THEMES.light;\n const t = { bg: tc.bg, border: tc.border, shadow: tc.shadow };\n return { theme, c, t };\n }\n\n create() {\n if (typeof window === 'undefined' || typeof document === 'undefined') return this;\n \n Toast.trigger('beforeShow', this);\n injectStyles();\n \n const container = this._getContainer();\n const { theme, c, t } = this._palette();\n \n this._limitToasts(container);\n \n const el = document.createElement('div');\n el.className = this._buildClassName(theme);\n el.setAttribute('role', (this.type === 'error' || this.type === 'warning') ? 'alert' : 'status');\n el.setAttribute('aria-live', this.type === 'error' ? 'assertive' : 'polite');\n el.dataset.id = this.id;\n \n this._applyStyles(el, theme, t);\n this._buildContent(el, c);\n \n this.el = el;\n // Chrome bug: column-reverse + appendChild 会导致重叠。改用 column + insertBefore\n const pos = this.config.position || 'top-right';\n if (pos.startsWith('top')) {\n container.insertBefore(el, container.firstChild);\n } else {\n container.appendChild(el);\n }\n \n this._bindEvents(el);\n this._startTimer();\n \n // 进入动画\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n el.classList.add('met-show');\n });\n });\n \n if (typeof this.config.onShow === 'function') {\n try {\n this.config.onShow(this);\n } catch (e) {\n console.error('onShow callback error:', e);\n }\n }\n \n Toast.trigger('afterShow', this);\n \n return this;\n }\n\n _getContainer() {\n const position = this.config.position || 'top-right';\n const zIndex = this.config.zIndex || 9999;\n \n if (_containerCache.has(document.body)) {\n const containers = _containerCache.get(document.body);\n if (containers.has(position)) {\n return containers.get(position);\n }\n } else {\n _containerCache.set(document.body, new Map());\n }\n \n const el = document.createElement('div');\n el.className = `met-container ${position}`;\n el.setAttribute('aria-label', 'Notifications');\n el.setAttribute('role', 'region');\n \n // cssText 完全接管布局,不依赖 CSS class\n const posStyles = {\n 'top-left': 'top:0;left:0;align-items:flex-start',\n 'top-center': 'top:0;left:0;right:0;align-items:center',\n 'top-right': 'top:0;right:0;align-items:flex-end',\n 'bottom-left': 'bottom:0;left:0;align-items:flex-start',\n 'bottom-center':'bottom:0;left:0;right:0;align-items:center',\n 'bottom-right': 'bottom:0;right:0;align-items:flex-end',\n };\n el.style.cssText = `\n display:flex;\n flex-direction:column;\n gap:${this.config.gap || 12}px;\n box-sizing:border-box;\n padding:${this.config.offset || 24}px;\n max-width:100vw;\n position:fixed;\n z-index:${zIndex};\n pointer-events:none;\n ${posStyles[position] || 'top:0;right:0;align-items:flex-end'}\n `;\n \n document.body.appendChild(el);\n _containerCache.get(document.body).set(position, el);\n \n return el;\n }\n\n _limitToasts(container) {\n const max = this.config.max || 6;\n const list = Array.from(container.querySelectorAll('.met-toast'));\n if (list.length >= max) {\n const first = list[0];\n const id = first && first.dataset.id;\n if (id) {\n const old = meToast._toasts.get(id);\n if (old) old.close(true);\n }\n }\n }\n\n _buildClassName(theme) {\n // CSS 支持的动画类型,未列出的 fallback 到 slide\n const CSS_ANIMS = ['slide','fade','scale','bounce','flip','rotate','zoom',\n 'slideUp','slideDown','slideLeft','slideRight'];\n const anim = CSS_ANIMS.includes(this.config.animation) ? this.config.animation : 'slide';\n return [\n 'met-toast',\n `met-${this.type}`,\n `met-theme-${theme}`,\n `met-anim-${anim}`,\n (this.config.closeOnClick || this.config.draggable) ? 'met-clickable' : '',\n this.config.className || '',\n ].filter(Boolean).join(' ');\n }\n\n _applyStyles(el, theme, t) {\n const widthValue = typeof this.config.width === 'number'\n ? `${this.config.width}px`\n : (typeof this.config.width === 'string' ? this.config.width : '360px');\n \n // 只强制核心布局属性,动画/滤镜/颜色由 CSS class 控制\n const set = (p, v) => el.style.setProperty(p, v, 'important');\n set('position', 'relative');\n set('flex-shrink', '0');\n set('min-width', '240px');\n set('max-width', 'calc(100vw - 48px)');\n set('width', widthValue);\n // 用户自定义样式最后应用\n if (this.config.style && Object.keys(this.config.style).length > 0) {\n Object.entries(this.config.style).forEach(([k, v]) => { el.style[k] = v; });\n }\n }\n\n _buildContent(el, c) {\n // 自定义渲染函数 — 完全接管 DOM 构建\n if (typeof this.config.render === 'function') {\n el.innerHTML = this.config.render(this);\n this.barEl = el.querySelector('.met-bar, .met-bar-v');\n return;\n }\n \n const showIcon = this.config.icon !== false && (this.iconHTML || ICONS[this.type]);\n const showClose = this.config.closeButton !== false;\n const showProgress = this.config.showProgress !== false && this.config.duration > 0;\n const showSide = (!showIcon && this.type !== 'default');\n \n const safeTitle = this.title ? `
${escapeHTML(this.title)}
` : '';\n const safeMessage = this.html\n ? `
${this.html}
`\n : (this.message ? `
${escapeHTML(this.message)}
` : '');\n \n const iconHTML = showIcon\n ? `
${this.iconHTML || ICONS[this.type]}
` : '';\n const closeHTML = showClose\n ? ``\n : '';\n const progressHTML = showProgress\n ? (this.config.progressDirection === 'vertical'\n ? `
`\n : `
`)\n : '';\n const sideHTML = showSide\n ? `
` : '';\n \n el.innerHTML = `\n ${iconHTML}\n ${sideHTML}\n
\n ${safeTitle}\n ${safeMessage}\n
\n ${closeHTML}\n ${progressHTML}\n `;\n \n this.barEl = el.querySelector('.met-bar, .met-bar-v');\n }\n\n _bindEvents(el) {\n const eventHandler = (e) => {\n const target = e.target;\n \n if (target.closest('.met-close')) {\n e.stopPropagation();\n this.close();\n return;\n }\n \n if (this.config.closeOnClick && !target.closest('.met-close')) {\n if (typeof this.config.onClick === 'function') {\n try {\n this.config.onClick(this);\n } catch (err) {\n console.error('onClick callback error:', err);\n }\n }\n this.close();\n return;\n }\n };\n \n el.addEventListener('click', eventHandler);\n this._cleanups.push(() => el.removeEventListener('click', eventHandler));\n \n if (this.config.pauseOnHover && this.config.duration > 0) {\n const mouseEnter = () => this._pause();\n const mouseLeave = () => this._resume();\n \n el.addEventListener('mouseenter', mouseEnter);\n el.addEventListener('mouseleave', mouseLeave);\n \n this._cleanups.push(() => {\n el.removeEventListener('mouseenter', mouseEnter);\n el.removeEventListener('mouseleave', mouseLeave);\n });\n }\n \n if (this.config.draggable) {\n this._bindDrag(el);\n }\n }\n\n _bindDrag(el) {\n let sx = 0, sy = 0, dx = 0, dy = 0, dragging = false;\n \n const down = (e) => {\n if (e.target.closest('.met-close')) return;\n dragging = true;\n sx = e.clientX; \n sy = e.clientY;\n el.setPointerCapture(e.pointerId);\n el.style.transition = 'none';\n this._pause();\n };\n \n const move = (e) => {\n if (!dragging) return;\n dx = e.clientX - sx; \n dy = e.clientY - sy;\n el.style.transform = `translate(${dx}px, ${dy}px) rotate(${dx * 0.1}deg)`;\n el.style.opacity = String(Math.max(0, 1 - Math.abs(dx) / 200));\n };\n \n const up = (e) => {\n if (!dragging) return;\n dragging = false;\n el.releasePointerCapture(e.pointerId);\n el.style.transition = '';\n \n if (Math.abs(dx) > 120) {\n el.style.transform = `translate(${dx * 2}px, ${dy}px) rotate(${dx * 0.2}deg)`;\n el.style.opacity = '0';\n setTimeout(() => this.close(true), 250);\n } else {\n el.style.transform = '';\n el.style.opacity = '';\n this._resume();\n }\n dx = dy = 0;\n };\n \n el.addEventListener('pointerdown', down);\n el.addEventListener('pointermove', move);\n el.addEventListener('pointerup', up);\n el.addEventListener('pointercancel', up);\n \n this._cleanups.push(() => {\n el.removeEventListener('pointerdown', down);\n el.removeEventListener('pointermove', move);\n el.removeEventListener('pointerup', up);\n el.removeEventListener('pointercancel', up);\n });\n }\n\n _startTimer() {\n if (this.config.duration <= 0) return;\n \n this.startedAt = Date.now();\n this.remaining = this.config.duration;\n \n const tick = () => {\n if (this.paused || this.closing) return;\n \n const elapsed = Date.now() - this.startedAt;\n this.remaining = Math.max(0, this.config.duration - elapsed);\n \n if (this.barEl) {\n const ratio = this.remaining / this.config.duration;\n const t = this.config.progressDirection === 'vertical'\n ? `scaleY(${ratio})` : `scaleX(${ratio})`;\n this.barEl.style.transform = t;\n }\n \n if (this.remaining <= 0) { \n this.close(); \n return; \n }\n \n this.rafId = requestAnimationFrame(tick);\n };\n \n this.rafId = requestAnimationFrame(tick);\n }\n\n _pause() {\n if (this.paused || this.config.duration <= 0) return;\n this.paused = true;\n cancelAnimationFrame(this.rafId);\n this.remaining = Math.max(0, this.config.duration - (Date.now() - this.startedAt));\n }\n\n _resume() {\n if (!this.paused) return;\n this.paused = false;\n this.startedAt = Date.now() - (this.config.duration - this.remaining);\n this._startTimer();\n }\n\n update(partial) {\n Toast.trigger('beforeUpdate', this);\n if (partial.type) this.type = partial.type;\n if (partial.title !== undefined) this.title = partial.title;\n if (partial.message !== undefined) this.message = partial.message;\n if (partial.html !== undefined) this.html = partial.html;\n \n if (!this.el) { Toast.trigger('afterUpdate', this); return this; }\n \n const content = this.el.querySelector('.met-content');\n if (content) {\n const safeTitle = this.title ? `
${escapeHTML(this.title)}
` : '';\n const safeMessage = this.html\n ? `
${this.html}
`\n : (this.message ? `
${escapeHTML(this.message)}
` : '');\n content.innerHTML = `${safeTitle}${safeMessage}`;\n }\n \n // resetTimerOnUpdate: 更新内容后重置计时器\n if (this.config.resetTimerOnUpdate && this.config.duration > 0) {\n cancelAnimationFrame(this.rafId);\n this.startedAt = Date.now();\n this.remaining = this.config.duration;\n this._startTimer();\n }\n \n if (typeof this.config.onUpdate === 'function') {\n try { this.config.onUpdate(this); } catch (e) { console.error('onUpdate callback error:', e); }\n }\n \n Toast.trigger('afterUpdate', this);\n return this;\n }\n\n close(immediate = false) {\n if (this.closing) return;\n this.closing = true;\n \n Toast.trigger('beforeClose', this);\n cancelAnimationFrame(this.rafId);\n this._cleanups.forEach(fn => { try { fn(); } catch (_) {} });\n this._cleanups = [];\n \n const el = this.el;\n if (!el) { \n meToast._remove(this.id); \n return; \n }\n \n // 立即脱离文档流:记录当前位置,然后设为 absolute,让下方 toast 自然上移\n const container = el.parentNode;\n if (container && !immediate) {\n const elRect = el.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n el.style.position = 'absolute';\n el.style.top = (elRect.top - containerRect.top) + 'px';\n el.style.left = (elRect.left - containerRect.left) + 'px';\n el.style.width = elRect.width + 'px';\n el.style.margin = '0';\n }\n \n el.classList.add('met-leaving');\n el.classList.remove('met-show');\n \n const pos = this.config.position || 'top-right';\n const isRTL = getLocaleDirection(getCurrentLocale()) === 'rtl';\n let transform = 'scale(.96)';\n \n if (pos.includes('right')) transform = isRTL ? 'translateX(-120%)' : 'translateX(120%)';\n else if (pos.includes('left')) transform = isRTL ? 'translateX(120%)' : 'translateX(-120%)';\n else if (pos.startsWith('top')) transform = 'translateY(-20px)';\n else transform = 'translateY(20px)';\n \n el.style.transform = transform;\n el.style.opacity = '0';\n \n setTimeout(() => this._destroy(), immediate ? 0 : 300);\n }\n\n _destroy() {\n if (this.el && this.el.parentNode) {\n this.el.parentNode.removeChild(this.el);\n }\n this.el = null;\n \n if (typeof this.config.onClose === 'function') {\n try {\n this.config.onClose(this);\n } catch (e) {\n console.error('onClose callback error:', e);\n }\n }\n \n Toast.trigger('afterClose', this);\n meToast._remove(this.id);\n }\n}\n\n// ========== HTML模板辅助函数 ==========\n\n/**\n * 按钮行模板 — confirm/prompt 共用\n * @param {string} buttons - 按钮HTML\n * @returns {string} 按钮行HTML\n */\nconst _btnRow = (buttons) => `\n
\n ${buttons}\n
`;\n\n/**\n * 确认对话框模板\n * @param {Object} opts - 选项\n * @returns {string} HTML\n */\nconst _confirmHTML = (opts) => {\n const confirmText = opts.confirmText || i18nT('confirm');\n const cancelText = opts.cancelText || i18nT('cancel');\n const confirmColor = opts.confirmColor || '#10b981';\n const cancelColor = opts.cancelColor || '#6b7280';\n return _btnRow(`\n \n \n `);\n};\n\n/**\n * 输入对话框模板\n * @param {Object} opts - 选项\n * @returns {string} HTML\n */\nconst _promptHTML = (opts) => {\n const submitText = opts.submitText || i18nT('confirm');\n const cancelText = opts.cancelText || i18nT('cancel');\n const submitColor = opts.submitColor || '#3b82f6';\n const cancelColor = opts.cancelColor || '#6b7280';\n return `\n \n ${_btnRow(`\n \n \n `)}\n `;\n};\n\n/**\n * 进度条模板\n * @param {Object} opts - 选项\n * @returns {string} HTML\n */\nconst _progressHTML = (opts) => {\n const color = opts.progressColor || '#3b82f6';\n return `\n
\n
\n
\n
0%
\n `;\n};\n\n/**\n * Action Toast 模板\n * @param {Array} actions - 操作按钮数组 [{ text, onClick, style }]\n * @returns {string} HTML\n */\nconst _actionHTML = (actions) => {\n if (!Array.isArray(actions) || actions.length === 0) return '';\n const buttons = actions.map((a, i) => {\n const bg = a.style?.background || a.color || '#6366f1';\n const cls = `met-action-btn-${i}`;\n return ``;\n }).join('');\n return _btnRow(buttons);\n};\n\n/**\n * 主对象\n */\nconst meToast = {\n _toasts: new Map(),\n _config: { ...DEFAULTS },\n version: '2.0.0',\n \n configure(opts) {\n if (!opts || typeof opts !== 'object') return this;\n this._config = { ...this._config, ...opts };\n \n if (opts.theme) {\n applyTheme(opts.theme);\n }\n \n if (opts.locale) {\n setCurrentLocale(opts.locale);\n }\n \n return this;\n },\n \n _emit(opts) {\n const merged = { ...this._config, ...opts };\n if (merged.content && !merged.message) merged.message = merged.content;\n \n const t = new Toast(merged);\n t.create();\n this._toasts.set(t.id, t);\n \n return t;\n },\n \n _remove(id) { \n this._toasts.delete(id); \n },\n \n find(id) { \n if (!id) return undefined;\n return this._toasts.get(id); \n },\n \n /**\n * 显示默认Toast\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\n * @param {Object} [opts] - 选项对象(当第一个参数是字符串时)\n */\n show(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'default');\n return this._emit(normalized);\n },\n \n /**\n * 显示成功Toast\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\n * @param {Object} [opts] - 选项对象\n */\n success(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'success');\n return this._emit(normalized);\n },\n \n /**\n * 显示错误Toast\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\n * @param {Object} [opts] - 选项对象\n */\n error(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'error');\n return this._emit(normalized);\n },\n \n /**\n * 显示警告Toast\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\n * @param {Object} [opts] - 选项对象\n */\n warning(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'warning');\n return this._emit(normalized);\n },\n \n /**\n * 显示信息Toast\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\n * @param {Object} [opts] - 选项对象\n */\n info(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'info');\n return this._emit(normalized);\n },\n \n /**\n * 显示加载Toast\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\n * @param {Object} [opts] - 选项对象\n */\n loading(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'loading');\n normalized.duration = 0;\n normalized.closeButton = false;\n normalized.showProgress = false;\n \n const t = this._emit(normalized);\n \n return {\n id: t.id,\n success: (msg, o = {}) => this._resolve(t, 'success', msg, o),\n error: (msg, o = {}) => this._resolve(t, 'error', msg, o),\n info: (msg, o = {}) => this._resolve(t, 'info', msg, o),\n warning: (msg, o = {}) => this._resolve(t, 'warning', msg, o),\n update: (p) => { t.update(p); return this; },\n dismiss: () => t.close(),\n };\n },\n \n promise(promise, opts = {}) {\n if (!promise || typeof promise.then !== 'function') {\n console.error('MeToast.promise: first argument must be a Promise');\n return Promise.reject(new Error('Invalid promise'));\n }\n \n const loadingMsg = opts.loading || i18nT('loading');\n const successMsg = opts.success || i18nT('success');\n const errorMsg = opts.error || i18nT('error');\n \n const ctrl = this.loading(loadingMsg);\n \n return Promise.resolve(promise)\n .then((data) => { \n ctrl.success(successMsg); \n return data; \n })\n .catch((err) => { \n ctrl.error(errorMsg); \n throw err; \n });\n },\n \n _resolve(loadingToast, type, message, opts) {\n const id = loadingToast.id;\n const old = this._toasts.get(id);\n if (!old) return null;\n \n const position = old.config.position;\n old.close();\n \n return this._emit({ ...opts, type, message, position });\n },\n \n /**\n * 确认对话框\n * @param {string} message - 消息内容\n * @param {Object} [opts] - 选项\n * @returns {Promise}\n */\n confirm(message, opts = {}) {\n if (typeof message !== 'string') {\n console.error('MeToast.confirm: message must be a string');\n return Promise.resolve(false);\n }\n \n return new Promise((resolve) => {\n let resolved = false;\n const safeResolve = (val) => { if (!resolved) { resolved = true; clearTimeout(safetyTimeout); resolve(val); } };\n const safetyTimeout = setTimeout(() => safeResolve(false), 10000);\n \n const t = this._emit({\n ...opts,\n type: opts.type || 'warning',\n message,\n duration: 0,\n closeButton: false,\n closeOnClick: false,\n draggable: false,\n html: _confirmHTML(opts),\n });\n \n setTimeout(() => {\n const confirmBtn = t.el?.querySelector('.met-confirm-btn');\n const cancelBtn = t.el?.querySelector('.met-cancel-btn');\n \n if (confirmBtn) {\n confirmBtn.addEventListener('click', () => {\n t.close();\n safeResolve(true);\n });\n }\n \n if (cancelBtn) {\n cancelBtn.addEventListener('click', () => {\n t.close();\n safeResolve(false);\n });\n }\n }, 0);\n });\n },\n \n /**\n * 输入对话框\n * @param {string} message - 消息内容\n * @param {Object} [opts] - 选项\n * @returns {Promise}\n */\n prompt(message, opts = {}) {\n if (typeof message !== 'string') {\n console.error('MeToast.prompt: message must be a string');\n return Promise.resolve(null);\n }\n \n return new Promise((resolve) => {\n let resolved = false;\n const safeResolve = (val) => { if (!resolved) { resolved = true; clearTimeout(safetyTimeout); resolve(val); } };\n const safetyTimeout = setTimeout(() => safeResolve(null), 10000);\n \n const t = this._emit({\n ...opts,\n type: opts.type || 'info',\n message,\n duration: 0,\n closeButton: false,\n closeOnClick: false,\n draggable: false,\n html: _promptHTML(opts),\n });\n \n setTimeout(() => {\n const input = t.el?.querySelector('.met-input');\n const submitBtn = t.el?.querySelector('.met-submit-btn');\n const cancelBtn = t.el?.querySelector('.met-cancel-btn');\n \n if (input) {\n input.focus();\n \n input.addEventListener('keydown', (e) => {\n if (e.key === 'Enter') {\n t.close();\n safeResolve(input.value);\n }\n });\n }\n \n if (submitBtn) {\n submitBtn.addEventListener('click', () => {\n t.close();\n safeResolve(input?.value || null);\n });\n }\n \n if (cancelBtn) {\n cancelBtn.addEventListener('click', () => {\n t.close();\n safeResolve(null);\n });\n }\n }, 0);\n });\n },\n \n /**\n * 进度Toast\n * @param {string|Object} messageOrOpts - 消息或选项\n * @param {Object} [opts] - 选项\n * @returns {Object} 控制对象\n */\n progress(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'info');\n normalized.duration = 0;\n normalized.closeButton = false;\n normalized.showProgress = false;\n \n const t = this._emit({\n ...normalized,\n html: _progressHTML(opts),\n });\n \n return {\n id: t.id,\n \n setProgress(percent) {\n const fill = t.el?.querySelector('.met-progress-fill');\n const text = t.el?.querySelector('.met-progress-text');\n \n if (fill) {\n fill.style.width = `${Math.min(100, Math.max(0, percent))}%`;\n }\n \n if (text) {\n text.textContent = `${Math.round(percent)}%`;\n }\n },\n \n complete(message) {\n this.setProgress(100);\n setTimeout(() => {\n t.update({\n type: 'success',\n message: message || i18nT('success'),\n html: '',\n });\n setTimeout(() => t.close(), 1000);\n }, 300);\n },\n \n error(message) {\n t.update({\n type: 'error',\n message: message || i18nT('error'),\n html: '',\n });\n setTimeout(() => t.close(), 2000);\n },\n \n dismiss() {\n t.close();\n },\n };\n },\n \n /**\n * 倒计时Toast\n * @param {string} message - 消息内容\n * @param {number} seconds - 秒数\n * @param {Object} [opts] - 选项\n * @returns {Object} 控制对象\n */\n countdown(message, seconds = 10, opts = {}) {\n if (typeof message !== 'string') {\n console.error('MeToast.countdown: message must be a string');\n return { cancel: () => {}, pause: () => {}, resume: () => {} };\n }\n \n let remaining = Math.max(1, parseInt(seconds) || 10);\n let timer = null;\n \n const t = this._emit({\n ...opts,\n type: opts.type || 'warning',\n message: message.replace(/\\{seconds\\}/g, remaining),\n duration: 0,\n closeButton: true,\n showProgress: false,\n });\n \n const tick = () => {\n remaining--;\n \n if (remaining <= 0) {\n clearInterval(timer);\n t.close();\n \n if (typeof opts.onComplete === 'function') {\n try {\n opts.onComplete();\n } catch (e) {\n console.error('countdown onComplete error:', e);\n }\n }\n return;\n }\n \n t.update({\n message: message.replace(/\\{seconds\\}/g, remaining),\n });\n };\n \n timer = setInterval(tick, 1000);\n \n return {\n id: t.id,\n \n cancel() {\n clearInterval(timer);\n t.close();\n },\n \n pause() {\n clearInterval(timer);\n },\n \n resume() {\n clearInterval(timer);\n timer = setInterval(tick, 1000);\n },\n };\n },\n \n /**\n * Action Toast — 带操作按钮的通知\n * @param {string|Object} messageOrOpts - 消息\n * @param {Array} actions - 操作按钮 [{ text, onClick, color }]\n * @param {Object} [opts] - 选项\n * @returns {Object} toast实例 + dismiss\n */\n action(messageOrOpts, actions = [], opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'info');\n normalized.duration = opts.duration ?? 0;\n normalized.closeButton = opts.closeButton ?? true;\n \n const t = this._emit({\n ...normalized,\n html: (normalized.html || '') + _actionHTML(actions),\n });\n \n if (Array.isArray(actions)) {\n setTimeout(() => {\n actions.forEach((a, i) => {\n const btn = t.el?.querySelector(`.met-action-btn-${i}`);\n if (btn && typeof a.onClick === 'function') {\n btn.addEventListener('click', () => {\n try { a.onClick(t); } catch (e) { console.error('Action onClick error:', e); }\n if (a.close !== false) t.close();\n });\n }\n });\n }, 0);\n }\n \n return { id: t.id, toast: t, dismiss: () => t.close() };\n },\n\n /**\n * 队列Toast\n * @param {Array} messages - 消息数组\n * @param {Object} [opts] - 选项\n * @returns {Promise}\n */\n queue(messages, opts = {}) {\n if (!Array.isArray(messages)) {\n console.error('MeToast.queue: messages must be an array');\n return { then: (fn) => Promise.resolve().then(fn), cancel: () => {} };\n }\n \n let cancelled = false;\n const promise = new Promise((resolve) => {\n let index = 0;\n const delay = opts.delay || 1000;\n const userOnClose = opts.onClose;\n \n const showNext = () => {\n if (cancelled || index >= messages.length) {\n resolve();\n return;\n }\n \n const message = messages[index];\n index++;\n \n const msg = typeof message === 'string' ? message : (message?.message || '');\n const msgObj = (typeof message === 'object' && message !== null) ? message : {};\n const msgOnClose = msgObj.onClose;\n \n this._emit({\n ...opts,\n ...msgObj,\n message: msg,\n duration: msgObj.duration || opts.duration || 3000,\n onClose: (toast) => {\n if (typeof msgOnClose === 'function') {\n try { msgOnClose(toast); } catch (_) {}\n }\n if (typeof userOnClose === 'function') {\n try { userOnClose(toast); } catch (_) {}\n }\n setTimeout(showNext, delay);\n },\n });\n };\n \n showNext();\n });\n return {\n then: (fn, rj) => promise.then(fn, rj),\n catch: (rj) => promise.catch(rj),\n cancel: () => { cancelled = true; },\n };\n },\n \n /**\n * 堆叠Toast\n * @param {Array} messages - 消息数组\n * @param {Object} [opts] - 选项\n */\n stack(messages, opts = {}) {\n if (!Array.isArray(messages)) {\n console.error('MeToast.stack: messages must be an array');\n return;\n }\n \n messages.forEach((message, index) => {\n setTimeout(() => {\n const msg = typeof message === 'string' ? message : (message?.message || '');\n \n this._emit({\n ...opts,\n ...((typeof message === 'object' && message !== null) ? message : {}),\n message: msg,\n });\n }, index * (opts.stagger || 100));\n });\n },\n \n dismiss(id) {\n if (id) { \n const t = this._toasts.get(id); \n if (t) t.close(); \n return; \n }\n this._toasts.forEach(t => t.close());\n },\n \n clear(position) {\n this._toasts.forEach(t => {\n if (!position || t.config.position === position) t.close();\n });\n },\n \n destroy() {\n this.dismiss();\n \n if (typeof document !== 'undefined') {\n const containers = document.querySelectorAll('.met-container');\n containers.forEach(c => c.parentNode && c.parentNode.removeChild(c));\n \n const style = document.getElementById('metona-toast-styles');\n if (style) style.parentNode.removeChild(style);\n }\n \n this._toasts.clear();\n _containerCache.clear();\n },\n \n getAll() {\n return new Map(this._toasts);\n },\n \n count() {\n return this._toasts.size;\n },\n \n /**\n * 创建Toast分组 — 返回一个自动添加 group 参数的子对象\n * @param {string} name - 分组名称\n * @returns {Object}\n */\n group(name) {\n const self = this;\n const methods = ['show','success','error','warning','info','loading','action'];\n const g = { _group: name };\n methods.forEach(m => {\n g[m] = (...args) => {\n const lastArg = args[args.length - 1];\n const isObj = typeof lastArg === 'object' && lastArg !== null && !Array.isArray(lastArg);\n // 单对象参数:直接合并group\n if (isObj && args.length === 1) {\n return self[m]({ ...lastArg, group: name });\n }\n // 末尾是配置对象:pop后合并\n if (isObj) {\n args.pop();\n return self[m](...args, { ...lastArg, group: name });\n }\n // 无配置对象\n return self[m](...args, { group: name });\n };\n });\n g.dismiss = () => self.dismissGroup(name);\n g.count = () => self._groupCount(name);\n return g;\n },\n \n /**\n * 按组关闭Toast\n * @param {string} name - 分组名称\n */\n dismissGroup(name) {\n this._toasts.forEach(t => { if (t.group === name) t.close(); });\n },\n \n _groupCount(name) {\n let c = 0;\n this._toasts.forEach(t => { if (t.group === name) c++; });\n return c;\n },\n};\n\nexport { meToast as default, meToast, Toast };\n","/**\n * MetonaToast Animations - 动画管理\n * @module animations\n * @version 2.0.0\n * @description 动画效果管理和自定义\n */\n\nimport { ANIMATIONS } from './constants.js';\n\n// 动画缓存\nconst animationCache = new Map();\n\n/**\n * 动画管理器类\n */\nclass AnimationManager {\n constructor() {\n this.animations = new Map();\n this.activeAnimations = new Map();\n this.animationId = 0;\n \n // 注册默认动画\n this._registerDefaults();\n }\n \n /**\n * 注册默认动画\n */\n _registerDefaults() {\n Object.entries(ANIMATIONS).forEach(([name, config]) => {\n this.register(name, config);\n });\n }\n \n /**\n * 注册动画\n * @param {string} name - 动画名称\n * @param {Object} config - 动画配置\n */\n register(name, config) {\n const animation = {\n name,\n enter: config.enter || {},\n leave: config.leave || {},\n duration: config.duration || 300,\n easing: config.easing || 'cubic-bezier(0.4, 0, 0.2, 1)',\n delay: config.delay || 0,\n iterations: config.iterations || 1,\n direction: config.direction || 'normal',\n fillMode: config.fillMode || 'forwards',\n };\n \n this.animations.set(name, animation);\n animationCache.set(name, animation);\n }\n \n /**\n * 注销动画\n * @param {string} name - 动画名称\n */\n unregister(name) {\n this.animations.delete(name);\n animationCache.delete(name);\n }\n \n /**\n * 获取动画配置\n * @param {string} name - 动画名称\n * @returns {Object|null} 动画配置\n */\n get(name) {\n return this.animations.get(name) || ANIMATIONS[name] || null;\n }\n \n /**\n * 应用动画\n * @param {HTMLElement} element - 目标元素\n * @param {string} animationName - 动画名称\n * @param {Object} options - 额外选项\n * @returns {Promise} 动画完成Promise\n */\n apply(element, animationName, options = {}) {\n return new Promise((resolve, reject) => {\n const animation = this.get(animationName);\n if (!animation) {\n resolve();\n return;\n }\n \n const config = { ...animation, ...options };\n const animId = ++this.animationId;\n \n // 设置初始状态\n Object.assign(element.style, config.enter);\n \n // 强制重绘\n element.offsetHeight;\n \n // 创建动画\n const keyframes = [\n { ...config.enter },\n { ...config.leave },\n ];\n \n const animationOptions = {\n duration: config.duration,\n easing: config.easing,\n delay: config.delay,\n iterations: config.iterations,\n direction: config.direction,\n fill: config.fillMode,\n };\n \n // 应用动画\n const anim = element.animate(keyframes, animationOptions);\n \n // 存储活动动画\n this.activeAnimations.set(animId, {\n element,\n animation: anim,\n config,\n });\n \n // 动画完成处理\n anim.onfinish = () => {\n Object.assign(element.style, config.leave);\n this.activeAnimations.delete(animId);\n resolve();\n };\n \n // 动画取消处理 — reject 让调用者感知取消\n anim.oncancel = () => {\n this.activeAnimations.delete(animId);\n reject(new Error(`Animation \"${animationName}\" was cancelled`));\n };\n });\n }\n \n /**\n * 应用进入动画\n * @param {HTMLElement} element - 目标元素\n * @param {string} animationName - 动画名称\n * @param {Object} options - 额外选项\n * @returns {Promise} 动画完成Promise\n */\n enter(element, animationName, options = {}) {\n const animation = this.get(animationName);\n if (!animation) {\n return Promise.resolve();\n }\n \n return this.apply(element, animationName, {\n ...options,\n direction: 'normal',\n });\n }\n \n /**\n * 应用离开动画\n * @param {HTMLElement} element - 目标元素\n * @param {string} animationName - 动画名称\n * @param {Object} options - 额外选项\n * @returns {Promise} 动画完成Promise\n */\n leave(element, animationName, options = {}) {\n const animation = this.get(animationName);\n if (!animation) {\n return Promise.resolve();\n }\n \n return this.apply(element, animationName, {\n ...options,\n direction: 'reverse',\n });\n }\n \n /**\n * 取消所有动画\n */\n cancelAll() {\n this.activeAnimations.forEach(({ animation }) => {\n animation.cancel();\n });\n \n this.activeAnimations.clear();\n }\n \n /**\n * 取消元素动画\n * @param {HTMLElement} element - 目标元素\n */\n cancel(element) {\n this.activeAnimations.forEach(({ element: el, animation }, id) => {\n if (el === element) {\n animation.cancel();\n this.activeAnimations.delete(id);\n }\n });\n }\n \n /**\n * 暂停所有动画\n */\n pauseAll() {\n this.activeAnimations.forEach(({ animation }) => {\n animation.pause();\n });\n }\n \n /**\n * 恢复所有动画\n */\n resumeAll() {\n this.activeAnimations.forEach(({ animation }) => {\n animation.play();\n });\n }\n \n /**\n * 暂停元素动画\n * @param {HTMLElement} element - 目标元素\n */\n pause(element) {\n this.activeAnimations.forEach(({ element: el, animation }) => {\n if (el === element) {\n animation.pause();\n }\n });\n }\n \n /**\n * 恢复元素动画\n * @param {HTMLElement} element - 目标元素\n */\n resume(element) {\n this.activeAnimations.forEach(({ element: el, animation }) => {\n if (el === element) {\n animation.play();\n }\n });\n }\n \n /**\n * 获取活动动画数量\n * @returns {number} 动画数量\n */\n getActiveCount() {\n return this.activeAnimations.size;\n }\n \n /**\n * 获取所有活动动画\n * @returns {Map} 活动动画映射\n */\n getActiveAnimations() {\n return new Map(this.activeAnimations);\n }\n \n /**\n * 检查元素是否有活动动画\n * @param {HTMLElement} element - 目标元素\n * @returns {boolean} 是否有活动动画\n */\n hasActiveAnimation(element) {\n for (const { element: el } of this.activeAnimations.values()) {\n if (el === element) {\n return true;\n }\n }\n return false;\n }\n \n /**\n * 获取动画配置\n * @returns {Object} 动画配置\n */\n getConfig() {\n return {\n animations: Array.from(this.animations.keys()),\n activeCount: this.getActiveCount(),\n };\n }\n \n /**\n * 重置动画管理器\n */\n reset() {\n this.cancelAll();\n this.animations.clear();\n this._registerDefaults();\n }\n \n /**\n * 销毁动画管理器\n */\n destroy() {\n this.cancelAll();\n this.animations.clear();\n this.activeAnimations.clear();\n }\n}\n\n/**\n * 预设动画效果\n */\nconst presetAnimations = {\n bounce: {\n enter: { transform: 'translateY(-80px)', opacity: 0 },\n leave: { transform: 'translateY(20px)', opacity: 1 },\n duration: 650,\n easing: 'ease',\n },\n slideUp: {\n enter: { transform: 'translateY(60px)', opacity: 0 },\n leave: { transform: 'translateY(0)', opacity: 1 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n slideDown: {\n enter: { transform: 'translateY(-60px)', opacity: 0 },\n leave: { transform: 'translateY(0)', opacity: 1 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n slideLeft: {\n enter: { transform: 'translateX(-90px)', opacity: 0 },\n leave: { transform: 'translateX(0)', opacity: 1 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n slideRight: {\n enter: { transform: 'translateX(90px)', opacity: 0 },\n leave: { transform: 'translateX(0)', opacity: 1 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n\n};\n\n// 注册预设动画\nObject.entries(presetAnimations).forEach(([name, config]) => {\n ANIMATIONS[name] = config;\n});\n\n/**\n * 创建动画管理器实例\n * @returns {AnimationManager} 动画管理器实例\n */\nexport const createAnimationManager = () => {\n return new AnimationManager();\n};\n\n// 创建默认实例\nconst defaultAnimationManager = createAnimationManager();\n\n/**\n * 动画工具函数\n */\nexport const animationUtils = {\n /**\n * 应用动画\n * @param {HTMLElement} element - 目标元素\n * @param {string} animationName - 动画名称\n * @param {Object} options - 额外选项\n * @returns {Promise} 动画完成Promise\n */\n apply(element, animationName, options = {}) {\n return defaultAnimationManager.apply(element, animationName, options);\n },\n \n /**\n * 应用进入动画\n * @param {HTMLElement} element - 目标元素\n * @param {string} animationName - 动画名称\n * @param {Object} options - 额外选项\n * @returns {Promise} 动画完成Promise\n */\n enter(element, animationName, options = {}) {\n return defaultAnimationManager.enter(element, animationName, options);\n },\n \n /**\n * 应用离开动画\n * @param {HTMLElement} element - 目标元素\n * @param {string} animationName - 动画名称\n * @param {Object} options - 额外选项\n * @returns {Promise} 动画完成Promise\n */\n leave(element, animationName, options = {}) {\n return defaultAnimationManager.leave(element, animationName, options);\n },\n \n /**\n * 取消所有动画\n */\n cancelAll() {\n defaultAnimationManager.cancelAll();\n },\n \n /**\n * 取消元素动画\n * @param {HTMLElement} element - 目标元素\n */\n cancel(element) {\n defaultAnimationManager.cancel(element);\n },\n \n /**\n * 暂停所有动画\n */\n pauseAll() {\n defaultAnimationManager.pauseAll();\n },\n \n /**\n * 恢复所有动画\n */\n resumeAll() {\n defaultAnimationManager.resumeAll();\n },\n \n /**\n * 暂停元素动画\n * @param {HTMLElement} element - 目标元素\n */\n pause(element) {\n defaultAnimationManager.pause(element);\n },\n \n /**\n * 恢复元素动画\n * @param {HTMLElement} element - 目标元素\n */\n resume(element) {\n defaultAnimationManager.resume(element);\n },\n \n /**\n * 获取活动动画数量\n * @returns {number} 动画数量\n */\n getActiveCount() {\n return defaultAnimationManager.getActiveCount();\n },\n \n /**\n * 检查元素是否有活动动画\n * @param {HTMLElement} element - 目标元素\n * @returns {boolean} 是否有活动动画\n */\n hasActiveAnimation(element) {\n return defaultAnimationManager.hasActiveAnimation(element);\n },\n \n /**\n * 注册动画\n * @param {string} name - 动画名称\n * @param {Object} config - 动画配置\n */\n register(name, config) {\n defaultAnimationManager.register(name, config);\n },\n \n /**\n * 注销动画\n * @param {string} name - 动画名称\n */\n unregister(name) {\n defaultAnimationManager.unregister(name);\n },\n \n /**\n * 获取动画配置\n * @param {string} name - 动画名称\n * @returns {Object|null} 动画配置\n */\n get(name) {\n return defaultAnimationManager.get(name);\n },\n \n /**\n * 获取所有动画名称\n * @returns {Array} 动画名称数组\n */\n getAnimationNames() {\n return Array.from(defaultAnimationManager.animations.keys());\n },\n \n /**\n * 获取动画配置\n * @returns {Object} 动画配置\n */\n getConfig() {\n return defaultAnimationManager.getConfig();\n },\n \n /**\n * 重置动画管理器\n */\n reset() {\n defaultAnimationManager.reset();\n },\n \n /**\n * 销毁动画管理器\n */\n destroy() {\n defaultAnimationManager.destroy();\n },\n};\n\n/**\n * 动画预设\n */\nexport const animationPresets = presetAnimations;\n\n/**\n * 创建自定义动画\n * @param {Object} config - 动画配置\n * @returns {Object} 动画配置\n */\nexport const createAnimation = (config) => {\n return {\n enter: config.enter || {},\n leave: config.leave || {},\n duration: config.duration || 300,\n easing: config.easing || 'cubic-bezier(0.4, 0, 0.2, 1)',\n delay: config.delay || 0,\n iterations: config.iterations || 1,\n direction: config.direction || 'normal',\n fillMode: config.fillMode || 'forwards',\n };\n};\n\n/**\n * 组合动画\n * @param {Array} animations - 动画数组\n * @returns {Object} 组合后的动画配置\n */\nexport const combineAnimations = (animations) => {\n const combined = {\n enter: {},\n leave: {},\n duration: 0,\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n delay: 0,\n iterations: 1,\n direction: 'normal',\n fillMode: 'forwards',\n };\n \n animations.forEach((anim) => {\n if (anim.enter) {\n Object.assign(combined.enter, anim.enter);\n }\n if (anim.leave) {\n Object.assign(combined.leave, anim.leave);\n }\n if (anim.duration) {\n combined.duration = Math.max(combined.duration, anim.duration);\n }\n if (anim.easing) {\n combined.easing = anim.easing;\n }\n if (anim.delay) {\n combined.delay = Math.max(combined.delay, anim.delay);\n }\n });\n \n return combined;\n};\n\n/**\n * 链式动画\n * @param {Array} animations - 动画数组\n * @returns {Promise} 动画完成Promise\n */\nexport const chainAnimations = async (element, animations) => {\n for (const anim of animations) {\n await defaultAnimationManager.apply(element, anim.name, anim.options);\n }\n};\n\n/**\n * 并行动画\n * @param {Array} animations - 动画数组\n * @returns {Promise} 动画完成Promise\n */\nexport const parallelAnimations = (element, animations) => {\n return Promise.all(\n animations.map((anim) => \n defaultAnimationManager.apply(element, anim.name, anim.options)\n )\n );\n};\n\n/**\n * 延迟动画\n * @param {number} delay - 延迟时间(毫秒)\n * @returns {Promise} Promise对象\n */\nexport const delayAnimation = (delay) => {\n return new Promise((resolve) => setTimeout(resolve, delay));\n};\n\n/**\n * 动画队列\n */\nexport class AnimationQueue {\n constructor() {\n this.queue = [];\n this.isProcessing = false;\n }\n \n /**\n * 添加动画到队列\n * @param {Function} animationFn - 动画函数\n * @returns {Promise} 动画完成Promise\n */\n add(animationFn) {\n return new Promise((resolve, reject) => {\n this.queue.push({\n fn: animationFn,\n resolve,\n reject,\n });\n \n this._process();\n });\n }\n \n /**\n * 处理队列\n */\n async _process() {\n if (this.isProcessing || this.queue.length === 0) {\n return;\n }\n \n this.isProcessing = true;\n \n while (this.queue.length > 0) {\n const { fn, resolve, reject } = this.queue.shift();\n \n try {\n const result = await fn();\n resolve(result);\n } catch (error) {\n reject(error);\n }\n }\n \n this.isProcessing = false;\n }\n \n /**\n * 清空队列\n */\n clear() {\n this.queue = [];\n }\n \n /**\n * 暂停队列\n */\n pause() {\n this.isProcessing = true;\n }\n \n /**\n * 恢复队列\n */\n resume() {\n this.isProcessing = false;\n this._process();\n }\n \n /**\n * 获取队列长度\n * @returns {number} 队列长度\n */\n get length() {\n return this.queue.length;\n }\n \n /**\n * 检查是否正在处理\n * @returns {boolean} 是否正在处理\n */\n get processing() {\n return this.isProcessing;\n }\n}\n\n/**\n * 创建动画队列\n * @returns {AnimationQueue} 动画队列实例\n */\nexport const createAnimationQueue = () => {\n return new AnimationQueue();\n};\n\n/**\n * 动画性能监控\n */\nexport class AnimationPerformanceMonitor {\n constructor() {\n this.metrics = {\n totalAnimations: 0,\n activeAnimations: 0,\n averageDuration: 0,\n maxDuration: 0,\n minDuration: Infinity,\n };\n \n this.history = [];\n }\n \n /**\n * 记录动画开始\n * @param {string} animationName - 动画名称\n */\n recordStart(animationName) {\n this.metrics.totalAnimations++;\n this.metrics.activeAnimations++;\n \n this.history.push({\n name: animationName,\n startTime: performance.now(),\n endTime: null,\n duration: null,\n });\n }\n \n /**\n * 记录动画结束\n * @param {string} animationName - 动画名称\n */\n recordEnd(animationName) {\n this.metrics.activeAnimations--;\n \n const entry = this.history.find(\n (h) => h.name === animationName && h.endTime === null\n );\n \n if (entry) {\n entry.endTime = performance.now();\n entry.duration = entry.endTime - entry.startTime;\n \n // 更新统计\n this.metrics.maxDuration = Math.max(this.metrics.maxDuration, entry.duration);\n this.metrics.minDuration = Math.min(this.metrics.minDuration, entry.duration);\n \n // 计算平均值\n const completed = this.history.filter((h) => h.duration !== null);\n this.metrics.averageDuration = \n completed.reduce((sum, h) => sum + h.duration, 0) / completed.length;\n }\n }\n \n /**\n * 获取指标\n * @returns {Object} 性能指标\n */\n getMetrics() {\n return { ...this.metrics };\n }\n \n /**\n * 获取历史记录\n * @returns {Array} 历史记录\n */\n getHistory() {\n return [...this.history];\n }\n \n /**\n * 重置监控\n */\n reset() {\n this.metrics = {\n totalAnimations: 0,\n activeAnimations: 0,\n averageDuration: 0,\n maxDuration: 0,\n minDuration: Infinity,\n };\n \n this.history = [];\n }\n}\n\n/**\n * 创建性能监控实例\n * @returns {AnimationPerformanceMonitor} 性能监控实例\n */\nexport const createPerformanceMonitor = () => {\n return new AnimationPerformanceMonitor();\n};\n\n/**\n * 动画缓存管理\n */\nexport const animationCacheManager = {\n /**\n * 缓存动画\n * @param {string} key - 缓存键\n * @param {Object} animation - 动画配置\n */\n set(key, animation) {\n animationCache.set(key, animation);\n },\n \n /**\n * 获取缓存动画\n * @param {string} key - 缓存键\n * @returns {Object|null} 动画配置\n */\n get(key) {\n return animationCache.get(key) || null;\n },\n \n /**\n * 检查缓存\n * @param {string} key - 缓存键\n * @returns {boolean} 是否存在\n */\n has(key) {\n return animationCache.has(key);\n },\n \n /**\n * 删除缓存\n * @param {string} key - 缓存键\n */\n delete(key) {\n animationCache.delete(key);\n },\n \n /**\n * 清空缓存\n */\n clear() {\n animationCache.clear();\n },\n \n /**\n * 获取缓存大小\n * @returns {number} 缓存大小\n */\n size() {\n return animationCache.size;\n },\n};\n\nexport { AnimationManager, defaultAnimationManager };\n","/**\n * MetonaToast Plugins - 插件系统\n * @module plugins\n * @version 2.0.0\n * @description 插件管理器 + 3 款预设插件 (keyboard / persistence / accessibility)\n */\n\nimport { t } from './i18n.js';\n\n/**\n * 插件管理器\n */\nclass PluginManager {\n constructor() {\n this.plugins = new Map();\n this.initialized = false;\n }\n\n register(name, plugin) {\n if (this.plugins.has(name)) {\n console.warn(`Plugin \"${name}\" is already registered`);\n return this;\n }\n if (!plugin || typeof plugin !== 'object' || (!plugin.name && !plugin.version)) {\n console.error(`Invalid plugin \"${name}\"`);\n return this;\n }\n\n this.plugins.set(name, { name, ...plugin, installed: false, enabled: true });\n\n if (plugin.install) {\n try { plugin.install(this); this.plugins.get(name).installed = true; }\n catch (e) { console.error(`Failed to install plugin \"${name}\":`, e); }\n }\n return this;\n }\n\n unregister(name) {\n const plugin = this.plugins.get(name);\n if (!plugin) return this;\n if (plugin.uninstall) {\n try { plugin.uninstall(this); } catch (e) { console.error(`Failed to uninstall plugin \"${name}\":`, e); }\n }\n this.plugins.delete(name);\n return this;\n }\n\n get(name) { return this.plugins.get(name) || null; }\n has(name) { return this.plugins.has(name); }\n getAll() { return Array.from(this.plugins.values()); }\n getNames() { return Array.from(this.plugins.keys()); }\n\n enable(name) {\n const p = this.plugins.get(name);\n if (p) p.enabled = true;\n return this;\n }\n disable(name) {\n const p = this.plugins.get(name);\n if (p) p.enabled = false;\n return this;\n }\n isEnabled(name) {\n const p = this.plugins.get(name);\n return p ? p.enabled : false;\n }\n\n destroy() {\n this.plugins.forEach((p, name) => {\n if (p.destroy) { try { p.destroy(this); } catch (e) {} }\n });\n this.plugins.clear();\n }\n}\n\n/**\n * 预设插件\n */\nconst presetPlugins = {\n\n /**\n * 键盘快捷键插件 — ESC 关闭所有 Toast\n */\n keyboard: {\n name: 'keyboard',\n version: '1.0.0',\n description: 'ESC 关闭所有 Toast',\n\n _handler: null,\n\n install() {\n if (typeof document === 'undefined') return;\n this._handler = (e) => {\n if (e.key === 'Escape') {\n // 点击所有关闭按钮\n document.querySelectorAll('.met-toast .met-close').forEach(btn => {\n try { btn.click(); } catch (_) {}\n });\n }\n };\n document.addEventListener('keydown', this._handler);\n },\n\n uninstall() {\n if (this._handler && typeof document !== 'undefined') {\n document.removeEventListener('keydown', this._handler);\n this._handler = null;\n }\n },\n },\n\n /**\n * 持久化插件 — 自动保存/加载配置到 localStorage\n */\n persistence: {\n name: 'persistence',\n version: '1.0.0',\n description: '自动持久化配置到 localStorage',\n storageKey: 'metona-toast-config',\n\n install() {\n // 加载已保存的配置\n if (typeof localStorage !== 'undefined') {\n try {\n const saved = localStorage.getItem(this.storageKey);\n return saved ? JSON.parse(saved) : null;\n } catch (_) { return null; }\n }\n return null;\n },\n\n save(config) {\n if (typeof localStorage !== 'undefined') {\n try { localStorage.setItem(this.storageKey, JSON.stringify(config)); } catch (_) {}\n }\n },\n\n uninstall() {\n if (typeof localStorage !== 'undefined') {\n try { localStorage.removeItem(this.storageKey); } catch (_) {}\n }\n },\n },\n\n /**\n * 无障碍插件 — 屏幕阅读器公告\n */\n accessibility: {\n name: 'accessibility',\n version: '1.0.0',\n description: '通过屏幕阅读器朗读 Toast 内容',\n\n announce(toast) {\n if (typeof document === 'undefined') return;\n const el = document.createElement('div');\n el.setAttribute('aria-live', 'assertive');\n el.setAttribute('aria-atomic', 'true');\n el.style.cssText = 'position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;';\n const typeName = t(toast.type) || toast.type;\n el.textContent = `${typeName}: ${toast.title || ''} ${toast.message || ''}`;\n document.body.appendChild(el);\n setTimeout(() => { if (el.parentNode) el.parentNode.removeChild(el); }, 3000);\n },\n },\n};\n\n/**\n * 插件工具\n */\nconst pluginUtils = {\n createManager() { return new PluginManager(); },\n register(name, plugin) { return defaultPluginManager.register(name, plugin); },\n unregister(name) { return defaultPluginManager.unregister(name); },\n get(name) { return defaultPluginManager.get(name); },\n has(name) { return defaultPluginManager.has(name); },\n getAll() { return defaultPluginManager.getAll(); },\n getNames() { return defaultPluginManager.getNames(); },\n enable(name) { return defaultPluginManager.enable(name); },\n disable(name) { return defaultPluginManager.disable(name); },\n isEnabled(name) { return defaultPluginManager.isEnabled(name); },\n getPreset(name) { return presetPlugins[name] || null; },\n getAllPresets() { return { ...presetPlugins }; },\n\n createPlugin(config) {\n return {\n name: config.name || 'custom',\n version: config.version || '1.0.0',\n description: config.description || '',\n hooks: config.hooks || {},\n install: config.install || null,\n uninstall: config.uninstall || null,\n ...config,\n };\n },\n\n validatePlugin(plugin) {\n const errors = [];\n if (!plugin || typeof plugin !== 'object') errors.push('Plugin must be an object');\n if (!plugin.name && !plugin.version) errors.push('Plugin must have a name or version');\n return { valid: errors.length === 0, errors };\n },\n};\n\nconst defaultPluginManager = new PluginManager();\n\nexport { presetPlugins, pluginUtils, defaultPluginManager, PluginManager };\n","/**\n * MetonaToast - 轻量级Toast通知库\n * @module metona-toast\n * @version 2.0.0\n * @author thzxx\n * @description 轻量、零依赖、精致美观的Toast通知库。单文件,开箱即用。\n * @license MIT\n */\n\nimport { meToast, Toast } from './core.js';\nimport { animationUtils } from './animations.js';\nimport { themeUtils } from './themes.js';\nimport { i18nUtils } from './i18n.js';\nimport { pluginUtils, presetPlugins } from './plugins.js';\nimport { DEFAULTS } from './constants.js';\n\n// 版本信息\nconst VERSION = '2.0.0';\n\n/**\n * 主对象增强\n */\nconst enhancedMeToast = {\n ...meToast,\n \n version: VERSION,\n \n animations: animationUtils,\n themes: themeUtils,\n i18n: i18nUtils,\n plugins: pluginUtils,\n presetPlugins,\n \n /**\n * 安装插件,并连接必要的生命周期钩子\n */\n use(plugin, options = {}) {\n if (typeof plugin === 'string') {\n const preset = presetPlugins[plugin];\n if (!preset) {\n console.warn(`Preset plugin \"${plugin}\" not found`);\n return this;\n }\n this.plugins.register(plugin, { ...preset, ...options });\n\n // 连接插件钩子\n if (plugin === 'accessibility') {\n Toast.on('afterShow', (toast) => preset.announce(toast));\n }\n if (plugin === 'persistence') {\n const saved = preset.install();\n if (saved) this.configure(saved);\n Toast.on('afterClose', () => { preset.save(this.getConfig()); });\n }\n } else if (plugin && typeof plugin === 'object') {\n const name = plugin.name || 'custom';\n this.plugins.register(name, { ...plugin, ...options });\n }\n\n return this;\n },\n \n /**\n * 初始化\n */\n init(options = {}) {\n if (options.config) {\n this.configure(options.config);\n }\n \n if (options.theme) {\n this.themes.switchTheme(options.theme);\n }\n \n if (options.locale) {\n this.i18n.switchLocale(options.locale);\n }\n \n if (options.plugins && Array.isArray(options.plugins)) {\n options.plugins.forEach((plugin) => {\n this.use(plugin);\n });\n }\n \n return this;\n },\n \n /**\n * 销毁\n */\n destroy() {\n this.dismiss();\n \n if (this.plugins && typeof this.plugins.destroy === 'function') {\n this.plugins.destroy();\n }\n \n if (this.themes) {\n if (typeof this.themes.clearThemeListeners === 'function') {\n this.themes.clearThemeListeners();\n }\n if (typeof this.themes.unwatchSystemTheme === 'function') {\n this.themes.unwatchSystemTheme();\n }\n }\n \n if (this.i18n && typeof this.i18n.clearLocaleListeners === 'function') {\n this.i18n.clearLocaleListeners();\n }\n \n if (this.animations && typeof this.animations.cancelAll === 'function') {\n this.animations.cancelAll();\n }\n \n if (typeof document !== 'undefined') {\n const containers = document.querySelectorAll('.met-container');\n containers.forEach((c) => c.parentNode && c.parentNode.removeChild(c));\n \n const style = document.getElementById('metona-toast-styles');\n if (style) style.parentNode.removeChild(style);\n }\n \n this._toasts.clear();\n },\n \n /**\n * 获取状态\n */\n getStatus() {\n return {\n version: VERSION,\n toasts: this._toasts.size,\n theme: this.themes?.getCurrentTheme?.() || 'auto',\n locale: this.i18n?.getCurrentLocale?.() || 'zh-CN',\n plugins: this.plugins?.getNames?.() || [],\n animations: this.animations?.getActiveCount?.() || 0,\n };\n },\n \n /**\n * 获取配置\n */\n getConfig() {\n return { ...this._config };\n },\n \n /**\n * 更新配置\n */\n updateConfig(config) {\n if (config && typeof config === 'object') {\n this._config = { ...this._config, ...config };\n }\n return this;\n },\n \n /**\n * 重置配置\n */\n resetConfig() {\n this._config = { ...DEFAULTS };\n return this;\n },\n \n /**\n * 获取Toast列表\n */\n getToasts() {\n return Array.from(this._toasts.values());\n },\n \n /**\n * 检查是否有Toast\n */\n hasToasts() {\n return this._toasts.size > 0;\n },\n \n /**\n * 获取Toast\n */\n getToast(id) {\n if (!id) return null;\n return this._toasts.get(id) || null;\n },\n \n /**\n * 关闭所有Toast\n */\n closeAll() {\n this._toasts.forEach((t) => t.close());\n },\n \n /**\n * 清除所有Toast\n */\n clearAll() {\n this._toasts.forEach((t) => t.close());\n },\n \n /**\n * 暂停所有Toast\n */\n pauseAll() {\n this._toasts.forEach((t) => t._pause());\n },\n \n /**\n * 恢复所有Toast\n */\n resumeAll() {\n this._toasts.forEach((t) => t._resume());\n },\n \n /**\n * 更新所有Toast\n */\n updateAll(partial) {\n if (partial && typeof partial === 'object') {\n this._toasts.forEach((t) => t.update(partial));\n }\n },\n \n /**\n * 查找Toast\n */\n findToasts(predicate) {\n if (typeof predicate !== 'function') return [];\n return Array.from(this._toasts.values()).filter(predicate);\n },\n \n /**\n * 按类型查找Toast\n */\n findByType(type) {\n return this.findToasts((t) => t.type === type);\n },\n \n /**\n * 按位置查找Toast\n */\n findByPosition(position) {\n return this.findToasts((t) => t.config.position === position);\n },\n \n};\n// 初始化主题和国际化\nif (typeof themeUtils.initTheme === 'function') {\n themeUtils.initTheme();\n}\nif (typeof i18nUtils.initI18n === 'function') {\n i18nUtils.initI18n();\n}\n\n// 浏览器环境全局注册\nif (typeof window !== 'undefined') {\n window.MeToast = enhancedMeToast;\n window.Met = enhancedMeToast;\n \n // Notification API — 页面不可见时自动发送系统通知\n enhancedMeToast._notify = (toast) => {\n if (typeof Notification === 'undefined') return;\n if (Notification.permission === 'denied') return;\n if (!document.hidden) return;\n if (Notification.permission === 'default') {\n Notification.requestPermission().then(p => { if (p === 'granted') sendNotification(toast); });\n return;\n }\n sendNotification(toast);\n };\n const sendNotification = (toast) => {\n try {\n new Notification(toast.title || toast.type, { body: toast.message });\n } catch (_) {}\n };\n Toast.on('afterShow', (toast) => {\n if (toast.config.notifyWhenHidden) enhancedMeToast._notify(toast);\n });\n}\n\n// 导出\nexport default enhancedMeToast;\nexport { enhancedMeToast as meToast, enhancedMeToast as Met, enhancedMeToast as MeToast, Toast, VERSION };\n"],"names":["i18nT","t"],"mappings":"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,MAAM,EAAE,qBAAqB;AACjC,IAAI,MAAM,EAAE,4EAA4E;AACxF,IAAI,WAAW,EAAE,4EAA4E;AAC7F,IAAI,UAAU,EAAE,qBAAqB;AACrC,IAAI,YAAY,EAAE,qBAAqB;AACvC,GAAG;AACH,EAAE,IAAI,EAAE;AACR,IAAI,EAAE,EAAE,wBAAwB;AAChC,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,MAAM,EAAE,2BAA2B;AACvC,IAAI,MAAM,EAAE,0EAA0E;AACtF,IAAI,WAAW,EAAE,yEAAyE;AAC1F,IAAI,UAAU,EAAE,2BAA2B;AAC3C,IAAI,YAAY,EAAE,2BAA2B;AAC7C,GAAG;AACH,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,IAAI,EAAE;AACR,IAAI,EAAE,EAAE,2BAA2B;AACnC,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,MAAM,EAAE,yBAAyB;AACrC,IAAI,MAAM,EAAE,sFAAsF;AAClG,IAAI,WAAW,EAAE,sFAAsF;AACvG,IAAI,UAAU,EAAE,yBAAyB;AACzC,IAAI,YAAY,EAAE,yBAAyB;AAC3C,GAAG;AACH,CAAC;;ACvRD;AACA;AACA;AACA;AACA;AACA;AACA;AAKA,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK;AAC/B,EAAE,OAAO,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACO,MAAM,YAAY,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK;AACtD;AACA,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,OAAO;AAC9C;AACA;AACA,EAAE,IAAI,YAAY,IAAI,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE;AACtE,IAAI,OAAO;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"} \ No newline at end of file +{"version":3,"file":"metona-toast.esm.js","sources":["../src/utils.js","../src/icons.js","../src/locales.js","../src/constants.js","../src/styles.js","../src/themes.js","../src/i18n.js","../src/core.js","../src/animations.js","../src/plugins.js","../src/index.js"],"sourcesContent":["/**\r\n * MetonaToast Utils - 工具函数\r\n * @module utils\r\n * @version 2.0.0\r\n * @description 通用工具函数集合\r\n */\r\n\r\n/**\r\n * 生成唯一ID\r\n * @returns {string} 唯一ID\r\n */\r\nexport const generateId = () => {\r\n return 'met-' + Date.now().toString(36) + '-' + Math.random().toString(36).slice(2, 8);\r\n};\r\n\r\n/**\r\n * HTML转义\r\n * @param {string} s - 输入字符串\r\n * @returns {string} 转义后的字符串\r\n */\r\nexport const escapeHTML = (s) => {\r\n if (typeof document === 'undefined') {\r\n // Node.js环境\r\n return String(s == null ? '' : s)\r\n .replace(/&/g, '&')\r\n .replace(//g, '>')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''');\r\n }\r\n \r\n const div = document.createElement('div');\r\n div.textContent = String(s == null ? '' : s);\r\n return div.innerHTML;\r\n};\r\n\r\n/**\r\n * 事件绑定\r\n * @param {HTMLElement} el - 元素\r\n * @param {string} evt - 事件名\r\n * @param {Function} handler - 事件处理函数\r\n * @param {Object} opts - 选项\r\n * @returns {Function} 清理函数\r\n */\r\nexport const on = (el, evt, handler, opts) => {\r\n el.addEventListener(evt, handler, opts);\r\n return () => el.removeEventListener(evt, handler, opts);\r\n};\r\n\r\n/**\r\n * 检测暗色模式偏好\r\n * @returns {boolean} 是否偏好暗色模式\r\n */\r\nexport const prefersDark = () => {\r\n return typeof window !== 'undefined' && \r\n window.matchMedia && \r\n window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n};\r\n\r\n/**\r\n * 防抖函数\r\n * @param {Function} func - 要防抖的函数\r\n * @param {number} wait - 等待时间(毫秒)\r\n * @param {boolean} immediate - 是否立即执行\r\n * @returns {Function} 防抖后的函数\r\n */\r\nexport const debounce = (func, wait, immediate = false) => {\r\n let timeout;\r\n return function executedFunction(...args) {\r\n const context = this;\r\n const later = () => {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n const callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n};\r\n\r\n/**\r\n * 节流函数\r\n * @param {Function} func - 要节流的函数\r\n * @param {number} limit - 限制时间(毫秒)\r\n * @returns {Function} 节流后的函数\r\n */\r\nexport const throttle = (func, limit) => {\r\n let inThrottle;\r\n return function executedFunction(...args) {\r\n const context = this;\r\n if (!inThrottle) {\r\n func.apply(context, args);\r\n inThrottle = true;\r\n setTimeout(() => inThrottle = false, limit);\r\n }\r\n };\r\n};\r\n\r\n/**\r\n * 深度合并对象\r\n * @param {Object} target - 目标对象\r\n * @param {Object} source - 源对象\r\n * @returns {Object} 合并后的对象\r\n */\r\nexport const deepMerge = (target, source) => {\r\n const output = { ...target };\r\n \r\n Object.keys(source).forEach(key => {\r\n if (source[key] instanceof Object && key in target && target[key] instanceof Object) {\r\n output[key] = deepMerge(target[key], source[key]);\r\n } else {\r\n output[key] = source[key];\r\n }\r\n });\r\n \r\n return output;\r\n};\r\n\r\n/**\r\n * 检查是否为浏览器环境\r\n * @returns {boolean} 是否为浏览器环境\r\n */\r\nexport const isBrowser = () => {\r\n return typeof window !== 'undefined' && typeof document !== 'undefined';\r\n};\r\n\r\n/**\r\n * 安全获取嵌套对象属性\r\n * @param {Object} obj - 对象\r\n * @param {string} path - 属性路径\r\n * @param {*} defaultValue - 默认值\r\n * @returns {*} 属性值\r\n */\r\nexport const getNestedValue = (obj, path, defaultValue = undefined) => {\r\n const keys = path.split('.');\r\n let result = obj;\r\n \r\n for (const key of keys) {\r\n result = result?.[key];\r\n if (result === undefined) return defaultValue;\r\n }\r\n \r\n return result;\r\n};\r\n\r\n/**\r\n * 格式化文件大小\r\n * @param {number} bytes - 字节数\r\n * @param {number} decimals - 小数位数\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatFileSize = (bytes, decimals = 2) => {\r\n if (bytes === 0) return '0 Bytes';\r\n \r\n const k = 1024;\r\n const dm = decimals < 0 ? 0 : decimals;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n \r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n \r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n};\r\n\r\n/**\r\n * 格式化日期\r\n * @param {Date|string|number} date - 日期\r\n * @param {string} format - 格式\r\n * @returns {string} 格式化后的日期字符串\r\n */\r\nexport const formatDate = (date, format = 'YYYY-MM-DD HH:mm:ss') => {\r\n const d = new Date(date);\r\n \r\n const year = d.getFullYear();\r\n const month = String(d.getMonth() + 1).padStart(2, '0');\r\n const day = String(d.getDate()).padStart(2, '0');\r\n const hours = String(d.getHours()).padStart(2, '0');\r\n const minutes = String(d.getMinutes()).padStart(2, '0');\r\n const seconds = String(d.getSeconds()).padStart(2, '0');\r\n \r\n return format\r\n .replace('YYYY', year)\r\n .replace('MM', month)\r\n .replace('DD', day)\r\n .replace('HH', hours)\r\n .replace('mm', minutes)\r\n .replace('ss', seconds);\r\n};\r\n\r\n/**\r\n * 生成随机数\r\n * @param {number} min - 最小值\r\n * @param {number} max - 最大值\r\n * @returns {number} 随机数\r\n */\r\nexport const random = (min, max) => {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n};\r\n\r\n/**\r\n * 检查元素是否在视口中\r\n * @param {HTMLElement} el - 元素\r\n * @returns {boolean} 是否在视口中\r\n */\r\nexport const isInViewport = (el) => {\r\n const rect = el.getBoundingClientRect();\r\n return (\r\n rect.top >= 0 &&\r\n rect.left >= 0 &&\r\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\r\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\r\n );\r\n};\r\n\r\n/**\r\n * 平滑滚动到元素\r\n * @param {HTMLElement} el - 元素\r\n * @param {Object} options - 选项\r\n */\r\nexport const scrollToElement = (el, options = {}) => {\r\n const defaultOptions = {\r\n behavior: 'smooth',\r\n block: 'start',\r\n inline: 'nearest',\r\n };\r\n \r\n el.scrollIntoView({ ...defaultOptions, ...options });\r\n};\r\n\r\n/**\r\n * 复制文本到剪贴板\r\n * @param {string} text - 文本\r\n * @returns {Promise} 是否成功\r\n */\r\nexport const copyToClipboard = async (text) => {\r\n try {\r\n if (navigator.clipboard) {\r\n await navigator.clipboard.writeText(text);\r\n return true;\r\n }\r\n \r\n // 降级方案\r\n const textarea = document.createElement('textarea');\r\n textarea.value = text;\r\n textarea.style.position = 'fixed';\r\n textarea.style.opacity = '0';\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(textarea);\r\n \r\n return true;\r\n } catch (err) {\r\n console.error('Failed to copy text: ', err);\r\n return false;\r\n }\r\n};\r\n\r\n/**\r\n * 检测设备类型\r\n * @returns {string} 设备类型\r\n */\r\nexport const getDeviceType = () => {\r\n const ua = navigator.userAgent;\r\n \r\n if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {\r\n return 'tablet';\r\n }\r\n \r\n if (/Mobile|Android|iP(hone|od)|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/.test(ua)) {\r\n return 'mobile';\r\n }\r\n \r\n return 'desktop';\r\n};\r\n\r\n/**\r\n * 检测浏览器\r\n * @returns {Object} 浏览器信息\r\n */\r\nexport const getBrowserInfo = () => {\r\n const ua = navigator.userAgent;\r\n let browser = 'unknown';\r\n let version = 'unknown';\r\n \r\n if (ua.includes('Firefox/')) {\r\n browser = 'Firefox';\r\n version = ua.split('Firefox/')[1];\r\n } else if (ua.includes('Edg/')) {\r\n browser = 'Edge';\r\n version = ua.split('Edg/')[1];\r\n } else if (ua.includes('Chrome/')) {\r\n browser = 'Chrome';\r\n version = ua.split('Chrome/')[1];\r\n } else if (ua.includes('Safari/')) {\r\n browser = 'Safari';\r\n version = ua.split('Version/')[1];\r\n }\r\n \r\n return { browser, version };\r\n};\r\n\r\n/**\r\n * 检测操作系统\r\n * @returns {string} 操作系统\r\n */\r\nexport const getOS = () => {\r\n const ua = navigator.userAgent;\r\n \r\n if (ua.includes('Win')) return 'Windows';\r\n if (ua.includes('Mac')) return 'MacOS';\r\n if (ua.includes('Linux')) return 'Linux';\r\n if (ua.includes('Android')) return 'Android';\r\n if (ua.includes('iOS') || ua.includes('iPhone') || ua.includes('iPad')) return 'iOS';\r\n \r\n return 'Unknown';\r\n};\r\n\r\n/**\r\n * 检测网络状态\r\n * @returns {Object} 网络信息\r\n */\r\nexport const getNetworkInfo = () => {\r\n if (!navigator.connection) {\r\n return { online: navigator.onLine, type: 'unknown', speed: 'unknown' };\r\n }\r\n \r\n const connection = navigator.connection;\r\n \r\n return {\r\n online: navigator.onLine,\r\n type: connection.effectiveType || 'unknown',\r\n speed: connection.downlink || 'unknown',\r\n rtt: connection.rtt || 'unknown',\r\n };\r\n};\r\n\r\n/**\r\n * 存储数据到localStorage\r\n * @param {string} key - 键\r\n * @param {*} value - 值\r\n * @param {number} expiry - 过期时间(毫秒)\r\n */\r\nexport const setStorage = (key, value, expiry = null) => {\r\n const item = {\r\n value,\r\n timestamp: Date.now(),\r\n expiry: expiry ? Date.now() + expiry : null,\r\n };\r\n \r\n localStorage.setItem(key, JSON.stringify(item));\r\n};\r\n\r\n/**\r\n * 从localStorage获取数据\r\n * @param {string} key - 键\r\n * @param {*} defaultValue - 默认值\r\n * @returns {*} 值\r\n */\r\nexport const getStorage = (key, defaultValue = null) => {\r\n const itemStr = localStorage.getItem(key);\r\n \r\n if (!itemStr) return defaultValue;\r\n \r\n try {\r\n const item = JSON.parse(itemStr);\r\n \r\n // 检查是否过期\r\n if (item.expiry && Date.now() > item.expiry) {\r\n localStorage.removeItem(key);\r\n return defaultValue;\r\n }\r\n \r\n return item.value;\r\n } catch (err) {\r\n console.error('Error parsing storage item:', err);\r\n return defaultValue;\r\n }\r\n};\r\n\r\n/**\r\n * 从localStorage删除数据\r\n * @param {string} key - 键\r\n */\r\nexport const removeStorage = (key) => {\r\n localStorage.removeItem(key);\r\n};\r\n\r\n/**\r\n * 清空localStorage\r\n */\r\nexport const clearStorage = () => {\r\n localStorage.clear();\r\n};\r\n\r\n/**\r\n * 生成UUID\r\n * @returns {string} UUID\r\n */\r\nexport const generateUUID = () => {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n const r = (Math.random() * 16) | 0;\r\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n};\r\n\r\n/**\r\n * 检查是否支持某个CSS属性\r\n * @param {string} property - CSS属性\r\n * @returns {boolean} 是否支持\r\n */\r\nexport const supportsCSSProperty = (property) => {\r\n return typeof document !== 'undefined' && \r\n property in document.documentElement.style;\r\n};\r\n\r\n/**\r\n * 检查是否支持某个JavaScript API\r\n * @param {string} api - API名称\r\n * @returns {boolean} 是否支持\r\n */\r\nexport const supportsAPI = (api) => {\r\n return api in window || api in navigator;\r\n};\r\n\r\n/**\r\n * 获取URL参数\r\n * @param {string} name - 参数名\r\n * @returns {string|null} 参数值\r\n */\r\nexport const getURLParam = (name) => {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n return urlParams.get(name);\r\n};\r\n\r\n/**\r\n * 设置URL参数\r\n * @param {string} name - 参数名\r\n * @param {string} value - 参数值\r\n */\r\nexport const setURLParam = (name, value) => {\r\n const url = new URL(window.location);\r\n url.searchParams.set(name, value);\r\n window.history.pushState({}, '', url);\r\n};\r\n\r\n/**\r\n * 删除URL参数\r\n * @param {string} name - 参数名\r\n */\r\nexport const removeURLParam = (name) => {\r\n const url = new URL(window.location);\r\n url.searchParams.delete(name);\r\n window.history.pushState({}, '', url);\r\n};\r\n\r\n/**\r\n * 格式化数字\r\n * @param {number} number - 数字\r\n * @param {number} decimals - 小数位数\r\n * @param {string} decimalSeparator - 小数分隔符\r\n * @param {string} thousandsSeparator - 千位分隔符\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatNumber = (number, decimals = 0, decimalSeparator = '.', thousandsSeparator = ',') => {\r\n const fixed = number.toFixed(decimals);\r\n const [intPart, decPart] = fixed.split('.');\r\n \r\n const formattedInt = intPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator);\r\n \r\n return decimals > 0 ? `${formattedInt}${decimalSeparator}${decPart}` : formattedInt;\r\n};\r\n\r\n/**\r\n * 格式化货币\r\n * @param {number} amount - 金额\r\n * @param {string} currency - 货币代码\r\n * @param {string} locale - 地区\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatCurrency = (amount, currency = 'USD', locale = 'en-US') => {\r\n return new Intl.NumberFormat(locale, {\r\n style: 'currency',\r\n currency,\r\n }).format(amount);\r\n};\r\n\r\n/**\r\n * 格式化百分比\r\n * @param {number} value - 值\r\n * @param {number} decimals - 小数位数\r\n * @param {string} locale - 地区\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatPercent = (value, decimals = 2, locale = 'en-US') => {\r\n return new Intl.NumberFormat(locale, {\r\n style: 'percent',\r\n minimumFractionDigits: decimals,\r\n maximumFractionDigits: decimals,\r\n }).format(value / 100);\r\n};\r\n\r\n/**\r\n * 检查是否为空值\r\n * @param {*} value - 值\r\n * @returns {boolean} 是否为空\r\n */\r\nexport const isEmpty = (value) => {\r\n if (value === null || value === undefined) return true;\r\n if (typeof value === 'string') return value.trim().length === 0;\r\n if (Array.isArray(value)) return value.length === 0;\r\n if (typeof value === 'object') return Object.keys(value).length === 0;\r\n return false;\r\n};\r\n\r\n/**\r\n * 深拷贝对象\r\n * @param {*} obj - 对象\r\n * @returns {*} 拷贝后的对象\r\n */\r\nexport const deepClone = (obj) => {\r\n if (obj === null || typeof obj !== 'object') return obj;\r\n if (obj instanceof Date) return new Date(obj.getTime());\r\n if (obj instanceof RegExp) return new RegExp(obj);\r\n if (obj instanceof Map) return new Map([...obj].map(([k, v]) => [k, deepClone(v)]));\r\n if (obj instanceof Set) return new Set([...obj].map(item => deepClone(item)));\r\n \r\n const cloned = Array.isArray(obj) ? [] : {};\r\n \r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n cloned[key] = deepClone(obj[key]);\r\n }\r\n }\r\n \r\n return cloned;\r\n};\r\n\r\n/**\r\n * 比较两个对象是否相等\r\n * @param {*} obj1 - 对象1\r\n * @param {*} obj2 - 对象2\r\n * @returns {boolean} 是否相等\r\n */\r\nexport const isEqual = (obj1, obj2) => {\r\n if (obj1 === obj2) return true;\r\n if (obj1 === null || obj2 === null) return false;\r\n if (typeof obj1 !== typeof obj2) return false;\r\n \r\n if (typeof obj1 !== 'object') return obj1 === obj2;\r\n \r\n const keys1 = Object.keys(obj1);\r\n const keys2 = Object.keys(obj2);\r\n \r\n if (keys1.length !== keys2.length) return false;\r\n \r\n for (const key of keys1) {\r\n if (!keys2.includes(key)) return false;\r\n if (!isEqual(obj1[key], obj2[key])) return false;\r\n }\r\n \r\n return true;\r\n};\r\n\r\n/**\r\n * 验证邮箱格式\r\n * @param {string} email - 邮箱\r\n * @returns {boolean} 是否有效\r\n */\r\nexport const isValidEmail = (email) => {\r\n const re = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n return re.test(email);\r\n};\r\n\r\n/**\r\n * 验证URL格式\r\n * @param {string} url - URL\r\n * @returns {boolean} 是否有效\r\n */\r\nexport const isValidURL = (url) => {\r\n try {\r\n new URL(url);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n};\r\n\r\n/**\r\n * 验证手机号格式\r\n * @param {string} phone - 手机号\r\n * @returns {boolean} 是否有效\r\n */\r\nexport const isValidPhone = (phone) => {\r\n const re = /^1[3-9]\\d{9}$/;\r\n return re.test(phone);\r\n};\r\n\r\n/**\r\n * 验证身份证号格式\r\n * @param {string} idCard - 身份证号\r\n * @returns {boolean} 是否有效\r\n */\r\nexport const isValidIDCard = (idCard) => {\r\n const re = /^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$/;\r\n return re.test(idCard);\r\n};\r\n\r\n/**\r\n * 生成随机颜色\r\n * @returns {string} 颜色值\r\n */\r\nexport const randomColor = () => {\r\n return '#' + Math.floor(Math.random() * 16777215).toString(16).padStart(6, '0');\r\n};\r\n\r\n/**\r\n * 颜色转RGBA\r\n * @param {string} color - 颜色值\r\n * @param {number} alpha - 透明度\r\n * @returns {string} RGBA颜色值\r\n */\r\nexport const colorToRGBA = (color, alpha = 1) => {\r\n const hex = color.replace('#', '');\r\n const r = parseInt(hex.substring(0, 2), 16);\r\n const g = parseInt(hex.substring(2, 4), 16);\r\n const b = parseInt(hex.substring(4, 6), 16);\r\n \r\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\r\n};\r\n\r\n/**\r\n * 获取颜色亮度\r\n * @param {string} color - 颜色值\r\n * @returns {number} 亮度值(0-255)\r\n */\r\nexport const getColorBrightness = (color) => {\r\n const hex = color.replace('#', '');\r\n const r = parseInt(hex.substring(0, 2), 16);\r\n const g = parseInt(hex.substring(2, 4), 16);\r\n const b = parseInt(hex.substring(4, 6), 16);\r\n \r\n return (r * 299 + g * 587 + b * 114) / 1000;\r\n};\r\n\r\n/**\r\n * 判断是否为浅色\r\n * @param {string} color - 颜色值\r\n * @returns {boolean} 是否为浅色\r\n */\r\nexport const isLightColor = (color) => {\r\n return getColorBrightness(color) > 128;\r\n};\r\n\r\n/**\r\n * 获取对比色\r\n * @param {string} color - 颜色值\r\n * @returns {string} 对比色\r\n */\r\nexport const getContrastColor = (color) => {\r\n return isLightColor(color) ? '#000000' : '#FFFFFF';\r\n};\r\n\r\n/**\r\n * 生成渐变色\r\n * @param {string} color1 - 起始颜色\r\n * @param {string} color2 - 结束颜色\r\n * @param {number} steps - 步数\r\n * @returns {Array} 颜色数组\r\n */\r\nexport const generateGradient = (color1, color2, steps = 10) => {\r\n const hex = (color) => {\r\n const c = color.replace('#', '');\r\n return [\r\n parseInt(c.substring(0, 2), 16),\r\n parseInt(c.substring(2, 4), 16),\r\n parseInt(c.substring(4, 6), 16),\r\n ];\r\n };\r\n \r\n const [r1, g1, b1] = hex(color1);\r\n const [r2, g2, b2] = hex(color2);\r\n \r\n const gradient = [];\r\n \r\n for (let i = 0; i < steps; i++) {\r\n const r = Math.round(r1 + (r2 - r1) * (i / (steps - 1)));\r\n const g = Math.round(g1 + (g2 - g1) * (i / (steps - 1)));\r\n const b = Math.round(b1 + (b2 - b1) * (i / (steps - 1)));\r\n \r\n gradient.push(`#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`);\r\n }\r\n \r\n return gradient;\r\n};\r\n\r\n/**\r\n * 获取字符长度(支持中文)\r\n * @param {string} str - 字符串\r\n * @returns {number} 长度\r\n */\r\nexport const getStringLength = (str) => {\r\n let length = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n const code = str.charCodeAt(i);\r\n if (code > 0 && code <= 128) {\r\n length += 1;\r\n } else {\r\n length += 2;\r\n }\r\n }\r\n return length;\r\n};\r\n\r\n/**\r\n * 截取字符串(支持中文)\r\n * @param {string} str - 字符串\r\n * @param {number} length - 长度\r\n * @param {string} suffix - 后缀\r\n * @returns {string} 截取后的字符串\r\n */\r\nexport const truncateString = (str, length, suffix = '...') => {\r\n let currentLength = 0;\r\n let result = '';\r\n \r\n for (let i = 0; i < str.length; i++) {\r\n const char = str[i];\r\n const code = str.charCodeAt(i);\r\n \r\n if (code > 0 && code <= 128) {\r\n currentLength += 1;\r\n } else {\r\n currentLength += 2;\r\n }\r\n \r\n if (currentLength > length) {\r\n return result + suffix;\r\n }\r\n \r\n result += char;\r\n }\r\n \r\n return result;\r\n};\r\n\r\n/**\r\n * 驼峰转换\r\n * @param {string} str - 字符串\r\n * @returns {string} 驼峰格式字符串\r\n */\r\nexport const toCamelCase = (str) => {\r\n return str\r\n .replace(/[-_\\s]+(.)?/g, (_, c) => (c ? c.toUpperCase() : ''))\r\n .replace(/^[A-Z]/, (c) => c.toLowerCase());\r\n};\r\n\r\n/**\r\n * 短横线转换\r\n * @param {string} str - 字符串\r\n * @returns {string} 短横线格式字符串\r\n */\r\nexport const toKebabCase = (str) => {\r\n return str\r\n .replace(/([a-z])([A-Z])/g, '$1-$2')\r\n .replace(/[\\s_]+/g, '-')\r\n .toLowerCase();\r\n};\r\n\r\n/**\r\n * 下划线转换\r\n * @param {string} str - 字符串\r\n * @returns {string} 下划线格式字符串\r\n */\r\nexport const toSnakeCase = (str) => {\r\n return str\r\n .replace(/([a-z])([A-Z])/g, '$1_$2')\r\n .replace(/[\\s\\-]+/g, '_')\r\n .toLowerCase();\r\n};\r\n\r\n/**\r\n * 首字母大写\r\n * @param {string} str - 字符串\r\n * @returns {string} 首字母大写字符串\r\n */\r\nexport const capitalize = (str) => {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n};\r\n\r\n/**\r\n * 每个单词首字母大写\r\n * @param {string} str - 字符串\r\n * @returns {string} 每个单词首字母大写字符串\r\n */\r\nexport const capitalizeWords = (str) => {\r\n return str.replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n};\r\n\r\n/**\r\n * 移除HTML标签\r\n * @param {string} html - HTML字符串\r\n * @returns {string} 纯文本\r\n */\r\nexport const stripHTML = (html) => {\r\n const tmp = document.createElement('div');\r\n tmp.innerHTML = html;\r\n return tmp.textContent || tmp.innerText || '';\r\n};\r\n\r\n/**\r\n * 转义正则表达式\r\n * @param {string} str - 字符串\r\n * @returns {string} 转义后的字符串\r\n */\r\nexport const escapeRegExp = (str) => {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n};\r\n\r\n/**\r\n * 生成随机字符串\r\n * @param {number} length - 长度\r\n * @param {string} chars - 字符集\r\n * @returns {string} 随机字符串\r\n */\r\nexport const randomString = (length = 8, chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') => {\r\n let result = '';\r\n for (let i = 0; i < length; i++) {\r\n result += chars.charAt(Math.floor(Math.random() * chars.length));\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * 延迟执行\r\n * @param {number} ms - 毫秒数\r\n * @returns {Promise} Promise对象\r\n */\r\nexport const sleep = (ms) => {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n};\r\n\r\n/**\r\n * 重试函数\r\n * @param {Function} fn - 函数\r\n * @param {number} maxAttempts - 最大尝试次数\r\n * @param {number} delay - 延迟时间\r\n * @returns {Promise} Promise对象\r\n */\r\nexport const retry = async (fn, maxAttempts = 3, delay = 1000) => {\r\n let lastError;\r\n \r\n for (let attempt = 1; attempt <= maxAttempts; attempt++) {\r\n try {\r\n return await fn();\r\n } catch (err) {\r\n lastError = err;\r\n if (attempt < maxAttempts) {\r\n await sleep(delay * attempt);\r\n }\r\n }\r\n }\r\n \r\n throw lastError;\r\n};\r\n\r\n/**\r\n * 超时控制\r\n * @param {Promise} promise - Promise对象\r\n * @param {number} ms - 毫秒数\r\n * @returns {Promise} Promise对象\r\n */\r\nexport const timeout = (promise, ms) => {\r\n return Promise.race([\r\n promise,\r\n new Promise((_, reject) => {\r\n setTimeout(() => reject(new Error('Timeout')), ms);\r\n }),\r\n ]);\r\n};\r\n\r\n/**\r\n * 并发控制\r\n * @param {Array} tasks - 任务数组\r\n * @param {number} concurrency - 并发数\r\n * @returns {Promise} Promise对象\r\n */\r\nexport const parallel = async (tasks, concurrency = 5) => {\r\n const results = [];\r\n const executing = new Set();\r\n \r\n for (const [index, task] of tasks.entries()) {\r\n const p = Promise.resolve().then(() => task());\r\n results.push(p);\r\n executing.add(p);\r\n \r\n const clean = () => executing.delete(p);\r\n p.then(clean, clean);\r\n \r\n if (executing.size >= concurrency) {\r\n await Promise.race(executing);\r\n }\r\n }\r\n \r\n return Promise.all(results);\r\n};\r\n\r\n/**\r\n * 序列执行\r\n * @param {Array} tasks - 任务数组\r\n * @returns {Promise} Promise对象\r\n */\r\nexport const sequence = async (tasks) => {\r\n const results = [];\r\n \r\n for (const task of tasks) {\r\n results.push(await task());\r\n }\r\n \r\n return results;\r\n};\r\n\r\n/**\r\n * 缓存函数\r\n * @param {Function} fn - 函数\r\n * @param {number} maxSize - 最大缓存数\r\n * @returns {Function} 缓存后的函数\r\n */\r\nexport const memoize = (fn, maxSize = 100) => {\r\n const cache = new Map();\r\n \r\n return (...args) => {\r\n const key = JSON.stringify(args);\r\n \r\n if (cache.has(key)) {\r\n return cache.get(key);\r\n }\r\n \r\n const result = fn(...args);\r\n \r\n if (cache.size >= maxSize) {\r\n const firstKey = cache.keys().next().value;\r\n cache.delete(firstKey);\r\n }\r\n \r\n cache.set(key, result);\r\n \r\n return result;\r\n };\r\n};\r\n\r\n/**\r\n * 单例模式\r\n * @param {Function} fn - 函数\r\n * @returns {Function} 单例函数\r\n */\r\nexport const singleton = (fn) => {\r\n let instance;\r\n \r\n return (...args) => {\r\n if (!instance) {\r\n instance = fn(...args);\r\n }\r\n return instance;\r\n };\r\n};\r\n\r\n/**\r\n * 观察者模式\r\n * @returns {Object} 观察者对象\r\n */\r\nexport const createObserver = () => {\r\n const listeners = new Map();\r\n \r\n return {\r\n on(event, callback) {\r\n if (!listeners.has(event)) {\r\n listeners.set(event, new Set());\r\n }\r\n listeners.get(event).add(callback);\r\n \r\n return () => this.off(event, callback);\r\n },\r\n \r\n off(event, callback) {\r\n if (listeners.has(event)) {\r\n listeners.get(event).delete(callback);\r\n }\r\n },\r\n \r\n emit(event, ...args) {\r\n if (listeners.has(event)) {\r\n listeners.get(event).forEach(callback => callback(...args));\r\n }\r\n },\r\n \r\n once(event, callback) {\r\n const wrapper = (...args) => {\r\n callback(...args);\r\n this.off(event, wrapper);\r\n };\r\n this.on(event, wrapper);\r\n },\r\n \r\n clear() {\r\n listeners.clear();\r\n },\r\n };\r\n};\r\n\r\n/**\r\n * 状态机\r\n * @param {Object} config - 配置\r\n * @returns {Object} 状态机对象\r\n */\r\nexport const createStateMachine = (config) => {\r\n let currentState = config.initial;\r\n const listeners = new Map();\r\n \r\n return {\r\n get state() {\r\n return currentState;\r\n },\r\n \r\n transition(event) {\r\n const transitions = config.transitions[currentState];\r\n if (!transitions || !transitions[event]) {\r\n throw new Error(`Invalid transition: ${event} from ${currentState}`);\r\n }\r\n \r\n const nextState = transitions[event];\r\n const prevState = currentState;\r\n currentState = nextState;\r\n \r\n if (listeners.has(nextState)) {\r\n listeners.get(nextState).forEach(callback => callback(prevState, nextState));\r\n }\r\n \r\n return nextState;\r\n },\r\n \r\n on(state, callback) {\r\n if (!listeners.has(state)) {\r\n listeners.set(state, new Set());\r\n }\r\n listeners.get(state).add(callback);\r\n \r\n return () => this.off(state, callback);\r\n },\r\n \r\n off(state, callback) {\r\n if (listeners.has(state)) {\r\n listeners.get(state).delete(callback);\r\n }\r\n },\r\n \r\n can(event) {\r\n const transitions = config.transitions[currentState];\r\n return transitions && transitions[event] !== undefined;\r\n },\r\n };\r\n};\r\n","/**\r\n * MetonaToast Icons — 图标SVG定义\r\n * @module icons\r\n * @version 2.0.0\r\n * @description 80+ 内置SVG图标\r\n */\r\n\r\nexport const ICONS = {\r\n success: `\r\n \r\n `,\r\n \r\n error: `\r\n \r\n \r\n \r\n `,\r\n \r\n warning: `\r\n \r\n \r\n \r\n `,\r\n \r\n info: `\r\n \r\n \r\n \r\n `,\r\n \r\n loading: `\r\n \r\n `,\r\n \r\n close: `\r\n \r\n \r\n `,\r\n \r\n check: `\r\n \r\n `,\r\n \r\n x: `\r\n \r\n \r\n `,\r\n \r\n alert: `\r\n \r\n \r\n \r\n `,\r\n \r\n question: `\r\n \r\n \r\n \r\n `,\r\n \r\n star: `\r\n \r\n `,\r\n \r\n heart: `\r\n \r\n `,\r\n \r\n bell: `\r\n \r\n \r\n `,\r\n \r\n mail: `\r\n \r\n \r\n `,\r\n \r\n settings: `\r\n \r\n \r\n `,\r\n \r\n user: `\r\n \r\n \r\n `,\r\n \r\n home: `\r\n \r\n \r\n `,\r\n \r\n search: `\r\n \r\n \r\n `,\r\n \r\n plus: `\r\n \r\n \r\n `,\r\n \r\n minus: `\r\n \r\n `,\r\n \r\n edit: `\r\n \r\n \r\n `,\r\n \r\n trash: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n download: `\r\n \r\n \r\n \r\n `,\r\n \r\n upload: `\r\n \r\n \r\n \r\n `,\r\n \r\n share: `\r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n link: `\r\n \r\n \r\n `,\r\n \r\n external: `\r\n \r\n \r\n \r\n `,\r\n \r\n clock: `\r\n \r\n \r\n `,\r\n \r\n calendar: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n map: `\r\n \r\n \r\n \r\n `,\r\n \r\n compass: `\r\n \r\n \r\n `,\r\n \r\n globe: `\r\n \r\n \r\n \r\n `,\r\n \r\n wifi: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n cloud: `\r\n \r\n `,\r\n \r\n sun: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n moon: `\r\n \r\n `,\r\n \r\n zap: `\r\n \r\n `,\r\n \r\n activity: `\r\n \r\n `,\r\n \r\n cpu: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n database: `\r\n \r\n \r\n \r\n `,\r\n \r\n server: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n terminal: `\r\n \r\n \r\n `,\r\n \r\n code: `\r\n \r\n \r\n `,\r\n \r\n git: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n package: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n layers: `\r\n \r\n \r\n \r\n `,\r\n \r\n grid: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n list: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n filter: `\r\n \r\n `,\r\n \r\n sort: `\r\n \r\n \r\n `,\r\n \r\n refresh: `\r\n \r\n \r\n \r\n `,\r\n \r\n sync: `\r\n \r\n \r\n \r\n `,\r\n \r\n power: `\r\n \r\n \r\n `,\r\n \r\n battery: `\r\n \r\n \r\n `,\r\n \r\n bluetooth: `\r\n \r\n `,\r\n \r\n volume: `\r\n \r\n \r\n `,\r\n \r\n mic: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n camera: `\r\n \r\n \r\n `,\r\n \r\n image: `\r\n \r\n \r\n \r\n `,\r\n \r\n video: `\r\n \r\n \r\n `,\r\n \r\n music: `\r\n \r\n \r\n \r\n `,\r\n \r\n file: `\r\n \r\n \r\n `,\r\n \r\n folder: `\r\n \r\n `,\r\n \r\n clipboard: `\r\n \r\n \r\n `,\r\n \r\n save: `\r\n \r\n \r\n \r\n `,\r\n \r\n print: `\r\n \r\n \r\n \r\n `,\r\n \r\n eye: `\r\n \r\n \r\n `,\r\n \r\n eyeOff: `\r\n \r\n \r\n `,\r\n \r\n lock: `\r\n \r\n \r\n `,\r\n \r\n unlock: `\r\n \r\n \r\n `,\r\n \r\n shield: `\r\n \r\n `,\r\n \r\n key: `\r\n \r\n `,\r\n \r\n flag: `\r\n \r\n \r\n `,\r\n \r\n bookmark: `\r\n \r\n `,\r\n \r\n tag: `\r\n \r\n \r\n `,\r\n \r\n gift: `\r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n award: `\r\n \r\n \r\n `,\r\n \r\n target: `\r\n \r\n \r\n \r\n `,\r\n \r\n crosshair: `\r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n move: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n maximize: `\r\n \r\n `,\r\n \r\n minimize: `\r\n \r\n `,\r\n \r\n copy: `\r\n \r\n \r\n `,\r\n \r\n cut: `\r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n paste: `\r\n \r\n \r\n `,\r\n \r\n rotateCw: `\r\n \r\n \r\n `,\r\n \r\n rotateCcw: `\r\n \r\n \r\n `,\r\n \r\n zoomIn: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n zoomOut: `\r\n \r\n \r\n \r\n `,\r\n \r\n crop: `\r\n \r\n \r\n `,\r\n \r\n sliders: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n toggleLeft: `\r\n \r\n \r\n `,\r\n \r\n toggleRight: `\r\n \r\n \r\n `,\r\n \r\n checkCircle: `\r\n \r\n \r\n `,\r\n \r\n xCircle: `\r\n \r\n \r\n \r\n `,\r\n \r\n alertCircle: `\r\n \r\n \r\n \r\n `,\r\n \r\n infoCircle: `\r\n \r\n \r\n \r\n `,\r\n \r\n helpCircle: `\r\n \r\n \r\n \r\n `,\r\n \r\n alertTriangle: `\r\n \r\n \r\n \r\n `,\r\n \r\n checkSquare: `\r\n \r\n \r\n `,\r\n \r\n square: `\r\n \r\n `,\r\n \r\n circle: `\r\n \r\n `,\r\n \r\n triangle: `\r\n \r\n `,\r\n \r\n hexagon: `\r\n \r\n `,\r\n \r\n octagon: `\r\n \r\n `,\r\n \r\n pentagon: `\r\n \r\n `,\r\n \r\n diamond: `\r\n \r\n `,\r\n};\r\n","/**\r\n * MetonaToast Locales — 国际化翻译数据\r\n * @module locales\r\n * @version 2.0.0\r\n * @description 内置 zh-CN / en-US 完整翻译\r\n */\r\n\r\nexport const LOCALES = {\r\n 'zh-CN': {\r\n close: '关闭',\r\n loading: '加载中...',\r\n success: '操作成功',\r\n error: '操作失败',\r\n warning: '警告',\r\n info: '信息',\r\n confirm: '确认',\r\n cancel: '取消',\r\n yes: '是',\r\n no: '否',\r\n ok: '确定',\r\n retry: '重试',\r\n undo: '撤销',\r\n redo: '重做',\r\n save: '保存',\r\n delete: '删除',\r\n edit: '编辑',\r\n add: '添加',\r\n remove: '移除',\r\n search: '搜索',\r\n filter: '筛选',\r\n sort: '排序',\r\n refresh: '刷新',\r\n sync: '同步',\r\n upload: '上传',\r\n download: '下载',\r\n share: '分享',\r\n copy: '复制',\r\n cut: '剪切',\r\n paste: '粘贴',\r\n print: '打印',\r\n export: '导出',\r\n import: '导入',\r\n settings: '设置',\r\n help: '帮助',\r\n about: '关于',\r\n version: '版本',\r\n language: '语言',\r\n theme: '主题',\r\n dark: '暗色',\r\n light: '亮色',\r\n auto: '自动',\r\n notifications: '通知',\r\n enable: '启用',\r\n disable: '禁用',\r\n on: '开启',\r\n off: '关闭',\r\n max: '最大',\r\n min: '最小',\r\n expand: '展开',\r\n collapse: '折叠',\r\n fullscreen: '全屏',\r\n exitFullscreen: '退出全屏',\r\n zoomIn: '放大',\r\n zoomOut: '缩小',\r\n reset: '重置',\r\n apply: '应用',\r\n submit: '提交',\r\n send: '发送',\r\n receive: '接收',\r\n connect: '连接',\r\n disconnect: '断开',\r\n start: '开始',\r\n stop: '停止',\r\n pause: '暂停',\r\n resume: '继续',\r\n next: '下一个',\r\n previous: '上一个',\r\n first: '第一个',\r\n last: '最后一个',\r\n back: '返回',\r\n forward: '前进',\r\n home: '首页',\r\n menu: '菜单',\r\n more: '更多',\r\n less: '更少',\r\n show: '显示',\r\n hide: '隐藏',\r\n visible: '可见',\r\n hidden: '隐藏',\r\n enabled: '已启用',\r\n disabled: '已禁用',\r\n active: '活跃',\r\n inactive: '非活跃',\r\n online: '在线',\r\n offline: '离线',\r\n connected: '已连接',\r\n disconnected: '已断开',\r\n loading: '加载中',\r\n loaded: '已加载',\r\n saving: '保存中',\r\n saved: '已保存',\r\n deleting: '删除中',\r\n deleted: '已删除',\r\n uploading: '上传中',\r\n uploaded: '已上传',\r\n downloading: '下载中',\r\n downloaded: '已下载',\r\n processing: '处理中',\r\n processed: '已处理',\r\n syncing: '同步中',\r\n synced: '已同步',\r\n sending: '发送中',\r\n sent: '已发送',\r\n receiving: '接收中',\r\n received: '已接收',\r\n connecting: '连接中',\r\n error: '错误',\r\n warning: '警告',\r\n info: '信息',\r\n success: '成功',\r\n question: '问题',\r\n help: '帮助',\r\n feedback: '反馈',\r\n report: '报告',\r\n bug: '错误',\r\n feature: '功能',\r\n improvement: '改进',\r\n suggestion: '建议',\r\n request: '请求',\r\n response: '响应',\r\n status: '状态',\r\n progress: '进度',\r\n complete: '完成',\r\n incomplete: '未完成',\r\n pending: '待处理',\r\n processing: '处理中',\r\n failed: '失败',\r\n cancelled: '已取消',\r\n timeout: '超时',\r\n expired: '已过期',\r\n invalid: '无效',\r\n valid: '有效',\r\n required: '必填',\r\n optional: '可选',\r\n enabled: '启用',\r\n disabled: '禁用',\r\n allowed: '允许',\r\n denied: '拒绝',\r\n approved: '已批准',\r\n rejected: '已拒绝',\r\n accepted: '已接受',\r\n declined: '已拒绝',\r\n confirmed: '已确认',\r\n unconfirmed: '未确认',\r\n verified: '已验证',\r\n unverified: '未验证',\r\n authenticated: '已认证',\r\n unauthenticated: '未认证',\r\n authorized: '已授权',\r\n unauthorized: '未授权',\r\n public: '公开',\r\n private: '私有',\r\n protected: '受保护',\r\n internal: '内部',\r\n external: '外部',\r\n local: '本地',\r\n remote: '远程',\r\n global: '全局',\r\n system: '系统',\r\n user: '用户',\r\n admin: '管理员',\r\n moderator: '版主',\r\n guest: '访客',\r\n member: '成员',\r\n owner: '所有者',\r\n creator: '创建者',\r\n editor: '编辑者',\r\n viewer: '查看者',\r\n subscriber: '订阅者',\r\n follower: '关注者',\r\n following: '关注中',\r\n friend: '朋友',\r\n contact: '联系人',\r\n group: '群组',\r\n team: '团队',\r\n organization: '组织',\r\n company: '公司',\r\n department: '部门',\r\n project: '项目',\r\n task: '任务',\r\n issue: '问题',\r\n ticket: '工单',\r\n request: '请求',\r\n response: '响应',\r\n message: '消息',\r\n notification: '通知',\r\n alert: '警报',\r\n reminder: '提醒',\r\n event: '事件',\r\n activity: '活动',\r\n log: '日志',\r\n report: '报告',\r\n analytics: '分析',\r\n statistics: '统计',\r\n metrics: '指标',\r\n performance: '性能',\r\n security: '安全',\r\n privacy: '隐私',\r\n compliance: '合规',\r\n policy: '政策',\r\n terms: '条款',\r\n conditions: '条件',\r\n agreement: '协议',\r\n contract: '合同',\r\n license: '许可证',\r\n copyright: '版权',\r\n trademark: '商标',\r\n patent: '专利',\r\n tradeSecret: '商业秘密',\r\n confidential: '机密',\r\n sensitive: '敏感',\r\n critical: '关键',\r\n important: '重要',\r\n urgent: '紧急',\r\n high: '高',\r\n medium: '中',\r\n low: '低',\r\n none: '无',\r\n all: '全部',\r\n any: '任何',\r\n some: '一些',\r\n each: '每个',\r\n every: '每个',\r\n both: '两者',\r\n neither: '两者都不',\r\n either: '任一',\r\n other: '其他',\r\n another: '另一个',\r\n this: '这个',\r\n that: '那个',\r\n these: '这些',\r\n those: '那些',\r\n here: '这里',\r\n there: '那里',\r\n where: '哪里',\r\n when: '何时',\r\n why: '为什么',\r\n how: '如何',\r\n what: '什么',\r\n who: '谁',\r\n which: '哪个',\r\n whose: '谁的',\r\n whom: '谁',\r\n myself: '我自己',\r\n yourself: '你自己',\r\n himself: '他自己',\r\n herself: '她自己',\r\n itself: '它自己',\r\n ourselves: '我们自己',\r\n yourselves: '你们自己',\r\n themselves: '他们自己',\r\n mine: '我的',\r\n yours: '你的',\r\n his: '他的',\r\n hers: '她的',\r\n its: '它的',\r\n ours: '我们的',\r\n yours: '你们的',\r\n theirs: '他们的',\r\n me: '我',\r\n you: '你',\r\n him: '他',\r\n her: '她',\r\n it: '它',\r\n us: '我们',\r\n them: '他们',\r\n my: '我的',\r\n your: '你的',\r\n his: '他的',\r\n her: '她的',\r\n its: '它的',\r\n our: '我们的',\r\n your: '你们的',\r\n their: '他们的',\r\n i: '我',\r\n you: '你',\r\n he: '他',\r\n she: '她',\r\n it: '它',\r\n we: '我们',\r\n they: '他们',\r\n am: '是',\r\n is: '是',\r\n are: '是',\r\n was: '是',\r\n were: '是',\r\n be: '是',\r\n been: '是',\r\n being: '是',\r\n have: '有',\r\n has: '有',\r\n had: '有',\r\n having: '有',\r\n do: '做',\r\n does: '做',\r\n did: '做',\r\n doing: '做',\r\n will: '会',\r\n would: '会',\r\n shall: '将',\r\n should: '应该',\r\n may: '可以',\r\n might: '可能',\r\n can: '能',\r\n could: '能',\r\n must: '必须',\r\n need: '需要',\r\n dare: '敢',\r\n ought: '应该',\r\n used: '过去常常',\r\n to: '到',\r\n of: '的',\r\n in: '在',\r\n for: '为了',\r\n on: '在',\r\n with: '和',\r\n at: '在',\r\n by: '通过',\r\n from: '从',\r\n into: '进入',\r\n during: '在...期间',\r\n before: '在...之前',\r\n after: '在...之后',\r\n above: '在...上面',\r\n below: '在...下面',\r\n between: '在...之间',\r\n under: '在...下面',\r\n over: '在...上面',\r\n across: '穿过',\r\n through: '通过',\r\n into: '进入',\r\n towards: '朝向',\r\n upon: '在...上面',\r\n about: '关于',\r\n against: '反对',\r\n among: '在...之中',\r\n along: '沿着',\r\n around: '周围',\r\n beyond: '超出',\r\n but: '但是',\r\n despite: '尽管',\r\n except: '除了',\r\n inside: '里面',\r\n outside: '外面',\r\n since: '自从',\r\n until: '直到',\r\n unless: '除非',\r\n whether: '是否',\r\n while: '当...时候',\r\n although: '虽然',\r\n because: '因为',\r\n if: '如果',\r\n once: '一旦',\r\n since: '自从',\r\n so: '所以',\r\n that: '那个',\r\n though: '虽然',\r\n till: '直到',\r\n unless: '除非',\r\n until: '直到',\r\n when: '当...时候',\r\n whenever: '每当',\r\n where: '哪里',\r\n wherever: '无论哪里',\r\n whereas: '然而',\r\n wherever: '无论哪里',\r\n while: '当...时候',\r\n why: '为什么',\r\n },\r\n \r\n 'en-US': {\r\n close: 'Close',\r\n loading: 'Loading...',\r\n success: 'Success',\r\n error: 'Error',\r\n warning: 'Warning',\r\n info: 'Info',\r\n confirm: 'Confirm',\r\n cancel: 'Cancel',\r\n yes: 'Yes',\r\n no: 'No',\r\n ok: 'OK',\r\n retry: 'Retry',\r\n undo: 'Undo',\r\n redo: 'Redo',\r\n save: 'Save',\r\n delete: 'Delete',\r\n edit: 'Edit',\r\n add: 'Add',\r\n remove: 'Remove',\r\n search: 'Search',\r\n filter: 'Filter',\r\n sort: 'Sort',\r\n refresh: 'Refresh',\r\n sync: 'Sync',\r\n upload: 'Upload',\r\n download: 'Download',\r\n share: 'Share',\r\n copy: 'Copy',\r\n cut: 'Cut',\r\n paste: 'Paste',\r\n print: 'Print',\r\n export: 'Export',\r\n import: 'Import',\r\n settings: 'Settings',\r\n help: 'Help',\r\n about: 'About',\r\n version: 'Version',\r\n language: 'Language',\r\n theme: 'Theme',\r\n dark: 'Dark',\r\n light: 'Light',\r\n auto: 'Auto',\r\n notifications: 'Notifications',\r\n enable: 'Enable',\r\n disable: 'Disable',\r\n on: 'On',\r\n off: 'Off',\r\n max: 'Max',\r\n min: 'Min',\r\n expand: 'Expand',\r\n collapse: 'Collapse',\r\n fullscreen: 'Fullscreen',\r\n exitFullscreen: 'Exit Fullscreen',\r\n zoomIn: 'Zoom In',\r\n zoomOut: 'Zoom Out',\r\n reset: 'Reset',\r\n apply: 'Apply',\r\n submit: 'Submit',\r\n send: 'Send',\r\n receive: 'Receive',\r\n connect: 'Connect',\r\n disconnect: 'Disconnect',\r\n start: 'Start',\r\n stop: 'Stop',\r\n pause: 'Pause',\r\n resume: 'Resume',\r\n next: 'Next',\r\n previous: 'Previous',\r\n first: 'First',\r\n last: 'Last',\r\n back: 'Back',\r\n forward: 'Forward',\r\n home: 'Home',\r\n menu: 'Menu',\r\n more: 'More',\r\n less: 'Less',\r\n show: 'Show',\r\n hide: 'Hide',\r\n visible: 'Visible',\r\n hidden: 'Hidden',\r\n enabled: 'Enabled',\r\n disabled: 'Disabled',\r\n active: 'Active',\r\n inactive: 'Inactive',\r\n online: 'Online',\r\n offline: 'Offline',\r\n connected: 'Connected',\r\n disconnected: 'Disconnected',\r\n loading: 'Loading',\r\n loaded: 'Loaded',\r\n saving: 'Saving',\r\n saved: 'Saved',\r\n deleting: 'Deleting',\r\n deleted: 'Deleted',\r\n uploading: 'Uploading',\r\n uploaded: 'Uploaded',\r\n downloading: 'Downloading',\r\n downloaded: 'Downloaded',\r\n processing: 'Processing',\r\n processed: 'Processed',\r\n syncing: 'Syncing',\r\n synced: 'Synced',\r\n sending: 'Sending',\r\n sent: 'Sent',\r\n receiving: 'Receiving',\r\n received: 'Received',\r\n connecting: 'Connecting',\r\n error: 'Error',\r\n warning: 'Warning',\r\n info: 'Info',\r\n success: 'Success',\r\n question: 'Question',\r\n help: 'Help',\r\n feedback: 'Feedback',\r\n report: 'Report',\r\n bug: 'Bug',\r\n feature: 'Feature',\r\n improvement: 'Improvement',\r\n suggestion: 'Suggestion',\r\n request: 'Request',\r\n response: 'Response',\r\n status: 'Status',\r\n progress: 'Progress',\r\n complete: 'Complete',\r\n incomplete: 'Incomplete',\r\n pending: 'Pending',\r\n processing: 'Processing',\r\n failed: 'Failed',\r\n cancelled: 'Cancelled',\r\n timeout: 'Timeout',\r\n expired: 'Expired',\r\n invalid: 'Invalid',\r\n valid: 'Valid',\r\n required: 'Required',\r\n optional: 'Optional',\r\n enabled: 'Enabled',\r\n disabled: 'Disabled',\r\n allowed: 'Allowed',\r\n denied: 'Denied',\r\n approved: 'Approved',\r\n rejected: 'Rejected',\r\n accepted: 'Accepted',\r\n declined: 'Declined',\r\n confirmed: 'Confirmed',\r\n unconfirmed: 'Unconfirmed',\r\n verified: 'Verified',\r\n unverified: 'Unverified',\r\n authenticated: 'Authenticated',\r\n unauthenticated: 'Unauthenticated',\r\n authorized: 'Authorized',\r\n unauthorized: 'Unauthorized',\r\n public: 'Public',\r\n private: 'Private',\r\n protected: 'Protected',\r\n internal: 'Internal',\r\n external: 'External',\r\n local: 'Local',\r\n remote: 'Remote',\r\n global: 'Global',\r\n system: 'System',\r\n user: 'User',\r\n admin: 'Admin',\r\n moderator: 'Moderator',\r\n guest: 'Guest',\r\n member: 'Member',\r\n owner: 'Owner',\r\n creator: 'Creator',\r\n editor: 'Editor',\r\n viewer: 'Viewer',\r\n subscriber: 'Subscriber',\r\n follower: 'Follower',\r\n following: 'Following',\r\n friend: 'Friend',\r\n contact: 'Contact',\r\n group: 'Group',\r\n team: 'Team',\r\n organization: 'Organization',\r\n company: 'Company',\r\n department: 'Department',\r\n project: 'Project',\r\n task: 'Task',\r\n issue: 'Issue',\r\n ticket: 'Ticket',\r\n request: 'Request',\r\n response: 'Response',\r\n message: 'Message',\r\n notification: 'Notification',\r\n alert: 'Alert',\r\n reminder: 'Reminder',\r\n event: 'Event',\r\n activity: 'Activity',\r\n log: 'Log',\r\n report: 'Report',\r\n analytics: 'Analytics',\r\n statistics: 'Statistics',\r\n metrics: 'Metrics',\r\n performance: 'Performance',\r\n security: 'Security',\r\n privacy: 'Privacy',\r\n compliance: 'Compliance',\r\n policy: 'Policy',\r\n terms: 'Terms',\r\n conditions: 'Conditions',\r\n agreement: 'Agreement',\r\n contract: 'Contract',\r\n license: 'License',\r\n copyright: 'Copyright',\r\n trademark: 'Trademark',\r\n patent: 'Patent',\r\n tradeSecret: 'Trade Secret',\r\n confidential: 'Confidential',\r\n sensitive: 'Sensitive',\r\n critical: 'Critical',\r\n important: 'Important',\r\n urgent: 'Urgent',\r\n high: 'High',\r\n medium: 'Medium',\r\n low: 'Low',\r\n none: 'None',\r\n all: 'All',\r\n any: 'Any',\r\n some: 'Some',\r\n each: 'Each',\r\n every: 'Every',\r\n both: 'Both',\r\n neither: 'Neither',\r\n either: 'Either',\r\n other: 'Other',\r\n another: 'Another',\r\n this: 'This',\r\n that: 'That',\r\n these: 'These',\r\n those: 'Those',\r\n here: 'Here',\r\n there: 'There',\r\n where: 'Where',\r\n when: 'When',\r\n why: 'Why',\r\n how: 'How',\r\n what: 'What',\r\n who: 'Who',\r\n which: 'Which',\r\n whose: 'Whose',\r\n whom: 'Whom',\r\n myself: 'Myself',\r\n yourself: 'Yourself',\r\n himself: 'Himself',\r\n herself: 'Herself',\r\n itself: 'Itself',\r\n ourselves: 'Ourselves',\r\n yourselves: 'Yourselves',\r\n themselves: 'Themselves',\r\n mine: 'Mine',\r\n yours: 'Yours',\r\n his: 'His',\r\n hers: 'Hers',\r\n its: 'Its',\r\n ours: 'Ours',\r\n yours: 'Yours',\r\n theirs: 'Theirs',\r\n me: 'Me',\r\n you: 'You',\r\n him: 'Him',\r\n her: 'Her',\r\n it: 'It',\r\n us: 'Us',\r\n them: 'Them',\r\n my: 'My',\r\n your: 'Your',\r\n his: 'His',\r\n her: 'Her',\r\n its: 'Its',\r\n our: 'Our',\r\n your: 'Your',\r\n their: 'Their',\r\n i: 'I',\r\n you: 'You',\r\n he: 'He',\r\n she: 'She',\r\n it: 'It',\r\n we: 'We',\r\n they: 'They',\r\n am: 'Am',\r\n is: 'Is',\r\n are: 'Are',\r\n was: 'Was',\r\n were: 'Were',\r\n be: 'Be',\r\n been: 'Been',\r\n being: 'Being',\r\n have: 'Have',\r\n has: 'Has',\r\n had: 'Had',\r\n having: 'Having',\r\n do: 'Do',\r\n does: 'Does',\r\n did: 'Did',\r\n doing: 'Doing',\r\n will: 'Will',\r\n would: 'Would',\r\n shall: 'Shall',\r\n should: 'Should',\r\n may: 'May',\r\n might: 'Might',\r\n can: 'Can',\r\n could: 'Could',\r\n must: 'Must',\r\n need: 'Need',\r\n dare: 'Dare',\r\n ought: 'Ought',\r\n used: 'Used',\r\n to: 'To',\r\n of: 'Of',\r\n in: 'In',\r\n for: 'For',\r\n on: 'On',\r\n with: 'With',\r\n at: 'At',\r\n by: 'By',\r\n from: 'From',\r\n into: 'Into',\r\n during: 'During',\r\n before: 'Before',\r\n after: 'After',\r\n above: 'Above',\r\n below: 'Below',\r\n between: 'Between',\r\n under: 'Under',\r\n over: 'Over',\r\n across: 'Across',\r\n through: 'Through',\r\n into: 'Into',\r\n towards: 'Towards',\r\n upon: 'Upon',\r\n about: 'About',\r\n against: 'Against',\r\n among: 'Among',\r\n along: 'Along',\r\n around: 'Around',\r\n beyond: 'Beyond',\r\n but: 'But',\r\n despite: 'Despite',\r\n except: 'Except',\r\n inside: 'Inside',\r\n outside: 'Outside',\r\n since: 'Since',\r\n until: 'Until',\r\n unless: 'Unless',\r\n whether: 'Whether',\r\n while: 'While',\r\n although: 'Although',\r\n because: 'Because',\r\n if: 'If',\r\n once: 'Once',\r\n since: 'Since',\r\n so: 'So',\r\n that: 'That',\r\n though: 'Though',\r\n till: 'Till',\r\n unless: 'Unless',\r\n until: 'Until',\r\n when: 'When',\r\n whenever: 'Whenever',\r\n where: 'Where',\r\n wherever: 'Wherever',\r\n whereas: 'Whereas',\r\n wherever: 'Wherever',\r\n while: 'While',\r\n why: 'Why',\r\n },\r\n};\r\n","/**\r\n * MetonaToast Constants - 常量定义\r\n * @module constants\r\n * @version 2.0.0\r\n * @description 默认配置、颜色、动画、主题等常量\r\n */\r\n\r\n/**\r\n * 默认配置\r\n */\r\nexport const DEFAULTS = Object.freeze({\r\n // 基础配置\r\n position: 'top-right',\r\n duration: 4000,\r\n max: 6,\r\n gap: 12,\r\n offset: 24,\r\n \r\n // 交互配置\r\n pauseOnHover: true,\r\n closeOnClick: true,\r\n draggable: true,\r\n \r\n // 显示配置\r\n showProgress: true,\r\n progressDirection: 'horizontal',\r\n icon: true,\r\n closeButton: true,\r\n \r\n // 主题配置\r\n theme: 'auto',\r\n animation: 'slide',\r\n \r\n // 布局配置\r\n zIndex: 9999,\r\n width: 360,\r\n \r\n // 自定义配置\r\n className: '',\r\n style: {},\r\n \r\n // 回调函数\r\n onShow: null,\r\n onClose: null,\r\n onClick: null,\r\n onUpdate: null,\r\n \r\n // 高级\r\n resetTimerOnUpdate: false,\r\n notifyWhenHidden: false,\r\n \r\n // 国际化\r\n locale: 'zh-CN',\r\n \r\n // 插件\r\n plugins: [],\r\n});\r\n\r\n// Icons — 从 icons.js 导入并重新导出(保持向后兼容)\r\nimport { ICONS } from './icons.js';\r\nexport { ICONS };\r\n\r\n/**\r\n * 类型颜色配置\r\n */\r\nexport const TYPE_COLORS = {\r\n success: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n error: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n warning: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n info: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n loading: { fg: '#6366f1', bg: 'rgba(99, 102, 241, 0.1)' },\r\n default: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n check: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n x: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n alert: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n question: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n star: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n heart: { fg: '#ec4899', bg: 'rgba(236, 72, 153, 0.1)' },\r\n bell: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n mail: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n settings: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n user: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n home: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n search: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n plus: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n minus: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n edit: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n trash: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n download: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n upload: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n share: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n link: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n external: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n clock: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n calendar: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n map: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n compass: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n globe: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n wifi: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n cloud: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n sun: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n moon: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n zap: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n activity: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n cpu: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n database: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n server: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n terminal: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n code: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n git: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n package: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n layers: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n grid: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n list: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n filter: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n sort: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n refresh: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n sync: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n power: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n battery: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n bluetooth: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n volume: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n mic: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n camera: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n image: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n video: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n music: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n file: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n folder: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n clipboard: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n save: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n print: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n eye: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n eyeOff: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n lock: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n unlock: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n shield: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n key: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n flag: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n bookmark: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n tag: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n gift: { fg: '#ec4899', bg: 'rgba(236, 72, 153, 0.1)' },\r\n award: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n target: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n crosshair: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n move: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n maximize: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n minimize: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n copy: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n cut: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n paste: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n rotateCw: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n rotateCcw: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n zoomIn: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n zoomOut: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n crop: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n sliders: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n toggleLeft: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n toggleRight: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n checkCircle: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n xCircle: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n alertCircle: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n infoCircle: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n helpCircle: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n alertTriangle: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n checkSquare: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n square: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n circle: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n triangle: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n hexagon: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n octagon: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n pentagon: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n diamond: { fg: '#ec4899', bg: 'rgba(236, 72, 153, 0.1)' },\r\n};\r\n\r\n/**\r\n * 动画配置\r\n */\r\nexport const ANIMATIONS = {\r\n slide: {\r\n enter: { transform: 'translateX(80px)', opacity: 0 },\r\n leave: { transform: 'translateX(120%)', opacity: 0 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n fade: {\r\n enter: { opacity: 0, filter: 'blur(3px)' },\r\n leave: { opacity: 0, filter: 'blur(3px)' },\r\n duration: 500,\r\n easing: 'ease',\r\n },\r\n scale: {\r\n enter: { transform: 'scale(0.55)', opacity: 0 },\r\n leave: { transform: 'scale(0.55)', opacity: 0 },\r\n duration: 450,\r\n easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\r\n },\r\n bounce: {\r\n enter: { transform: 'translateY(-80px)', opacity: 0 },\r\n leave: { transform: 'translateY(20px)', opacity: 0 },\r\n duration: 650,\r\n easing: 'ease',\r\n },\r\n flip: {\r\n enter: { transform: 'perspective(500px) rotateX(-90deg)', opacity: 0 },\r\n leave: { transform: 'perspective(500px) rotateX(90deg)', opacity: 0 },\r\n duration: 500,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n rotate: {\r\n enter: { transform: 'rotate(-25deg) scale(0.6)', opacity: 0 },\r\n leave: { transform: 'rotate(25deg) scale(0.6)', opacity: 0 },\r\n duration: 500,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n zoom: {\r\n enter: { transform: 'scale(0.1)', opacity: 0 },\r\n leave: { transform: 'scale(0.1)', opacity: 0 },\r\n duration: 500,\r\n easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\r\n },\r\n slideUp: {\r\n enter: { transform: 'translateY(60px)', opacity: 0 },\r\n leave: { transform: 'translateY(-120%)', opacity: 0 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n slideDown: {\r\n enter: { transform: 'translateY(-60px)', opacity: 0 },\r\n leave: { transform: 'translateY(120%)', opacity: 0 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n slideLeft: {\r\n enter: { transform: 'translateX(-90px)', opacity: 0 },\r\n leave: { transform: 'translateX(120%)', opacity: 0 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n slideRight: {\r\n enter: { transform: 'translateX(90px)', opacity: 0 },\r\n leave: { transform: 'translateX(-120%)', opacity: 0 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n};\r\n\r\n/**\r\n * 主题配置\r\n */\r\nexport const THEMES = {\r\n light: {\r\n bg: 'rgba(255, 255, 255, 0.96)',\r\n text: '#1f2937',\r\n border: 'rgba(0, 0, 0, 0.06)',\r\n shadow: '0 10px 36px -10px rgba(0, 0, 0, 0.18), 0 4px 14px -4px rgba(0, 0, 0, 0.08)',\r\n hoverShadow: '0 14px 48px -10px rgba(0, 0, 0, 0.22), 0 6px 18px -4px rgba(0, 0, 0, 0.10)',\r\n progressBg: 'rgba(0, 0, 0, 0.06)',\r\n closeHoverBg: 'rgba(0, 0, 0, 0.06)',\r\n },\r\n dark: {\r\n bg: 'rgba(28, 32, 40, 0.94)',\r\n text: '#e6e8eb',\r\n border: 'rgba(255, 255, 255, 0.08)',\r\n shadow: '0 10px 36px -10px rgba(0, 0, 0, 0.6), 0 4px 14px -4px rgba(0, 0, 0, 0.4)',\r\n hoverShadow: '0 14px 48px -8px rgba(0, 0, 0, 0.6), 0 6px 18px -4px rgba(0, 0, 0, 0.4)',\r\n progressBg: 'rgba(255, 255, 255, 0.08)',\r\n closeHoverBg: 'rgba(255, 255, 255, 0.08)',\r\n },\r\n auto: 'auto',\r\n warm: {\r\n bg: 'rgba(255, 251, 235, 0.96)',\r\n text: '#78350f',\r\n border: 'rgba(245, 158, 11, 0.2)',\r\n shadow: '0 10px 36px -10px rgba(245, 158, 11, 0.18), 0 4px 14px -4px rgba(245, 158, 11, 0.08)',\r\n hoverShadow: '0 14px 48px -10px rgba(245, 158, 11, 0.22), 0 6px 18px -4px rgba(245, 158, 11, 0.10)',\r\n progressBg: 'rgba(245, 158, 11, 0.1)',\r\n closeHoverBg: 'rgba(245, 158, 11, 0.1)',\r\n },\r\n};\r\n\r\n/**\r\n * 位置配置\r\n */\r\nexport const POSITIONS = [\r\n 'top-left',\r\n 'top-center',\r\n 'top-right',\r\n 'bottom-left',\r\n 'bottom-center',\r\n 'bottom-right',\r\n];\r\n\r\n/**\r\n * 类型配置\r\n */\r\nexport const TYPES = [\r\n 'default', 'success', 'error', 'warning', 'info', 'loading',\r\n 'check', 'x', 'alert', 'question', 'star', 'heart', 'bell', 'mail',\r\n 'settings', 'user', 'home', 'search', 'plus', 'minus', 'edit', 'trash',\r\n 'download', 'upload', 'share', 'link', 'external', 'clock', 'calendar',\r\n 'map', 'compass', 'globe', 'wifi', 'cloud', 'sun', 'moon', 'zap',\r\n 'activity', 'cpu', 'database', 'server', 'terminal', 'code', 'git',\r\n 'package', 'layers', 'grid', 'list', 'filter', 'sort', 'refresh', 'sync',\r\n 'power', 'battery', 'bluetooth', 'volume', 'mic', 'camera', 'image', 'video',\r\n 'music', 'file', 'folder', 'clipboard', 'save', 'print', 'eye', 'eyeOff',\r\n 'lock', 'unlock', 'shield', 'key', 'flag', 'bookmark', 'tag', 'gift',\r\n 'award', 'target', 'crosshair', 'move', 'maximize', 'minimize',\r\n 'copy', 'cut', 'paste', 'rotateCw', 'rotateCcw', 'zoomIn', 'zoomOut',\r\n 'crop', 'sliders', 'toggleLeft', 'toggleRight',\r\n 'checkCircle', 'xCircle', 'alertCircle', 'infoCircle', 'helpCircle',\r\n 'alertTriangle', 'checkSquare', 'square', 'circle', 'triangle',\r\n 'hexagon', 'octagon', 'pentagon', 'diamond',\r\n];\r\n\r\n// Locales — 从 locales.js 导入并重新导出(保持向后兼容)\r\nimport { LOCALES } from './locales.js';\r\nexport { LOCALES };\r\n\r\n/**\r\n * 进度条方向\r\n */\r\nexport const PROGRESS_DIRECTIONS = ['horizontal', 'vertical'];\r\n\r\n/**\r\n * 动画类型\r\n */\r\nexport const ANIMATION_TYPES = ['slide', 'fade', 'scale', 'bounce', 'flip', 'rotate', 'zoom', 'slideUp', 'slideDown', 'slideLeft', 'slideRight'];\r\n\r\n/**\r\n * 主题类型\r\n */\r\nexport const THEME_TYPES = ['light', 'dark', 'auto'];\r\n","/**\r\n * MetonaToast Styles - 样式管理\r\n * @module styles\r\n * @version 2.0.0\r\n * @description 样式注入、更新和主题管理\r\n */\r\n\r\nimport { THEMES } from './constants.js';\r\n\r\n// 样式缓存\r\nlet injectedStyles = null;\r\nlet styleElement = null;\r\n\r\n/**\r\n * 生成CSS样式\r\n * @param {Object} theme - 主题配置\r\n * @returns {string} CSS字符串\r\n */\r\nconst generateCSS = (theme) => {\r\n return `\r\n /* MetonaToast 基础样式 */\r\n .met-container {\r\n pointer-events: none;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 12px;\r\n box-sizing: border-box;\r\n padding: 24px;\r\n max-width: 100vw;\r\n position: fixed;\r\n z-index: 9999;\r\n }\r\n \r\n /* 位置样式 — 顶部位置用 column-reverse,新 toast 出现在最上方 */\r\n .met-container.top-left {\r\n top: 0;\r\n left: 0;\r\n align-items: flex-start;\r\n flex-direction: column-reverse;\r\n }\r\n \r\n .met-container.top-center {\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n align-items: center;\r\n flex-direction: column-reverse;\r\n }\r\n \r\n .met-container.top-right {\r\n top: 0;\r\n right: 0;\r\n align-items: flex-end;\r\n flex-direction: column-reverse;\r\n }\r\n \r\n .met-container.bottom-left {\r\n bottom: 0;\r\n left: 0;\r\n align-items: flex-start;\r\n flex-direction: column-reverse;\r\n }\r\n \r\n .met-container.bottom-center {\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n align-items: center;\r\n flex-direction: column-reverse;\r\n }\r\n \r\n .met-container.bottom-right {\r\n bottom: 0;\r\n right: 0;\r\n align-items: flex-end;\r\n flex-direction: column-reverse;\r\n }\r\n \r\n /* Toast基础样式 */\r\n .met-toast {\r\n position: relative;\r\n display: flex;\r\n align-items: flex-start;\r\n gap: 12px;\r\n padding: 14px 16px;\r\n border-radius: 12px;\r\n box-sizing: border-box;\r\n backdrop-filter: blur(14px) saturate(180%);\r\n -webkit-backdrop-filter: blur(14px) saturate(180%);\r\n font: 14px/1.5 -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\r\n user-select: none;\r\n -webkit-user-select: none;\r\n transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), \r\n box-shadow 0.25s ease, \r\n opacity 0.25s ease;\r\n will-change: transform, opacity;\r\n flex-shrink: 0;\r\n pointer-events: auto;\r\n min-width: 240px;\r\n max-width: calc(100vw - 48px);\r\n width: 360px;\r\n border: 1px solid var(--met-border, rgba(0,0,0,0.06));\r\n background: var(--met-bg, rgba(255,255,255,0.96));\r\n color: var(--met-text, #1f2937);\r\n box-shadow: var(--met-shadow, 0 10px 36px -10px rgba(0,0,0,0.18), 0 4px 14px -4px rgba(0,0,0,0.08));\r\n }\r\n \r\n /* 悬停效果 */\r\n .met-toast:hover {\r\n box-shadow: var(--met-hover-shadow, 0 14px 48px -10px rgba(0,0,0,0.22), 0 6px 18px -4px rgba(0,0,0,0.10)) !important;\r\n }\r\n \r\n /* 可点击状态 */\r\n .met-toast.met-clickable {\r\n cursor: pointer;\r\n }\r\n \r\n /* 图标样式 */\r\n .met-icon {\r\n flex-shrink: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 24px;\r\n height: 24px;\r\n margin-top: 1px;\r\n }\r\n \r\n /* 内容样式 */\r\n .met-content {\r\n flex: 1;\r\n min-width: 0;\r\n word-wrap: break-word;\r\n overflow-wrap: break-word;\r\n }\r\n \r\n /* 标题样式 */\r\n .met-title {\r\n font-weight: 600;\r\n font-size: 14px;\r\n letter-spacing: 0.1px;\r\n }\r\n \r\n /* 消息样式 */\r\n .met-message {\r\n font-size: 13px;\r\n opacity: 0.85;\r\n margin-top: 2px;\r\n }\r\n \r\n /* 关闭按钮样式 */\r\n .met-close {\r\n flex-shrink: 0;\r\n background: transparent;\r\n border: 0;\r\n padding: 4px;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 6px;\r\n transition: background 0.2s, color 0.2s;\r\n line-height: 0;\r\n color: inherit;\r\n opacity: 0.5;\r\n }\r\n \r\n .met-close:hover {\r\n opacity: 1;\r\n background: var(--met-close-hover-bg, rgba(0,0,0,0.06));\r\n }\r\n \r\n /* 进度条样式 - 水平 */\r\n .met-progress {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n height: 3px;\r\n overflow: hidden;\r\n background: var(--met-progress-bg, rgba(0,0,0,0.06));\r\n border-radius: 0 0 12px 12px;\r\n }\r\n \r\n /* 进度条样式 - 垂直 */\r\n .met-progress-v {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n bottom: 0;\r\n width: 3px;\r\n overflow: hidden;\r\n background: var(--met-progress-bg, rgba(0,0,0,0.06));\r\n border-radius: 12px 0 0 12px;\r\n }\r\n \r\n /* 进度条指示器 - 水平 */\r\n .met-bar {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n height: 100%;\r\n width: 100%;\r\n transform-origin: left;\r\n transform: scaleX(1);\r\n }\r\n \r\n /* 进度条指示器 - 垂直 */\r\n .met-bar-v {\r\n position: absolute;\r\n left: 0;\r\n bottom: 0;\r\n width: 100%;\r\n height: 100%;\r\n transform-origin: bottom;\r\n transform: scaleY(1);\r\n }\r\n \r\n /* 侧边指示器 */\r\n .met-side {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n bottom: 0;\r\n width: 4px;\r\n border-radius: 12px 0 0 12px;\r\n }\r\n \r\n /* 加载动画 */\r\n .met-spin {\r\n animation: met-rot 1s linear infinite;\r\n transform-origin: 50% 50%;\r\n }\r\n \r\n /* 离开状态 */\r\n .met-toast.met-leaving {\r\n pointer-events: none;\r\n z-index: 1;\r\n }\r\n \r\n /* 动画关键帧 */\r\n @keyframes met-rot {\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n \r\n /* === 进入动画:初始隐藏态 === */\r\n .met-anim-slide.met-toast,\r\n .met-anim-fade.met-toast,\r\n .met-anim-scale.met-toast,\r\n .met-anim-bounce.met-toast,\r\n .met-anim-flip.met-toast,\r\n .met-anim-rotate.met-toast,\r\n .met-anim-zoom.met-toast,\r\n .met-anim-slideUp.met-toast,\r\n .met-anim-slideDown.met-toast,\r\n .met-anim-slideLeft.met-toast,\r\n .met-anim-slideRight.met-toast {\r\n opacity: 0;\r\n }\r\n \r\n /* === 进入动画:@keyframes 定义 === */\r\n @keyframes met-slide-in {\r\n 0% { transform: translateX(80px); opacity: 0; }\r\n 65% { transform: translateX(-6px); opacity: 1; }\r\n 100% { transform: translateX(0); opacity: 1; }\r\n }\r\n @keyframes met-fade-in {\r\n 0% { opacity: 0; filter: blur(3px); }\r\n 100% { opacity: 1; filter: blur(0); }\r\n }\r\n @keyframes met-scale-in {\r\n 0% { transform: scale(0.55); opacity: 0; }\r\n 65% { transform: scale(1.07); opacity: 1; }\r\n 100% { transform: scale(1); opacity: 1; }\r\n }\r\n @keyframes met-bounce-in {\r\n 0% { transform: translateY(-80px); opacity: 0; animation-timing-function: ease-in; }\r\n 45% { transform: translateY(14px); opacity: 1; animation-timing-function: ease-out; }\r\n 65% { transform: translateY(-12px); animation-timing-function: ease-in; }\r\n 82% { transform: translateY(4px); animation-timing-function: ease-out; }\r\n 100% { transform: translateY(0); opacity: 1; }\r\n }\r\n @keyframes met-flip-in {\r\n 0% { transform: perspective(500px) rotateX(-90deg); opacity: 0; }\r\n 60% { transform: perspective(500px) rotateX(8deg); opacity: 1; }\r\n 85% { transform: perspective(500px) rotateX(-2deg); }\r\n 100% { transform: perspective(500px) rotateX(0); opacity: 1; }\r\n }\r\n @keyframes met-rotate-in {\r\n 0% { transform: rotate(-25deg) scale(0.6); opacity: 0; }\r\n 60% { transform: rotate(4deg) scale(1.05); opacity: 1; }\r\n 85% { transform: rotate(-1deg) scale(0.98); }\r\n 100% { transform: rotate(0) scale(1); opacity: 1; }\r\n }\r\n @keyframes met-zoom-in {\r\n 0% { transform: scale(0.1); opacity: 0; }\r\n 50% { transform: scale(1.12); opacity: 1; }\r\n 75% { transform: scale(0.94); }\r\n 100% { transform: scale(1); opacity: 1; }\r\n }\r\n @keyframes met-slideUp-in {\r\n 0% { transform: translateY(60px); opacity: 0; }\r\n 70% { transform: translateY(-6px); opacity: 1; }\r\n 100% { transform: translateY(0); opacity: 1; }\r\n }\r\n @keyframes met-slideDown-in {\r\n 0% { transform: translateY(-60px); opacity: 0; }\r\n 70% { transform: translateY(6px); opacity: 1; }\r\n 100% { transform: translateY(0); opacity: 1; }\r\n }\r\n @keyframes met-slideLeft-in {\r\n 0% { transform: translateX(-90px); opacity: 0; }\r\n 65% { transform: translateX(6px); opacity: 1; }\r\n 100% { transform: translateX(0); opacity: 1; }\r\n }\r\n @keyframes met-slideRight-in {\r\n 0% { transform: translateX(90px); opacity: 0; }\r\n 65% { transform: translateX(-6px); opacity: 1; }\r\n 100% { transform: translateX(0); opacity: 1; }\r\n }\r\n \r\n /* === 进入动画:绑定到 .met-show === */\r\n .met-anim-slide.met-toast.met-show { animation: met-slide-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n .met-anim-fade.met-toast.met-show { animation: met-fade-in 0.50s ease forwards; }\r\n .met-anim-scale.met-toast.met-show { animation: met-scale-in 0.45s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }\r\n .met-anim-bounce.met-toast.met-show { animation: met-bounce-in 0.65s ease forwards; }\r\n .met-anim-flip.met-toast.met-show { animation: met-flip-in 0.50s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n .met-anim-rotate.met-toast.met-show { animation: met-rotate-in 0.50s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n .met-anim-zoom.met-toast.met-show { animation: met-zoom-in 0.50s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }\r\n .met-anim-slideUp.met-toast.met-show { animation: met-slideUp-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n .met-anim-slideDown.met-toast.met-show { animation: met-slideDown-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n .met-anim-slideLeft.met-toast.met-show { animation: met-slideLeft-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n .met-anim-slideRight.met-toast.met-show { animation: met-slideRight-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n \r\n /* 响应式设计 */\r\n @media (prefers-reduced-motion: reduce) {\r\n .met-toast {\r\n transition: opacity 0.15s !important;\r\n }\r\n \r\n .met-toast.met-show {\r\n animation: none !important;\r\n opacity: 1 !important;\r\n }\r\n \r\n .met-spin {\r\n animation-duration: 2.5s !important;\r\n }\r\n }\r\n \r\n @media (max-width: 480px) {\r\n .met-container {\r\n padding: 12px !important;\r\n }\r\n \r\n .met-toast {\r\n width: 100% !important;\r\n min-width: 0 !important;\r\n }\r\n }\r\n \r\n /* 暗色主题特定样式 */\r\n .met-toast.met-theme-dark {\r\n background: rgba(28, 32, 40, 0.94);\r\n color: #e6e8eb;\r\n border-color: rgba(255, 255, 255, 0.08);\r\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.6), \r\n 0 4px 14px -4px rgba(0, 0, 0, 0.4);\r\n }\r\n \r\n .met-toast.met-theme-dark:hover {\r\n box-shadow: 0 14px 48px -8px rgba(0, 0, 0, 0.6), \r\n 0 6px 18px -4px rgba(0, 0, 0, 0.4) !important;\r\n }\r\n \r\n .met-toast.met-theme-dark .met-close:hover {\r\n background: rgba(255, 255, 255, 0.08);\r\n }\r\n \r\n .met-toast.met-theme-dark .met-progress,\r\n .met-toast.met-theme-dark .met-progress-v {\r\n background: rgba(255, 255, 255, 0.08);\r\n }\r\n \r\n /* 亮色主题特定样式 */\r\n .met-toast.met-theme-light {\r\n background: rgba(255, 255, 255, 0.96);\r\n color: #1f2937;\r\n border-color: rgba(0, 0, 0, 0.06);\r\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.18), \r\n 0 4px 14px -4px rgba(0, 0, 0, 0.08);\r\n }\r\n \r\n .met-toast.met-theme-light:hover {\r\n box-shadow: 0 14px 48px -10px rgba(0, 0, 0, 0.22), \r\n 0 6px 18px -4px rgba(0, 0, 0, 0.10) !important;\r\n }\r\n \r\n .met-toast.met-theme-light .met-close:hover {\r\n background: rgba(0, 0, 0, 0.06);\r\n }\r\n \r\n .met-toast.met-theme-light .met-progress,\r\n .met-toast.met-theme-light .met-progress-v {\r\n background: rgba(0, 0, 0, 0.06);\r\n }\r\n \r\n /* 自定义主题支持 */\r\n .met-toast[data-theme] {\r\n --met-bg: var(--met-theme-bg);\r\n --met-text: var(--met-theme-text);\r\n --met-border: var(--met-theme-border);\r\n --met-shadow: var(--met-theme-shadow);\r\n }\r\n \r\n /* 动画性能优化 */\r\n .met-toast {\r\n backface-visibility: hidden;\r\n -webkit-backface-visibility: hidden;\r\n perspective: 1000;\r\n }\r\n \r\n /* 滚动条样式 */\r\n .met-container::-webkit-scrollbar {\r\n width: 6px;\r\n height: 6px;\r\n }\r\n \r\n .met-container::-webkit-scrollbar-track {\r\n background: transparent;\r\n }\r\n \r\n .met-container::-webkit-scrollbar-thumb {\r\n background: rgba(0, 0, 0, 0.2);\r\n border-radius: 3px;\r\n }\r\n \r\n .met-container::-webkit-scrollbar-thumb:hover {\r\n background: rgba(0, 0, 0, 0.3);\r\n }\r\n \r\n /* 打印样式 */\r\n @media print {\r\n .met-container {\r\n display: none !important;\r\n }\r\n .met-toast {\r\n display: none !important;\r\n }\r\n }\r\n \r\n /* 高对比度模式 */\r\n @media (forced-colors: active) {\r\n .met-toast {\r\n border: 2px solid ButtonText;\r\n }\r\n \r\n .met-close {\r\n border: 1px solid ButtonText;\r\n }\r\n }\r\n \r\n /* 焦点样式 */\r\n .met-toast:focus-visible {\r\n outline: 2px solid #3b82f6;\r\n outline-offset: 2px;\r\n }\r\n \r\n .met-close:focus-visible {\r\n outline: 2px solid #3b82f6;\r\n outline-offset: 2px;\r\n }\r\n \r\n /* 禁用状态 */\r\n .met-toast:disabled,\r\n .met-toast[disabled] {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n }\r\n \r\n /* 加载状态 */\r\n .met-toast.met-loading {\r\n cursor: wait;\r\n }\r\n \r\n /* 成功状态 */\r\n .met-toast.met-success {\r\n border-left: 4px solid #10b981;\r\n }\r\n \r\n /* 错误状态 */\r\n .met-toast.met-error {\r\n border-left: 4px solid #ef4444;\r\n }\r\n \r\n /* 警告状态 */\r\n .met-toast.met-warning {\r\n border-left: 4px solid #f59e0b;\r\n }\r\n \r\n /* 信息状态 */\r\n .met-toast.met-info {\r\n border-left: 4px solid #3b82f6;\r\n }\r\n \r\n /* 加载状态 */\r\n .met-toast.met-loading {\r\n border-left: 4px solid #6366f1;\r\n }\r\n \r\n /* 进度条动画 */\r\n .met-bar,\r\n .met-bar-v {\r\n transition: transform 0.1s linear;\r\n }\r\n \r\n /* 容器动画 */\r\n .met-container {\r\n transition: all 0.3s ease;\r\n }\r\n \r\n /* Toast进入动画 */\r\n .met-toast.met-enter {\r\n animation: met-enter 0.3s ease forwards;\r\n }\r\n \r\n /* Toast离开动画 */\r\n .met-toast.met-leave {\r\n animation: met-leave 0.3s ease forwards;\r\n }\r\n \r\n @keyframes met-enter {\r\n from {\r\n opacity: 0;\r\n transform: translateY(-20px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n }\r\n \r\n @keyframes met-leave {\r\n from {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n to {\r\n opacity: 0;\r\n transform: translateY(-20px);\r\n }\r\n }\r\n \r\n /* 响应式字体大小 */\r\n @media (max-width: 768px) {\r\n .met-toast {\r\n font-size: 13px;\r\n }\r\n \r\n .met-title {\r\n font-size: 13px;\r\n }\r\n \r\n .met-message {\r\n font-size: 12px;\r\n }\r\n }\r\n \r\n @media (max-width: 480px) {\r\n .met-toast {\r\n font-size: 12px;\r\n padding: 12px 14px;\r\n }\r\n \r\n .met-title {\r\n font-size: 12px;\r\n }\r\n \r\n .met-message {\r\n font-size: 11px;\r\n }\r\n }\r\n \r\n /* 无障碍支持 */\r\n .met-toast[role=\"alert\"] {\r\n /* 警告类型Toast的特殊样式 */\r\n }\r\n \r\n .met-toast[role=\"status\"] {\r\n /* 状态类型Toast的特殊样式 */\r\n }\r\n \r\n /* 高对比度模式增强 */\r\n @media (prefers-contrast: high) {\r\n .met-toast {\r\n border-width: 2px;\r\n }\r\n \r\n .met-close {\r\n border: 1px solid currentColor;\r\n }\r\n }\r\n \r\n /* 暗色模式自动检测 */\r\n @media (prefers-color-scheme: dark) {\r\n .met-theme-auto .met-toast {\r\n background: rgba(28, 32, 40, 0.94);\r\n color: #e6e8eb;\r\n border-color: rgba(255, 255, 255, 0.08);\r\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.6), \r\n 0 4px 14px -4px rgba(0, 0, 0, 0.4);\r\n }\r\n \r\n .met-theme-auto .met-toast:hover {\r\n box-shadow: 0 14px 48px -8px rgba(0, 0, 0, 0.6), \r\n 0 6px 18px -4px rgba(0, 0, 0, 0.4) !important;\r\n }\r\n \r\n .met-theme-auto .met-close:hover {\r\n background: rgba(255, 255, 255, 0.08);\r\n }\r\n \r\n .met-theme-auto .met-progress,\r\n .met-theme-auto .met-progress-v {\r\n background: rgba(255, 255, 255, 0.08);\r\n }\r\n }\r\n \r\n /* 亮色模式自动检测 */\r\n @media (prefers-color-scheme: light) {\r\n .met-theme-auto .met-toast {\r\n background: rgba(255, 255, 255, 0.96);\r\n color: #1f2937;\r\n border-color: rgba(0, 0, 0, 0.06);\r\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.18), \r\n 0 4px 14px -4px rgba(0, 0, 0, 0.08);\r\n }\r\n \r\n .met-theme-auto .met-toast:hover {\r\n box-shadow: 0 14px 48px -10px rgba(0, 0, 0, 0.22), \r\n 0 6px 18px -4px rgba(0, 0, 0, 0.10) !important;\r\n }\r\n \r\n .met-theme-auto .met-close:hover {\r\n background: rgba(0, 0, 0, 0.06);\r\n }\r\n \r\n .met-theme-auto .met-progress,\r\n .met-theme-auto .met-progress-v {\r\n background: rgba(0, 0, 0, 0.06);\r\n }\r\n }\r\n \r\n /* 动画性能优化 */\r\n .met-toast {\r\n transform: translateZ(0);\r\n -webkit-transform: translateZ(0);\r\n }\r\n \r\n /* 触摸设备优化 */\r\n @media (hover: none) {\r\n .met-toast:hover {\r\n box-shadow: inherit;\r\n }\r\n }\r\n \r\n /* 滚动时固定位置 */\r\n .met-container {\r\n position: fixed;\r\n z-index: 9999;\r\n }\r\n \r\n /* 全屏模式 */\r\n :fullscreen .met-container {\r\n z-index: 2147483647;\r\n }\r\n \r\n /* 画中画模式 */\r\n :picture-in-picture .met-container {\r\n z-index: 2147483647;\r\n }\r\n \r\n /* 安全区域适配 */\r\n @supports (padding: max(0px)) {\r\n .met-container {\r\n padding: max(24px, env(safe-area-inset-top)) \r\n max(24px, env(safe-area-inset-right)) \r\n max(24px, env(safe-area-inset-bottom)) \r\n max(24px, env(safe-area-inset-left));\r\n }\r\n }\r\n \r\n /* 暗色模式安全区域 */\r\n @media (prefers-color-scheme: dark) {\r\n @supports (padding: max(0px)) {\r\n .met-container {\r\n padding: max(24px, env(safe-area-inset-top)) \r\n max(24px, env(safe-area-inset-right)) \r\n max(24px, env(safe-area-inset-bottom)) \r\n max(24px, env(safe-area-inset-left));\r\n }\r\n }\r\n }\r\n \r\n /* 高分辨率屏幕优化 */\r\n @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {\r\n .met-toast {\r\n border-width: 0.5px;\r\n }\r\n }\r\n \r\n /* 触摸设备优化 */\r\n @media (hover: none) and (pointer: coarse) {\r\n .met-toast {\r\n min-height: 48px;\r\n }\r\n \r\n .met-close {\r\n min-width: 48px;\r\n min-height: 48px;\r\n }\r\n }\r\n \r\n /* 键盘导航优化 */\r\n .met-toast:focus {\r\n outline: 2px solid #3b82f6;\r\n outline-offset: 2px;\r\n }\r\n \r\n .met-toast:focus:not(:focus-visible) {\r\n outline: none;\r\n }\r\n \r\n .met-toast:focus-visible {\r\n outline: 2px solid #3b82f6;\r\n outline-offset: 2px;\r\n }\r\n \r\n /* 减少动画模式 */\r\n @media (prefers-reduced-motion: reduce) {\r\n .met-toast {\r\n transition: opacity 0.15s ease !important;\r\n animation: none !important;\r\n }\r\n \r\n .met-bar,\r\n .met-bar-v {\r\n transition: none !important;\r\n }\r\n \r\n .met-container {\r\n transition: none !important;\r\n }\r\n }\r\n \r\n /* 高对比度模式 */\r\n @media (prefers-contrast: high) {\r\n .met-toast {\r\n border-width: 3px;\r\n border-style: solid;\r\n }\r\n \r\n .met-close {\r\n border: 2px solid currentColor;\r\n border-radius: 4px;\r\n }\r\n \r\n .met-progress,\r\n .met-progress-v {\r\n height: 4px;\r\n }\r\n \r\n .met-bar,\r\n .met-bar-v {\r\n height: 100%;\r\n }\r\n }\r\n \r\n /* 低分辨率屏幕优化 */\r\n @media (max-resolution: 1dppx) {\r\n .met-toast {\r\n border-width: 1px;\r\n }\r\n }\r\n \r\n /* 触摸设备优化 */\r\n @media (hover: none) and (pointer: coarse) {\r\n .met-toast {\r\n min-height: 52px;\r\n padding: 16px 18px;\r\n }\r\n \r\n .met-close {\r\n min-width: 52px;\r\n min-height: 52px;\r\n padding: 8px;\r\n }\r\n \r\n .met-icon {\r\n width: 28px;\r\n height: 28px;\r\n }\r\n }\r\n \r\n /* 大屏幕优化 */\r\n @media (min-width: 1200px) {\r\n .met-toast {\r\n width: 400px;\r\n }\r\n }\r\n \r\n /* 超大屏幕优化 */\r\n @media (min-width: 1920px) {\r\n .met-toast {\r\n width: 440px;\r\n }\r\n }\r\n \r\n /* 小屏幕优化 */\r\n @media (max-width: 320px) {\r\n .met-toast {\r\n width: 100%;\r\n min-width: 0;\r\n padding: 12px 14px;\r\n }\r\n \r\n .met-container {\r\n padding: 8px;\r\n }\r\n }\r\n \r\n /* 横屏优化 */\r\n @media (orientation: landscape) and (max-height: 500px) {\r\n .met-container {\r\n padding: 12px 24px;\r\n }\r\n \r\n .met-toast {\r\n min-height: 44px;\r\n padding: 10px 14px;\r\n }\r\n }\r\n \r\n /* 竖屏优化 */\r\n @media (orientation: portrait) and (max-width: 500px) {\r\n .met-container {\r\n padding: 12px;\r\n }\r\n \r\n .met-toast {\r\n width: 100%;\r\n min-width: 0;\r\n }\r\n }\r\n \r\n /* 无障碍支持 */\r\n .met-toast[aria-live=\"assertive\"] {\r\n /* 紧急通知样式 */\r\n }\r\n \r\n .met-toast[aria-live=\"polite\"] {\r\n /* 普通通知样式 */\r\n }\r\n \r\n /* 焦点陷阱 */\r\n .met-toast:focus-within {\r\n /* 包含焦点元素的Toast样式 */\r\n }\r\n \r\n /* 加载状态 */\r\n .met-toast[aria-busy=\"true\"] {\r\n cursor: wait;\r\n }\r\n \r\n /* 禁用状态 */\r\n .met-toast[aria-disabled=\"true\"] {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n }\r\n \r\n /* 隐藏状态 */\r\n .met-toast[aria-hidden=\"true\"] {\r\n display: none;\r\n }\r\n \r\n /* 展开状态 */\r\n .met-toast[aria-expanded=\"true\"] {\r\n /* 展开状态样式 */\r\n }\r\n \r\n /* 选中状态 */\r\n .met-toast[aria-selected=\"true\"] {\r\n /* 选中状态样式 */\r\n }\r\n \r\n /* 按下状态 */\r\n .met-toast:active {\r\n transform: scale(0.98);\r\n }\r\n \r\n /* 加载状态动画 */\r\n .met-toast.met-loading::after {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background: linear-gradient(\r\n 90deg,\r\n transparent,\r\n rgba(255, 255, 255, 0.1),\r\n transparent\r\n );\r\n animation: met-loading 1.5s infinite;\r\n }\r\n \r\n @keyframes met-loading {\r\n 0% {\r\n transform: translateX(-100%);\r\n }\r\n 100% {\r\n transform: translateX(100%);\r\n }\r\n }\r\n \r\n /* 成功状态动画 */\r\n .met-toast.met-success::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 4px;\r\n height: 100%;\r\n background: #10b981;\r\n border-radius: 12px 0 0 12px;\r\n animation: met-success 0.3s ease;\r\n }\r\n \r\n @keyframes met-success {\r\n from {\r\n transform: scaleY(0);\r\n }\r\n to {\r\n transform: scaleY(1);\r\n }\r\n }\r\n \r\n /* 错误状态动画 */\r\n .met-toast.met-error::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 4px;\r\n height: 100%;\r\n background: #ef4444;\r\n border-radius: 12px 0 0 12px;\r\n animation: met-error 0.3s ease;\r\n }\r\n \r\n @keyframes met-error {\r\n from {\r\n transform: scaleY(0);\r\n }\r\n to {\r\n transform: scaleY(1);\r\n }\r\n }\r\n \r\n /* 警告状态动画 */\r\n .met-toast.met-warning::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 4px;\r\n height: 100%;\r\n background: #f59e0b;\r\n border-radius: 12px 0 0 12px;\r\n animation: met-warning 0.3s ease;\r\n }\r\n \r\n @keyframes met-warning {\r\n from {\r\n transform: scaleY(0);\r\n }\r\n to {\r\n transform: scaleY(1);\r\n }\r\n }\r\n \r\n /* 信息状态动画 */\r\n .met-toast.met-info::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 4px;\r\n height: 100%;\r\n background: #3b82f6;\r\n border-radius: 12px 0 0 12px;\r\n animation: met-info 0.3s ease;\r\n }\r\n \r\n @keyframes met-info {\r\n from {\r\n transform: scaleY(0);\r\n }\r\n to {\r\n transform: scaleY(1);\r\n }\r\n }\r\n \r\n /* 加载状态动画 */\r\n .met-toast.met-loading::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 4px;\r\n height: 100%;\r\n background: #6366f1;\r\n border-radius: 12px 0 0 12px;\r\n animation: met-loading-bar 1s infinite;\r\n }\r\n \r\n @keyframes met-loading-bar {\r\n 0% {\r\n transform: scaleY(0);\r\n transform-origin: top;\r\n }\r\n 50% {\r\n transform: scaleY(1);\r\n transform-origin: top;\r\n }\r\n 51% {\r\n transform-origin: bottom;\r\n }\r\n 100% {\r\n transform: scaleY(0);\r\n transform-origin: bottom;\r\n }\r\n }\r\n \r\n /* 进度条脉冲动画 */\r\n .met-bar,\r\n .met-bar-v {\r\n animation: met-pulse 2s infinite;\r\n }\r\n \r\n @keyframes met-pulse {\r\n 0%, 100% {\r\n opacity: 1;\r\n }\r\n 50% {\r\n opacity: 0.8;\r\n }\r\n }\r\n \r\n /* Toast堆叠效果 */\r\n .met-toast + .met-toast {\r\n margin-top: 8px;\r\n }\r\n \r\n /* Toast分组 */\r\n .met-toast-group {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n }\r\n \r\n /* Toast头部 */\r\n .met-toast-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin-bottom: 8px;\r\n }\r\n \r\n /* Toast底部 */\r\n .met-toast-footer {\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n gap: 8px;\r\n margin-top: 12px;\r\n }\r\n \r\n /* Toast操作按钮 */\r\n .met-toast-action {\r\n background: transparent;\r\n border: 1px solid currentColor;\r\n padding: 6px 12px;\r\n border-radius: 6px;\r\n cursor: pointer;\r\n font-size: 12px;\r\n opacity: 0.7;\r\n transition: opacity 0.2s;\r\n }\r\n \r\n .met-toast-action:hover {\r\n opacity: 1;\r\n }\r\n \r\n /* Toast进度文本 */\r\n .met-toast-progress-text {\r\n font-size: 12px;\r\n opacity: 0.7;\r\n margin-left: 8px;\r\n }\r\n \r\n /* Toast时间戳 */\r\n .met-toast-timestamp {\r\n font-size: 11px;\r\n opacity: 0.5;\r\n margin-left: auto;\r\n }\r\n \r\n /* Toast头像 */\r\n .met-toast-avatar {\r\n width: 32px;\r\n height: 32px;\r\n border-radius: 50%;\r\n object-fit: cover;\r\n flex-shrink: 0;\r\n }\r\n \r\n /* Toast图片 */\r\n .met-toast-image {\r\n max-width: 100%;\r\n max-height: 200px;\r\n border-radius: 8px;\r\n margin-top: 8px;\r\n object-fit: cover;\r\n }\r\n \r\n /* Toast视频 */\r\n .met-toast-video {\r\n max-width: 100%;\r\n max-height: 200px;\r\n border-radius: 8px;\r\n margin-top: 8px;\r\n }\r\n \r\n /* Toast音频 */\r\n .met-toast-audio {\r\n width: 100%;\r\n margin-top: 8px;\r\n }\r\n \r\n /* Toast代码块 */\r\n .met-toast-code {\r\n background: rgba(0, 0, 0, 0.05);\r\n padding: 8px 12px;\r\n border-radius: 6px;\r\n font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;\r\n font-size: 12px;\r\n margin-top: 8px;\r\n overflow-x: auto;\r\n }\r\n \r\n .met-theme-dark .met-toast-code {\r\n background: rgba(255, 255, 255, 0.05);\r\n }\r\n \r\n /* Toast引用 */\r\n .met-toast-quote {\r\n border-left: 3px solid currentColor;\r\n padding-left: 12px;\r\n margin-top: 8px;\r\n opacity: 0.8;\r\n }\r\n \r\n /* Toast列表 */\r\n .met-toast-list {\r\n margin: 8px 0 0 0;\r\n padding-left: 20px;\r\n }\r\n \r\n .met-toast-list li {\r\n margin-bottom: 4px;\r\n }\r\n \r\n /* Toast表格 */\r\n .met-toast-table {\r\n width: 100%;\r\n border-collapse: collapse;\r\n margin-top: 8px;\r\n font-size: 12px;\r\n }\r\n \r\n .met-toast-table th,\r\n .met-toast-table td {\r\n border: 1px solid rgba(0, 0, 0, 0.1);\r\n padding: 6px 8px;\r\n text-align: left;\r\n }\r\n \r\n .met-theme-dark .met-toast-table th,\r\n .met-theme-dark .met-toast-table td {\r\n border-color: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-table th {\r\n background: rgba(0, 0, 0, 0.05);\r\n font-weight: 600;\r\n }\r\n \r\n .met-theme-dark .met-toast-table th {\r\n background: rgba(255, 255, 255, 0.05);\r\n }\r\n \r\n /* Toast分割线 */\r\n .met-toast-divider {\r\n height: 1px;\r\n background: rgba(0, 0, 0, 0.1);\r\n margin: 12px 0;\r\n }\r\n \r\n .met-theme-dark .met-toast-divider {\r\n background: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n /* Toast标签 */\r\n .met-toast-tag {\r\n display: inline-block;\r\n background: rgba(0, 0, 0, 0.05);\r\n padding: 2px 8px;\r\n border-radius: 4px;\r\n font-size: 11px;\r\n margin-right: 4px;\r\n margin-bottom: 4px;\r\n }\r\n \r\n .met-theme-dark .met-toast-tag {\r\n background: rgba(255, 255, 255, 0.05);\r\n }\r\n \r\n /* Toast徽章 */\r\n .met-toast-badge {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: #3b82f6;\r\n color: white;\r\n padding: 2px 8px;\r\n border-radius: 10px;\r\n font-size: 11px;\r\n font-weight: 600;\r\n min-width: 20px;\r\n height: 20px;\r\n }\r\n \r\n /* Toast进度环 */\r\n .met-toast-progress-ring {\r\n width: 40px;\r\n height: 40px;\r\n transform: rotate(-90deg);\r\n }\r\n \r\n .met-toast-progress-ring circle {\r\n fill: none;\r\n stroke-width: 3;\r\n stroke-linecap: round;\r\n }\r\n \r\n .met-toast-progress-ring .met-progress-ring-bg {\r\n stroke: rgba(0, 0, 0, 0.1);\r\n }\r\n \r\n .met-theme-dark .met-toast-progress-ring .met-progress-ring-bg {\r\n stroke: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-progress-ring .met-progress-ring-fill {\r\n stroke: #3b82f6;\r\n stroke-dasharray: 100;\r\n stroke-dashoffset: 100;\r\n transition: stroke-dashoffset 0.3s ease;\r\n }\r\n \r\n /* Toast滑块 */\r\n .met-toast-slider {\r\n width: 100%;\r\n height: 4px;\r\n background: rgba(0, 0, 0, 0.1);\r\n border-radius: 2px;\r\n margin-top: 8px;\r\n position: relative;\r\n }\r\n \r\n .met-theme-dark .met-toast-slider {\r\n background: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-slider-fill {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n height: 100%;\r\n background: #3b82f6;\r\n border-radius: 2px;\r\n transition: width 0.3s ease;\r\n }\r\n \r\n /* Toast开关 */\r\n .met-toast-switch {\r\n position: relative;\r\n display: inline-block;\r\n width: 36px;\r\n height: 20px;\r\n margin-top: 8px;\r\n }\r\n \r\n .met-toast-switch input {\r\n opacity: 0;\r\n width: 0;\r\n height: 0;\r\n }\r\n \r\n .met-toast-switch-slider {\r\n position: absolute;\r\n cursor: pointer;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background: rgba(0, 0, 0, 0.1);\r\n border-radius: 20px;\r\n transition: 0.3s;\r\n }\r\n \r\n .met-theme-dark .met-toast-switch-slider {\r\n background: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-switch-slider:before {\r\n content: '';\r\n position: absolute;\r\n height: 16px;\r\n width: 16px;\r\n left: 2px;\r\n bottom: 2px;\r\n background: white;\r\n border-radius: 50%;\r\n transition: 0.3s;\r\n }\r\n \r\n .met-toast-switch input:checked + .met-toast-switch-slider {\r\n background: #3b82f6;\r\n }\r\n \r\n .met-toast-switch input:checked + .met-toast-switch-slider:before {\r\n transform: translateX(16px);\r\n }\r\n \r\n /* Toast复选框 */\r\n .met-toast-checkbox {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n margin-top: 8px;\r\n cursor: pointer;\r\n }\r\n \r\n .met-toast-checkbox input {\r\n width: 16px;\r\n height: 16px;\r\n cursor: pointer;\r\n }\r\n \r\n /* Toast单选框 */\r\n .met-toast-radio {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n margin-top: 8px;\r\n cursor: pointer;\r\n }\r\n \r\n .met-toast-radio input {\r\n width: 16px;\r\n height: 16px;\r\n cursor: pointer;\r\n }\r\n \r\n /* Toast输入框 */\r\n .met-toast-input {\r\n width: 100%;\r\n padding: 8px 12px;\r\n border: 1px solid rgba(0, 0, 0, 0.1);\r\n border-radius: 6px;\r\n font-size: 13px;\r\n margin-top: 8px;\r\n background: transparent;\r\n color: inherit;\r\n }\r\n \r\n .met-theme-dark .met-toast-input {\r\n border-color: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-input:focus {\r\n outline: none;\r\n border-color: #3b82f6;\r\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\r\n }\r\n \r\n /* Toast文本域 */\r\n .met-toast-textarea {\r\n width: 100%;\r\n padding: 8px 12px;\r\n border: 1px solid rgba(0, 0, 0, 0.1);\r\n border-radius: 6px;\r\n font-size: 13px;\r\n margin-top: 8px;\r\n background: transparent;\r\n color: inherit;\r\n resize: vertical;\r\n min-height: 80px;\r\n }\r\n \r\n .met-theme-dark .met-toast-textarea {\r\n border-color: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-textarea:focus {\r\n outline: none;\r\n border-color: #3b82f6;\r\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\r\n }\r\n \r\n /* Toast选择框 */\r\n .met-toast-select {\r\n width: 100%;\r\n padding: 8px 12px;\r\n border: 1px solid rgba(0, 0, 0, 0.1);\r\n border-radius: 6px;\r\n font-size: 13px;\r\n margin-top: 8px;\r\n background: transparent;\r\n color: inherit;\r\n cursor: pointer;\r\n }\r\n \r\n .met-theme-dark .met-toast-select {\r\n border-color: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-select:focus {\r\n outline: none;\r\n border-color: #3b82f6;\r\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\r\n }\r\n \r\n /* Toast下拉菜单 */\r\n .met-toast-dropdown {\r\n position: relative;\r\n display: inline-block;\r\n }\r\n \r\n .met-toast-dropdown-content {\r\n display: none;\r\n position: absolute;\r\n background: ${theme.bg};\r\n min-width: 160px;\r\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);\r\n border-radius: 8px;\r\n z-index: 1;\r\n padding: 8px 0;\r\n margin-top: 4px;\r\n }\r\n \r\n .met-theme-dark .met-toast-dropdown-content {\r\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);\r\n }\r\n \r\n .met-toast-dropdown:hover .met-toast-dropdown-content {\r\n display: block;\r\n }\r\n \r\n .met-toast-dropdown-item {\r\n padding: 8px 16px;\r\n cursor: pointer;\r\n font-size: 13px;\r\n }\r\n \r\n .met-toast-dropdown-item:hover {\r\n background: rgba(0, 0, 0, 0.05);\r\n }\r\n \r\n .met-theme-dark .met-toast-dropdown-item:hover {\r\n background: rgba(255, 255, 255, 0.05);\r\n }\r\n \r\n /* Toast工具提示 */\r\n .met-toast-tooltip {\r\n position: relative;\r\n display: inline-block;\r\n }\r\n \r\n .met-toast-tooltip .met-toast-tooltip-text {\r\n visibility: hidden;\r\n width: 120px;\r\n background: ${theme.bg};\r\n color: ${theme.text};\r\n text-align: center;\r\n border-radius: 6px;\r\n padding: 6px 8px;\r\n position: absolute;\r\n z-index: 1;\r\n bottom: 125%;\r\n left: 50%;\r\n margin-left: -60px;\r\n opacity: 0;\r\n transition: opacity 0.3s;\r\n font-size: 12px;\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\r\n }\r\n \r\n .met-theme-dark .met-toast-tooltip .met-toast-tooltip-text {\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\r\n }\r\n \r\n .met-toast-tooltip:hover .met-toast-tooltip-text {\r\n visibility: visible;\r\n opacity: 1;\r\n }\r\n \r\n /* Toast弹出框 */\r\n .met-toast-popover {\r\n position: relative;\r\n display: inline-block;\r\n }\r\n \r\n .met-toast-popover .met-toast-popover-content {\r\n visibility: hidden;\r\n background: ${theme.bg};\r\n color: ${theme.text};\r\n border-radius: 8px;\r\n padding: 12px 16px;\r\n position: absolute;\r\n z-index: 1;\r\n bottom: 125%;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n opacity: 0;\r\n transition: opacity 0.3s;\r\n min-width: 200px;\r\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);\r\n }\r\n \r\n .met-theme-dark .met-toast-popover .met-toast-popover-content {\r\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\r\n }\r\n \r\n .met-toast-popover:hover .met-toast-popover-content {\r\n visibility: visible;\r\n opacity: 1;\r\n }\r\n \r\n /* Toast模态框 */\r\n .met-toast-modal {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 10000;\r\n }\r\n \r\n .met-toast-modal-content {\r\n background: ${theme.bg};\r\n color: ${theme.text};\r\n border-radius: 12px;\r\n padding: 24px;\r\n max-width: 500px;\r\n width: 90%;\r\n max-height: 80vh;\r\n overflow-y: auto;\r\n }\r\n \r\n /* Toast抽屉 */\r\n .met-toast-drawer {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(0, 0, 0, 0.5);\r\n z-index: 10000;\r\n }\r\n \r\n .met-toast-drawer-content {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n width: 300px;\r\n height: 100%;\r\n background: ${theme.bg};\r\n color: ${theme.text};\r\n padding: 24px;\r\n transform: translateX(100%);\r\n transition: transform 0.3s ease;\r\n }\r\n \r\n .met-toast-drawer.open .met-toast-drawer-content {\r\n transform: translateX(0);\r\n }\r\n \r\n /* Toast通知栏 */\r\n .met-toast-notification-bar {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n background: ${theme.bg};\r\n color: ${theme.text};\r\n padding: 12px 24px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n z-index: 9999;\r\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\r\n }\r\n \r\n /* Toast状态栏 */\r\n .met-toast-status-bar {\r\n position: fixed;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n background: ${theme.bg};\r\n color: ${theme.text};\r\n padding: 8px 24px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n z-index: 9999;\r\n font-size: 12px;\r\n box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.1);\r\n }\r\n `;\r\n};\r\n\r\n/**\r\n * 注入样式\r\n * @param {Object} theme - 主题配置\r\n */\r\nexport const injectStyles = (theme = THEMES.light) => {\r\n // 检查是否在浏览器环境\r\n if (typeof document === 'undefined') return;\r\n \r\n // 检查是否已注入\r\n if (styleElement && document.getElementById('metona-toast-styles')) {\r\n return;\r\n }\r\n \r\n // 生成CSS\r\n const css = generateCSS(theme);\r\n \r\n // 创建样式元素\r\n styleElement = document.createElement('style');\r\n styleElement.id = 'metona-toast-styles';\r\n styleElement.textContent = css.replace(/\\s+/g, ' ');\r\n \r\n // 添加到文档头\r\n document.head.appendChild(styleElement);\r\n \r\n // 缓存样式\r\n injectedStyles = css;\r\n};\r\n\r\n/**\r\n * 更新样式\r\n * @param {Object} theme - 新主题配置\r\n */\r\nexport const updateStyles = (theme) => {\r\n if (!styleElement) {\r\n injectStyles(theme);\r\n return;\r\n }\r\n \r\n const css = generateCSS(theme);\r\n styleElement.textContent = css.replace(/\\s+/g, ' ');\r\n injectedStyles = css;\r\n};\r\n\r\n/**\r\n * 移除样式\r\n */\r\nexport const removeStyles = () => {\r\n if (styleElement && styleElement.parentNode) {\r\n styleElement.parentNode.removeChild(styleElement);\r\n }\r\n \r\n styleElement = null;\r\n injectedStyles = null;\r\n};\r\n\r\n/**\r\n * 获取当前样式\r\n * @returns {string|null} 当前CSS字符串\r\n */\r\nexport const getStyles = () => {\r\n return injectedStyles;\r\n};\r\n\r\n/**\r\n * 检查样式是否已注入\r\n * @returns {boolean} 是否已注入\r\n */\r\nexport const isStylesInjected = () => {\r\n return !!styleElement && !!document.getElementById('metona-toast-styles');\r\n};\r\n\r\n/**\r\n * 重置样式\r\n */\r\nexport const resetStyles = () => {\r\n removeStyles();\r\n injectStyles();\r\n};\r\n\r\n/**\r\n * 添加自定义CSS\r\n * @param {string} css - CSS字符串\r\n */\r\nexport const addCustomCSS = (css) => {\r\n if (!styleElement) {\r\n injectStyles();\r\n }\r\n \r\n const customStyle = document.createElement('style');\r\n customStyle.id = 'metona-toast-custom-styles';\r\n customStyle.textContent = css;\r\n document.head.appendChild(customStyle);\r\n};\r\n\r\n/**\r\n * 移除自定义CSS\r\n */\r\nexport const removeCustomCSS = () => {\r\n const customStyle = document.getElementById('metona-toast-custom-styles');\r\n if (customStyle && customStyle.parentNode) {\r\n customStyle.parentNode.removeChild(customStyle);\r\n }\r\n};\r\n\r\n/**\r\n * 生成主题变量\r\n * @param {Object} theme - 主题配置\r\n * @returns {string} CSS变量字符串\r\n */\r\nexport const generateThemeVariables = (theme) => {\r\n return `\r\n :root {\r\n --met-theme-bg: ${theme.bg};\r\n --met-theme-text: ${theme.text};\r\n --met-theme-border: ${theme.border};\r\n --met-theme-shadow: ${theme.shadow};\r\n --met-theme-hover-shadow: ${theme.hoverShadow};\r\n --met-theme-progress-bg: ${theme.progressBg};\r\n --met-theme-close-hover-bg: ${theme.closeHoverBg};\r\n }\r\n `;\r\n};\r\n\r\n/**\r\n * 应用主题变量\r\n * @param {Object} theme - 主题配置\r\n */\r\nexport const applyThemeVariables = (theme) => {\r\n const css = generateThemeVariables(theme);\r\n addCustomCSS(css);\r\n};\r\n\r\n/**\r\n * 清除主题变量\r\n */\r\nexport const clearThemeVariables = () => {\r\n removeCustomCSS();\r\n};\r\n\r\n/**\r\n * 获取系统主题\r\n * @returns {string} 系统主题\r\n */\r\nexport const getSystemTheme = () => {\r\n if (typeof window === 'undefined') return 'light';\r\n \r\n return window.matchMedia && \r\n window.matchMedia('(prefers-color-scheme: dark)').matches \r\n ? 'dark' \r\n : 'light';\r\n};\r\n\r\n/**\r\n * 监听系统主题变化\r\n * @param {Function} callback - 回调函数\r\n * @returns {Function} 取消监听函数\r\n */\r\nexport const watchSystemTheme = (callback) => {\r\n if (typeof window === 'undefined' || !window.matchMedia) {\r\n return () => {};\r\n }\r\n \r\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\r\n \r\n const handler = (e) => {\r\n callback(e.matches ? 'dark' : 'light');\r\n };\r\n \r\n mediaQuery.addEventListener('change', handler);\r\n \r\n return () => {\r\n mediaQuery.removeEventListener('change', handler);\r\n };\r\n};\r\n\r\n/**\r\n * 自动应用系统主题\r\n * @returns {Function} 取消监听函数\r\n */\r\nexport const autoApplySystemTheme = () => {\r\n const applyTheme = (theme) => {\r\n updateStyles(THEMES[theme]);\r\n applyThemeVariables(THEMES[theme]);\r\n };\r\n \r\n // 应用当前系统主题\r\n applyTheme(getSystemTheme());\r\n \r\n // 监听系统主题变化\r\n return watchSystemTheme(applyTheme);\r\n};\r\n","/**\r\n * MetonaToast Themes - 主题管理\r\n * @module themes\r\n * @version 2.0.0\r\n * @description 主题系统、自定义主题和主题切换\r\n */\r\n\r\nimport { THEMES } from './constants.js';\r\nimport { prefersDark } from './utils.js';\r\n\r\n// 当前主题状态\r\nlet currentTheme = 'auto';\r\nlet themeListeners = new Set();\r\nlet systemThemeMediaQuery = null;\r\nlet systemThemeListener = null;\r\n\r\n/**\r\n * 获取系统主题\r\n * @returns {string} 系统主题 ('light' 或 'dark')\r\n */\r\nexport const getSystemTheme = () => {\r\n if (typeof window === 'undefined') return 'light';\r\n return prefersDark() ? 'dark' : 'light';\r\n};\r\n\r\n/**\r\n * 获取主题(别名)\r\n * @param {string} theme - 主题名称\r\n * @returns {string} 解析后的主题\r\n */\r\nexport const getTheme = (theme) => {\r\n return resolveTheme(theme);\r\n};\r\n\r\n/**\r\n * 解析主题\r\n * @param {string} theme - 主题名称\r\n * @returns {string} 解析后的主题\r\n */\r\nexport const resolveTheme = (theme) => {\r\n if (theme === 'auto') {\r\n // 优先使用用户设置的全局主题,否则使用系统主题\r\n if (currentTheme && currentTheme !== 'auto') {\r\n return currentTheme;\r\n }\r\n return getSystemTheme();\r\n }\r\n return theme;\r\n};\r\n\r\n/**\r\n * 获取主题配置\r\n * @param {string} theme - 主题名称\r\n * @returns {Object} 主题配置\r\n */\r\nexport const getThemeConfig = (theme) => {\r\n const resolved = resolveTheme(theme);\r\n return THEMES[resolved] || THEMES.light;\r\n};\r\n\r\n/**\r\n * 应用主题\r\n * @param {string} theme - 主题名称\r\n */\r\nexport const applyTheme = (theme) => {\r\n currentTheme = theme;\r\n const resolved = resolveTheme(theme);\r\n \r\n // 应用主题到文档\r\n if (typeof document !== 'undefined') {\r\n document.documentElement.setAttribute('data-met-theme', resolved);\r\n document.documentElement.classList.remove('met-theme-light', 'met-theme-dark', 'met-theme-auto');\r\n document.documentElement.classList.add(`met-theme-${resolved}`);\r\n \r\n // 设置CSS变量\r\n const config = getThemeConfig(theme);\r\n setThemeVariables(config);\r\n }\r\n \r\n // 通知监听器\r\n notifyThemeListeners(theme, resolved);\r\n};\r\n\r\n/**\r\n * 设置主题CSS变量\r\n * @param {Object} config - 主题配置\r\n */\r\nexport const setThemeVariables = (config) => {\r\n if (typeof document === 'undefined') return;\r\n \r\n const root = document.documentElement;\r\n root.style.setProperty('--met-bg', config.bg);\r\n root.style.setProperty('--met-text', config.text);\r\n root.style.setProperty('--met-border', config.border);\r\n root.style.setProperty('--met-shadow', config.shadow);\r\n root.style.setProperty('--met-hover-shadow', config.hoverShadow);\r\n root.style.setProperty('--met-progress-bg', config.progressBg);\r\n root.style.setProperty('--met-close-hover-bg', config.closeHoverBg);\r\n \r\n // 设置颜色变量\r\n root.style.setProperty('--met-success', '#10b981');\r\n root.style.setProperty('--met-error', '#ef4444');\r\n root.style.setProperty('--met-warning', '#f59e0b');\r\n root.style.setProperty('--met-info', '#3b82f6');\r\n root.style.setProperty('--met-loading', '#6366f1');\r\n};\r\n\r\n/**\r\n * 清除主题CSS变量\r\n */\r\nexport const clearThemeVariables = () => {\r\n if (typeof document === 'undefined') return;\r\n \r\n const root = document.documentElement;\r\n const variables = [\r\n '--met-bg',\r\n '--met-text',\r\n '--met-border',\r\n '--met-shadow',\r\n '--met-hover-shadow',\r\n '--met-progress-bg',\r\n '--met-close-hover-bg',\r\n '--met-success',\r\n '--met-error',\r\n '--met-warning',\r\n '--met-info',\r\n '--met-loading',\r\n ];\r\n \r\n variables.forEach((variable) => {\r\n root.style.removeProperty(variable);\r\n });\r\n};\r\n\r\n/**\r\n * 获取当前主题\r\n * @returns {string} 当前主题\r\n */\r\nexport const getCurrentTheme = () => {\r\n return currentTheme;\r\n};\r\n\r\n/**\r\n * 获取解析后的主题\r\n * @returns {string} 解析后的主题\r\n */\r\nexport const getResolvedTheme = () => {\r\n return resolveTheme(currentTheme);\r\n};\r\n\r\n/**\r\n * 切换主题\r\n * @param {string} theme - 新主题\r\n */\r\nexport const switchTheme = (theme) => {\r\n applyTheme(theme);\r\n saveTheme(theme);\r\n};\r\n\r\n/**\r\n * 切换亮色/暗色主题\r\n */\r\nexport const toggleTheme = () => {\r\n const resolved = getResolvedTheme();\r\n const newTheme = resolved === 'dark' ? 'light' : 'dark';\r\n switchTheme(newTheme);\r\n};\r\n\r\n/**\r\n * 重置为自动主题\r\n */\r\nexport const resetToAuto = () => {\r\n switchTheme('auto');\r\n};\r\n\r\n/**\r\n * 保存主题到本地存储\r\n * @param {string} theme - 主题名称\r\n */\r\nexport const saveTheme = (theme) => {\r\n if (typeof localStorage !== 'undefined') {\r\n try {\r\n localStorage.setItem('metona-toast-theme', theme);\r\n } catch (e) {\r\n console.warn('Failed to save theme:', e);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * 从本地存储加载主题\r\n * @returns {string} 主题名称\r\n */\r\nexport const loadTheme = () => {\r\n if (typeof localStorage !== 'undefined') {\r\n try {\r\n return localStorage.getItem('metona-toast-theme') || 'auto';\r\n } catch (e) {\r\n console.warn('Failed to load theme:', e);\r\n }\r\n }\r\n return 'auto';\r\n};\r\n\r\n/**\r\n * 初始化主题系统\r\n */\r\nexport const initTheme = () => {\r\n // 加载保存的主题\r\n const savedTheme = loadTheme();\r\n applyTheme(savedTheme);\r\n \r\n // 监听系统主题变化\r\n watchSystemTheme();\r\n};\r\n\r\n/**\r\n * 监听系统主题变化\r\n */\r\nexport const watchSystemTheme = () => {\r\n if (typeof window === 'undefined' || !window.matchMedia) return;\r\n \r\n // 移除旧的监听器\r\n if (systemThemeMediaQuery && systemThemeListener) {\r\n systemThemeMediaQuery.removeEventListener('change', systemThemeListener);\r\n }\r\n \r\n // 创建新的监听器\r\n systemThemeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\r\n systemThemeListener = (e) => {\r\n if (currentTheme === 'auto') {\r\n applyTheme('auto');\r\n }\r\n };\r\n \r\n systemThemeMediaQuery.addEventListener('change', systemThemeListener);\r\n};\r\n\r\n/**\r\n * 停止监听系统主题变化\r\n */\r\nexport const unwatchSystemTheme = () => {\r\n if (systemThemeMediaQuery && systemThemeListener) {\r\n systemThemeMediaQuery.removeEventListener('change', systemThemeListener);\r\n systemThemeMediaQuery = null;\r\n systemThemeListener = null;\r\n }\r\n};\r\n\r\n/**\r\n * 添加主题监听器\r\n * @param {Function} listener - 监听器函数\r\n * @returns {Function} 移除监听器函数\r\n */\r\nexport const addThemeListener = (listener) => {\r\n themeListeners.add(listener);\r\n \r\n return () => {\r\n themeListeners.delete(listener);\r\n };\r\n};\r\n\r\n/**\r\n * 移除主题监听器\r\n * @param {Function} listener - 监听器函数\r\n */\r\nexport const removeThemeListener = (listener) => {\r\n themeListeners.delete(listener);\r\n};\r\n\r\n/**\r\n * 通知主题监听器\r\n * @param {string} theme - 主题名称\r\n * @param {string} resolved - 解析后的主题\r\n */\r\nconst notifyThemeListeners = (theme, resolved) => {\r\n themeListeners.forEach((listener) => {\r\n try {\r\n listener(theme, resolved);\r\n } catch (e) {\r\n console.error('Theme listener error:', e);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * 清除所有主题监听器\r\n */\r\nexport const clearThemeListeners = () => {\r\n themeListeners.clear();\r\n};\r\n\r\n/**\r\n * 注册自定义主题\r\n * @param {string} name - 主题名称\r\n * @param {Object} config - 主题配置\r\n */\r\nexport const registerTheme = (name, config) => {\r\n THEMES[name] = {\r\n bg: config.bg || THEMES.light.bg,\r\n text: config.text || THEMES.light.text,\r\n border: config.border || THEMES.light.border,\r\n shadow: config.shadow || THEMES.light.shadow,\r\n hoverShadow: config.hoverShadow || THEMES.light.hoverShadow,\r\n progressBg: config.progressBg || THEMES.light.progressBg,\r\n closeHoverBg: config.closeHoverBg || THEMES.light.closeHoverBg,\r\n };\r\n};\r\n\r\n/**\r\n * 注销自定义主题\r\n * @param {string} name - 主题名称\r\n */\r\nexport const unregisterTheme = (name) => {\r\n if (name === 'light' || name === 'dark' || name === 'auto') {\r\n console.warn('Cannot unregister built-in theme:', name);\r\n return;\r\n }\r\n \r\n delete THEMES[name];\r\n};\r\n\r\n/**\r\n * 获取所有主题\r\n * @returns {Object} 主题映射\r\n */\r\nexport const getAllThemes = () => {\r\n return { ...THEMES };\r\n};\r\n\r\n/**\r\n * 获取主题名称列表\r\n * @returns {Array} 主题名称数组\r\n */\r\nexport const getThemeNames = () => {\r\n return Object.keys(THEMES);\r\n};\r\n\r\n/**\r\n * 检查主题是否存在\r\n * @param {string} name - 主题名称\r\n * @returns {boolean} 是否存在\r\n */\r\nexport const hasTheme = (name) => {\r\n return name in THEMES;\r\n};\r\n\r\n/**\r\n * 获取主题预览\r\n * @param {string} theme - 主题名称\r\n * @returns {Object} 主题预览\r\n */\r\nexport const getThemePreview = (theme) => {\r\n const config = getThemeConfig(theme);\r\n const resolved = resolveTheme(theme);\r\n \r\n return {\r\n name: theme,\r\n resolved,\r\n colors: {\r\n background: config.bg,\r\n text: config.text,\r\n border: config.border,\r\n },\r\n isDark: resolved === 'dark',\r\n isLight: resolved === 'light',\r\n isAuto: theme === 'auto',\r\n };\r\n};\r\n\r\n/**\r\n * 生成主题CSS\r\n * @param {string} theme - 主题名称\r\n * @returns {string} CSS字符串\r\n */\r\nexport const generateThemeCSS = (theme) => {\r\n const config = getThemeConfig(theme);\r\n const resolved = resolveTheme(theme);\r\n \r\n return `\r\n .met-theme-${resolved} {\r\n --met-bg: ${config.bg};\r\n --met-text: ${config.text};\r\n --met-border: ${config.border};\r\n --met-shadow: ${config.shadow};\r\n --met-hover-shadow: ${config.hoverShadow};\r\n --met-progress-bg: ${config.progressBg};\r\n --met-close-hover-bg: ${config.closeHoverBg};\r\n }\r\n `;\r\n};\r\n\r\n/**\r\n * 应用主题CSS\r\n * @param {string} theme - 主题名称\r\n */\r\nexport const applyThemeCSS = (theme) => {\r\n if (typeof document === 'undefined') return;\r\n \r\n const css = generateThemeCSS(theme);\r\n const styleId = 'metona-toast-theme-css';\r\n \r\n // 移除旧样式\r\n const oldStyle = document.getElementById(styleId);\r\n if (oldStyle) {\r\n oldStyle.remove();\r\n }\r\n \r\n // 添加新样式\r\n const style = document.createElement('style');\r\n style.id = styleId;\r\n style.textContent = css;\r\n document.head.appendChild(style);\r\n};\r\n\r\n/**\r\n * 移除主题CSS\r\n */\r\nexport const removeThemeCSS = () => {\r\n if (typeof document === 'undefined') return;\r\n \r\n const styleId = 'metona-toast-theme-css';\r\n const style = document.getElementById(styleId);\r\n if (style) {\r\n style.remove();\r\n }\r\n};\r\n\r\n/**\r\n * 主题工具 — 代理层,直接引用模块函数\r\n */\r\nexport const themeUtils = {\r\n getSystemTheme,\r\n resolveTheme,\r\n getThemeConfig,\r\n applyTheme,\r\n getCurrentTheme,\r\n getResolvedTheme,\r\n switchTheme,\r\n toggleTheme,\r\n resetToAuto,\r\n initTheme,\r\n watchSystemTheme,\r\n unwatchSystemTheme,\r\n addThemeListener,\r\n removeThemeListener,\r\n clearThemeListeners,\r\n registerTheme,\r\n unregisterTheme,\r\n getAllThemes,\r\n getThemeNames,\r\n hasTheme,\r\n getThemePreview,\r\n generateThemeCSS,\r\n applyThemeCSS,\r\n removeThemeCSS,\r\n saveTheme,\r\n loadTheme,\r\n};\r\n\r\n/**\r\n * 预设主题\r\n */\r\nexport const presetThemes = {\r\n /**\r\n * 浅色主题\r\n */\r\n light: {\r\n name: '浅色',\r\n description: '明亮清晰的主题',\r\n config: THEMES.light,\r\n },\r\n \r\n /**\r\n * 深色主题\r\n */\r\n dark: {\r\n name: '深色',\r\n description: '护眼舒适的暗色主题',\r\n config: THEMES.dark,\r\n },\r\n \r\n /**\r\n * 自动主题\r\n */\r\n auto: {\r\n name: '自动',\r\n description: '跟随系统主题设置',\r\n config: 'auto',\r\n },\r\n \r\n warm: {\r\n name: '暖色',\r\n description: '温馨舒适的暖色主题',\r\n config: THEMES.warm,\r\n },\r\n};\r\n\r\n// 注册预设主题\r\nObject.entries(presetThemes).forEach(([name, theme]) => {\r\n if (name !== 'auto' && theme.config !== 'auto') {\r\n THEMES[name] = theme.config;\r\n }\r\n});\r\n\r\n/**\r\n * 创建主题管理器\r\n * @returns {Object} 主题管理器\r\n */\r\nexport const createThemeManager = () => {\r\n return {\r\n getSystemTheme,\r\n resolveTheme,\r\n getThemeConfig,\r\n applyTheme,\r\n getCurrentTheme,\r\n getResolvedTheme,\r\n switchTheme,\r\n toggleTheme,\r\n resetToAuto,\r\n initTheme,\r\n watchSystemTheme,\r\n unwatchSystemTheme,\r\n addThemeListener,\r\n removeThemeListener,\r\n clearThemeListeners,\r\n registerTheme,\r\n unregisterTheme,\r\n getAllThemes,\r\n getThemeNames,\r\n hasTheme,\r\n getThemePreview,\r\n generateThemeCSS,\r\n applyThemeCSS,\r\n removeThemeCSS,\r\n saveTheme,\r\n loadTheme,\r\n };\r\n};\r\n\r\nexport { themeUtils as default };\r\n","/**\r\n * MetonaToast i18n - 国际化管理\r\n * @module i18n\r\n * @version 2.0.0\r\n * @description 多语言支持、语言切换和翻译管理\r\n */\r\n\r\nimport { LOCALES } from './constants.js';\r\n\r\n// 当前语言状态\r\nlet currentLocale = 'zh-CN';\r\nlet localeListeners = new Set();\r\nlet fallbackLocale = 'zh-CN';\r\n\r\n/**\r\n * 获取当前语言\r\n * @returns {string} 当前语言\r\n */\r\nexport const getCurrentLocale = () => {\r\n return currentLocale;\r\n};\r\n\r\n/**\r\n * 设置当前语言\r\n * @param {string} locale - 语言代码\r\n */\r\nexport const setCurrentLocale = (locale) => {\r\n if (!LOCALES[locale]) {\r\n console.warn(`Locale \"${locale}\" not found, falling back to \"${fallbackLocale}\"`);\r\n locale = fallbackLocale;\r\n }\r\n \r\n currentLocale = locale;\r\n notifyLocaleListeners(locale);\r\n saveLocale(locale);\r\n};\r\n\r\n/**\r\n * 获取回退语言\r\n * @returns {string} 回退语言\r\n */\r\nexport const getFallbackLocale = () => {\r\n return fallbackLocale;\r\n};\r\n\r\n/**\r\n * 设置回退语言\r\n * @param {string} locale - 语言代码\r\n */\r\nexport const setFallbackLocale = (locale) => {\r\n if (!LOCALES[locale]) {\r\n console.warn(`Fallback locale \"${locale}\" not found`);\r\n return;\r\n }\r\n \r\n fallbackLocale = locale;\r\n};\r\n\r\n/**\r\n * 翻译函数\r\n * @param {string} key - 翻译键\r\n * @param {Object} params - 插值参数\r\n * @returns {string} 翻译后的字符串\r\n */\r\nexport const t = (key, params = {}) => {\r\n // 尝试当前语言\r\n const currentTranslation = getTranslation(currentLocale, key);\r\n if (currentTranslation !== undefined) {\r\n return interpolate(currentTranslation, params);\r\n }\r\n \r\n // 尝试回退语言\r\n if (currentLocale !== fallbackLocale) {\r\n const fallbackTranslation = getTranslation(fallbackLocale, key);\r\n if (fallbackTranslation !== undefined) {\r\n return interpolate(fallbackTranslation, params);\r\n }\r\n }\r\n \r\n // 返回键名\r\n console.warn(`Translation missing for key \"${key}\" in locale \"${currentLocale}\"`);\r\n return key;\r\n};\r\n\r\n/**\r\n * 获取翻译\r\n * @param {string} locale - 语言代码\r\n * @param {string} key - 翻译键\r\n * @returns {string|undefined} 翻译字符串\r\n */\r\nconst getTranslation = (locale, key) => {\r\n const localeData = LOCALES[locale];\r\n if (!localeData) return undefined;\r\n \r\n // 支持嵌套键 (如 'common.close')\r\n const keys = key.split('.');\r\n let result = localeData;\r\n \r\n for (const k of keys) {\r\n if (result && typeof result === 'object' && k in result) {\r\n result = result[k];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n \r\n return typeof result === 'string' ? result : undefined;\r\n};\r\n\r\n/**\r\n * 插值函数\r\n * @param {string} str - 包含占位符的字符串\r\n * @param {Object} params - 插值参数\r\n * @returns {string} 插值后的字符串\r\n */\r\nconst interpolate = (str, params) => {\r\n return str.replace(/\\{(\\w+)\\}/g, (match, key) => {\r\n return params[key] !== undefined ? params[key] : match;\r\n });\r\n};\r\n\r\n/**\r\n * 检查翻译是否存在\r\n * @param {string} key - 翻译键\r\n * @returns {boolean} 是否存在\r\n */\r\nexport const hasTranslation = (key) => {\r\n return getTranslation(currentLocale, key) !== undefined ||\r\n getTranslation(fallbackLocale, key) !== undefined;\r\n};\r\n\r\n/**\r\n * 获取所有翻译\r\n * @param {string} locale - 语言代码\r\n * @returns {Object} 翻译对象\r\n */\r\nexport const getTranslations = (locale) => {\r\n return LOCALES[locale] || {};\r\n};\r\n\r\n/**\r\n * 添加翻译\r\n * @param {string} locale - 语言代码\r\n * @param {Object} translations - 翻译对象\r\n */\r\nexport const addTranslations = (locale, translations) => {\r\n if (!LOCALES[locale]) {\r\n LOCALES[locale] = {};\r\n }\r\n \r\n deepMerge(LOCALES[locale], translations);\r\n};\r\n\r\n/**\r\n * 深度合并对象\r\n * @param {Object} target - 目标对象\r\n * @param {Object} source - 源对象\r\n * @returns {Object} 合并后的对象\r\n */\r\nconst deepMerge = (target, source) => {\r\n for (const key in source) {\r\n if (source[key] instanceof Object && key in target && target[key] instanceof Object) {\r\n deepMerge(target[key], source[key]);\r\n } else {\r\n target[key] = source[key];\r\n }\r\n }\r\n return target;\r\n};\r\n\r\n/**\r\n * 移除翻译\r\n * @param {string} locale - 语言代码\r\n * @param {string} key - 翻译键\r\n */\r\nexport const removeTranslation = (locale, key) => {\r\n const localeData = LOCALES[locale];\r\n if (!localeData) return;\r\n \r\n const keys = key.split('.');\r\n let current = localeData;\r\n \r\n for (let i = 0; i < keys.length - 1; i++) {\r\n if (current[keys[i]] && typeof current[keys[i]] === 'object') {\r\n current = current[keys[i]];\r\n } else {\r\n return;\r\n }\r\n }\r\n \r\n delete current[keys[keys.length - 1]];\r\n};\r\n\r\n/**\r\n * 清除翻译\r\n * @param {string} locale - 语言代码\r\n */\r\nexport const clearTranslations = (locale) => {\r\n if (LOCALES[locale]) {\r\n LOCALES[locale] = {};\r\n }\r\n};\r\n\r\n/**\r\n * 获取支持的语言列表\r\n * @returns {Array} 语言代码数组\r\n */\r\nexport const getSupportedLocales = () => {\r\n return Object.keys(LOCALES);\r\n};\r\n\r\n/**\r\n * 检查语言是否支持\r\n * @param {string} locale - 语言代码\r\n * @returns {boolean} 是否支持\r\n */\r\nexport const isLocaleSupported = (locale) => {\r\n return locale in LOCALES;\r\n};\r\n\r\n/**\r\n * 获取语言名称\r\n * @param {string} locale - 语言代码\r\n * @returns {string} 语言名称\r\n */\r\nexport const getLocaleName = (locale) => {\r\n const names = {\r\n 'zh-CN': '简体中文',\r\n 'zh-TW': '繁體中文',\r\n 'en-US': 'English (US)',\r\n 'en-GB': 'English (UK)',\r\n 'ja': '日本語',\r\n 'ko': '한국어',\r\n 'fr': 'Français',\r\n 'de': 'Deutsch',\r\n 'es': 'Español',\r\n 'pt': 'Português',\r\n 'ru': 'Русский',\r\n 'ar': 'العربية',\r\n 'hi': 'हिन्दी',\r\n 'th': 'ไทย',\r\n 'vi': 'Tiếng Việt',\r\n 'id': 'Bahasa Indonesia',\r\n 'ms': 'Bahasa Melayu',\r\n 'tr': 'Türkçe',\r\n 'it': 'Italiano',\r\n 'nl': 'Nederlands',\r\n 'pl': 'Polski',\r\n 'uk': 'Українська',\r\n 'cs': 'Čeština',\r\n 'sv': 'Svenska',\r\n 'da': 'Dansk',\r\n 'fi': 'Suomi',\r\n 'nb': 'Norsk',\r\n 'el': 'Ελληνικά',\r\n 'he': 'עברית',\r\n 'hu': 'Magyar',\r\n 'ro': 'Română',\r\n 'bg': 'Български',\r\n 'hr': 'Hrvatski',\r\n 'sk': 'Slovenčina',\r\n 'sl': 'Slovenščina',\r\n 'et': 'Eesti',\r\n 'lv': 'Latviešu',\r\n 'lt': 'Lietuvių',\r\n 'ca': 'Català',\r\n 'gl': 'Galego',\r\n 'eu': 'Euskara',\r\n 'cy': 'Cymraeg',\r\n 'ga': 'Gaeilge',\r\n 'mt': 'Malti',\r\n 'is': 'Íslenska',\r\n 'mk': 'Македонски',\r\n 'sq': 'Shqip',\r\n 'sr': 'Српски',\r\n 'bs': 'Bosanski',\r\n 'me': 'Crnogorski',\r\n 'ka': 'ქართული',\r\n 'hy': 'Հայերեն',\r\n 'az': 'Azərbaycan',\r\n 'uz': \"O'zbek\",\r\n 'kk': 'Қазақ',\r\n 'ky': 'Кыргыз',\r\n 'tg': 'Тоҷикӣ',\r\n 'tk': 'Türkmen',\r\n 'mn': 'Монгол',\r\n 'ne': 'नेपाली',\r\n 'si': 'සිංහල',\r\n 'my': 'မြန်မာ',\r\n 'km': 'ខ្មែរ',\r\n 'lo': 'ລາວ',\r\n 'am': 'አማርኛ',\r\n 'sw': 'Kiswahili',\r\n 'yo': 'Yorùbá',\r\n 'ig': 'Igbo',\r\n 'ha': 'Hausa',\r\n 'zu': 'isiZulu',\r\n 'af': 'Afrikaans',\r\n 'xh': 'isiXhosa',\r\n 'st': 'Sesotho',\r\n 'tn': 'Setswana',\r\n 'ts': 'Xitsonga',\r\n 'ss': 'siSwati',\r\n 've': 'Tshivenda',\r\n 'nr': 'isiNdebele',\r\n };\r\n \r\n return names[locale] || locale;\r\n};\r\n\r\n/**\r\n * 获取语言方向\r\n * @param {string} locale - 语言代码\r\n * @returns {string} 语言方向 ('ltr' 或 'rtl')\r\n */\r\nexport const getLocaleDirection = (locale) => {\r\n const rtlLocales = ['ar', 'he', 'fa', 'ur', 'yi', 'ps', 'sd', 'ug'];\r\n return rtlLocales.includes(locale) ? 'rtl' : 'ltr';\r\n};\r\n\r\n/**\r\n * 获取语言信息\r\n * @param {string} locale - 语言代码\r\n * @returns {Object} 语言信息\r\n */\r\nexport const getLocaleInfo = (locale) => {\r\n return {\r\n code: locale,\r\n name: getLocaleName(locale),\r\n direction: getLocaleDirection(locale),\r\n isSupported: isLocaleSupported(locale),\r\n isCurrent: locale === currentLocale,\r\n isFallback: locale === fallbackLocale,\r\n };\r\n};\r\n\r\n/**\r\n * 获取所有语言信息\r\n * @returns {Array} 语言信息数组\r\n */\r\nexport const getAllLocaleInfo = () => {\r\n return getSupportedLocales().map(getLocaleInfo);\r\n};\r\n\r\n/**\r\n * 保存语言到本地存储\r\n * @param {string} locale - 语言代码\r\n */\r\nexport const saveLocale = (locale) => {\r\n if (typeof localStorage !== 'undefined') {\r\n try {\r\n localStorage.setItem('metona-toast-locale', locale);\r\n } catch (e) {\r\n console.warn('Failed to save locale:', e);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * 从本地存储加载语言\r\n * @returns {string} 语言代码\r\n */\r\nexport const loadLocale = () => {\r\n if (typeof localStorage !== 'undefined') {\r\n try {\r\n return localStorage.getItem('metona-toast-locale') || getDefaultLocale();\r\n } catch (e) {\r\n console.warn('Failed to load locale:', e);\r\n }\r\n }\r\n return getDefaultLocale();\r\n};\r\n\r\n/**\r\n * 获取默认语言\r\n * @returns {string} 语言代码\r\n */\r\nexport const getDefaultLocale = () => {\r\n if (typeof navigator !== 'undefined') {\r\n // 尝试从浏览器获取语言\r\n const browserLocale = navigator.language || navigator.userLanguage;\r\n if (browserLocale && isLocaleSupported(browserLocale)) {\r\n return browserLocale;\r\n }\r\n \r\n // 尝试语言代码的前两位\r\n const shortLocale = browserLocale?.split('-')[0];\r\n if (shortLocale && isLocaleSupported(shortLocale)) {\r\n return shortLocale;\r\n }\r\n }\r\n \r\n return fallbackLocale;\r\n};\r\n\r\n/**\r\n * 初始化国际化系统\r\n */\r\nexport const initI18n = () => {\r\n const savedLocale = loadLocale();\r\n setCurrentLocale(savedLocale);\r\n};\r\n\r\n/**\r\n * 切换语言\r\n * @param {string} locale - 新语言\r\n */\r\nexport const switchLocale = (locale) => {\r\n setCurrentLocale(locale);\r\n};\r\n\r\n/**\r\n * 添加语言监听器\r\n * @param {Function} listener - 监听器函数\r\n * @returns {Function} 移除监听器函数\r\n */\r\nexport const addLocaleListener = (listener) => {\r\n localeListeners.add(listener);\r\n \r\n return () => {\r\n localeListeners.delete(listener);\r\n };\r\n};\r\n\r\n/**\r\n * 移除语言监听器\r\n * @param {Function} listener - 监听器函数\r\n */\r\nexport const removeLocaleListener = (listener) => {\r\n localeListeners.delete(listener);\r\n};\r\n\r\n/**\r\n * 通知语言监听器\r\n * @param {string} locale - 语言代码\r\n */\r\nconst notifyLocaleListeners = (locale) => {\r\n localeListeners.forEach((listener) => {\r\n try {\r\n listener(locale);\r\n } catch (e) {\r\n console.error('Locale listener error:', e);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * 清除所有语言监听器\r\n */\r\nexport const clearLocaleListeners = () => {\r\n localeListeners.clear();\r\n};\r\n\r\n/**\r\n * 格式化数字\r\n * @param {number} number - 数字\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatNumber = (number, options = {}) => {\r\n try {\r\n return new Intl.NumberFormat(currentLocale, options).format(number);\r\n } catch (e) {\r\n return number.toString();\r\n }\r\n};\r\n\r\n/**\r\n * 格式化货币\r\n * @param {number} amount - 金额\r\n * @param {string} currency - 货币代码\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatCurrency = (amount, currency = 'USD', options = {}) => {\r\n try {\r\n return new Intl.NumberFormat(currentLocale, {\r\n style: 'currency',\r\n currency,\r\n ...options,\r\n }).format(amount);\r\n } catch (e) {\r\n return amount.toString();\r\n }\r\n};\r\n\r\n/**\r\n * 格式化百分比\r\n * @param {number} value - 值\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatPercent = (value, options = {}) => {\r\n try {\r\n return new Intl.NumberFormat(currentLocale, {\r\n style: 'percent',\r\n minimumFractionDigits: 0,\r\n maximumFractionDigits: 2,\r\n ...options,\r\n }).format(value / 100);\r\n } catch (e) {\r\n return `${value}%`;\r\n }\r\n};\r\n\r\n/**\r\n * 格式化日期\r\n * @param {Date|number|string} date - 日期\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatDate = (date, options = {}) => {\r\n try {\r\n const dateObj = date instanceof Date ? date : new Date(date);\r\n return new Intl.DateTimeFormat(currentLocale, options).format(dateObj);\r\n } catch (e) {\r\n return date.toString();\r\n }\r\n};\r\n\r\n/**\r\n * 格式化时间\r\n * @param {Date|number|string} date - 日期\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatTime = (date, options = {}) => {\r\n return formatDate(date, {\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n second: 'numeric',\r\n ...options,\r\n });\r\n};\r\n\r\n/**\r\n * 格式化相对时间\r\n * @param {Date|number|string} date - 日期\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatRelativeTime = (date, options = {}) => {\r\n try {\r\n const dateObj = date instanceof Date ? date : new Date(date);\r\n const now = new Date();\r\n const diff = dateObj - now;\r\n \r\n const rtf = new Intl.RelativeTimeFormat(currentLocale, {\r\n numeric: 'auto',\r\n ...options,\r\n });\r\n \r\n const units = [\r\n { unit: 'year', ms: 365 * 24 * 60 * 60 * 1000 },\r\n { unit: 'month', ms: 30 * 24 * 60 * 60 * 1000 },\r\n { unit: 'week', ms: 7 * 24 * 60 * 60 * 1000 },\r\n { unit: 'day', ms: 24 * 60 * 60 * 1000 },\r\n { unit: 'hour', ms: 60 * 60 * 1000 },\r\n { unit: 'minute', ms: 60 * 1000 },\r\n { unit: 'second', ms: 1000 },\r\n ];\r\n \r\n for (const { unit, ms } of units) {\r\n if (Math.abs(diff) >= ms || unit === 'second') {\r\n const value = Math.round(diff / ms);\r\n return rtf.format(value, unit);\r\n }\r\n }\r\n \r\n return date.toString();\r\n } catch (e) {\r\n return date.toString();\r\n }\r\n};\r\n\r\n/**\r\n * 格式化列表\r\n * @param {Array} list - 列表\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatList = (list, options = {}) => {\r\n try {\r\n return new Intl.ListFormat(currentLocale, options).format(list);\r\n } catch (e) {\r\n return list.join(', ');\r\n }\r\n};\r\n\r\n/**\r\n * 格式化复数\r\n * @param {number} count - 数量\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatPlural = (count, options = {}) => {\r\n try {\r\n return new Intl.PluralRules(currentLocale, options).select(count);\r\n } catch (e) {\r\n return count === 1 ? 'one' : 'other';\r\n }\r\n};\r\n\r\n/**\r\n * 复数翻译\r\n * @param {string} key - 翻译键\r\n * @param {number} count - 数量\r\n * @param {Object} params - 插值参数\r\n * @returns {string} 翻译后的字符串\r\n */\r\nexport const plural = (key, count, params = {}) => {\r\n const pluralForm = formatPlural(count);\r\n const pluralKey = `${key}.${pluralForm}`;\r\n \r\n if (hasTranslation(pluralKey)) {\r\n return t(pluralKey, { ...params, count });\r\n }\r\n \r\n // 尝试通用形式\r\n if (hasTranslation(key)) {\r\n return t(key, { ...params, count });\r\n }\r\n \r\n return key;\r\n};\r\n\r\n/**\r\n * 日期时间格式化选项\r\n */\r\nexport const dateTimeFormats = {\r\n short: {\r\n year: 'numeric',\r\n month: 'short',\r\n day: 'numeric',\r\n },\r\n medium: {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n },\r\n long: {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n weekday: 'long',\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n second: 'numeric',\r\n },\r\n time: {\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n second: 'numeric',\r\n },\r\n date: {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n },\r\n weekday: {\r\n weekday: 'long',\r\n },\r\n month: {\r\n month: 'long',\r\n },\r\n year: {\r\n year: 'numeric',\r\n },\r\n};\r\n\r\n/**\r\n * 数字格式化选项\r\n */\r\nexport const numberFormats = {\r\n integer: {\r\n maximumFractionDigits: 0,\r\n },\r\n decimal: {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n },\r\n percent: {\r\n style: 'percent',\r\n minimumFractionDigits: 0,\r\n maximumFractionDigits: 2,\r\n },\r\n currency: {\r\n style: 'currency',\r\n currency: 'USD',\r\n },\r\n};\r\n\r\n/**\r\n * 国际化工具 — 代理层,直接引用模块函数\r\n */\r\nexport const i18nUtils = {\r\n t,\r\n plural,\r\n getCurrentLocale,\r\n setCurrentLocale,\r\n switchLocale,\r\n getFallbackLocale,\r\n setFallbackLocale,\r\n hasTranslation,\r\n getTranslations,\r\n addTranslations,\r\n removeTranslation,\r\n clearTranslations,\r\n getSupportedLocales,\r\n isLocaleSupported,\r\n getLocaleName,\r\n getLocaleDirection,\r\n getLocaleInfo,\r\n getAllLocaleInfo,\r\n formatNumber,\r\n formatCurrency,\r\n formatPercent,\r\n formatDate,\r\n formatTime,\r\n formatRelativeTime,\r\n formatList,\r\n formatPlural,\r\n addLocaleListener,\r\n removeLocaleListener,\r\n clearLocaleListeners,\r\n initI18n,\r\n saveLocale,\r\n loadLocale,\r\n getDefaultLocale,\r\n};\r\n\r\n/**\r\n * 预设语言包\r\n */\r\nexport const presetLocales = {\r\n 'zh-CN': {\r\n name: '简体中文',\r\n nativeName: '简体中文',\r\n direction: 'ltr',\r\n translations: LOCALES['zh-CN'],\r\n },\r\n \r\n 'en-US': {\r\n name: 'English (US)',\r\n nativeName: 'English (US)',\r\n direction: 'ltr',\r\n translations: LOCALES['en-US'],\r\n },\r\n};\r\n\r\n/**\r\n * 创建国际化管理器\r\n * @returns {Object} 国际化管理器\r\n */\r\nexport const createI18nManager = () => {\r\n return {\r\n t,\r\n plural,\r\n getCurrentLocale,\r\n setCurrentLocale,\r\n switchLocale,\r\n getFallbackLocale,\r\n setFallbackLocale,\r\n hasTranslation,\r\n getTranslations,\r\n addTranslations,\r\n removeTranslation,\r\n clearTranslations,\r\n getSupportedLocales,\r\n isLocaleSupported,\r\n getLocaleName,\r\n getLocaleDirection,\r\n getLocaleInfo,\r\n getAllLocaleInfo,\r\n formatNumber,\r\n formatCurrency,\r\n formatPercent,\r\n formatDate,\r\n formatTime,\r\n formatRelativeTime,\r\n formatList,\r\n formatPlural,\r\n addLocaleListener,\r\n removeLocaleListener,\r\n clearLocaleListeners,\r\n initI18n,\r\n saveLocale,\r\n loadLocale,\r\n getDefaultLocale,\r\n };\r\n};\r\n\r\nexport { i18nUtils as default };\r\n","/**\r\n * MetonaToast Core - 核心Toast逻辑\r\n * @module core\r\n * @version 2.0.0\r\n * @description 重构后的核心模块,包含Toast类的优化实现\r\n */\r\n\r\nimport { generateId, escapeHTML } from './utils.js';\r\nimport { DEFAULTS, ICONS, TYPE_COLORS, THEMES } from './constants.js';\r\nimport { injectStyles } from './styles.js';\r\nimport { getTheme, applyTheme } from './themes.js';\r\nimport { t as i18nT, setCurrentLocale, getLocaleDirection, getCurrentLocale } from './i18n.js';\r\n\r\n// 模块级共享容器缓存,所有 Toast 实例共用\r\n// 使用 Map 而非 WeakMap:document.body 在页面存活期间永不被 GC,\r\n// 容器需要显式通过 destroy() 清理,WeakMap 在此场景无实际收益。\r\nconst _containerCache = new Map();\r\n\r\n/**\r\n * 参数标准化工具\r\n * 支持多种调用方式:\r\n * - success('message')\r\n * - success({ message: 'text' })\r\n * - success({ title: 'title', message: 'text' })\r\n * - success('message', { duration: 5000 })\r\n */\r\nconst normalizeArgs = (args, defaultType = 'default') => {\r\n const [first, second] = args;\r\n \r\n // 情况1: success('message')\r\n if (typeof first === 'string') {\r\n return {\r\n ...second,\r\n type: second?.type || defaultType,\r\n message: first,\r\n };\r\n }\r\n \r\n // 情况2: success({ message: 'text' }) 或 success({ title: 't', message: 'm' })\r\n if (first && typeof first === 'object') {\r\n return {\r\n ...first,\r\n type: first.type || defaultType,\r\n };\r\n }\r\n \r\n // 情况3: success() 无参数\r\n return {\r\n type: defaultType,\r\n message: '',\r\n };\r\n};\r\n\r\n/**\r\n * Toast类 - 核心通知组件\r\n */\r\nclass Toast {\r\n // 静态钩子系统\r\n static _hooks = new Map();\r\n static on(name, fn) {\r\n if (!this._hooks.has(name)) this._hooks.set(name, []);\r\n this._hooks.get(name).push(fn);\r\n return () => this.off(name, fn);\r\n }\r\n static off(name, fn) {\r\n const list = this._hooks.get(name);\r\n if (list) this._hooks.set(name, list.filter(f => f !== fn));\r\n }\r\n static trigger(name, toast) {\r\n const list = this._hooks.get(name);\r\n if (list) list.forEach(fn => { try { fn(toast); } catch (e) { console.error('Hook error:', name, e); } });\r\n }\r\n\r\n constructor(opts) {\r\n this.id = opts.id || generateId();\r\n this.type = opts.type || 'default';\r\n this.title = opts.title || '';\r\n this.message = opts.message ?? opts.content ?? '';\r\n this.html = opts.html || '';\r\n this.iconHTML = opts.iconHTML || '';\r\n this.config = { ...DEFAULTS, ...opts };\r\n // 防止嵌套对象被多个 toast 实例共享引用\r\n if (opts.style && typeof opts.style === 'object') {\r\n this.config.style = { ...opts.style };\r\n }\r\n this.el = null;\r\n this.barEl = null;\r\n this.rafId = null;\r\n this.remaining = this.config.duration;\r\n this.startedAt = 0;\r\n this.paused = false;\r\n this.closing = false;\r\n this._cleanups = [];\r\n this.group = opts.group || null;\r\n }\r\n\r\n _palette() {\r\n const theme = getTheme(this.config.theme);\r\n const c = TYPE_COLORS[this.type] || TYPE_COLORS.default;\r\n const tc = THEMES[theme] || THEMES.light;\r\n const t = { bg: tc.bg, border: tc.border, shadow: tc.shadow };\r\n return { theme, c, t };\r\n }\r\n\r\n create() {\r\n if (typeof window === 'undefined' || typeof document === 'undefined') return this;\r\n \r\n Toast.trigger('beforeShow', this);\r\n injectStyles();\r\n \r\n const container = this._getContainer();\r\n const { theme, c, t } = this._palette();\r\n \r\n this._limitToasts(container);\r\n \r\n const el = document.createElement('div');\r\n el.className = this._buildClassName(theme);\r\n el.setAttribute('role', (this.type === 'error' || this.type === 'warning') ? 'alert' : 'status');\r\n el.setAttribute('aria-live', this.type === 'error' ? 'assertive' : 'polite');\r\n el.dataset.id = this.id;\r\n \r\n this._applyStyles(el, theme, t);\r\n this._buildContent(el, c);\r\n \r\n this.el = el;\r\n // Chrome bug: column-reverse + appendChild 会导致重叠。改用 column + insertBefore\r\n const pos = this.config.position || 'top-right';\r\n if (pos.startsWith('top')) {\r\n container.insertBefore(el, container.firstChild);\r\n } else {\r\n container.appendChild(el);\r\n }\r\n \r\n this._bindEvents(el);\r\n this._startTimer();\r\n \r\n // 进入动画\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n el.classList.add('met-show');\r\n });\r\n });\r\n \r\n if (typeof this.config.onShow === 'function') {\r\n try {\r\n this.config.onShow(this);\r\n } catch (e) {\r\n console.error('onShow callback error:', e);\r\n }\r\n }\r\n \r\n Toast.trigger('afterShow', this);\r\n \r\n return this;\r\n }\r\n\r\n _getContainer() {\r\n const position = this.config.position || 'top-right';\r\n const zIndex = this.config.zIndex || 9999;\r\n \r\n if (_containerCache.has(document.body)) {\r\n const containers = _containerCache.get(document.body);\r\n if (containers.has(position)) {\r\n return containers.get(position);\r\n }\r\n } else {\r\n _containerCache.set(document.body, new Map());\r\n }\r\n \r\n const el = document.createElement('div');\r\n el.className = `met-container ${position}`;\r\n el.setAttribute('aria-label', 'Notifications');\r\n el.setAttribute('role', 'region');\r\n \r\n // cssText 完全接管布局,不依赖 CSS class\r\n const posStyles = {\r\n 'top-left': 'top:0;left:0;align-items:flex-start',\r\n 'top-center': 'top:0;left:0;right:0;align-items:center',\r\n 'top-right': 'top:0;right:0;align-items:flex-end',\r\n 'bottom-left': 'bottom:0;left:0;align-items:flex-start',\r\n 'bottom-center':'bottom:0;left:0;right:0;align-items:center',\r\n 'bottom-right': 'bottom:0;right:0;align-items:flex-end',\r\n };\r\n el.style.cssText = `\r\n display:flex;\r\n flex-direction:column;\r\n gap:${this.config.gap || 12}px;\r\n box-sizing:border-box;\r\n padding:${this.config.offset || 24}px;\r\n max-width:100vw;\r\n position:fixed;\r\n z-index:${zIndex};\r\n pointer-events:none;\r\n ${posStyles[position] || 'top:0;right:0;align-items:flex-end'}\r\n `;\r\n \r\n document.body.appendChild(el);\r\n _containerCache.get(document.body).set(position, el);\r\n \r\n return el;\r\n }\r\n\r\n _limitToasts(container) {\r\n const max = this.config.max || 6;\r\n const list = Array.from(container.querySelectorAll('.met-toast'));\r\n if (list.length >= max) {\r\n const first = list[0];\r\n const id = first && first.dataset.id;\r\n if (id) {\r\n const old = meToast._toasts.get(id);\r\n if (old) old.close(true);\r\n }\r\n }\r\n }\r\n\r\n _buildClassName(theme) {\r\n // CSS 支持的动画类型,未列出的 fallback 到 slide\r\n const CSS_ANIMS = ['slide','fade','scale','bounce','flip','rotate','zoom',\r\n 'slideUp','slideDown','slideLeft','slideRight'];\r\n const anim = CSS_ANIMS.includes(this.config.animation) ? this.config.animation : 'slide';\r\n return [\r\n 'met-toast',\r\n `met-${this.type}`,\r\n `met-theme-${theme}`,\r\n `met-anim-${anim}`,\r\n (this.config.closeOnClick || this.config.draggable) ? 'met-clickable' : '',\r\n this.config.className || '',\r\n ].filter(Boolean).join(' ');\r\n }\r\n\r\n _applyStyles(el, theme, t) {\r\n const widthValue = typeof this.config.width === 'number'\r\n ? `${this.config.width}px`\r\n : (typeof this.config.width === 'string' ? this.config.width : '360px');\r\n \r\n // 只强制核心布局属性,动画/滤镜/颜色由 CSS class 控制\r\n const set = (p, v) => el.style.setProperty(p, v, 'important');\r\n set('position', 'relative');\r\n set('flex-shrink', '0');\r\n set('min-width', '240px');\r\n set('max-width', 'calc(100vw - 48px)');\r\n set('width', widthValue);\r\n // 用户自定义样式最后应用\r\n if (this.config.style && Object.keys(this.config.style).length > 0) {\r\n Object.entries(this.config.style).forEach(([k, v]) => { el.style[k] = v; });\r\n }\r\n }\r\n\r\n _buildContent(el, c) {\r\n // 自定义渲染函数 — 完全接管 DOM 构建\r\n if (typeof this.config.render === 'function') {\r\n el.innerHTML = this.config.render(this);\r\n this.barEl = el.querySelector('.met-bar, .met-bar-v');\r\n return;\r\n }\r\n \r\n const showIcon = this.config.icon !== false && (this.iconHTML || ICONS[this.type]);\r\n const showClose = this.config.closeButton !== false;\r\n const showProgress = this.config.showProgress !== false && this.config.duration > 0;\r\n const showSide = (!showIcon && this.type !== 'default');\r\n \r\n const safeTitle = this.title ? `
${escapeHTML(this.title)}
` : '';\r\n const safeMessage = this.html\r\n ? `
${this.html}
`\r\n : (this.message ? `
${escapeHTML(this.message)}
` : '');\r\n \r\n const iconHTML = showIcon\r\n ? `
${this.iconHTML || ICONS[this.type]}
` : '';\r\n const closeHTML = showClose\r\n ? ``\r\n : '';\r\n const progressHTML = showProgress\r\n ? (this.config.progressDirection === 'vertical'\r\n ? `
`\r\n : `
`)\r\n : '';\r\n const sideHTML = showSide\r\n ? `
` : '';\r\n \r\n el.innerHTML = `\r\n ${iconHTML}\r\n ${sideHTML}\r\n
\r\n ${safeTitle}\r\n ${safeMessage}\r\n
\r\n ${closeHTML}\r\n ${progressHTML}\r\n `;\r\n \r\n this.barEl = el.querySelector('.met-bar, .met-bar-v');\r\n }\r\n\r\n _bindEvents(el) {\r\n const eventHandler = (e) => {\r\n const target = e.target;\r\n \r\n if (target.closest('.met-close')) {\r\n e.stopPropagation();\r\n this.close();\r\n return;\r\n }\r\n \r\n if (this.config.closeOnClick && !target.closest('.met-close')) {\r\n if (typeof this.config.onClick === 'function') {\r\n try {\r\n this.config.onClick(this);\r\n } catch (err) {\r\n console.error('onClick callback error:', err);\r\n }\r\n }\r\n this.close();\r\n return;\r\n }\r\n };\r\n \r\n el.addEventListener('click', eventHandler);\r\n this._cleanups.push(() => el.removeEventListener('click', eventHandler));\r\n \r\n if (this.config.pauseOnHover && this.config.duration > 0) {\r\n const mouseEnter = () => this._pause();\r\n const mouseLeave = () => this._resume();\r\n \r\n el.addEventListener('mouseenter', mouseEnter);\r\n el.addEventListener('mouseleave', mouseLeave);\r\n \r\n this._cleanups.push(() => {\r\n el.removeEventListener('mouseenter', mouseEnter);\r\n el.removeEventListener('mouseleave', mouseLeave);\r\n });\r\n }\r\n \r\n if (this.config.draggable) {\r\n this._bindDrag(el);\r\n }\r\n }\r\n\r\n _bindDrag(el) {\r\n let sx = 0, sy = 0, dx = 0, dy = 0, dragging = false;\r\n \r\n const down = (e) => {\r\n if (e.target.closest('.met-close')) return;\r\n dragging = true;\r\n sx = e.clientX; \r\n sy = e.clientY;\r\n el.setPointerCapture(e.pointerId);\r\n el.style.transition = 'none';\r\n this._pause();\r\n };\r\n \r\n const move = (e) => {\r\n if (!dragging) return;\r\n dx = e.clientX - sx; \r\n dy = e.clientY - sy;\r\n el.style.transform = `translate(${dx}px, ${dy}px) rotate(${dx * 0.1}deg)`;\r\n el.style.opacity = String(Math.max(0, 1 - Math.abs(dx) / 200));\r\n };\r\n \r\n const up = (e) => {\r\n if (!dragging) return;\r\n dragging = false;\r\n el.releasePointerCapture(e.pointerId);\r\n el.style.transition = '';\r\n \r\n if (Math.abs(dx) > 120) {\r\n el.style.transform = `translate(${dx * 2}px, ${dy}px) rotate(${dx * 0.2}deg)`;\r\n el.style.opacity = '0';\r\n setTimeout(() => this.close(true), 250);\r\n } else {\r\n el.style.transform = '';\r\n el.style.opacity = '';\r\n this._resume();\r\n }\r\n dx = dy = 0;\r\n };\r\n \r\n el.addEventListener('pointerdown', down);\r\n el.addEventListener('pointermove', move);\r\n el.addEventListener('pointerup', up);\r\n el.addEventListener('pointercancel', up);\r\n \r\n this._cleanups.push(() => {\r\n el.removeEventListener('pointerdown', down);\r\n el.removeEventListener('pointermove', move);\r\n el.removeEventListener('pointerup', up);\r\n el.removeEventListener('pointercancel', up);\r\n });\r\n }\r\n\r\n _startTimer() {\r\n if (this.config.duration <= 0) return;\r\n \r\n this.startedAt = Date.now();\r\n this.remaining = this.config.duration;\r\n \r\n const tick = () => {\r\n if (this.paused || this.closing) return;\r\n \r\n const elapsed = Date.now() - this.startedAt;\r\n this.remaining = Math.max(0, this.config.duration - elapsed);\r\n \r\n if (this.barEl) {\r\n const ratio = this.remaining / this.config.duration;\r\n const t = this.config.progressDirection === 'vertical'\r\n ? `scaleY(${ratio})` : `scaleX(${ratio})`;\r\n this.barEl.style.transform = t;\r\n }\r\n \r\n if (this.remaining <= 0) { \r\n this.close(); \r\n return; \r\n }\r\n \r\n this.rafId = requestAnimationFrame(tick);\r\n };\r\n \r\n this.rafId = requestAnimationFrame(tick);\r\n }\r\n\r\n _pause() {\r\n if (this.paused || this.config.duration <= 0) return;\r\n this.paused = true;\r\n cancelAnimationFrame(this.rafId);\r\n this.remaining = Math.max(0, this.config.duration - (Date.now() - this.startedAt));\r\n }\r\n\r\n _resume() {\r\n if (!this.paused) return;\r\n this.paused = false;\r\n this.startedAt = Date.now() - (this.config.duration - this.remaining);\r\n this._startTimer();\r\n }\r\n\r\n update(partial) {\r\n Toast.trigger('beforeUpdate', this);\r\n if (partial.type) this.type = partial.type;\r\n if (partial.title !== undefined) this.title = partial.title;\r\n if (partial.message !== undefined) this.message = partial.message;\r\n if (partial.html !== undefined) this.html = partial.html;\r\n \r\n if (!this.el) { Toast.trigger('afterUpdate', this); return this; }\r\n \r\n const content = this.el.querySelector('.met-content');\r\n if (content) {\r\n const safeTitle = this.title ? `
${escapeHTML(this.title)}
` : '';\r\n const safeMessage = this.html\r\n ? `
${this.html}
`\r\n : (this.message ? `
${escapeHTML(this.message)}
` : '');\r\n content.innerHTML = `${safeTitle}${safeMessage}`;\r\n }\r\n \r\n // resetTimerOnUpdate: 更新内容后重置计时器\r\n if (this.config.resetTimerOnUpdate && this.config.duration > 0) {\r\n cancelAnimationFrame(this.rafId);\r\n this.startedAt = Date.now();\r\n this.remaining = this.config.duration;\r\n this._startTimer();\r\n }\r\n \r\n if (typeof this.config.onUpdate === 'function') {\r\n try { this.config.onUpdate(this); } catch (e) { console.error('onUpdate callback error:', e); }\r\n }\r\n \r\n Toast.trigger('afterUpdate', this);\r\n return this;\r\n }\r\n\r\n close(immediate = false) {\r\n if (this.closing) return;\r\n this.closing = true;\r\n \r\n Toast.trigger('beforeClose', this);\r\n cancelAnimationFrame(this.rafId);\r\n this._cleanups.forEach(fn => { try { fn(); } catch (_) {} });\r\n this._cleanups = [];\r\n \r\n const el = this.el;\r\n if (!el) { \r\n meToast._remove(this.id); \r\n return; \r\n }\r\n \r\n // 立即脱离文档流:记录当前位置,然后设为 absolute,让下方 toast 自然上移\r\n const container = el.parentNode;\r\n if (container && !immediate) {\r\n const elRect = el.getBoundingClientRect();\r\n const containerRect = container.getBoundingClientRect();\r\n el.style.position = 'absolute';\r\n el.style.top = (elRect.top - containerRect.top) + 'px';\r\n el.style.left = (elRect.left - containerRect.left) + 'px';\r\n el.style.width = elRect.width + 'px';\r\n el.style.margin = '0';\r\n }\r\n \r\n el.classList.add('met-leaving');\r\n el.classList.remove('met-show');\r\n \r\n const pos = this.config.position || 'top-right';\r\n const isRTL = getLocaleDirection(getCurrentLocale()) === 'rtl';\r\n let transform = 'scale(.96)';\r\n \r\n if (pos.includes('right')) transform = isRTL ? 'translateX(-120%)' : 'translateX(120%)';\r\n else if (pos.includes('left')) transform = isRTL ? 'translateX(120%)' : 'translateX(-120%)';\r\n else if (pos.startsWith('top')) transform = 'translateY(-20px)';\r\n else transform = 'translateY(20px)';\r\n \r\n el.style.transform = transform;\r\n el.style.opacity = '0';\r\n \r\n setTimeout(() => this._destroy(), immediate ? 0 : 300);\r\n }\r\n\r\n _destroy() {\r\n if (this.el && this.el.parentNode) {\r\n this.el.parentNode.removeChild(this.el);\r\n }\r\n this.el = null;\r\n \r\n if (typeof this.config.onClose === 'function') {\r\n try {\r\n this.config.onClose(this);\r\n } catch (e) {\r\n console.error('onClose callback error:', e);\r\n }\r\n }\r\n \r\n Toast.trigger('afterClose', this);\r\n meToast._remove(this.id);\r\n }\r\n}\r\n\r\n// ========== HTML模板辅助函数 ==========\r\n\r\n/**\r\n * 按钮行模板 — confirm/prompt 共用\r\n * @param {string} buttons - 按钮HTML\r\n * @returns {string} 按钮行HTML\r\n */\r\nconst _btnRow = (buttons) => `\r\n
\r\n ${buttons}\r\n
`;\r\n\r\n/**\r\n * 确认对话框模板\r\n * @param {Object} opts - 选项\r\n * @returns {string} HTML\r\n */\r\nconst _confirmHTML = (opts) => {\r\n const confirmText = opts.confirmText || i18nT('confirm');\r\n const cancelText = opts.cancelText || i18nT('cancel');\r\n const confirmColor = opts.confirmColor || '#10b981';\r\n const cancelColor = opts.cancelColor || '#6b7280';\r\n return _btnRow(`\r\n \r\n \r\n `);\r\n};\r\n\r\n/**\r\n * 输入对话框模板\r\n * @param {Object} opts - 选项\r\n * @returns {string} HTML\r\n */\r\nconst _promptHTML = (opts) => {\r\n const submitText = opts.submitText || i18nT('confirm');\r\n const cancelText = opts.cancelText || i18nT('cancel');\r\n const submitColor = opts.submitColor || '#3b82f6';\r\n const cancelColor = opts.cancelColor || '#6b7280';\r\n return `\r\n \r\n ${_btnRow(`\r\n \r\n \r\n `)}\r\n `;\r\n};\r\n\r\n/**\r\n * 进度条模板\r\n * @param {Object} opts - 选项\r\n * @returns {string} HTML\r\n */\r\nconst _progressHTML = (opts) => {\r\n const color = opts.progressColor || '#3b82f6';\r\n return `\r\n
\r\n
\r\n
\r\n
0%
\r\n `;\r\n};\r\n\r\n/**\r\n * Action Toast 模板\r\n * @param {Array} actions - 操作按钮数组 [{ text, onClick, style }]\r\n * @returns {string} HTML\r\n */\r\nconst _actionHTML = (actions) => {\r\n if (!Array.isArray(actions) || actions.length === 0) return '';\r\n const buttons = actions.map((a, i) => {\r\n const bg = a.style?.background || a.color || '#6366f1';\r\n const cls = `met-action-btn-${i}`;\r\n return ``;\r\n }).join('');\r\n return _btnRow(buttons);\r\n};\r\n\r\n/**\r\n * 主对象\r\n */\r\nconst meToast = {\r\n _toasts: new Map(),\r\n _config: { ...DEFAULTS },\r\n version: '2.0.0',\r\n \r\n configure(opts) {\r\n if (!opts || typeof opts !== 'object') return this;\r\n this._config = { ...this._config, ...opts };\r\n \r\n if (opts.theme) {\r\n applyTheme(opts.theme);\r\n }\r\n \r\n if (opts.locale) {\r\n setCurrentLocale(opts.locale);\r\n }\r\n \r\n return this;\r\n },\r\n \r\n _emit(opts) {\r\n const merged = { ...this._config, ...opts };\r\n if (merged.content && !merged.message) merged.message = merged.content;\r\n \r\n const t = new Toast(merged);\r\n t.create();\r\n this._toasts.set(t.id, t);\r\n \r\n return t;\r\n },\r\n \r\n _remove(id) { \r\n this._toasts.delete(id); \r\n },\r\n \r\n find(id) { \r\n if (!id) return undefined;\r\n return this._toasts.get(id); \r\n },\r\n \r\n /**\r\n * 显示默认Toast\r\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\r\n * @param {Object} [opts] - 选项对象(当第一个参数是字符串时)\r\n */\r\n show(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'default');\r\n return this._emit(normalized);\r\n },\r\n \r\n /**\r\n * 显示成功Toast\r\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\r\n * @param {Object} [opts] - 选项对象\r\n */\r\n success(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'success');\r\n return this._emit(normalized);\r\n },\r\n \r\n /**\r\n * 显示错误Toast\r\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\r\n * @param {Object} [opts] - 选项对象\r\n */\r\n error(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'error');\r\n return this._emit(normalized);\r\n },\r\n \r\n /**\r\n * 显示警告Toast\r\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\r\n * @param {Object} [opts] - 选项对象\r\n */\r\n warning(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'warning');\r\n return this._emit(normalized);\r\n },\r\n \r\n /**\r\n * 显示信息Toast\r\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\r\n * @param {Object} [opts] - 选项对象\r\n */\r\n info(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'info');\r\n return this._emit(normalized);\r\n },\r\n \r\n /**\r\n * 显示加载Toast\r\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\r\n * @param {Object} [opts] - 选项对象\r\n */\r\n loading(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'loading');\r\n normalized.duration = 0;\r\n normalized.closeButton = false;\r\n normalized.showProgress = false;\r\n \r\n const t = this._emit(normalized);\r\n \r\n return {\r\n id: t.id,\r\n success: (msg, o = {}) => this._resolve(t, 'success', msg, o),\r\n error: (msg, o = {}) => this._resolve(t, 'error', msg, o),\r\n info: (msg, o = {}) => this._resolve(t, 'info', msg, o),\r\n warning: (msg, o = {}) => this._resolve(t, 'warning', msg, o),\r\n update: (p) => { t.update(p); return this; },\r\n dismiss: () => t.close(),\r\n };\r\n },\r\n \r\n promise(promise, opts = {}) {\r\n if (!promise || typeof promise.then !== 'function') {\r\n console.error('MeToast.promise: first argument must be a Promise');\r\n return Promise.reject(new Error('Invalid promise'));\r\n }\r\n \r\n const loadingMsg = opts.loading || i18nT('loading');\r\n const successMsg = opts.success || i18nT('success');\r\n const errorMsg = opts.error || i18nT('error');\r\n \r\n const ctrl = this.loading(loadingMsg);\r\n \r\n return Promise.resolve(promise)\r\n .then((data) => { \r\n ctrl.success(successMsg); \r\n return data; \r\n })\r\n .catch((err) => { \r\n ctrl.error(errorMsg); \r\n throw err; \r\n });\r\n },\r\n \r\n _resolve(loadingToast, type, message, opts) {\r\n const id = loadingToast.id;\r\n const old = this._toasts.get(id);\r\n if (!old) return null;\r\n \r\n const position = old.config.position;\r\n old.close();\r\n \r\n return this._emit({ ...opts, type, message, position });\r\n },\r\n \r\n /**\r\n * 确认对话框\r\n * @param {string} message - 消息内容\r\n * @param {Object} [opts] - 选项\r\n * @returns {Promise}\r\n */\r\n confirm(message, opts = {}) {\r\n if (typeof message !== 'string') {\r\n console.error('MeToast.confirm: message must be a string');\r\n return Promise.resolve(false);\r\n }\r\n \r\n return new Promise((resolve) => {\r\n let resolved = false;\r\n const safeResolve = (val) => { if (!resolved) { resolved = true; clearTimeout(safetyTimeout); resolve(val); } };\r\n const safetyTimeout = setTimeout(() => safeResolve(false), 10000);\r\n \r\n const t = this._emit({\r\n ...opts,\r\n type: opts.type || 'warning',\r\n message,\r\n duration: 0,\r\n closeButton: false,\r\n closeOnClick: false,\r\n draggable: false,\r\n html: _confirmHTML(opts),\r\n });\r\n \r\n setTimeout(() => {\r\n const confirmBtn = t.el?.querySelector('.met-confirm-btn');\r\n const cancelBtn = t.el?.querySelector('.met-cancel-btn');\r\n \r\n if (confirmBtn) {\r\n confirmBtn.addEventListener('click', () => {\r\n t.close();\r\n safeResolve(true);\r\n });\r\n }\r\n \r\n if (cancelBtn) {\r\n cancelBtn.addEventListener('click', () => {\r\n t.close();\r\n safeResolve(false);\r\n });\r\n }\r\n }, 0);\r\n });\r\n },\r\n \r\n /**\r\n * 输入对话框\r\n * @param {string} message - 消息内容\r\n * @param {Object} [opts] - 选项\r\n * @returns {Promise}\r\n */\r\n prompt(message, opts = {}) {\r\n if (typeof message !== 'string') {\r\n console.error('MeToast.prompt: message must be a string');\r\n return Promise.resolve(null);\r\n }\r\n \r\n return new Promise((resolve) => {\r\n let resolved = false;\r\n const safeResolve = (val) => { if (!resolved) { resolved = true; clearTimeout(safetyTimeout); resolve(val); } };\r\n const safetyTimeout = setTimeout(() => safeResolve(null), 10000);\r\n \r\n const t = this._emit({\r\n ...opts,\r\n type: opts.type || 'info',\r\n message,\r\n duration: 0,\r\n closeButton: false,\r\n closeOnClick: false,\r\n draggable: false,\r\n html: _promptHTML(opts),\r\n });\r\n \r\n setTimeout(() => {\r\n const input = t.el?.querySelector('.met-input');\r\n const submitBtn = t.el?.querySelector('.met-submit-btn');\r\n const cancelBtn = t.el?.querySelector('.met-cancel-btn');\r\n \r\n if (input) {\r\n input.focus();\r\n \r\n input.addEventListener('keydown', (e) => {\r\n if (e.key === 'Enter') {\r\n t.close();\r\n safeResolve(input.value);\r\n }\r\n });\r\n }\r\n \r\n if (submitBtn) {\r\n submitBtn.addEventListener('click', () => {\r\n t.close();\r\n safeResolve(input?.value || null);\r\n });\r\n }\r\n \r\n if (cancelBtn) {\r\n cancelBtn.addEventListener('click', () => {\r\n t.close();\r\n safeResolve(null);\r\n });\r\n }\r\n }, 0);\r\n });\r\n },\r\n \r\n /**\r\n * 进度Toast\r\n * @param {string|Object} messageOrOpts - 消息或选项\r\n * @param {Object} [opts] - 选项\r\n * @returns {Object} 控制对象\r\n */\r\n progress(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'info');\r\n normalized.duration = 0;\r\n normalized.closeButton = false;\r\n normalized.showProgress = false;\r\n \r\n const t = this._emit({\r\n ...normalized,\r\n html: _progressHTML(opts),\r\n });\r\n \r\n return {\r\n id: t.id,\r\n \r\n setProgress(percent) {\r\n const fill = t.el?.querySelector('.met-progress-fill');\r\n const text = t.el?.querySelector('.met-progress-text');\r\n \r\n if (fill) {\r\n fill.style.width = `${Math.min(100, Math.max(0, percent))}%`;\r\n }\r\n \r\n if (text) {\r\n text.textContent = `${Math.round(percent)}%`;\r\n }\r\n },\r\n \r\n complete(message) {\r\n this.setProgress(100);\r\n setTimeout(() => {\r\n t.update({\r\n type: 'success',\r\n message: message || i18nT('success'),\r\n html: '',\r\n });\r\n setTimeout(() => t.close(), 1000);\r\n }, 300);\r\n },\r\n \r\n error(message) {\r\n t.update({\r\n type: 'error',\r\n message: message || i18nT('error'),\r\n html: '',\r\n });\r\n setTimeout(() => t.close(), 2000);\r\n },\r\n \r\n dismiss() {\r\n t.close();\r\n },\r\n };\r\n },\r\n \r\n /**\r\n * 倒计时Toast\r\n * @param {string} message - 消息内容\r\n * @param {number} seconds - 秒数\r\n * @param {Object} [opts] - 选项\r\n * @returns {Object} 控制对象\r\n */\r\n countdown(message, seconds = 10, opts = {}) {\r\n if (typeof message !== 'string') {\r\n console.error('MeToast.countdown: message must be a string');\r\n return { cancel: () => {}, pause: () => {}, resume: () => {} };\r\n }\r\n \r\n let remaining = Math.max(1, parseInt(seconds) || 10);\r\n let timer = null;\r\n \r\n const t = this._emit({\r\n ...opts,\r\n type: opts.type || 'warning',\r\n message: message.replace(/\\{seconds\\}/g, remaining),\r\n duration: 0,\r\n closeButton: true,\r\n showProgress: false,\r\n });\r\n \r\n const tick = () => {\r\n remaining--;\r\n \r\n if (remaining <= 0) {\r\n clearInterval(timer);\r\n t.close();\r\n \r\n if (typeof opts.onComplete === 'function') {\r\n try {\r\n opts.onComplete();\r\n } catch (e) {\r\n console.error('countdown onComplete error:', e);\r\n }\r\n }\r\n return;\r\n }\r\n \r\n t.update({\r\n message: message.replace(/\\{seconds\\}/g, remaining),\r\n });\r\n };\r\n \r\n timer = setInterval(tick, 1000);\r\n \r\n return {\r\n id: t.id,\r\n \r\n cancel() {\r\n clearInterval(timer);\r\n t.close();\r\n },\r\n \r\n pause() {\r\n clearInterval(timer);\r\n },\r\n \r\n resume() {\r\n clearInterval(timer);\r\n timer = setInterval(tick, 1000);\r\n },\r\n };\r\n },\r\n \r\n /**\r\n * Action Toast — 带操作按钮的通知\r\n * @param {string|Object} messageOrOpts - 消息\r\n * @param {Array} actions - 操作按钮 [{ text, onClick, color }]\r\n * @param {Object} [opts] - 选项\r\n * @returns {Object} toast实例 + dismiss\r\n */\r\n action(messageOrOpts, actions = [], opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'info');\r\n normalized.duration = opts.duration ?? 0;\r\n normalized.closeButton = opts.closeButton ?? true;\r\n \r\n const t = this._emit({\r\n ...normalized,\r\n html: (normalized.html || '') + _actionHTML(actions),\r\n });\r\n \r\n if (Array.isArray(actions)) {\r\n setTimeout(() => {\r\n actions.forEach((a, i) => {\r\n const btn = t.el?.querySelector(`.met-action-btn-${i}`);\r\n if (btn && typeof a.onClick === 'function') {\r\n btn.addEventListener('click', () => {\r\n try { a.onClick(t); } catch (e) { console.error('Action onClick error:', e); }\r\n if (a.close !== false) t.close();\r\n });\r\n }\r\n });\r\n }, 0);\r\n }\r\n \r\n return { id: t.id, toast: t, dismiss: () => t.close() };\r\n },\r\n\r\n /**\r\n * 队列Toast\r\n * @param {Array} messages - 消息数组\r\n * @param {Object} [opts] - 选项\r\n * @returns {Promise}\r\n */\r\n queue(messages, opts = {}) {\r\n if (!Array.isArray(messages)) {\r\n console.error('MeToast.queue: messages must be an array');\r\n return { then: (fn) => Promise.resolve().then(fn), cancel: () => {} };\r\n }\r\n \r\n let cancelled = false;\r\n const promise = new Promise((resolve) => {\r\n let index = 0;\r\n const delay = opts.delay || 1000;\r\n const userOnClose = opts.onClose;\r\n \r\n const showNext = () => {\r\n if (cancelled || index >= messages.length) {\r\n resolve();\r\n return;\r\n }\r\n \r\n const message = messages[index];\r\n index++;\r\n \r\n const msg = typeof message === 'string' ? message : (message?.message || '');\r\n const msgObj = (typeof message === 'object' && message !== null) ? message : {};\r\n const msgOnClose = msgObj.onClose;\r\n \r\n this._emit({\r\n ...opts,\r\n ...msgObj,\r\n message: msg,\r\n duration: msgObj.duration || opts.duration || 3000,\r\n onClose: (toast) => {\r\n if (typeof msgOnClose === 'function') {\r\n try { msgOnClose(toast); } catch (_) {}\r\n }\r\n if (typeof userOnClose === 'function') {\r\n try { userOnClose(toast); } catch (_) {}\r\n }\r\n setTimeout(showNext, delay);\r\n },\r\n });\r\n };\r\n \r\n showNext();\r\n });\r\n return {\r\n then: (fn, rj) => promise.then(fn, rj),\r\n catch: (rj) => promise.catch(rj),\r\n cancel: () => { cancelled = true; },\r\n };\r\n },\r\n \r\n /**\r\n * 堆叠Toast\r\n * @param {Array} messages - 消息数组\r\n * @param {Object} [opts] - 选项\r\n */\r\n stack(messages, opts = {}) {\r\n if (!Array.isArray(messages)) {\r\n console.error('MeToast.stack: messages must be an array');\r\n return;\r\n }\r\n \r\n messages.forEach((message, index) => {\r\n setTimeout(() => {\r\n const msg = typeof message === 'string' ? message : (message?.message || '');\r\n \r\n this._emit({\r\n ...opts,\r\n ...((typeof message === 'object' && message !== null) ? message : {}),\r\n message: msg,\r\n });\r\n }, index * (opts.stagger || 100));\r\n });\r\n },\r\n \r\n dismiss(id) {\r\n if (id) { \r\n const t = this._toasts.get(id); \r\n if (t) t.close(); \r\n return; \r\n }\r\n this._toasts.forEach(t => t.close());\r\n },\r\n \r\n clear(position) {\r\n this._toasts.forEach(t => {\r\n if (!position || t.config.position === position) t.close();\r\n });\r\n },\r\n \r\n destroy() {\r\n this.dismiss();\r\n \r\n if (typeof document !== 'undefined') {\r\n const containers = document.querySelectorAll('.met-container');\r\n containers.forEach(c => c.parentNode && c.parentNode.removeChild(c));\r\n \r\n const style = document.getElementById('metona-toast-styles');\r\n if (style) style.parentNode.removeChild(style);\r\n }\r\n \r\n this._toasts.clear();\r\n _containerCache.clear();\r\n },\r\n \r\n getAll() {\r\n return new Map(this._toasts);\r\n },\r\n \r\n count() {\r\n return this._toasts.size;\r\n },\r\n \r\n /**\r\n * 创建Toast分组 — 返回一个自动添加 group 参数的子对象\r\n * @param {string} name - 分组名称\r\n * @returns {Object}\r\n */\r\n group(name) {\r\n const self = this;\r\n const methods = ['show','success','error','warning','info','loading','action'];\r\n const g = { _group: name };\r\n methods.forEach(m => {\r\n g[m] = (...args) => {\r\n const lastArg = args[args.length - 1];\r\n const isObj = typeof lastArg === 'object' && lastArg !== null && !Array.isArray(lastArg);\r\n // 单对象参数:直接合并group\r\n if (isObj && args.length === 1) {\r\n return self[m]({ ...lastArg, group: name });\r\n }\r\n // 末尾是配置对象:pop后合并\r\n if (isObj) {\r\n args.pop();\r\n return self[m](...args, { ...lastArg, group: name });\r\n }\r\n // 无配置对象\r\n return self[m](...args, { group: name });\r\n };\r\n });\r\n g.dismiss = () => self.dismissGroup(name);\r\n g.count = () => self._groupCount(name);\r\n return g;\r\n },\r\n \r\n /**\r\n * 按组关闭Toast\r\n * @param {string} name - 分组名称\r\n */\r\n dismissGroup(name) {\r\n this._toasts.forEach(t => { if (t.group === name) t.close(); });\r\n },\r\n \r\n _groupCount(name) {\r\n let c = 0;\r\n this._toasts.forEach(t => { if (t.group === name) c++; });\r\n return c;\r\n },\r\n};\r\n\r\nexport { meToast as default, meToast, Toast };\r\n","/**\r\n * MetonaToast Animations - 动画管理\r\n * @module animations\r\n * @version 2.0.0\r\n * @description 动画效果管理和自定义\r\n */\r\n\r\nimport { ANIMATIONS } from './constants.js';\r\n\r\n// 动画缓存\r\nconst animationCache = new Map();\r\n\r\n/**\r\n * 动画管理器类\r\n */\r\nclass AnimationManager {\r\n constructor() {\r\n this.animations = new Map();\r\n this.activeAnimations = new Map();\r\n this.animationId = 0;\r\n \r\n // 注册默认动画\r\n this._registerDefaults();\r\n }\r\n \r\n /**\r\n * 注册默认动画\r\n */\r\n _registerDefaults() {\r\n Object.entries(ANIMATIONS).forEach(([name, config]) => {\r\n this.register(name, config);\r\n });\r\n }\r\n \r\n /**\r\n * 注册动画\r\n * @param {string} name - 动画名称\r\n * @param {Object} config - 动画配置\r\n */\r\n register(name, config) {\r\n const animation = {\r\n name,\r\n enter: config.enter || {},\r\n leave: config.leave || {},\r\n duration: config.duration || 300,\r\n easing: config.easing || 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n delay: config.delay || 0,\r\n iterations: config.iterations || 1,\r\n direction: config.direction || 'normal',\r\n fillMode: config.fillMode || 'forwards',\r\n };\r\n \r\n this.animations.set(name, animation);\r\n animationCache.set(name, animation);\r\n }\r\n \r\n /**\r\n * 注销动画\r\n * @param {string} name - 动画名称\r\n */\r\n unregister(name) {\r\n this.animations.delete(name);\r\n animationCache.delete(name);\r\n }\r\n \r\n /**\r\n * 获取动画配置\r\n * @param {string} name - 动画名称\r\n * @returns {Object|null} 动画配置\r\n */\r\n get(name) {\r\n return this.animations.get(name) || ANIMATIONS[name] || null;\r\n }\r\n \r\n /**\r\n * 应用动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @param {string} animationName - 动画名称\r\n * @param {Object} options - 额外选项\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n apply(element, animationName, options = {}) {\r\n return new Promise((resolve, reject) => {\r\n const animation = this.get(animationName);\r\n if (!animation) {\r\n resolve();\r\n return;\r\n }\r\n \r\n const config = { ...animation, ...options };\r\n const animId = ++this.animationId;\r\n \r\n // 设置初始状态\r\n Object.assign(element.style, config.enter);\r\n \r\n // 强制重绘\r\n element.offsetHeight;\r\n \r\n // 创建动画\r\n const keyframes = [\r\n { ...config.enter },\r\n { ...config.leave },\r\n ];\r\n \r\n const animationOptions = {\r\n duration: config.duration,\r\n easing: config.easing,\r\n delay: config.delay,\r\n iterations: config.iterations,\r\n direction: config.direction,\r\n fill: config.fillMode,\r\n };\r\n \r\n // 应用动画\r\n const anim = element.animate(keyframes, animationOptions);\r\n \r\n // 存储活动动画\r\n this.activeAnimations.set(animId, {\r\n element,\r\n animation: anim,\r\n config,\r\n });\r\n \r\n // 动画完成处理\r\n anim.onfinish = () => {\r\n Object.assign(element.style, config.leave);\r\n this.activeAnimations.delete(animId);\r\n resolve();\r\n };\r\n \r\n // 动画取消处理 — reject 让调用者感知取消\r\n anim.oncancel = () => {\r\n this.activeAnimations.delete(animId);\r\n reject(new Error(`Animation \"${animationName}\" was cancelled`));\r\n };\r\n });\r\n }\r\n \r\n /**\r\n * 应用进入动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @param {string} animationName - 动画名称\r\n * @param {Object} options - 额外选项\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n enter(element, animationName, options = {}) {\r\n const animation = this.get(animationName);\r\n if (!animation) {\r\n return Promise.resolve();\r\n }\r\n \r\n return this.apply(element, animationName, {\r\n ...options,\r\n direction: 'normal',\r\n });\r\n }\r\n \r\n /**\r\n * 应用离开动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @param {string} animationName - 动画名称\r\n * @param {Object} options - 额外选项\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n leave(element, animationName, options = {}) {\r\n const animation = this.get(animationName);\r\n if (!animation) {\r\n return Promise.resolve();\r\n }\r\n \r\n return this.apply(element, animationName, {\r\n ...options,\r\n direction: 'reverse',\r\n });\r\n }\r\n \r\n /**\r\n * 取消所有动画\r\n */\r\n cancelAll() {\r\n this.activeAnimations.forEach(({ animation }) => {\r\n animation.cancel();\r\n });\r\n \r\n this.activeAnimations.clear();\r\n }\r\n \r\n /**\r\n * 取消元素动画\r\n * @param {HTMLElement} element - 目标元素\r\n */\r\n cancel(element) {\r\n this.activeAnimations.forEach(({ element: el, animation }, id) => {\r\n if (el === element) {\r\n animation.cancel();\r\n this.activeAnimations.delete(id);\r\n }\r\n });\r\n }\r\n \r\n /**\r\n * 暂停所有动画\r\n */\r\n pauseAll() {\r\n this.activeAnimations.forEach(({ animation }) => {\r\n animation.pause();\r\n });\r\n }\r\n \r\n /**\r\n * 恢复所有动画\r\n */\r\n resumeAll() {\r\n this.activeAnimations.forEach(({ animation }) => {\r\n animation.play();\r\n });\r\n }\r\n \r\n /**\r\n * 暂停元素动画\r\n * @param {HTMLElement} element - 目标元素\r\n */\r\n pause(element) {\r\n this.activeAnimations.forEach(({ element: el, animation }) => {\r\n if (el === element) {\r\n animation.pause();\r\n }\r\n });\r\n }\r\n \r\n /**\r\n * 恢复元素动画\r\n * @param {HTMLElement} element - 目标元素\r\n */\r\n resume(element) {\r\n this.activeAnimations.forEach(({ element: el, animation }) => {\r\n if (el === element) {\r\n animation.play();\r\n }\r\n });\r\n }\r\n \r\n /**\r\n * 获取活动动画数量\r\n * @returns {number} 动画数量\r\n */\r\n getActiveCount() {\r\n return this.activeAnimations.size;\r\n }\r\n \r\n /**\r\n * 获取所有活动动画\r\n * @returns {Map} 活动动画映射\r\n */\r\n getActiveAnimations() {\r\n return new Map(this.activeAnimations);\r\n }\r\n \r\n /**\r\n * 检查元素是否有活动动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @returns {boolean} 是否有活动动画\r\n */\r\n hasActiveAnimation(element) {\r\n for (const { element: el } of this.activeAnimations.values()) {\r\n if (el === element) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n \r\n /**\r\n * 获取动画配置\r\n * @returns {Object} 动画配置\r\n */\r\n getConfig() {\r\n return {\r\n animations: Array.from(this.animations.keys()),\r\n activeCount: this.getActiveCount(),\r\n };\r\n }\r\n \r\n /**\r\n * 重置动画管理器\r\n */\r\n reset() {\r\n this.cancelAll();\r\n this.animations.clear();\r\n this._registerDefaults();\r\n }\r\n \r\n /**\r\n * 销毁动画管理器\r\n */\r\n destroy() {\r\n this.cancelAll();\r\n this.animations.clear();\r\n this.activeAnimations.clear();\r\n }\r\n}\r\n\r\n/**\r\n * 预设动画效果\r\n */\r\nconst presetAnimations = {\r\n bounce: {\r\n enter: { transform: 'translateY(-80px)', opacity: 0 },\r\n leave: { transform: 'translateY(20px)', opacity: 1 },\r\n duration: 650,\r\n easing: 'ease',\r\n },\r\n slideUp: {\r\n enter: { transform: 'translateY(60px)', opacity: 0 },\r\n leave: { transform: 'translateY(0)', opacity: 1 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n slideDown: {\r\n enter: { transform: 'translateY(-60px)', opacity: 0 },\r\n leave: { transform: 'translateY(0)', opacity: 1 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n slideLeft: {\r\n enter: { transform: 'translateX(-90px)', opacity: 0 },\r\n leave: { transform: 'translateX(0)', opacity: 1 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n slideRight: {\r\n enter: { transform: 'translateX(90px)', opacity: 0 },\r\n leave: { transform: 'translateX(0)', opacity: 1 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n\r\n};\r\n\r\n// 注册预设动画\r\nObject.entries(presetAnimations).forEach(([name, config]) => {\r\n ANIMATIONS[name] = config;\r\n});\r\n\r\n/**\r\n * 创建动画管理器实例\r\n * @returns {AnimationManager} 动画管理器实例\r\n */\r\nexport const createAnimationManager = () => {\r\n return new AnimationManager();\r\n};\r\n\r\n// 创建默认实例\r\nconst defaultAnimationManager = createAnimationManager();\r\n\r\n/**\r\n * 动画工具函数\r\n */\r\nexport const animationUtils = {\r\n /**\r\n * 应用动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @param {string} animationName - 动画名称\r\n * @param {Object} options - 额外选项\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n apply(element, animationName, options = {}) {\r\n return defaultAnimationManager.apply(element, animationName, options);\r\n },\r\n \r\n /**\r\n * 应用进入动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @param {string} animationName - 动画名称\r\n * @param {Object} options - 额外选项\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n enter(element, animationName, options = {}) {\r\n return defaultAnimationManager.enter(element, animationName, options);\r\n },\r\n \r\n /**\r\n * 应用离开动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @param {string} animationName - 动画名称\r\n * @param {Object} options - 额外选项\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n leave(element, animationName, options = {}) {\r\n return defaultAnimationManager.leave(element, animationName, options);\r\n },\r\n \r\n /**\r\n * 取消所有动画\r\n */\r\n cancelAll() {\r\n defaultAnimationManager.cancelAll();\r\n },\r\n \r\n /**\r\n * 取消元素动画\r\n * @param {HTMLElement} element - 目标元素\r\n */\r\n cancel(element) {\r\n defaultAnimationManager.cancel(element);\r\n },\r\n \r\n /**\r\n * 暂停所有动画\r\n */\r\n pauseAll() {\r\n defaultAnimationManager.pauseAll();\r\n },\r\n \r\n /**\r\n * 恢复所有动画\r\n */\r\n resumeAll() {\r\n defaultAnimationManager.resumeAll();\r\n },\r\n \r\n /**\r\n * 暂停元素动画\r\n * @param {HTMLElement} element - 目标元素\r\n */\r\n pause(element) {\r\n defaultAnimationManager.pause(element);\r\n },\r\n \r\n /**\r\n * 恢复元素动画\r\n * @param {HTMLElement} element - 目标元素\r\n */\r\n resume(element) {\r\n defaultAnimationManager.resume(element);\r\n },\r\n \r\n /**\r\n * 获取活动动画数量\r\n * @returns {number} 动画数量\r\n */\r\n getActiveCount() {\r\n return defaultAnimationManager.getActiveCount();\r\n },\r\n \r\n /**\r\n * 检查元素是否有活动动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @returns {boolean} 是否有活动动画\r\n */\r\n hasActiveAnimation(element) {\r\n return defaultAnimationManager.hasActiveAnimation(element);\r\n },\r\n \r\n /**\r\n * 注册动画\r\n * @param {string} name - 动画名称\r\n * @param {Object} config - 动画配置\r\n */\r\n register(name, config) {\r\n defaultAnimationManager.register(name, config);\r\n },\r\n \r\n /**\r\n * 注销动画\r\n * @param {string} name - 动画名称\r\n */\r\n unregister(name) {\r\n defaultAnimationManager.unregister(name);\r\n },\r\n \r\n /**\r\n * 获取动画配置\r\n * @param {string} name - 动画名称\r\n * @returns {Object|null} 动画配置\r\n */\r\n get(name) {\r\n return defaultAnimationManager.get(name);\r\n },\r\n \r\n /**\r\n * 获取所有动画名称\r\n * @returns {Array} 动画名称数组\r\n */\r\n getAnimationNames() {\r\n return Array.from(defaultAnimationManager.animations.keys());\r\n },\r\n \r\n /**\r\n * 获取动画配置\r\n * @returns {Object} 动画配置\r\n */\r\n getConfig() {\r\n return defaultAnimationManager.getConfig();\r\n },\r\n \r\n /**\r\n * 重置动画管理器\r\n */\r\n reset() {\r\n defaultAnimationManager.reset();\r\n },\r\n \r\n /**\r\n * 销毁动画管理器\r\n */\r\n destroy() {\r\n defaultAnimationManager.destroy();\r\n },\r\n};\r\n\r\n/**\r\n * 动画预设\r\n */\r\nexport const animationPresets = presetAnimations;\r\n\r\n/**\r\n * 创建自定义动画\r\n * @param {Object} config - 动画配置\r\n * @returns {Object} 动画配置\r\n */\r\nexport const createAnimation = (config) => {\r\n return {\r\n enter: config.enter || {},\r\n leave: config.leave || {},\r\n duration: config.duration || 300,\r\n easing: config.easing || 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n delay: config.delay || 0,\r\n iterations: config.iterations || 1,\r\n direction: config.direction || 'normal',\r\n fillMode: config.fillMode || 'forwards',\r\n };\r\n};\r\n\r\n/**\r\n * 组合动画\r\n * @param {Array} animations - 动画数组\r\n * @returns {Object} 组合后的动画配置\r\n */\r\nexport const combineAnimations = (animations) => {\r\n const combined = {\r\n enter: {},\r\n leave: {},\r\n duration: 0,\r\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n delay: 0,\r\n iterations: 1,\r\n direction: 'normal',\r\n fillMode: 'forwards',\r\n };\r\n \r\n animations.forEach((anim) => {\r\n if (anim.enter) {\r\n Object.assign(combined.enter, anim.enter);\r\n }\r\n if (anim.leave) {\r\n Object.assign(combined.leave, anim.leave);\r\n }\r\n if (anim.duration) {\r\n combined.duration = Math.max(combined.duration, anim.duration);\r\n }\r\n if (anim.easing) {\r\n combined.easing = anim.easing;\r\n }\r\n if (anim.delay) {\r\n combined.delay = Math.max(combined.delay, anim.delay);\r\n }\r\n });\r\n \r\n return combined;\r\n};\r\n\r\n/**\r\n * 链式动画\r\n * @param {Array} animations - 动画数组\r\n * @returns {Promise} 动画完成Promise\r\n */\r\nexport const chainAnimations = async (element, animations) => {\r\n for (const anim of animations) {\r\n await defaultAnimationManager.apply(element, anim.name, anim.options);\r\n }\r\n};\r\n\r\n/**\r\n * 并行动画\r\n * @param {Array} animations - 动画数组\r\n * @returns {Promise} 动画完成Promise\r\n */\r\nexport const parallelAnimations = (element, animations) => {\r\n return Promise.all(\r\n animations.map((anim) => \r\n defaultAnimationManager.apply(element, anim.name, anim.options)\r\n )\r\n );\r\n};\r\n\r\n/**\r\n * 延迟动画\r\n * @param {number} delay - 延迟时间(毫秒)\r\n * @returns {Promise} Promise对象\r\n */\r\nexport const delayAnimation = (delay) => {\r\n return new Promise((resolve) => setTimeout(resolve, delay));\r\n};\r\n\r\n/**\r\n * 动画队列\r\n */\r\nexport class AnimationQueue {\r\n constructor() {\r\n this.queue = [];\r\n this.isProcessing = false;\r\n }\r\n \r\n /**\r\n * 添加动画到队列\r\n * @param {Function} animationFn - 动画函数\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n add(animationFn) {\r\n return new Promise((resolve, reject) => {\r\n this.queue.push({\r\n fn: animationFn,\r\n resolve,\r\n reject,\r\n });\r\n \r\n this._process();\r\n });\r\n }\r\n \r\n /**\r\n * 处理队列\r\n */\r\n async _process() {\r\n if (this.isProcessing || this.queue.length === 0) {\r\n return;\r\n }\r\n \r\n this.isProcessing = true;\r\n \r\n while (this.queue.length > 0) {\r\n const { fn, resolve, reject } = this.queue.shift();\r\n \r\n try {\r\n const result = await fn();\r\n resolve(result);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n }\r\n \r\n this.isProcessing = false;\r\n }\r\n \r\n /**\r\n * 清空队列\r\n */\r\n clear() {\r\n this.queue = [];\r\n }\r\n \r\n /**\r\n * 暂停队列\r\n */\r\n pause() {\r\n this.isProcessing = true;\r\n }\r\n \r\n /**\r\n * 恢复队列\r\n */\r\n resume() {\r\n this.isProcessing = false;\r\n this._process();\r\n }\r\n \r\n /**\r\n * 获取队列长度\r\n * @returns {number} 队列长度\r\n */\r\n get length() {\r\n return this.queue.length;\r\n }\r\n \r\n /**\r\n * 检查是否正在处理\r\n * @returns {boolean} 是否正在处理\r\n */\r\n get processing() {\r\n return this.isProcessing;\r\n }\r\n}\r\n\r\n/**\r\n * 创建动画队列\r\n * @returns {AnimationQueue} 动画队列实例\r\n */\r\nexport const createAnimationQueue = () => {\r\n return new AnimationQueue();\r\n};\r\n\r\n/**\r\n * 动画性能监控\r\n */\r\nexport class AnimationPerformanceMonitor {\r\n constructor() {\r\n this.metrics = {\r\n totalAnimations: 0,\r\n activeAnimations: 0,\r\n averageDuration: 0,\r\n maxDuration: 0,\r\n minDuration: Infinity,\r\n };\r\n \r\n this.history = [];\r\n }\r\n \r\n /**\r\n * 记录动画开始\r\n * @param {string} animationName - 动画名称\r\n */\r\n recordStart(animationName) {\r\n this.metrics.totalAnimations++;\r\n this.metrics.activeAnimations++;\r\n \r\n this.history.push({\r\n name: animationName,\r\n startTime: performance.now(),\r\n endTime: null,\r\n duration: null,\r\n });\r\n }\r\n \r\n /**\r\n * 记录动画结束\r\n * @param {string} animationName - 动画名称\r\n */\r\n recordEnd(animationName) {\r\n this.metrics.activeAnimations--;\r\n \r\n const entry = this.history.find(\r\n (h) => h.name === animationName && h.endTime === null\r\n );\r\n \r\n if (entry) {\r\n entry.endTime = performance.now();\r\n entry.duration = entry.endTime - entry.startTime;\r\n \r\n // 更新统计\r\n this.metrics.maxDuration = Math.max(this.metrics.maxDuration, entry.duration);\r\n this.metrics.minDuration = Math.min(this.metrics.minDuration, entry.duration);\r\n \r\n // 计算平均值\r\n const completed = this.history.filter((h) => h.duration !== null);\r\n this.metrics.averageDuration = \r\n completed.reduce((sum, h) => sum + h.duration, 0) / completed.length;\r\n }\r\n }\r\n \r\n /**\r\n * 获取指标\r\n * @returns {Object} 性能指标\r\n */\r\n getMetrics() {\r\n return { ...this.metrics };\r\n }\r\n \r\n /**\r\n * 获取历史记录\r\n * @returns {Array} 历史记录\r\n */\r\n getHistory() {\r\n return [...this.history];\r\n }\r\n \r\n /**\r\n * 重置监控\r\n */\r\n reset() {\r\n this.metrics = {\r\n totalAnimations: 0,\r\n activeAnimations: 0,\r\n averageDuration: 0,\r\n maxDuration: 0,\r\n minDuration: Infinity,\r\n };\r\n \r\n this.history = [];\r\n }\r\n}\r\n\r\n/**\r\n * 创建性能监控实例\r\n * @returns {AnimationPerformanceMonitor} 性能监控实例\r\n */\r\nexport const createPerformanceMonitor = () => {\r\n return new AnimationPerformanceMonitor();\r\n};\r\n\r\n/**\r\n * 动画缓存管理\r\n */\r\nexport const animationCacheManager = {\r\n /**\r\n * 缓存动画\r\n * @param {string} key - 缓存键\r\n * @param {Object} animation - 动画配置\r\n */\r\n set(key, animation) {\r\n animationCache.set(key, animation);\r\n },\r\n \r\n /**\r\n * 获取缓存动画\r\n * @param {string} key - 缓存键\r\n * @returns {Object|null} 动画配置\r\n */\r\n get(key) {\r\n return animationCache.get(key) || null;\r\n },\r\n \r\n /**\r\n * 检查缓存\r\n * @param {string} key - 缓存键\r\n * @returns {boolean} 是否存在\r\n */\r\n has(key) {\r\n return animationCache.has(key);\r\n },\r\n \r\n /**\r\n * 删除缓存\r\n * @param {string} key - 缓存键\r\n */\r\n delete(key) {\r\n animationCache.delete(key);\r\n },\r\n \r\n /**\r\n * 清空缓存\r\n */\r\n clear() {\r\n animationCache.clear();\r\n },\r\n \r\n /**\r\n * 获取缓存大小\r\n * @returns {number} 缓存大小\r\n */\r\n size() {\r\n return animationCache.size;\r\n },\r\n};\r\n\r\nexport { AnimationManager, defaultAnimationManager };\r\n","/**\r\n * MetonaToast Plugins - 插件系统\r\n * @module plugins\r\n * @version 2.0.0\r\n * @description 插件管理器 + 3 款预设插件 (keyboard / persistence / accessibility)\r\n */\r\n\r\nimport { t } from './i18n.js';\r\n\r\n/**\r\n * 插件管理器\r\n */\r\nclass PluginManager {\r\n constructor() {\r\n this.plugins = new Map();\r\n this.initialized = false;\r\n }\r\n\r\n register(name, plugin) {\r\n if (this.plugins.has(name)) {\r\n console.warn(`Plugin \"${name}\" is already registered`);\r\n return this;\r\n }\r\n if (!plugin || typeof plugin !== 'object' || (!plugin.name && !plugin.version)) {\r\n console.error(`Invalid plugin \"${name}\"`);\r\n return this;\r\n }\r\n\r\n this.plugins.set(name, { name, ...plugin, installed: false, enabled: true });\r\n\r\n if (plugin.install) {\r\n try { plugin.install(this); this.plugins.get(name).installed = true; }\r\n catch (e) { console.error(`Failed to install plugin \"${name}\":`, e); }\r\n }\r\n return this;\r\n }\r\n\r\n unregister(name) {\r\n const plugin = this.plugins.get(name);\r\n if (!plugin) return this;\r\n if (plugin.uninstall) {\r\n try { plugin.uninstall(this); } catch (e) { console.error(`Failed to uninstall plugin \"${name}\":`, e); }\r\n }\r\n this.plugins.delete(name);\r\n return this;\r\n }\r\n\r\n get(name) { return this.plugins.get(name) || null; }\r\n has(name) { return this.plugins.has(name); }\r\n getAll() { return Array.from(this.plugins.values()); }\r\n getNames() { return Array.from(this.plugins.keys()); }\r\n\r\n enable(name) {\r\n const p = this.plugins.get(name);\r\n if (p) p.enabled = true;\r\n return this;\r\n }\r\n disable(name) {\r\n const p = this.plugins.get(name);\r\n if (p) p.enabled = false;\r\n return this;\r\n }\r\n isEnabled(name) {\r\n const p = this.plugins.get(name);\r\n return p ? p.enabled : false;\r\n }\r\n\r\n destroy() {\r\n this.plugins.forEach((p, name) => {\r\n if (p.destroy) { try { p.destroy(this); } catch (e) {} }\r\n });\r\n this.plugins.clear();\r\n }\r\n}\r\n\r\n/**\r\n * 预设插件\r\n */\r\nconst presetPlugins = {\r\n\r\n /**\r\n * 键盘快捷键插件 — ESC 关闭所有 Toast\r\n */\r\n keyboard: {\r\n name: 'keyboard',\r\n version: '1.0.0',\r\n description: 'ESC 关闭所有 Toast',\r\n\r\n _handler: null,\r\n\r\n install() {\r\n if (typeof document === 'undefined') return;\r\n this._handler = (e) => {\r\n if (e.key === 'Escape') {\r\n // 点击所有关闭按钮\r\n document.querySelectorAll('.met-toast .met-close').forEach(btn => {\r\n try { btn.click(); } catch (_) {}\r\n });\r\n }\r\n };\r\n document.addEventListener('keydown', this._handler);\r\n },\r\n\r\n uninstall() {\r\n if (this._handler && typeof document !== 'undefined') {\r\n document.removeEventListener('keydown', this._handler);\r\n this._handler = null;\r\n }\r\n },\r\n },\r\n\r\n /**\r\n * 持久化插件 — 自动保存/加载配置到 localStorage\r\n */\r\n persistence: {\r\n name: 'persistence',\r\n version: '1.0.0',\r\n description: '自动持久化配置到 localStorage',\r\n storageKey: 'metona-toast-config',\r\n\r\n install() {\r\n // 加载已保存的配置\r\n if (typeof localStorage !== 'undefined') {\r\n try {\r\n const saved = localStorage.getItem(this.storageKey);\r\n return saved ? JSON.parse(saved) : null;\r\n } catch (_) { return null; }\r\n }\r\n return null;\r\n },\r\n\r\n save(config) {\r\n if (typeof localStorage !== 'undefined') {\r\n try { localStorage.setItem(this.storageKey, JSON.stringify(config)); } catch (_) {}\r\n }\r\n },\r\n\r\n uninstall() {\r\n if (typeof localStorage !== 'undefined') {\r\n try { localStorage.removeItem(this.storageKey); } catch (_) {}\r\n }\r\n },\r\n },\r\n\r\n /**\r\n * 无障碍插件 — 屏幕阅读器公告\r\n */\r\n accessibility: {\r\n name: 'accessibility',\r\n version: '1.0.0',\r\n description: '通过屏幕阅读器朗读 Toast 内容',\r\n\r\n announce(toast) {\r\n if (typeof document === 'undefined') return;\r\n const el = document.createElement('div');\r\n el.setAttribute('aria-live', 'assertive');\r\n el.setAttribute('aria-atomic', 'true');\r\n el.style.cssText = 'position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;';\r\n const typeName = t(toast.type) || toast.type;\r\n el.textContent = `${typeName}: ${toast.title || ''} ${toast.message || ''}`;\r\n document.body.appendChild(el);\r\n setTimeout(() => { if (el.parentNode) el.parentNode.removeChild(el); }, 3000);\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * 插件工具\r\n */\r\nconst pluginUtils = {\r\n createManager() { return new PluginManager(); },\r\n register(name, plugin) { return defaultPluginManager.register(name, plugin); },\r\n unregister(name) { return defaultPluginManager.unregister(name); },\r\n get(name) { return defaultPluginManager.get(name); },\r\n has(name) { return defaultPluginManager.has(name); },\r\n getAll() { return defaultPluginManager.getAll(); },\r\n getNames() { return defaultPluginManager.getNames(); },\r\n enable(name) { return defaultPluginManager.enable(name); },\r\n disable(name) { return defaultPluginManager.disable(name); },\r\n isEnabled(name) { return defaultPluginManager.isEnabled(name); },\r\n getPreset(name) { return presetPlugins[name] || null; },\r\n getAllPresets() { return { ...presetPlugins }; },\r\n\r\n createPlugin(config) {\r\n return {\r\n name: config.name || 'custom',\r\n version: config.version || '1.0.0',\r\n description: config.description || '',\r\n hooks: config.hooks || {},\r\n install: config.install || null,\r\n uninstall: config.uninstall || null,\r\n ...config,\r\n };\r\n },\r\n\r\n validatePlugin(plugin) {\r\n const errors = [];\r\n if (!plugin || typeof plugin !== 'object') errors.push('Plugin must be an object');\r\n if (!plugin.name && !plugin.version) errors.push('Plugin must have a name or version');\r\n return { valid: errors.length === 0, errors };\r\n },\r\n};\r\n\r\nconst defaultPluginManager = new PluginManager();\r\n\r\nexport { presetPlugins, pluginUtils, defaultPluginManager, PluginManager };\r\n","/**\r\n * MetonaToast - 轻量级Toast通知库\r\n * @module metona-toast\r\n * @version 2.0.0\r\n * @author thzxx\r\n * @description 轻量、零依赖、精致美观的Toast通知库。单文件,开箱即用。\r\n * @license MIT\r\n */\r\n\r\nimport { meToast, Toast } from './core.js';\r\nimport { animationUtils } from './animations.js';\r\nimport { themeUtils } from './themes.js';\r\nimport { i18nUtils } from './i18n.js';\r\nimport { pluginUtils, presetPlugins } from './plugins.js';\r\nimport { DEFAULTS } from './constants.js';\r\n\r\n// 版本信息\r\nconst VERSION = '2.0.0';\r\n\r\n/**\r\n * 主对象增强\r\n */\r\nconst enhancedMeToast = {\r\n ...meToast,\r\n \r\n version: VERSION,\r\n \r\n animations: animationUtils,\r\n themes: themeUtils,\r\n i18n: i18nUtils,\r\n plugins: pluginUtils,\r\n presetPlugins,\r\n \r\n /**\r\n * 安装插件,并连接必要的生命周期钩子\r\n */\r\n use(plugin, options = {}) {\r\n if (typeof plugin === 'string') {\r\n const preset = presetPlugins[plugin];\r\n if (!preset) {\r\n console.warn(`Preset plugin \"${plugin}\" not found`);\r\n return this;\r\n }\r\n this.plugins.register(plugin, { ...preset, ...options });\r\n\r\n // 连接插件钩子\r\n if (plugin === 'accessibility') {\r\n Toast.on('afterShow', (toast) => preset.announce(toast));\r\n }\r\n if (plugin === 'persistence') {\r\n const saved = preset.install();\r\n if (saved) this.configure(saved);\r\n Toast.on('afterClose', () => { preset.save(this.getConfig()); });\r\n }\r\n } else if (plugin && typeof plugin === 'object') {\r\n const name = plugin.name || 'custom';\r\n this.plugins.register(name, { ...plugin, ...options });\r\n }\r\n\r\n return this;\r\n },\r\n \r\n /**\r\n * 初始化\r\n */\r\n init(options = {}) {\r\n if (options.config) {\r\n this.configure(options.config);\r\n }\r\n \r\n if (options.theme) {\r\n this.themes.switchTheme(options.theme);\r\n }\r\n \r\n if (options.locale) {\r\n this.i18n.switchLocale(options.locale);\r\n }\r\n \r\n if (options.plugins && Array.isArray(options.plugins)) {\r\n options.plugins.forEach((plugin) => {\r\n this.use(plugin);\r\n });\r\n }\r\n \r\n return this;\r\n },\r\n \r\n /**\r\n * 销毁\r\n */\r\n destroy() {\r\n this.dismiss();\r\n \r\n if (this.plugins && typeof this.plugins.destroy === 'function') {\r\n this.plugins.destroy();\r\n }\r\n \r\n if (this.themes) {\r\n if (typeof this.themes.clearThemeListeners === 'function') {\r\n this.themes.clearThemeListeners();\r\n }\r\n if (typeof this.themes.unwatchSystemTheme === 'function') {\r\n this.themes.unwatchSystemTheme();\r\n }\r\n }\r\n \r\n if (this.i18n && typeof this.i18n.clearLocaleListeners === 'function') {\r\n this.i18n.clearLocaleListeners();\r\n }\r\n \r\n if (this.animations && typeof this.animations.cancelAll === 'function') {\r\n this.animations.cancelAll();\r\n }\r\n \r\n if (typeof document !== 'undefined') {\r\n const containers = document.querySelectorAll('.met-container');\r\n containers.forEach((c) => c.parentNode && c.parentNode.removeChild(c));\r\n \r\n const style = document.getElementById('metona-toast-styles');\r\n if (style) style.parentNode.removeChild(style);\r\n }\r\n \r\n this._toasts.clear();\r\n },\r\n \r\n /**\r\n * 获取状态\r\n */\r\n getStatus() {\r\n return {\r\n version: VERSION,\r\n toasts: this._toasts.size,\r\n theme: this.themes?.getCurrentTheme?.() || 'auto',\r\n locale: this.i18n?.getCurrentLocale?.() || 'zh-CN',\r\n plugins: this.plugins?.getNames?.() || [],\r\n animations: this.animations?.getActiveCount?.() || 0,\r\n };\r\n },\r\n \r\n /**\r\n * 获取配置\r\n */\r\n getConfig() {\r\n return { ...this._config };\r\n },\r\n \r\n /**\r\n * 更新配置\r\n */\r\n updateConfig(config) {\r\n if (config && typeof config === 'object') {\r\n this._config = { ...this._config, ...config };\r\n }\r\n return this;\r\n },\r\n \r\n /**\r\n * 重置配置\r\n */\r\n resetConfig() {\r\n this._config = { ...DEFAULTS };\r\n return this;\r\n },\r\n \r\n /**\r\n * 获取Toast列表\r\n */\r\n getToasts() {\r\n return Array.from(this._toasts.values());\r\n },\r\n \r\n /**\r\n * 检查是否有Toast\r\n */\r\n hasToasts() {\r\n return this._toasts.size > 0;\r\n },\r\n \r\n /**\r\n * 获取Toast\r\n */\r\n getToast(id) {\r\n if (!id) return null;\r\n return this._toasts.get(id) || null;\r\n },\r\n \r\n /**\r\n * 关闭所有Toast\r\n */\r\n closeAll() {\r\n this._toasts.forEach((t) => t.close());\r\n },\r\n \r\n /**\r\n * 清除所有Toast\r\n */\r\n clearAll() {\r\n this._toasts.forEach((t) => t.close());\r\n },\r\n \r\n /**\r\n * 暂停所有Toast\r\n */\r\n pauseAll() {\r\n this._toasts.forEach((t) => t._pause());\r\n },\r\n \r\n /**\r\n * 恢复所有Toast\r\n */\r\n resumeAll() {\r\n this._toasts.forEach((t) => t._resume());\r\n },\r\n \r\n /**\r\n * 更新所有Toast\r\n */\r\n updateAll(partial) {\r\n if (partial && typeof partial === 'object') {\r\n this._toasts.forEach((t) => t.update(partial));\r\n }\r\n },\r\n \r\n /**\r\n * 查找Toast\r\n */\r\n findToasts(predicate) {\r\n if (typeof predicate !== 'function') return [];\r\n return Array.from(this._toasts.values()).filter(predicate);\r\n },\r\n \r\n /**\r\n * 按类型查找Toast\r\n */\r\n findByType(type) {\r\n return this.findToasts((t) => t.type === type);\r\n },\r\n \r\n /**\r\n * 按位置查找Toast\r\n */\r\n findByPosition(position) {\r\n return this.findToasts((t) => t.config.position === position);\r\n },\r\n \r\n};\r\n// 初始化主题和国际化\r\nif (typeof themeUtils.initTheme === 'function') {\r\n themeUtils.initTheme();\r\n}\r\nif (typeof i18nUtils.initI18n === 'function') {\r\n i18nUtils.initI18n();\r\n}\r\n\r\n// 浏览器环境全局注册\r\nif (typeof window !== 'undefined') {\r\n window.MeToast = enhancedMeToast;\r\n window.Met = enhancedMeToast;\r\n \r\n // Notification API — 页面不可见时自动发送系统通知\r\n enhancedMeToast._notify = (toast) => {\r\n if (typeof Notification === 'undefined') return;\r\n if (Notification.permission === 'denied') return;\r\n if (!document.hidden) return;\r\n if (Notification.permission === 'default') {\r\n Notification.requestPermission().then(p => { if (p === 'granted') sendNotification(toast); });\r\n return;\r\n }\r\n sendNotification(toast);\r\n };\r\n const sendNotification = (toast) => {\r\n try {\r\n new Notification(toast.title || toast.type, { body: toast.message });\r\n } catch (_) {}\r\n };\r\n Toast.on('afterShow', (toast) => {\r\n if (toast.config.notifyWhenHidden) enhancedMeToast._notify(toast);\r\n });\r\n}\r\n\r\n// 导出\r\nexport default enhancedMeToast;\r\nexport { enhancedMeToast as meToast, enhancedMeToast as Met, enhancedMeToast as MeToast, Toast, VERSION };\r\n"],"names":["i18nT","t"],"mappings":"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,MAAM,EAAE,qBAAqB;AACjC,IAAI,MAAM,EAAE,4EAA4E;AACxF,IAAI,WAAW,EAAE,4EAA4E;AAC7F,IAAI,UAAU,EAAE,qBAAqB;AACrC,IAAI,YAAY,EAAE,qBAAqB;AACvC,GAAG;AACH,EAAE,IAAI,EAAE;AACR,IAAI,EAAE,EAAE,wBAAwB;AAChC,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,MAAM,EAAE,2BAA2B;AACvC,IAAI,MAAM,EAAE,0EAA0E;AACtF,IAAI,WAAW,EAAE,yEAAyE;AAC1F,IAAI,UAAU,EAAE,2BAA2B;AAC3C,IAAI,YAAY,EAAE,2BAA2B;AAC7C,GAAG;AACH,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,IAAI,EAAE;AACR,IAAI,EAAE,EAAE,2BAA2B;AACnC,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,MAAM,EAAE,yBAAyB;AACrC,IAAI,MAAM,EAAE,sFAAsF;AAClG,IAAI,WAAW,EAAE,sFAAsF;AACvG,IAAI,UAAU,EAAE,yBAAyB;AACzC,IAAI,YAAY,EAAE,yBAAyB;AAC3C,GAAG;AACH,CAAC;;ACvRD;AACA;AACA;AACA;AACA;AACA;AACA;AAKA,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK;AAC/B,EAAE,OAAO,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACO,MAAM,YAAY,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK;AACtD;AACA,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,OAAO;AAC9C;AACA;AACA,EAAE,IAAI,YAAY,IAAI,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE;AACtE,IAAI,OAAO;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"} \ No newline at end of file diff --git a/dist/metona-toast.js.map b/dist/metona-toast.js.map index 99ff413..e75e4e1 100644 --- a/dist/metona-toast.js.map +++ b/dist/metona-toast.js.map @@ -1 +1 @@ -{"version":3,"file":"metona-toast.js","sources":["../src/utils.js","../src/icons.js","../src/locales.js","../src/constants.js","../src/styles.js","../src/themes.js","../src/i18n.js","../src/core.js","../src/animations.js","../src/plugins.js","../src/index.js"],"sourcesContent":["/**\n * MetonaToast Utils - 工具函数\n * @module utils\n * @version 2.0.0\n * @description 通用工具函数集合\n */\n\n/**\n * 生成唯一ID\n * @returns {string} 唯一ID\n */\nexport const generateId = () => {\n return 'met-' + Date.now().toString(36) + '-' + Math.random().toString(36).slice(2, 8);\n};\n\n/**\n * HTML转义\n * @param {string} s - 输入字符串\n * @returns {string} 转义后的字符串\n */\nexport const escapeHTML = (s) => {\n if (typeof document === 'undefined') {\n // Node.js环境\n return String(s == null ? '' : s)\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n }\n \n const div = document.createElement('div');\n div.textContent = String(s == null ? '' : s);\n return div.innerHTML;\n};\n\n/**\n * 事件绑定\n * @param {HTMLElement} el - 元素\n * @param {string} evt - 事件名\n * @param {Function} handler - 事件处理函数\n * @param {Object} opts - 选项\n * @returns {Function} 清理函数\n */\nexport const on = (el, evt, handler, opts) => {\n el.addEventListener(evt, handler, opts);\n return () => el.removeEventListener(evt, handler, opts);\n};\n\n/**\n * 检测暗色模式偏好\n * @returns {boolean} 是否偏好暗色模式\n */\nexport const prefersDark = () => {\n return typeof window !== 'undefined' && \n window.matchMedia && \n window.matchMedia('(prefers-color-scheme: dark)').matches;\n};\n\n/**\n * 防抖函数\n * @param {Function} func - 要防抖的函数\n * @param {number} wait - 等待时间(毫秒)\n * @param {boolean} immediate - 是否立即执行\n * @returns {Function} 防抖后的函数\n */\nexport const debounce = (func, wait, immediate = false) => {\n let timeout;\n return function executedFunction(...args) {\n const context = this;\n const later = () => {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n};\n\n/**\n * 节流函数\n * @param {Function} func - 要节流的函数\n * @param {number} limit - 限制时间(毫秒)\n * @returns {Function} 节流后的函数\n */\nexport const throttle = (func, limit) => {\n let inThrottle;\n return function executedFunction(...args) {\n const context = this;\n if (!inThrottle) {\n func.apply(context, args);\n inThrottle = true;\n setTimeout(() => inThrottle = false, limit);\n }\n };\n};\n\n/**\n * 深度合并对象\n * @param {Object} target - 目标对象\n * @param {Object} source - 源对象\n * @returns {Object} 合并后的对象\n */\nexport const deepMerge = (target, source) => {\n const output = { ...target };\n \n Object.keys(source).forEach(key => {\n if (source[key] instanceof Object && key in target && target[key] instanceof Object) {\n output[key] = deepMerge(target[key], source[key]);\n } else {\n output[key] = source[key];\n }\n });\n \n return output;\n};\n\n/**\n * 检查是否为浏览器环境\n * @returns {boolean} 是否为浏览器环境\n */\nexport const isBrowser = () => {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n};\n\n/**\n * 安全获取嵌套对象属性\n * @param {Object} obj - 对象\n * @param {string} path - 属性路径\n * @param {*} defaultValue - 默认值\n * @returns {*} 属性值\n */\nexport const getNestedValue = (obj, path, defaultValue = undefined) => {\n const keys = path.split('.');\n let result = obj;\n \n for (const key of keys) {\n result = result?.[key];\n if (result === undefined) return defaultValue;\n }\n \n return result;\n};\n\n/**\n * 格式化文件大小\n * @param {number} bytes - 字节数\n * @param {number} decimals - 小数位数\n * @returns {string} 格式化后的字符串\n */\nexport const formatFileSize = (bytes, decimals = 2) => {\n if (bytes === 0) return '0 Bytes';\n \n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n \n const i = Math.floor(Math.log(bytes) / Math.log(k));\n \n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n};\n\n/**\n * 格式化日期\n * @param {Date|string|number} date - 日期\n * @param {string} format - 格式\n * @returns {string} 格式化后的日期字符串\n */\nexport const formatDate = (date, format = 'YYYY-MM-DD HH:mm:ss') => {\n const d = new Date(date);\n \n const year = d.getFullYear();\n const month = String(d.getMonth() + 1).padStart(2, '0');\n const day = String(d.getDate()).padStart(2, '0');\n const hours = String(d.getHours()).padStart(2, '0');\n const minutes = String(d.getMinutes()).padStart(2, '0');\n const seconds = String(d.getSeconds()).padStart(2, '0');\n \n return format\n .replace('YYYY', year)\n .replace('MM', month)\n .replace('DD', day)\n .replace('HH', hours)\n .replace('mm', minutes)\n .replace('ss', seconds);\n};\n\n/**\n * 生成随机数\n * @param {number} min - 最小值\n * @param {number} max - 最大值\n * @returns {number} 随机数\n */\nexport const random = (min, max) => {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\n\n/**\n * 检查元素是否在视口中\n * @param {HTMLElement} el - 元素\n * @returns {boolean} 是否在视口中\n */\nexport const isInViewport = (el) => {\n const rect = el.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n};\n\n/**\n * 平滑滚动到元素\n * @param {HTMLElement} el - 元素\n * @param {Object} options - 选项\n */\nexport const scrollToElement = (el, options = {}) => {\n const defaultOptions = {\n behavior: 'smooth',\n block: 'start',\n inline: 'nearest',\n };\n \n el.scrollIntoView({ ...defaultOptions, ...options });\n};\n\n/**\n * 复制文本到剪贴板\n * @param {string} text - 文本\n * @returns {Promise} 是否成功\n */\nexport const copyToClipboard = async (text) => {\n try {\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n return true;\n }\n \n // 降级方案\n const textarea = document.createElement('textarea');\n textarea.value = text;\n textarea.style.position = 'fixed';\n textarea.style.opacity = '0';\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n \n return true;\n } catch (err) {\n console.error('Failed to copy text: ', err);\n return false;\n }\n};\n\n/**\n * 检测设备类型\n * @returns {string} 设备类型\n */\nexport const getDeviceType = () => {\n const ua = navigator.userAgent;\n \n if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {\n return 'tablet';\n }\n \n if (/Mobile|Android|iP(hone|od)|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/.test(ua)) {\n return 'mobile';\n }\n \n return 'desktop';\n};\n\n/**\n * 检测浏览器\n * @returns {Object} 浏览器信息\n */\nexport const getBrowserInfo = () => {\n const ua = navigator.userAgent;\n let browser = 'unknown';\n let version = 'unknown';\n \n if (ua.includes('Firefox/')) {\n browser = 'Firefox';\n version = ua.split('Firefox/')[1];\n } else if (ua.includes('Edg/')) {\n browser = 'Edge';\n version = ua.split('Edg/')[1];\n } else if (ua.includes('Chrome/')) {\n browser = 'Chrome';\n version = ua.split('Chrome/')[1];\n } else if (ua.includes('Safari/')) {\n browser = 'Safari';\n version = ua.split('Version/')[1];\n }\n \n return { browser, version };\n};\n\n/**\n * 检测操作系统\n * @returns {string} 操作系统\n */\nexport const getOS = () => {\n const ua = navigator.userAgent;\n \n if (ua.includes('Win')) return 'Windows';\n if (ua.includes('Mac')) return 'MacOS';\n if (ua.includes('Linux')) return 'Linux';\n if (ua.includes('Android')) return 'Android';\n if (ua.includes('iOS') || ua.includes('iPhone') || ua.includes('iPad')) return 'iOS';\n \n return 'Unknown';\n};\n\n/**\n * 检测网络状态\n * @returns {Object} 网络信息\n */\nexport const getNetworkInfo = () => {\n if (!navigator.connection) {\n return { online: navigator.onLine, type: 'unknown', speed: 'unknown' };\n }\n \n const connection = navigator.connection;\n \n return {\n online: navigator.onLine,\n type: connection.effectiveType || 'unknown',\n speed: connection.downlink || 'unknown',\n rtt: connection.rtt || 'unknown',\n };\n};\n\n/**\n * 存储数据到localStorage\n * @param {string} key - 键\n * @param {*} value - 值\n * @param {number} expiry - 过期时间(毫秒)\n */\nexport const setStorage = (key, value, expiry = null) => {\n const item = {\n value,\n timestamp: Date.now(),\n expiry: expiry ? Date.now() + expiry : null,\n };\n \n localStorage.setItem(key, JSON.stringify(item));\n};\n\n/**\n * 从localStorage获取数据\n * @param {string} key - 键\n * @param {*} defaultValue - 默认值\n * @returns {*} 值\n */\nexport const getStorage = (key, defaultValue = null) => {\n const itemStr = localStorage.getItem(key);\n \n if (!itemStr) return defaultValue;\n \n try {\n const item = JSON.parse(itemStr);\n \n // 检查是否过期\n if (item.expiry && Date.now() > item.expiry) {\n localStorage.removeItem(key);\n return defaultValue;\n }\n \n return item.value;\n } catch (err) {\n console.error('Error parsing storage item:', err);\n return defaultValue;\n }\n};\n\n/**\n * 从localStorage删除数据\n * @param {string} key - 键\n */\nexport const removeStorage = (key) => {\n localStorage.removeItem(key);\n};\n\n/**\n * 清空localStorage\n */\nexport const clearStorage = () => {\n localStorage.clear();\n};\n\n/**\n * 生成UUID\n * @returns {string} UUID\n */\nexport const generateUUID = () => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\n/**\n * 检查是否支持某个CSS属性\n * @param {string} property - CSS属性\n * @returns {boolean} 是否支持\n */\nexport const supportsCSSProperty = (property) => {\n return typeof document !== 'undefined' && \n property in document.documentElement.style;\n};\n\n/**\n * 检查是否支持某个JavaScript API\n * @param {string} api - API名称\n * @returns {boolean} 是否支持\n */\nexport const supportsAPI = (api) => {\n return api in window || api in navigator;\n};\n\n/**\n * 获取URL参数\n * @param {string} name - 参数名\n * @returns {string|null} 参数值\n */\nexport const getURLParam = (name) => {\n const urlParams = new URLSearchParams(window.location.search);\n return urlParams.get(name);\n};\n\n/**\n * 设置URL参数\n * @param {string} name - 参数名\n * @param {string} value - 参数值\n */\nexport const setURLParam = (name, value) => {\n const url = new URL(window.location);\n url.searchParams.set(name, value);\n window.history.pushState({}, '', url);\n};\n\n/**\n * 删除URL参数\n * @param {string} name - 参数名\n */\nexport const removeURLParam = (name) => {\n const url = new URL(window.location);\n url.searchParams.delete(name);\n window.history.pushState({}, '', url);\n};\n\n/**\n * 格式化数字\n * @param {number} number - 数字\n * @param {number} decimals - 小数位数\n * @param {string} decimalSeparator - 小数分隔符\n * @param {string} thousandsSeparator - 千位分隔符\n * @returns {string} 格式化后的字符串\n */\nexport const formatNumber = (number, decimals = 0, decimalSeparator = '.', thousandsSeparator = ',') => {\n const fixed = number.toFixed(decimals);\n const [intPart, decPart] = fixed.split('.');\n \n const formattedInt = intPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator);\n \n return decimals > 0 ? `${formattedInt}${decimalSeparator}${decPart}` : formattedInt;\n};\n\n/**\n * 格式化货币\n * @param {number} amount - 金额\n * @param {string} currency - 货币代码\n * @param {string} locale - 地区\n * @returns {string} 格式化后的字符串\n */\nexport const formatCurrency = (amount, currency = 'USD', locale = 'en-US') => {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n }).format(amount);\n};\n\n/**\n * 格式化百分比\n * @param {number} value - 值\n * @param {number} decimals - 小数位数\n * @param {string} locale - 地区\n * @returns {string} 格式化后的字符串\n */\nexport const formatPercent = (value, decimals = 2, locale = 'en-US') => {\n return new Intl.NumberFormat(locale, {\n style: 'percent',\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value / 100);\n};\n\n/**\n * 检查是否为空值\n * @param {*} value - 值\n * @returns {boolean} 是否为空\n */\nexport const isEmpty = (value) => {\n if (value === null || value === undefined) return true;\n if (typeof value === 'string') return value.trim().length === 0;\n if (Array.isArray(value)) return value.length === 0;\n if (typeof value === 'object') return Object.keys(value).length === 0;\n return false;\n};\n\n/**\n * 深拷贝对象\n * @param {*} obj - 对象\n * @returns {*} 拷贝后的对象\n */\nexport const deepClone = (obj) => {\n if (obj === null || typeof obj !== 'object') return obj;\n if (obj instanceof Date) return new Date(obj.getTime());\n if (obj instanceof RegExp) return new RegExp(obj);\n if (obj instanceof Map) return new Map([...obj].map(([k, v]) => [k, deepClone(v)]));\n if (obj instanceof Set) return new Set([...obj].map(item => deepClone(item)));\n \n const cloned = Array.isArray(obj) ? [] : {};\n \n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n cloned[key] = deepClone(obj[key]);\n }\n }\n \n return cloned;\n};\n\n/**\n * 比较两个对象是否相等\n * @param {*} obj1 - 对象1\n * @param {*} obj2 - 对象2\n * @returns {boolean} 是否相等\n */\nexport const isEqual = (obj1, obj2) => {\n if (obj1 === obj2) return true;\n if (obj1 === null || obj2 === null) return false;\n if (typeof obj1 !== typeof obj2) return false;\n \n if (typeof obj1 !== 'object') return obj1 === obj2;\n \n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n \n if (keys1.length !== keys2.length) return false;\n \n for (const key of keys1) {\n if (!keys2.includes(key)) return false;\n if (!isEqual(obj1[key], obj2[key])) return false;\n }\n \n return true;\n};\n\n/**\n * 验证邮箱格式\n * @param {string} email - 邮箱\n * @returns {boolean} 是否有效\n */\nexport const isValidEmail = (email) => {\n const re = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return re.test(email);\n};\n\n/**\n * 验证URL格式\n * @param {string} url - URL\n * @returns {boolean} 是否有效\n */\nexport const isValidURL = (url) => {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n};\n\n/**\n * 验证手机号格式\n * @param {string} phone - 手机号\n * @returns {boolean} 是否有效\n */\nexport const isValidPhone = (phone) => {\n const re = /^1[3-9]\\d{9}$/;\n return re.test(phone);\n};\n\n/**\n * 验证身份证号格式\n * @param {string} idCard - 身份证号\n * @returns {boolean} 是否有效\n */\nexport const isValidIDCard = (idCard) => {\n const re = /^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$/;\n return re.test(idCard);\n};\n\n/**\n * 生成随机颜色\n * @returns {string} 颜色值\n */\nexport const randomColor = () => {\n return '#' + Math.floor(Math.random() * 16777215).toString(16).padStart(6, '0');\n};\n\n/**\n * 颜色转RGBA\n * @param {string} color - 颜色值\n * @param {number} alpha - 透明度\n * @returns {string} RGBA颜色值\n */\nexport const colorToRGBA = (color, alpha = 1) => {\n const hex = color.replace('#', '');\n const r = parseInt(hex.substring(0, 2), 16);\n const g = parseInt(hex.substring(2, 4), 16);\n const b = parseInt(hex.substring(4, 6), 16);\n \n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n};\n\n/**\n * 获取颜色亮度\n * @param {string} color - 颜色值\n * @returns {number} 亮度值(0-255)\n */\nexport const getColorBrightness = (color) => {\n const hex = color.replace('#', '');\n const r = parseInt(hex.substring(0, 2), 16);\n const g = parseInt(hex.substring(2, 4), 16);\n const b = parseInt(hex.substring(4, 6), 16);\n \n return (r * 299 + g * 587 + b * 114) / 1000;\n};\n\n/**\n * 判断是否为浅色\n * @param {string} color - 颜色值\n * @returns {boolean} 是否为浅色\n */\nexport const isLightColor = (color) => {\n return getColorBrightness(color) > 128;\n};\n\n/**\n * 获取对比色\n * @param {string} color - 颜色值\n * @returns {string} 对比色\n */\nexport const getContrastColor = (color) => {\n return isLightColor(color) ? '#000000' : '#FFFFFF';\n};\n\n/**\n * 生成渐变色\n * @param {string} color1 - 起始颜色\n * @param {string} color2 - 结束颜色\n * @param {number} steps - 步数\n * @returns {Array} 颜色数组\n */\nexport const generateGradient = (color1, color2, steps = 10) => {\n const hex = (color) => {\n const c = color.replace('#', '');\n return [\n parseInt(c.substring(0, 2), 16),\n parseInt(c.substring(2, 4), 16),\n parseInt(c.substring(4, 6), 16),\n ];\n };\n \n const [r1, g1, b1] = hex(color1);\n const [r2, g2, b2] = hex(color2);\n \n const gradient = [];\n \n for (let i = 0; i < steps; i++) {\n const r = Math.round(r1 + (r2 - r1) * (i / (steps - 1)));\n const g = Math.round(g1 + (g2 - g1) * (i / (steps - 1)));\n const b = Math.round(b1 + (b2 - b1) * (i / (steps - 1)));\n \n gradient.push(`#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`);\n }\n \n return gradient;\n};\n\n/**\n * 获取字符长度(支持中文)\n * @param {string} str - 字符串\n * @returns {number} 长度\n */\nexport const getStringLength = (str) => {\n let length = 0;\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n if (code > 0 && code <= 128) {\n length += 1;\n } else {\n length += 2;\n }\n }\n return length;\n};\n\n/**\n * 截取字符串(支持中文)\n * @param {string} str - 字符串\n * @param {number} length - 长度\n * @param {string} suffix - 后缀\n * @returns {string} 截取后的字符串\n */\nexport const truncateString = (str, length, suffix = '...') => {\n let currentLength = 0;\n let result = '';\n \n for (let i = 0; i < str.length; i++) {\n const char = str[i];\n const code = str.charCodeAt(i);\n \n if (code > 0 && code <= 128) {\n currentLength += 1;\n } else {\n currentLength += 2;\n }\n \n if (currentLength > length) {\n return result + suffix;\n }\n \n result += char;\n }\n \n return result;\n};\n\n/**\n * 驼峰转换\n * @param {string} str - 字符串\n * @returns {string} 驼峰格式字符串\n */\nexport const toCamelCase = (str) => {\n return str\n .replace(/[-_\\s]+(.)?/g, (_, c) => (c ? c.toUpperCase() : ''))\n .replace(/^[A-Z]/, (c) => c.toLowerCase());\n};\n\n/**\n * 短横线转换\n * @param {string} str - 字符串\n * @returns {string} 短横线格式字符串\n */\nexport const toKebabCase = (str) => {\n return str\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_]+/g, '-')\n .toLowerCase();\n};\n\n/**\n * 下划线转换\n * @param {string} str - 字符串\n * @returns {string} 下划线格式字符串\n */\nexport const toSnakeCase = (str) => {\n return str\n .replace(/([a-z])([A-Z])/g, '$1_$2')\n .replace(/[\\s\\-]+/g, '_')\n .toLowerCase();\n};\n\n/**\n * 首字母大写\n * @param {string} str - 字符串\n * @returns {string} 首字母大写字符串\n */\nexport const capitalize = (str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\n/**\n * 每个单词首字母大写\n * @param {string} str - 字符串\n * @returns {string} 每个单词首字母大写字符串\n */\nexport const capitalizeWords = (str) => {\n return str.replace(/\\b\\w/g, (char) => char.toUpperCase());\n};\n\n/**\n * 移除HTML标签\n * @param {string} html - HTML字符串\n * @returns {string} 纯文本\n */\nexport const stripHTML = (html) => {\n const tmp = document.createElement('div');\n tmp.innerHTML = html;\n return tmp.textContent || tmp.innerText || '';\n};\n\n/**\n * 转义正则表达式\n * @param {string} str - 字符串\n * @returns {string} 转义后的字符串\n */\nexport const escapeRegExp = (str) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n};\n\n/**\n * 生成随机字符串\n * @param {number} length - 长度\n * @param {string} chars - 字符集\n * @returns {string} 随机字符串\n */\nexport const randomString = (length = 8, chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') => {\n let result = '';\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return result;\n};\n\n/**\n * 延迟执行\n * @param {number} ms - 毫秒数\n * @returns {Promise} Promise对象\n */\nexport const sleep = (ms) => {\n return new Promise(resolve => setTimeout(resolve, ms));\n};\n\n/**\n * 重试函数\n * @param {Function} fn - 函数\n * @param {number} maxAttempts - 最大尝试次数\n * @param {number} delay - 延迟时间\n * @returns {Promise} Promise对象\n */\nexport const retry = async (fn, maxAttempts = 3, delay = 1000) => {\n let lastError;\n \n for (let attempt = 1; attempt <= maxAttempts; attempt++) {\n try {\n return await fn();\n } catch (err) {\n lastError = err;\n if (attempt < maxAttempts) {\n await sleep(delay * attempt);\n }\n }\n }\n \n throw lastError;\n};\n\n/**\n * 超时控制\n * @param {Promise} promise - Promise对象\n * @param {number} ms - 毫秒数\n * @returns {Promise} Promise对象\n */\nexport const timeout = (promise, ms) => {\n return Promise.race([\n promise,\n new Promise((_, reject) => {\n setTimeout(() => reject(new Error('Timeout')), ms);\n }),\n ]);\n};\n\n/**\n * 并发控制\n * @param {Array} tasks - 任务数组\n * @param {number} concurrency - 并发数\n * @returns {Promise} Promise对象\n */\nexport const parallel = async (tasks, concurrency = 5) => {\n const results = [];\n const executing = new Set();\n \n for (const [index, task] of tasks.entries()) {\n const p = Promise.resolve().then(() => task());\n results.push(p);\n executing.add(p);\n \n const clean = () => executing.delete(p);\n p.then(clean, clean);\n \n if (executing.size >= concurrency) {\n await Promise.race(executing);\n }\n }\n \n return Promise.all(results);\n};\n\n/**\n * 序列执行\n * @param {Array} tasks - 任务数组\n * @returns {Promise} Promise对象\n */\nexport const sequence = async (tasks) => {\n const results = [];\n \n for (const task of tasks) {\n results.push(await task());\n }\n \n return results;\n};\n\n/**\n * 缓存函数\n * @param {Function} fn - 函数\n * @param {number} maxSize - 最大缓存数\n * @returns {Function} 缓存后的函数\n */\nexport const memoize = (fn, maxSize = 100) => {\n const cache = new Map();\n \n return (...args) => {\n const key = JSON.stringify(args);\n \n if (cache.has(key)) {\n return cache.get(key);\n }\n \n const result = fn(...args);\n \n if (cache.size >= maxSize) {\n const firstKey = cache.keys().next().value;\n cache.delete(firstKey);\n }\n \n cache.set(key, result);\n \n return result;\n };\n};\n\n/**\n * 单例模式\n * @param {Function} fn - 函数\n * @returns {Function} 单例函数\n */\nexport const singleton = (fn) => {\n let instance;\n \n return (...args) => {\n if (!instance) {\n instance = fn(...args);\n }\n return instance;\n };\n};\n\n/**\n * 观察者模式\n * @returns {Object} 观察者对象\n */\nexport const createObserver = () => {\n const listeners = new Map();\n \n return {\n on(event, callback) {\n if (!listeners.has(event)) {\n listeners.set(event, new Set());\n }\n listeners.get(event).add(callback);\n \n return () => this.off(event, callback);\n },\n \n off(event, callback) {\n if (listeners.has(event)) {\n listeners.get(event).delete(callback);\n }\n },\n \n emit(event, ...args) {\n if (listeners.has(event)) {\n listeners.get(event).forEach(callback => callback(...args));\n }\n },\n \n once(event, callback) {\n const wrapper = (...args) => {\n callback(...args);\n this.off(event, wrapper);\n };\n this.on(event, wrapper);\n },\n \n clear() {\n listeners.clear();\n },\n };\n};\n\n/**\n * 状态机\n * @param {Object} config - 配置\n * @returns {Object} 状态机对象\n */\nexport const createStateMachine = (config) => {\n let currentState = config.initial;\n const listeners = new Map();\n \n return {\n get state() {\n return currentState;\n },\n \n transition(event) {\n const transitions = config.transitions[currentState];\n if (!transitions || !transitions[event]) {\n throw new Error(`Invalid transition: ${event} from ${currentState}`);\n }\n \n const nextState = transitions[event];\n const prevState = currentState;\n currentState = nextState;\n \n if (listeners.has(nextState)) {\n listeners.get(nextState).forEach(callback => callback(prevState, nextState));\n }\n \n return nextState;\n },\n \n on(state, callback) {\n if (!listeners.has(state)) {\n listeners.set(state, new Set());\n }\n listeners.get(state).add(callback);\n \n return () => this.off(state, callback);\n },\n \n off(state, callback) {\n if (listeners.has(state)) {\n listeners.get(state).delete(callback);\n }\n },\n \n can(event) {\n const transitions = config.transitions[currentState];\n return transitions && transitions[event] !== undefined;\n },\n };\n};\n","/**\n * MetonaToast Icons — 图标SVG定义\n * @module icons\n * @version 2.0.0\n * @description 80+ 内置SVG图标\n */\n\nexport const ICONS = {\n success: `\n \n `,\n \n error: `\n \n \n \n `,\n \n warning: `\n \n \n \n `,\n \n info: `\n \n \n \n `,\n \n loading: `\n \n `,\n \n close: `\n \n \n `,\n \n check: `\n \n `,\n \n x: `\n \n \n `,\n \n alert: `\n \n \n \n `,\n \n question: `\n \n \n \n `,\n \n star: `\n \n `,\n \n heart: `\n \n `,\n \n bell: `\n \n \n `,\n \n mail: `\n \n \n `,\n \n settings: `\n \n \n `,\n \n user: `\n \n \n `,\n \n home: `\n \n \n `,\n \n search: `\n \n \n `,\n \n plus: `\n \n \n `,\n \n minus: `\n \n `,\n \n edit: `\n \n \n `,\n \n trash: `\n \n \n \n \n `,\n \n download: `\n \n \n \n `,\n \n upload: `\n \n \n \n `,\n \n share: `\n \n \n \n \n \n `,\n \n link: `\n \n \n `,\n \n external: `\n \n \n \n `,\n \n clock: `\n \n \n `,\n \n calendar: `\n \n \n \n \n `,\n \n map: `\n \n \n \n `,\n \n compass: `\n \n \n `,\n \n globe: `\n \n \n \n `,\n \n wifi: `\n \n \n \n \n `,\n \n cloud: `\n \n `,\n \n sun: `\n \n \n \n \n \n \n \n \n \n `,\n \n moon: `\n \n `,\n \n zap: `\n \n `,\n \n activity: `\n \n `,\n \n cpu: `\n \n \n \n \n \n \n \n \n \n \n `,\n \n database: `\n \n \n \n `,\n \n server: `\n \n \n \n \n `,\n \n terminal: `\n \n \n `,\n \n code: `\n \n \n `,\n \n git: `\n \n \n \n \n `,\n \n package: `\n \n \n \n \n `,\n \n layers: `\n \n \n \n `,\n \n grid: `\n \n \n \n \n `,\n \n list: `\n \n \n \n \n \n \n `,\n \n filter: `\n \n `,\n \n sort: `\n \n \n `,\n \n refresh: `\n \n \n \n `,\n \n sync: `\n \n \n \n `,\n \n power: `\n \n \n `,\n \n battery: `\n \n \n `,\n \n bluetooth: `\n \n `,\n \n volume: `\n \n \n `,\n \n mic: `\n \n \n \n \n `,\n \n camera: `\n \n \n `,\n \n image: `\n \n \n \n `,\n \n video: `\n \n \n `,\n \n music: `\n \n \n \n `,\n \n file: `\n \n \n `,\n \n folder: `\n \n `,\n \n clipboard: `\n \n \n `,\n \n save: `\n \n \n \n `,\n \n print: `\n \n \n \n `,\n \n eye: `\n \n \n `,\n \n eyeOff: `\n \n \n `,\n \n lock: `\n \n \n `,\n \n unlock: `\n \n \n `,\n \n shield: `\n \n `,\n \n key: `\n \n `,\n \n flag: `\n \n \n `,\n \n bookmark: `\n \n `,\n \n tag: `\n \n \n `,\n \n gift: `\n \n \n \n \n \n `,\n \n award: `\n \n \n `,\n \n target: `\n \n \n \n `,\n \n crosshair: `\n \n \n \n \n \n `,\n \n move: `\n \n \n \n \n \n \n `,\n \n maximize: `\n \n `,\n \n minimize: `\n \n `,\n \n copy: `\n \n \n `,\n \n cut: `\n \n \n \n \n \n `,\n \n paste: `\n \n \n `,\n \n rotateCw: `\n \n \n `,\n \n rotateCcw: `\n \n \n `,\n \n zoomIn: `\n \n \n \n \n `,\n \n zoomOut: `\n \n \n \n `,\n \n crop: `\n \n \n `,\n \n sliders: `\n \n \n \n \n \n \n \n \n \n `,\n \n toggleLeft: `\n \n \n `,\n \n toggleRight: `\n \n \n `,\n \n checkCircle: `\n \n \n `,\n \n xCircle: `\n \n \n \n `,\n \n alertCircle: `\n \n \n \n `,\n \n infoCircle: `\n \n \n \n `,\n \n helpCircle: `\n \n \n \n `,\n \n alertTriangle: `\n \n \n \n `,\n \n checkSquare: `\n \n \n `,\n \n square: `\n \n `,\n \n circle: `\n \n `,\n \n triangle: `\n \n `,\n \n hexagon: `\n \n `,\n \n octagon: `\n \n `,\n \n pentagon: `\n \n `,\n \n diamond: `\n \n `,\n};\n","/**\n * MetonaToast Locales — 国际化翻译数据\n * @module locales\n * @version 2.0.0\n * @description 内置 zh-CN / en-US 完整翻译\n */\n\nexport const LOCALES = {\n 'zh-CN': {\n close: '关闭',\n loading: '加载中...',\n success: '操作成功',\n error: '操作失败',\n warning: '警告',\n info: '信息',\n confirm: '确认',\n cancel: '取消',\n yes: '是',\n no: '否',\n ok: '确定',\n retry: '重试',\n undo: '撤销',\n redo: '重做',\n save: '保存',\n delete: '删除',\n edit: '编辑',\n add: '添加',\n remove: '移除',\n search: '搜索',\n filter: '筛选',\n sort: '排序',\n refresh: '刷新',\n sync: '同步',\n upload: '上传',\n download: '下载',\n share: '分享',\n copy: '复制',\n cut: '剪切',\n paste: '粘贴',\n print: '打印',\n export: '导出',\n import: '导入',\n settings: '设置',\n help: '帮助',\n about: '关于',\n version: '版本',\n language: '语言',\n theme: '主题',\n dark: '暗色',\n light: '亮色',\n auto: '自动',\n notifications: '通知',\n enable: '启用',\n disable: '禁用',\n on: '开启',\n off: '关闭',\n max: '最大',\n min: '最小',\n expand: '展开',\n collapse: '折叠',\n fullscreen: '全屏',\n exitFullscreen: '退出全屏',\n zoomIn: '放大',\n zoomOut: '缩小',\n reset: '重置',\n apply: '应用',\n submit: '提交',\n send: '发送',\n receive: '接收',\n connect: '连接',\n disconnect: '断开',\n start: '开始',\n stop: '停止',\n pause: '暂停',\n resume: '继续',\n next: '下一个',\n previous: '上一个',\n first: '第一个',\n last: '最后一个',\n back: '返回',\n forward: '前进',\n home: '首页',\n menu: '菜单',\n more: '更多',\n less: '更少',\n show: '显示',\n hide: '隐藏',\n visible: '可见',\n hidden: '隐藏',\n enabled: '已启用',\n disabled: '已禁用',\n active: '活跃',\n inactive: '非活跃',\n online: '在线',\n offline: '离线',\n connected: '已连接',\n disconnected: '已断开',\n loading: '加载中',\n loaded: '已加载',\n saving: '保存中',\n saved: '已保存',\n deleting: '删除中',\n deleted: '已删除',\n uploading: '上传中',\n uploaded: '已上传',\n downloading: '下载中',\n downloaded: '已下载',\n processing: '处理中',\n processed: '已处理',\n syncing: '同步中',\n synced: '已同步',\n sending: '发送中',\n sent: '已发送',\n receiving: '接收中',\n received: '已接收',\n connecting: '连接中',\n error: '错误',\n warning: '警告',\n info: '信息',\n success: '成功',\n question: '问题',\n help: '帮助',\n feedback: '反馈',\n report: '报告',\n bug: '错误',\n feature: '功能',\n improvement: '改进',\n suggestion: '建议',\n request: '请求',\n response: '响应',\n status: '状态',\n progress: '进度',\n complete: '完成',\n incomplete: '未完成',\n pending: '待处理',\n processing: '处理中',\n failed: '失败',\n cancelled: '已取消',\n timeout: '超时',\n expired: '已过期',\n invalid: '无效',\n valid: '有效',\n required: '必填',\n optional: '可选',\n enabled: '启用',\n disabled: '禁用',\n allowed: '允许',\n denied: '拒绝',\n approved: '已批准',\n rejected: '已拒绝',\n accepted: '已接受',\n declined: '已拒绝',\n confirmed: '已确认',\n unconfirmed: '未确认',\n verified: '已验证',\n unverified: '未验证',\n authenticated: '已认证',\n unauthenticated: '未认证',\n authorized: '已授权',\n unauthorized: '未授权',\n public: '公开',\n private: '私有',\n protected: '受保护',\n internal: '内部',\n external: '外部',\n local: '本地',\n remote: '远程',\n global: '全局',\n system: '系统',\n user: '用户',\n admin: '管理员',\n moderator: '版主',\n guest: '访客',\n member: '成员',\n owner: '所有者',\n creator: '创建者',\n editor: '编辑者',\n viewer: '查看者',\n subscriber: '订阅者',\n follower: '关注者',\n following: '关注中',\n friend: '朋友',\n contact: '联系人',\n group: '群组',\n team: '团队',\n organization: '组织',\n company: '公司',\n department: '部门',\n project: '项目',\n task: '任务',\n issue: '问题',\n ticket: '工单',\n request: '请求',\n response: '响应',\n message: '消息',\n notification: '通知',\n alert: '警报',\n reminder: '提醒',\n event: '事件',\n activity: '活动',\n log: '日志',\n report: '报告',\n analytics: '分析',\n statistics: '统计',\n metrics: '指标',\n performance: '性能',\n security: '安全',\n privacy: '隐私',\n compliance: '合规',\n policy: '政策',\n terms: '条款',\n conditions: '条件',\n agreement: '协议',\n contract: '合同',\n license: '许可证',\n copyright: '版权',\n trademark: '商标',\n patent: '专利',\n tradeSecret: '商业秘密',\n confidential: '机密',\n sensitive: '敏感',\n critical: '关键',\n important: '重要',\n urgent: '紧急',\n high: '高',\n medium: '中',\n low: '低',\n none: '无',\n all: '全部',\n any: '任何',\n some: '一些',\n each: '每个',\n every: '每个',\n both: '两者',\n neither: '两者都不',\n either: '任一',\n other: '其他',\n another: '另一个',\n this: '这个',\n that: '那个',\n these: '这些',\n those: '那些',\n here: '这里',\n there: '那里',\n where: '哪里',\n when: '何时',\n why: '为什么',\n how: '如何',\n what: '什么',\n who: '谁',\n which: '哪个',\n whose: '谁的',\n whom: '谁',\n myself: '我自己',\n yourself: '你自己',\n himself: '他自己',\n herself: '她自己',\n itself: '它自己',\n ourselves: '我们自己',\n yourselves: '你们自己',\n themselves: '他们自己',\n mine: '我的',\n yours: '你的',\n his: '他的',\n hers: '她的',\n its: '它的',\n ours: '我们的',\n yours: '你们的',\n theirs: '他们的',\n me: '我',\n you: '你',\n him: '他',\n her: '她',\n it: '它',\n us: '我们',\n them: '他们',\n my: '我的',\n your: '你的',\n his: '他的',\n her: '她的',\n its: '它的',\n our: '我们的',\n your: '你们的',\n their: '他们的',\n i: '我',\n you: '你',\n he: '他',\n she: '她',\n it: '它',\n we: '我们',\n they: '他们',\n am: '是',\n is: '是',\n are: '是',\n was: '是',\n were: '是',\n be: '是',\n been: '是',\n being: '是',\n have: '有',\n has: '有',\n had: '有',\n having: '有',\n do: '做',\n does: '做',\n did: '做',\n doing: '做',\n will: '会',\n would: '会',\n shall: '将',\n should: '应该',\n may: '可以',\n might: '可能',\n can: '能',\n could: '能',\n must: '必须',\n need: '需要',\n dare: '敢',\n ought: '应该',\n used: '过去常常',\n to: '到',\n of: '的',\n in: '在',\n for: '为了',\n on: '在',\n with: '和',\n at: '在',\n by: '通过',\n from: '从',\n into: '进入',\n during: '在...期间',\n before: '在...之前',\n after: '在...之后',\n above: '在...上面',\n below: '在...下面',\n between: '在...之间',\n under: '在...下面',\n over: '在...上面',\n across: '穿过',\n through: '通过',\n into: '进入',\n towards: '朝向',\n upon: '在...上面',\n about: '关于',\n against: '反对',\n among: '在...之中',\n along: '沿着',\n around: '周围',\n beyond: '超出',\n but: '但是',\n despite: '尽管',\n except: '除了',\n inside: '里面',\n outside: '外面',\n since: '自从',\n until: '直到',\n unless: '除非',\n whether: '是否',\n while: '当...时候',\n although: '虽然',\n because: '因为',\n if: '如果',\n once: '一旦',\n since: '自从',\n so: '所以',\n that: '那个',\n though: '虽然',\n till: '直到',\n unless: '除非',\n until: '直到',\n when: '当...时候',\n whenever: '每当',\n where: '哪里',\n wherever: '无论哪里',\n whereas: '然而',\n wherever: '无论哪里',\n while: '当...时候',\n why: '为什么',\n },\n \n 'en-US': {\n close: 'Close',\n loading: 'Loading...',\n success: 'Success',\n error: 'Error',\n warning: 'Warning',\n info: 'Info',\n confirm: 'Confirm',\n cancel: 'Cancel',\n yes: 'Yes',\n no: 'No',\n ok: 'OK',\n retry: 'Retry',\n undo: 'Undo',\n redo: 'Redo',\n save: 'Save',\n delete: 'Delete',\n edit: 'Edit',\n add: 'Add',\n remove: 'Remove',\n search: 'Search',\n filter: 'Filter',\n sort: 'Sort',\n refresh: 'Refresh',\n sync: 'Sync',\n upload: 'Upload',\n download: 'Download',\n share: 'Share',\n copy: 'Copy',\n cut: 'Cut',\n paste: 'Paste',\n print: 'Print',\n export: 'Export',\n import: 'Import',\n settings: 'Settings',\n help: 'Help',\n about: 'About',\n version: 'Version',\n language: 'Language',\n theme: 'Theme',\n dark: 'Dark',\n light: 'Light',\n auto: 'Auto',\n notifications: 'Notifications',\n enable: 'Enable',\n disable: 'Disable',\n on: 'On',\n off: 'Off',\n max: 'Max',\n min: 'Min',\n expand: 'Expand',\n collapse: 'Collapse',\n fullscreen: 'Fullscreen',\n exitFullscreen: 'Exit Fullscreen',\n zoomIn: 'Zoom In',\n zoomOut: 'Zoom Out',\n reset: 'Reset',\n apply: 'Apply',\n submit: 'Submit',\n send: 'Send',\n receive: 'Receive',\n connect: 'Connect',\n disconnect: 'Disconnect',\n start: 'Start',\n stop: 'Stop',\n pause: 'Pause',\n resume: 'Resume',\n next: 'Next',\n previous: 'Previous',\n first: 'First',\n last: 'Last',\n back: 'Back',\n forward: 'Forward',\n home: 'Home',\n menu: 'Menu',\n more: 'More',\n less: 'Less',\n show: 'Show',\n hide: 'Hide',\n visible: 'Visible',\n hidden: 'Hidden',\n enabled: 'Enabled',\n disabled: 'Disabled',\n active: 'Active',\n inactive: 'Inactive',\n online: 'Online',\n offline: 'Offline',\n connected: 'Connected',\n disconnected: 'Disconnected',\n loading: 'Loading',\n loaded: 'Loaded',\n saving: 'Saving',\n saved: 'Saved',\n deleting: 'Deleting',\n deleted: 'Deleted',\n uploading: 'Uploading',\n uploaded: 'Uploaded',\n downloading: 'Downloading',\n downloaded: 'Downloaded',\n processing: 'Processing',\n processed: 'Processed',\n syncing: 'Syncing',\n synced: 'Synced',\n sending: 'Sending',\n sent: 'Sent',\n receiving: 'Receiving',\n received: 'Received',\n connecting: 'Connecting',\n error: 'Error',\n warning: 'Warning',\n info: 'Info',\n success: 'Success',\n question: 'Question',\n help: 'Help',\n feedback: 'Feedback',\n report: 'Report',\n bug: 'Bug',\n feature: 'Feature',\n improvement: 'Improvement',\n suggestion: 'Suggestion',\n request: 'Request',\n response: 'Response',\n status: 'Status',\n progress: 'Progress',\n complete: 'Complete',\n incomplete: 'Incomplete',\n pending: 'Pending',\n processing: 'Processing',\n failed: 'Failed',\n cancelled: 'Cancelled',\n timeout: 'Timeout',\n expired: 'Expired',\n invalid: 'Invalid',\n valid: 'Valid',\n required: 'Required',\n optional: 'Optional',\n enabled: 'Enabled',\n disabled: 'Disabled',\n allowed: 'Allowed',\n denied: 'Denied',\n approved: 'Approved',\n rejected: 'Rejected',\n accepted: 'Accepted',\n declined: 'Declined',\n confirmed: 'Confirmed',\n unconfirmed: 'Unconfirmed',\n verified: 'Verified',\n unverified: 'Unverified',\n authenticated: 'Authenticated',\n unauthenticated: 'Unauthenticated',\n authorized: 'Authorized',\n unauthorized: 'Unauthorized',\n public: 'Public',\n private: 'Private',\n protected: 'Protected',\n internal: 'Internal',\n external: 'External',\n local: 'Local',\n remote: 'Remote',\n global: 'Global',\n system: 'System',\n user: 'User',\n admin: 'Admin',\n moderator: 'Moderator',\n guest: 'Guest',\n member: 'Member',\n owner: 'Owner',\n creator: 'Creator',\n editor: 'Editor',\n viewer: 'Viewer',\n subscriber: 'Subscriber',\n follower: 'Follower',\n following: 'Following',\n friend: 'Friend',\n contact: 'Contact',\n group: 'Group',\n team: 'Team',\n organization: 'Organization',\n company: 'Company',\n department: 'Department',\n project: 'Project',\n task: 'Task',\n issue: 'Issue',\n ticket: 'Ticket',\n request: 'Request',\n response: 'Response',\n message: 'Message',\n notification: 'Notification',\n alert: 'Alert',\n reminder: 'Reminder',\n event: 'Event',\n activity: 'Activity',\n log: 'Log',\n report: 'Report',\n analytics: 'Analytics',\n statistics: 'Statistics',\n metrics: 'Metrics',\n performance: 'Performance',\n security: 'Security',\n privacy: 'Privacy',\n compliance: 'Compliance',\n policy: 'Policy',\n terms: 'Terms',\n conditions: 'Conditions',\n agreement: 'Agreement',\n contract: 'Contract',\n license: 'License',\n copyright: 'Copyright',\n trademark: 'Trademark',\n patent: 'Patent',\n tradeSecret: 'Trade Secret',\n confidential: 'Confidential',\n sensitive: 'Sensitive',\n critical: 'Critical',\n important: 'Important',\n urgent: 'Urgent',\n high: 'High',\n medium: 'Medium',\n low: 'Low',\n none: 'None',\n all: 'All',\n any: 'Any',\n some: 'Some',\n each: 'Each',\n every: 'Every',\n both: 'Both',\n neither: 'Neither',\n either: 'Either',\n other: 'Other',\n another: 'Another',\n this: 'This',\n that: 'That',\n these: 'These',\n those: 'Those',\n here: 'Here',\n there: 'There',\n where: 'Where',\n when: 'When',\n why: 'Why',\n how: 'How',\n what: 'What',\n who: 'Who',\n which: 'Which',\n whose: 'Whose',\n whom: 'Whom',\n myself: 'Myself',\n yourself: 'Yourself',\n himself: 'Himself',\n herself: 'Herself',\n itself: 'Itself',\n ourselves: 'Ourselves',\n yourselves: 'Yourselves',\n themselves: 'Themselves',\n mine: 'Mine',\n yours: 'Yours',\n his: 'His',\n hers: 'Hers',\n its: 'Its',\n ours: 'Ours',\n yours: 'Yours',\n theirs: 'Theirs',\n me: 'Me',\n you: 'You',\n him: 'Him',\n her: 'Her',\n it: 'It',\n us: 'Us',\n them: 'Them',\n my: 'My',\n your: 'Your',\n his: 'His',\n her: 'Her',\n its: 'Its',\n our: 'Our',\n your: 'Your',\n their: 'Their',\n i: 'I',\n you: 'You',\n he: 'He',\n she: 'She',\n it: 'It',\n we: 'We',\n they: 'They',\n am: 'Am',\n is: 'Is',\n are: 'Are',\n was: 'Was',\n were: 'Were',\n be: 'Be',\n been: 'Been',\n being: 'Being',\n have: 'Have',\n has: 'Has',\n had: 'Had',\n having: 'Having',\n do: 'Do',\n does: 'Does',\n did: 'Did',\n doing: 'Doing',\n will: 'Will',\n would: 'Would',\n shall: 'Shall',\n should: 'Should',\n may: 'May',\n might: 'Might',\n can: 'Can',\n could: 'Could',\n must: 'Must',\n need: 'Need',\n dare: 'Dare',\n ought: 'Ought',\n used: 'Used',\n to: 'To',\n of: 'Of',\n in: 'In',\n for: 'For',\n on: 'On',\n with: 'With',\n at: 'At',\n by: 'By',\n from: 'From',\n into: 'Into',\n during: 'During',\n before: 'Before',\n after: 'After',\n above: 'Above',\n below: 'Below',\n between: 'Between',\n under: 'Under',\n over: 'Over',\n across: 'Across',\n through: 'Through',\n into: 'Into',\n towards: 'Towards',\n upon: 'Upon',\n about: 'About',\n against: 'Against',\n among: 'Among',\n along: 'Along',\n around: 'Around',\n beyond: 'Beyond',\n but: 'But',\n despite: 'Despite',\n except: 'Except',\n inside: 'Inside',\n outside: 'Outside',\n since: 'Since',\n until: 'Until',\n unless: 'Unless',\n whether: 'Whether',\n while: 'While',\n although: 'Although',\n because: 'Because',\n if: 'If',\n once: 'Once',\n since: 'Since',\n so: 'So',\n that: 'That',\n though: 'Though',\n till: 'Till',\n unless: 'Unless',\n until: 'Until',\n when: 'When',\n whenever: 'Whenever',\n where: 'Where',\n wherever: 'Wherever',\n whereas: 'Whereas',\n wherever: 'Wherever',\n while: 'While',\n why: 'Why',\n },\n};\n","/**\n * MetonaToast Constants - 常量定义\n * @module constants\n * @version 2.0.0\n * @description 默认配置、颜色、动画、主题等常量\n */\n\n/**\n * 默认配置\n */\nexport const DEFAULTS = Object.freeze({\n // 基础配置\n position: 'top-right',\n duration: 4000,\n max: 6,\n gap: 12,\n offset: 24,\n \n // 交互配置\n pauseOnHover: true,\n closeOnClick: true,\n draggable: true,\n \n // 显示配置\n showProgress: true,\n progressDirection: 'horizontal',\n icon: true,\n closeButton: true,\n \n // 主题配置\n theme: 'auto',\n animation: 'slide',\n \n // 布局配置\n zIndex: 9999,\n width: 360,\n \n // 自定义配置\n className: '',\n style: {},\n \n // 回调函数\n onShow: null,\n onClose: null,\n onClick: null,\n onUpdate: null,\n \n // 高级\n resetTimerOnUpdate: false,\n notifyWhenHidden: false,\n \n // 国际化\n locale: 'zh-CN',\n \n // 插件\n plugins: [],\n});\n\n// Icons — 从 icons.js 导入并重新导出(保持向后兼容)\nimport { ICONS } from './icons.js';\nexport { ICONS };\n\n/**\n * 类型颜色配置\n */\nexport const TYPE_COLORS = {\n success: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n error: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n warning: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n info: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n loading: { fg: '#6366f1', bg: 'rgba(99, 102, 241, 0.1)' },\n default: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n check: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n x: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n alert: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n question: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n star: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n heart: { fg: '#ec4899', bg: 'rgba(236, 72, 153, 0.1)' },\n bell: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n mail: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n settings: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n user: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n home: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n search: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n plus: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n minus: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n edit: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n trash: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n download: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n upload: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n share: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n link: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n external: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n clock: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n calendar: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n map: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n compass: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n globe: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n wifi: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n cloud: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n sun: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n moon: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n zap: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n activity: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n cpu: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n database: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n server: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n terminal: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n code: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n git: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n package: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n layers: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n grid: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n list: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n filter: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n sort: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n refresh: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n sync: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n power: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n battery: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n bluetooth: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n volume: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n mic: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n camera: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n image: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n video: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n music: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n file: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n folder: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n clipboard: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n save: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n print: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n eye: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n eyeOff: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n lock: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n unlock: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n shield: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n key: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n flag: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n bookmark: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n tag: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n gift: { fg: '#ec4899', bg: 'rgba(236, 72, 153, 0.1)' },\n award: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n target: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n crosshair: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n move: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n maximize: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n minimize: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n copy: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n cut: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n paste: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n rotateCw: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n rotateCcw: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n zoomIn: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n zoomOut: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n crop: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n sliders: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n toggleLeft: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n toggleRight: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n checkCircle: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n xCircle: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n alertCircle: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n infoCircle: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n helpCircle: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n alertTriangle: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n checkSquare: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\n square: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n circle: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\n triangle: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\n hexagon: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\n octagon: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\n pentagon: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\n diamond: { fg: '#ec4899', bg: 'rgba(236, 72, 153, 0.1)' },\n};\n\n/**\n * 动画配置\n */\nexport const ANIMATIONS = {\n slide: {\n enter: { transform: 'translateX(80px)', opacity: 0 },\n leave: { transform: 'translateX(120%)', opacity: 0 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n fade: {\n enter: { opacity: 0, filter: 'blur(3px)' },\n leave: { opacity: 0, filter: 'blur(3px)' },\n duration: 500,\n easing: 'ease',\n },\n scale: {\n enter: { transform: 'scale(0.55)', opacity: 0 },\n leave: { transform: 'scale(0.55)', opacity: 0 },\n duration: 450,\n easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n },\n bounce: {\n enter: { transform: 'translateY(-80px)', opacity: 0 },\n leave: { transform: 'translateY(20px)', opacity: 0 },\n duration: 650,\n easing: 'ease',\n },\n flip: {\n enter: { transform: 'perspective(500px) rotateX(-90deg)', opacity: 0 },\n leave: { transform: 'perspective(500px) rotateX(90deg)', opacity: 0 },\n duration: 500,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n rotate: {\n enter: { transform: 'rotate(-25deg) scale(0.6)', opacity: 0 },\n leave: { transform: 'rotate(25deg) scale(0.6)', opacity: 0 },\n duration: 500,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n zoom: {\n enter: { transform: 'scale(0.1)', opacity: 0 },\n leave: { transform: 'scale(0.1)', opacity: 0 },\n duration: 500,\n easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n },\n slideUp: {\n enter: { transform: 'translateY(60px)', opacity: 0 },\n leave: { transform: 'translateY(-120%)', opacity: 0 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n slideDown: {\n enter: { transform: 'translateY(-60px)', opacity: 0 },\n leave: { transform: 'translateY(120%)', opacity: 0 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n slideLeft: {\n enter: { transform: 'translateX(-90px)', opacity: 0 },\n leave: { transform: 'translateX(120%)', opacity: 0 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n slideRight: {\n enter: { transform: 'translateX(90px)', opacity: 0 },\n leave: { transform: 'translateX(-120%)', opacity: 0 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n};\n\n/**\n * 主题配置\n */\nexport const THEMES = {\n light: {\n bg: 'rgba(255, 255, 255, 0.96)',\n text: '#1f2937',\n border: 'rgba(0, 0, 0, 0.06)',\n shadow: '0 10px 36px -10px rgba(0, 0, 0, 0.18), 0 4px 14px -4px rgba(0, 0, 0, 0.08)',\n hoverShadow: '0 14px 48px -10px rgba(0, 0, 0, 0.22), 0 6px 18px -4px rgba(0, 0, 0, 0.10)',\n progressBg: 'rgba(0, 0, 0, 0.06)',\n closeHoverBg: 'rgba(0, 0, 0, 0.06)',\n },\n dark: {\n bg: 'rgba(28, 32, 40, 0.94)',\n text: '#e6e8eb',\n border: 'rgba(255, 255, 255, 0.08)',\n shadow: '0 10px 36px -10px rgba(0, 0, 0, 0.6), 0 4px 14px -4px rgba(0, 0, 0, 0.4)',\n hoverShadow: '0 14px 48px -8px rgba(0, 0, 0, 0.6), 0 6px 18px -4px rgba(0, 0, 0, 0.4)',\n progressBg: 'rgba(255, 255, 255, 0.08)',\n closeHoverBg: 'rgba(255, 255, 255, 0.08)',\n },\n auto: 'auto',\n warm: {\n bg: 'rgba(255, 251, 235, 0.96)',\n text: '#78350f',\n border: 'rgba(245, 158, 11, 0.2)',\n shadow: '0 10px 36px -10px rgba(245, 158, 11, 0.18), 0 4px 14px -4px rgba(245, 158, 11, 0.08)',\n hoverShadow: '0 14px 48px -10px rgba(245, 158, 11, 0.22), 0 6px 18px -4px rgba(245, 158, 11, 0.10)',\n progressBg: 'rgba(245, 158, 11, 0.1)',\n closeHoverBg: 'rgba(245, 158, 11, 0.1)',\n },\n};\n\n/**\n * 位置配置\n */\nexport const POSITIONS = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\n\n/**\n * 类型配置\n */\nexport const TYPES = [\n 'default', 'success', 'error', 'warning', 'info', 'loading',\n 'check', 'x', 'alert', 'question', 'star', 'heart', 'bell', 'mail',\n 'settings', 'user', 'home', 'search', 'plus', 'minus', 'edit', 'trash',\n 'download', 'upload', 'share', 'link', 'external', 'clock', 'calendar',\n 'map', 'compass', 'globe', 'wifi', 'cloud', 'sun', 'moon', 'zap',\n 'activity', 'cpu', 'database', 'server', 'terminal', 'code', 'git',\n 'package', 'layers', 'grid', 'list', 'filter', 'sort', 'refresh', 'sync',\n 'power', 'battery', 'bluetooth', 'volume', 'mic', 'camera', 'image', 'video',\n 'music', 'file', 'folder', 'clipboard', 'save', 'print', 'eye', 'eyeOff',\n 'lock', 'unlock', 'shield', 'key', 'flag', 'bookmark', 'tag', 'gift',\n 'award', 'target', 'crosshair', 'move', 'maximize', 'minimize',\n 'copy', 'cut', 'paste', 'rotateCw', 'rotateCcw', 'zoomIn', 'zoomOut',\n 'crop', 'sliders', 'toggleLeft', 'toggleRight',\n 'checkCircle', 'xCircle', 'alertCircle', 'infoCircle', 'helpCircle',\n 'alertTriangle', 'checkSquare', 'square', 'circle', 'triangle',\n 'hexagon', 'octagon', 'pentagon', 'diamond',\n];\n\n// Locales — 从 locales.js 导入并重新导出(保持向后兼容)\nimport { LOCALES } from './locales.js';\nexport { LOCALES };\n\n/**\n * 进度条方向\n */\nexport const PROGRESS_DIRECTIONS = ['horizontal', 'vertical'];\n\n/**\n * 动画类型\n */\nexport const ANIMATION_TYPES = ['slide', 'fade', 'scale', 'bounce', 'flip', 'rotate', 'zoom', 'slideUp', 'slideDown', 'slideLeft', 'slideRight'];\n\n/**\n * 主题类型\n */\nexport const THEME_TYPES = ['light', 'dark', 'auto'];\n","/**\n * MetonaToast Styles - 样式管理\n * @module styles\n * @version 2.0.0\n * @description 样式注入、更新和主题管理\n */\n\nimport { THEMES } from './constants.js';\n\n// 样式缓存\nlet injectedStyles = null;\nlet styleElement = null;\n\n/**\n * 生成CSS样式\n * @param {Object} theme - 主题配置\n * @returns {string} CSS字符串\n */\nconst generateCSS = (theme) => {\n return `\n /* MetonaToast 基础样式 */\n .met-container {\n pointer-events: none;\n display: flex;\n flex-direction: column;\n gap: 12px;\n box-sizing: border-box;\n padding: 24px;\n max-width: 100vw;\n position: fixed;\n z-index: 9999;\n }\n \n /* 位置样式 — 顶部位置用 column-reverse,新 toast 出现在最上方 */\n .met-container.top-left {\n top: 0;\n left: 0;\n align-items: flex-start;\n flex-direction: column-reverse;\n }\n \n .met-container.top-center {\n top: 0;\n left: 0;\n right: 0;\n align-items: center;\n flex-direction: column-reverse;\n }\n \n .met-container.top-right {\n top: 0;\n right: 0;\n align-items: flex-end;\n flex-direction: column-reverse;\n }\n \n .met-container.bottom-left {\n bottom: 0;\n left: 0;\n align-items: flex-start;\n flex-direction: column-reverse;\n }\n \n .met-container.bottom-center {\n bottom: 0;\n left: 0;\n right: 0;\n align-items: center;\n flex-direction: column-reverse;\n }\n \n .met-container.bottom-right {\n bottom: 0;\n right: 0;\n align-items: flex-end;\n flex-direction: column-reverse;\n }\n \n /* Toast基础样式 */\n .met-toast {\n position: relative;\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 14px 16px;\n border-radius: 12px;\n box-sizing: border-box;\n backdrop-filter: blur(14px) saturate(180%);\n -webkit-backdrop-filter: blur(14px) saturate(180%);\n font: 14px/1.5 -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n user-select: none;\n -webkit-user-select: none;\n transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), \n box-shadow 0.25s ease, \n opacity 0.25s ease;\n will-change: transform, opacity;\n flex-shrink: 0;\n pointer-events: auto;\n min-width: 240px;\n max-width: calc(100vw - 48px);\n width: 360px;\n border: 1px solid var(--met-border, rgba(0,0,0,0.06));\n background: var(--met-bg, rgba(255,255,255,0.96));\n color: var(--met-text, #1f2937);\n box-shadow: var(--met-shadow, 0 10px 36px -10px rgba(0,0,0,0.18), 0 4px 14px -4px rgba(0,0,0,0.08));\n }\n \n /* 悬停效果 */\n .met-toast:hover {\n box-shadow: var(--met-hover-shadow, 0 14px 48px -10px rgba(0,0,0,0.22), 0 6px 18px -4px rgba(0,0,0,0.10)) !important;\n }\n \n /* 可点击状态 */\n .met-toast.met-clickable {\n cursor: pointer;\n }\n \n /* 图标样式 */\n .met-icon {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n margin-top: 1px;\n }\n \n /* 内容样式 */\n .met-content {\n flex: 1;\n min-width: 0;\n word-wrap: break-word;\n overflow-wrap: break-word;\n }\n \n /* 标题样式 */\n .met-title {\n font-weight: 600;\n font-size: 14px;\n letter-spacing: 0.1px;\n }\n \n /* 消息样式 */\n .met-message {\n font-size: 13px;\n opacity: 0.85;\n margin-top: 2px;\n }\n \n /* 关闭按钮样式 */\n .met-close {\n flex-shrink: 0;\n background: transparent;\n border: 0;\n padding: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n transition: background 0.2s, color 0.2s;\n line-height: 0;\n color: inherit;\n opacity: 0.5;\n }\n \n .met-close:hover {\n opacity: 1;\n background: var(--met-close-hover-bg, rgba(0,0,0,0.06));\n }\n \n /* 进度条样式 - 水平 */\n .met-progress {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n height: 3px;\n overflow: hidden;\n background: var(--met-progress-bg, rgba(0,0,0,0.06));\n border-radius: 0 0 12px 12px;\n }\n \n /* 进度条样式 - 垂直 */\n .met-progress-v {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 3px;\n overflow: hidden;\n background: var(--met-progress-bg, rgba(0,0,0,0.06));\n border-radius: 12px 0 0 12px;\n }\n \n /* 进度条指示器 - 水平 */\n .met-bar {\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n width: 100%;\n transform-origin: left;\n transform: scaleX(1);\n }\n \n /* 进度条指示器 - 垂直 */\n .met-bar-v {\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n transform-origin: bottom;\n transform: scaleY(1);\n }\n \n /* 侧边指示器 */\n .met-side {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 4px;\n border-radius: 12px 0 0 12px;\n }\n \n /* 加载动画 */\n .met-spin {\n animation: met-rot 1s linear infinite;\n transform-origin: 50% 50%;\n }\n \n /* 离开状态 */\n .met-toast.met-leaving {\n pointer-events: none;\n z-index: 1;\n }\n \n /* 动画关键帧 */\n @keyframes met-rot {\n to {\n transform: rotate(360deg);\n }\n }\n \n /* === 进入动画:初始隐藏态 === */\n .met-anim-slide.met-toast,\n .met-anim-fade.met-toast,\n .met-anim-scale.met-toast,\n .met-anim-bounce.met-toast,\n .met-anim-flip.met-toast,\n .met-anim-rotate.met-toast,\n .met-anim-zoom.met-toast,\n .met-anim-slideUp.met-toast,\n .met-anim-slideDown.met-toast,\n .met-anim-slideLeft.met-toast,\n .met-anim-slideRight.met-toast {\n opacity: 0;\n }\n \n /* === 进入动画:@keyframes 定义 === */\n @keyframes met-slide-in {\n 0% { transform: translateX(80px); opacity: 0; }\n 65% { transform: translateX(-6px); opacity: 1; }\n 100% { transform: translateX(0); opacity: 1; }\n }\n @keyframes met-fade-in {\n 0% { opacity: 0; filter: blur(3px); }\n 100% { opacity: 1; filter: blur(0); }\n }\n @keyframes met-scale-in {\n 0% { transform: scale(0.55); opacity: 0; }\n 65% { transform: scale(1.07); opacity: 1; }\n 100% { transform: scale(1); opacity: 1; }\n }\n @keyframes met-bounce-in {\n 0% { transform: translateY(-80px); opacity: 0; animation-timing-function: ease-in; }\n 45% { transform: translateY(14px); opacity: 1; animation-timing-function: ease-out; }\n 65% { transform: translateY(-12px); animation-timing-function: ease-in; }\n 82% { transform: translateY(4px); animation-timing-function: ease-out; }\n 100% { transform: translateY(0); opacity: 1; }\n }\n @keyframes met-flip-in {\n 0% { transform: perspective(500px) rotateX(-90deg); opacity: 0; }\n 60% { transform: perspective(500px) rotateX(8deg); opacity: 1; }\n 85% { transform: perspective(500px) rotateX(-2deg); }\n 100% { transform: perspective(500px) rotateX(0); opacity: 1; }\n }\n @keyframes met-rotate-in {\n 0% { transform: rotate(-25deg) scale(0.6); opacity: 0; }\n 60% { transform: rotate(4deg) scale(1.05); opacity: 1; }\n 85% { transform: rotate(-1deg) scale(0.98); }\n 100% { transform: rotate(0) scale(1); opacity: 1; }\n }\n @keyframes met-zoom-in {\n 0% { transform: scale(0.1); opacity: 0; }\n 50% { transform: scale(1.12); opacity: 1; }\n 75% { transform: scale(0.94); }\n 100% { transform: scale(1); opacity: 1; }\n }\n @keyframes met-slideUp-in {\n 0% { transform: translateY(60px); opacity: 0; }\n 70% { transform: translateY(-6px); opacity: 1; }\n 100% { transform: translateY(0); opacity: 1; }\n }\n @keyframes met-slideDown-in {\n 0% { transform: translateY(-60px); opacity: 0; }\n 70% { transform: translateY(6px); opacity: 1; }\n 100% { transform: translateY(0); opacity: 1; }\n }\n @keyframes met-slideLeft-in {\n 0% { transform: translateX(-90px); opacity: 0; }\n 65% { transform: translateX(6px); opacity: 1; }\n 100% { transform: translateX(0); opacity: 1; }\n }\n @keyframes met-slideRight-in {\n 0% { transform: translateX(90px); opacity: 0; }\n 65% { transform: translateX(-6px); opacity: 1; }\n 100% { transform: translateX(0); opacity: 1; }\n }\n \n /* === 进入动画:绑定到 .met-show === */\n .met-anim-slide.met-toast.met-show { animation: met-slide-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n .met-anim-fade.met-toast.met-show { animation: met-fade-in 0.50s ease forwards; }\n .met-anim-scale.met-toast.met-show { animation: met-scale-in 0.45s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }\n .met-anim-bounce.met-toast.met-show { animation: met-bounce-in 0.65s ease forwards; }\n .met-anim-flip.met-toast.met-show { animation: met-flip-in 0.50s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n .met-anim-rotate.met-toast.met-show { animation: met-rotate-in 0.50s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n .met-anim-zoom.met-toast.met-show { animation: met-zoom-in 0.50s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }\n .met-anim-slideUp.met-toast.met-show { animation: met-slideUp-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n .met-anim-slideDown.met-toast.met-show { animation: met-slideDown-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n .met-anim-slideLeft.met-toast.met-show { animation: met-slideLeft-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n .met-anim-slideRight.met-toast.met-show { animation: met-slideRight-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\n \n /* 响应式设计 */\n @media (prefers-reduced-motion: reduce) {\n .met-toast {\n transition: opacity 0.15s !important;\n }\n \n .met-toast.met-show {\n animation: none !important;\n opacity: 1 !important;\n }\n \n .met-spin {\n animation-duration: 2.5s !important;\n }\n }\n \n @media (max-width: 480px) {\n .met-container {\n padding: 12px !important;\n }\n \n .met-toast {\n width: 100% !important;\n min-width: 0 !important;\n }\n }\n \n /* 暗色主题特定样式 */\n .met-toast.met-theme-dark {\n background: rgba(28, 32, 40, 0.94);\n color: #e6e8eb;\n border-color: rgba(255, 255, 255, 0.08);\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.6), \n 0 4px 14px -4px rgba(0, 0, 0, 0.4);\n }\n \n .met-toast.met-theme-dark:hover {\n box-shadow: 0 14px 48px -8px rgba(0, 0, 0, 0.6), \n 0 6px 18px -4px rgba(0, 0, 0, 0.4) !important;\n }\n \n .met-toast.met-theme-dark .met-close:hover {\n background: rgba(255, 255, 255, 0.08);\n }\n \n .met-toast.met-theme-dark .met-progress,\n .met-toast.met-theme-dark .met-progress-v {\n background: rgba(255, 255, 255, 0.08);\n }\n \n /* 亮色主题特定样式 */\n .met-toast.met-theme-light {\n background: rgba(255, 255, 255, 0.96);\n color: #1f2937;\n border-color: rgba(0, 0, 0, 0.06);\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.18), \n 0 4px 14px -4px rgba(0, 0, 0, 0.08);\n }\n \n .met-toast.met-theme-light:hover {\n box-shadow: 0 14px 48px -10px rgba(0, 0, 0, 0.22), \n 0 6px 18px -4px rgba(0, 0, 0, 0.10) !important;\n }\n \n .met-toast.met-theme-light .met-close:hover {\n background: rgba(0, 0, 0, 0.06);\n }\n \n .met-toast.met-theme-light .met-progress,\n .met-toast.met-theme-light .met-progress-v {\n background: rgba(0, 0, 0, 0.06);\n }\n \n /* 自定义主题支持 */\n .met-toast[data-theme] {\n --met-bg: var(--met-theme-bg);\n --met-text: var(--met-theme-text);\n --met-border: var(--met-theme-border);\n --met-shadow: var(--met-theme-shadow);\n }\n \n /* 动画性能优化 */\n .met-toast {\n backface-visibility: hidden;\n -webkit-backface-visibility: hidden;\n perspective: 1000;\n }\n \n /* 滚动条样式 */\n .met-container::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n \n .met-container::-webkit-scrollbar-track {\n background: transparent;\n }\n \n .met-container::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.2);\n border-radius: 3px;\n }\n \n .met-container::-webkit-scrollbar-thumb:hover {\n background: rgba(0, 0, 0, 0.3);\n }\n \n /* 打印样式 */\n @media print {\n .met-container {\n display: none !important;\n }\n .met-toast {\n display: none !important;\n }\n }\n \n /* 高对比度模式 */\n @media (forced-colors: active) {\n .met-toast {\n border: 2px solid ButtonText;\n }\n \n .met-close {\n border: 1px solid ButtonText;\n }\n }\n \n /* 焦点样式 */\n .met-toast:focus-visible {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n }\n \n .met-close:focus-visible {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n }\n \n /* 禁用状态 */\n .met-toast:disabled,\n .met-toast[disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n }\n \n /* 加载状态 */\n .met-toast.met-loading {\n cursor: wait;\n }\n \n /* 成功状态 */\n .met-toast.met-success {\n border-left: 4px solid #10b981;\n }\n \n /* 错误状态 */\n .met-toast.met-error {\n border-left: 4px solid #ef4444;\n }\n \n /* 警告状态 */\n .met-toast.met-warning {\n border-left: 4px solid #f59e0b;\n }\n \n /* 信息状态 */\n .met-toast.met-info {\n border-left: 4px solid #3b82f6;\n }\n \n /* 加载状态 */\n .met-toast.met-loading {\n border-left: 4px solid #6366f1;\n }\n \n /* 进度条动画 */\n .met-bar,\n .met-bar-v {\n transition: transform 0.1s linear;\n }\n \n /* 容器动画 */\n .met-container {\n transition: all 0.3s ease;\n }\n \n /* Toast进入动画 */\n .met-toast.met-enter {\n animation: met-enter 0.3s ease forwards;\n }\n \n /* Toast离开动画 */\n .met-toast.met-leave {\n animation: met-leave 0.3s ease forwards;\n }\n \n @keyframes met-enter {\n from {\n opacity: 0;\n transform: translateY(-20px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n \n @keyframes met-leave {\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(-20px);\n }\n }\n \n /* 响应式字体大小 */\n @media (max-width: 768px) {\n .met-toast {\n font-size: 13px;\n }\n \n .met-title {\n font-size: 13px;\n }\n \n .met-message {\n font-size: 12px;\n }\n }\n \n @media (max-width: 480px) {\n .met-toast {\n font-size: 12px;\n padding: 12px 14px;\n }\n \n .met-title {\n font-size: 12px;\n }\n \n .met-message {\n font-size: 11px;\n }\n }\n \n /* 无障碍支持 */\n .met-toast[role=\"alert\"] {\n /* 警告类型Toast的特殊样式 */\n }\n \n .met-toast[role=\"status\"] {\n /* 状态类型Toast的特殊样式 */\n }\n \n /* 高对比度模式增强 */\n @media (prefers-contrast: high) {\n .met-toast {\n border-width: 2px;\n }\n \n .met-close {\n border: 1px solid currentColor;\n }\n }\n \n /* 暗色模式自动检测 */\n @media (prefers-color-scheme: dark) {\n .met-theme-auto .met-toast {\n background: rgba(28, 32, 40, 0.94);\n color: #e6e8eb;\n border-color: rgba(255, 255, 255, 0.08);\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.6), \n 0 4px 14px -4px rgba(0, 0, 0, 0.4);\n }\n \n .met-theme-auto .met-toast:hover {\n box-shadow: 0 14px 48px -8px rgba(0, 0, 0, 0.6), \n 0 6px 18px -4px rgba(0, 0, 0, 0.4) !important;\n }\n \n .met-theme-auto .met-close:hover {\n background: rgba(255, 255, 255, 0.08);\n }\n \n .met-theme-auto .met-progress,\n .met-theme-auto .met-progress-v {\n background: rgba(255, 255, 255, 0.08);\n }\n }\n \n /* 亮色模式自动检测 */\n @media (prefers-color-scheme: light) {\n .met-theme-auto .met-toast {\n background: rgba(255, 255, 255, 0.96);\n color: #1f2937;\n border-color: rgba(0, 0, 0, 0.06);\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.18), \n 0 4px 14px -4px rgba(0, 0, 0, 0.08);\n }\n \n .met-theme-auto .met-toast:hover {\n box-shadow: 0 14px 48px -10px rgba(0, 0, 0, 0.22), \n 0 6px 18px -4px rgba(0, 0, 0, 0.10) !important;\n }\n \n .met-theme-auto .met-close:hover {\n background: rgba(0, 0, 0, 0.06);\n }\n \n .met-theme-auto .met-progress,\n .met-theme-auto .met-progress-v {\n background: rgba(0, 0, 0, 0.06);\n }\n }\n \n /* 动画性能优化 */\n .met-toast {\n transform: translateZ(0);\n -webkit-transform: translateZ(0);\n }\n \n /* 触摸设备优化 */\n @media (hover: none) {\n .met-toast:hover {\n box-shadow: inherit;\n }\n }\n \n /* 滚动时固定位置 */\n .met-container {\n position: fixed;\n z-index: 9999;\n }\n \n /* 全屏模式 */\n :fullscreen .met-container {\n z-index: 2147483647;\n }\n \n /* 画中画模式 */\n :picture-in-picture .met-container {\n z-index: 2147483647;\n }\n \n /* 安全区域适配 */\n @supports (padding: max(0px)) {\n .met-container {\n padding: max(24px, env(safe-area-inset-top)) \n max(24px, env(safe-area-inset-right)) \n max(24px, env(safe-area-inset-bottom)) \n max(24px, env(safe-area-inset-left));\n }\n }\n \n /* 暗色模式安全区域 */\n @media (prefers-color-scheme: dark) {\n @supports (padding: max(0px)) {\n .met-container {\n padding: max(24px, env(safe-area-inset-top)) \n max(24px, env(safe-area-inset-right)) \n max(24px, env(safe-area-inset-bottom)) \n max(24px, env(safe-area-inset-left));\n }\n }\n }\n \n /* 高分辨率屏幕优化 */\n @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {\n .met-toast {\n border-width: 0.5px;\n }\n }\n \n /* 触摸设备优化 */\n @media (hover: none) and (pointer: coarse) {\n .met-toast {\n min-height: 48px;\n }\n \n .met-close {\n min-width: 48px;\n min-height: 48px;\n }\n }\n \n /* 键盘导航优化 */\n .met-toast:focus {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n }\n \n .met-toast:focus:not(:focus-visible) {\n outline: none;\n }\n \n .met-toast:focus-visible {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n }\n \n /* 减少动画模式 */\n @media (prefers-reduced-motion: reduce) {\n .met-toast {\n transition: opacity 0.15s ease !important;\n animation: none !important;\n }\n \n .met-bar,\n .met-bar-v {\n transition: none !important;\n }\n \n .met-container {\n transition: none !important;\n }\n }\n \n /* 高对比度模式 */\n @media (prefers-contrast: high) {\n .met-toast {\n border-width: 3px;\n border-style: solid;\n }\n \n .met-close {\n border: 2px solid currentColor;\n border-radius: 4px;\n }\n \n .met-progress,\n .met-progress-v {\n height: 4px;\n }\n \n .met-bar,\n .met-bar-v {\n height: 100%;\n }\n }\n \n /* 低分辨率屏幕优化 */\n @media (max-resolution: 1dppx) {\n .met-toast {\n border-width: 1px;\n }\n }\n \n /* 触摸设备优化 */\n @media (hover: none) and (pointer: coarse) {\n .met-toast {\n min-height: 52px;\n padding: 16px 18px;\n }\n \n .met-close {\n min-width: 52px;\n min-height: 52px;\n padding: 8px;\n }\n \n .met-icon {\n width: 28px;\n height: 28px;\n }\n }\n \n /* 大屏幕优化 */\n @media (min-width: 1200px) {\n .met-toast {\n width: 400px;\n }\n }\n \n /* 超大屏幕优化 */\n @media (min-width: 1920px) {\n .met-toast {\n width: 440px;\n }\n }\n \n /* 小屏幕优化 */\n @media (max-width: 320px) {\n .met-toast {\n width: 100%;\n min-width: 0;\n padding: 12px 14px;\n }\n \n .met-container {\n padding: 8px;\n }\n }\n \n /* 横屏优化 */\n @media (orientation: landscape) and (max-height: 500px) {\n .met-container {\n padding: 12px 24px;\n }\n \n .met-toast {\n min-height: 44px;\n padding: 10px 14px;\n }\n }\n \n /* 竖屏优化 */\n @media (orientation: portrait) and (max-width: 500px) {\n .met-container {\n padding: 12px;\n }\n \n .met-toast {\n width: 100%;\n min-width: 0;\n }\n }\n \n /* 无障碍支持 */\n .met-toast[aria-live=\"assertive\"] {\n /* 紧急通知样式 */\n }\n \n .met-toast[aria-live=\"polite\"] {\n /* 普通通知样式 */\n }\n \n /* 焦点陷阱 */\n .met-toast:focus-within {\n /* 包含焦点元素的Toast样式 */\n }\n \n /* 加载状态 */\n .met-toast[aria-busy=\"true\"] {\n cursor: wait;\n }\n \n /* 禁用状态 */\n .met-toast[aria-disabled=\"true\"] {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n }\n \n /* 隐藏状态 */\n .met-toast[aria-hidden=\"true\"] {\n display: none;\n }\n \n /* 展开状态 */\n .met-toast[aria-expanded=\"true\"] {\n /* 展开状态样式 */\n }\n \n /* 选中状态 */\n .met-toast[aria-selected=\"true\"] {\n /* 选中状态样式 */\n }\n \n /* 按下状态 */\n .met-toast:active {\n transform: scale(0.98);\n }\n \n /* 加载状态动画 */\n .met-toast.met-loading::after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: linear-gradient(\n 90deg,\n transparent,\n rgba(255, 255, 255, 0.1),\n transparent\n );\n animation: met-loading 1.5s infinite;\n }\n \n @keyframes met-loading {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(100%);\n }\n }\n \n /* 成功状态动画 */\n .met-toast.met-success::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n background: #10b981;\n border-radius: 12px 0 0 12px;\n animation: met-success 0.3s ease;\n }\n \n @keyframes met-success {\n from {\n transform: scaleY(0);\n }\n to {\n transform: scaleY(1);\n }\n }\n \n /* 错误状态动画 */\n .met-toast.met-error::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n background: #ef4444;\n border-radius: 12px 0 0 12px;\n animation: met-error 0.3s ease;\n }\n \n @keyframes met-error {\n from {\n transform: scaleY(0);\n }\n to {\n transform: scaleY(1);\n }\n }\n \n /* 警告状态动画 */\n .met-toast.met-warning::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n background: #f59e0b;\n border-radius: 12px 0 0 12px;\n animation: met-warning 0.3s ease;\n }\n \n @keyframes met-warning {\n from {\n transform: scaleY(0);\n }\n to {\n transform: scaleY(1);\n }\n }\n \n /* 信息状态动画 */\n .met-toast.met-info::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n background: #3b82f6;\n border-radius: 12px 0 0 12px;\n animation: met-info 0.3s ease;\n }\n \n @keyframes met-info {\n from {\n transform: scaleY(0);\n }\n to {\n transform: scaleY(1);\n }\n }\n \n /* 加载状态动画 */\n .met-toast.met-loading::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n background: #6366f1;\n border-radius: 12px 0 0 12px;\n animation: met-loading-bar 1s infinite;\n }\n \n @keyframes met-loading-bar {\n 0% {\n transform: scaleY(0);\n transform-origin: top;\n }\n 50% {\n transform: scaleY(1);\n transform-origin: top;\n }\n 51% {\n transform-origin: bottom;\n }\n 100% {\n transform: scaleY(0);\n transform-origin: bottom;\n }\n }\n \n /* 进度条脉冲动画 */\n .met-bar,\n .met-bar-v {\n animation: met-pulse 2s infinite;\n }\n \n @keyframes met-pulse {\n 0%, 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.8;\n }\n }\n \n /* Toast堆叠效果 */\n .met-toast + .met-toast {\n margin-top: 8px;\n }\n \n /* Toast分组 */\n .met-toast-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n \n /* Toast头部 */\n .met-toast-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 8px;\n }\n \n /* Toast底部 */\n .met-toast-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n margin-top: 12px;\n }\n \n /* Toast操作按钮 */\n .met-toast-action {\n background: transparent;\n border: 1px solid currentColor;\n padding: 6px 12px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n opacity: 0.7;\n transition: opacity 0.2s;\n }\n \n .met-toast-action:hover {\n opacity: 1;\n }\n \n /* Toast进度文本 */\n .met-toast-progress-text {\n font-size: 12px;\n opacity: 0.7;\n margin-left: 8px;\n }\n \n /* Toast时间戳 */\n .met-toast-timestamp {\n font-size: 11px;\n opacity: 0.5;\n margin-left: auto;\n }\n \n /* Toast头像 */\n .met-toast-avatar {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n object-fit: cover;\n flex-shrink: 0;\n }\n \n /* Toast图片 */\n .met-toast-image {\n max-width: 100%;\n max-height: 200px;\n border-radius: 8px;\n margin-top: 8px;\n object-fit: cover;\n }\n \n /* Toast视频 */\n .met-toast-video {\n max-width: 100%;\n max-height: 200px;\n border-radius: 8px;\n margin-top: 8px;\n }\n \n /* Toast音频 */\n .met-toast-audio {\n width: 100%;\n margin-top: 8px;\n }\n \n /* Toast代码块 */\n .met-toast-code {\n background: rgba(0, 0, 0, 0.05);\n padding: 8px 12px;\n border-radius: 6px;\n font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;\n font-size: 12px;\n margin-top: 8px;\n overflow-x: auto;\n }\n \n .met-theme-dark .met-toast-code {\n background: rgba(255, 255, 255, 0.05);\n }\n \n /* Toast引用 */\n .met-toast-quote {\n border-left: 3px solid currentColor;\n padding-left: 12px;\n margin-top: 8px;\n opacity: 0.8;\n }\n \n /* Toast列表 */\n .met-toast-list {\n margin: 8px 0 0 0;\n padding-left: 20px;\n }\n \n .met-toast-list li {\n margin-bottom: 4px;\n }\n \n /* Toast表格 */\n .met-toast-table {\n width: 100%;\n border-collapse: collapse;\n margin-top: 8px;\n font-size: 12px;\n }\n \n .met-toast-table th,\n .met-toast-table td {\n border: 1px solid rgba(0, 0, 0, 0.1);\n padding: 6px 8px;\n text-align: left;\n }\n \n .met-theme-dark .met-toast-table th,\n .met-theme-dark .met-toast-table td {\n border-color: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-table th {\n background: rgba(0, 0, 0, 0.05);\n font-weight: 600;\n }\n \n .met-theme-dark .met-toast-table th {\n background: rgba(255, 255, 255, 0.05);\n }\n \n /* Toast分割线 */\n .met-toast-divider {\n height: 1px;\n background: rgba(0, 0, 0, 0.1);\n margin: 12px 0;\n }\n \n .met-theme-dark .met-toast-divider {\n background: rgba(255, 255, 255, 0.1);\n }\n \n /* Toast标签 */\n .met-toast-tag {\n display: inline-block;\n background: rgba(0, 0, 0, 0.05);\n padding: 2px 8px;\n border-radius: 4px;\n font-size: 11px;\n margin-right: 4px;\n margin-bottom: 4px;\n }\n \n .met-theme-dark .met-toast-tag {\n background: rgba(255, 255, 255, 0.05);\n }\n \n /* Toast徽章 */\n .met-toast-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: #3b82f6;\n color: white;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n min-width: 20px;\n height: 20px;\n }\n \n /* Toast进度环 */\n .met-toast-progress-ring {\n width: 40px;\n height: 40px;\n transform: rotate(-90deg);\n }\n \n .met-toast-progress-ring circle {\n fill: none;\n stroke-width: 3;\n stroke-linecap: round;\n }\n \n .met-toast-progress-ring .met-progress-ring-bg {\n stroke: rgba(0, 0, 0, 0.1);\n }\n \n .met-theme-dark .met-toast-progress-ring .met-progress-ring-bg {\n stroke: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-progress-ring .met-progress-ring-fill {\n stroke: #3b82f6;\n stroke-dasharray: 100;\n stroke-dashoffset: 100;\n transition: stroke-dashoffset 0.3s ease;\n }\n \n /* Toast滑块 */\n .met-toast-slider {\n width: 100%;\n height: 4px;\n background: rgba(0, 0, 0, 0.1);\n border-radius: 2px;\n margin-top: 8px;\n position: relative;\n }\n \n .met-theme-dark .met-toast-slider {\n background: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-slider-fill {\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n background: #3b82f6;\n border-radius: 2px;\n transition: width 0.3s ease;\n }\n \n /* Toast开关 */\n .met-toast-switch {\n position: relative;\n display: inline-block;\n width: 36px;\n height: 20px;\n margin-top: 8px;\n }\n \n .met-toast-switch input {\n opacity: 0;\n width: 0;\n height: 0;\n }\n \n .met-toast-switch-slider {\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.1);\n border-radius: 20px;\n transition: 0.3s;\n }\n \n .met-theme-dark .met-toast-switch-slider {\n background: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-switch-slider:before {\n content: '';\n position: absolute;\n height: 16px;\n width: 16px;\n left: 2px;\n bottom: 2px;\n background: white;\n border-radius: 50%;\n transition: 0.3s;\n }\n \n .met-toast-switch input:checked + .met-toast-switch-slider {\n background: #3b82f6;\n }\n \n .met-toast-switch input:checked + .met-toast-switch-slider:before {\n transform: translateX(16px);\n }\n \n /* Toast复选框 */\n .met-toast-checkbox {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n cursor: pointer;\n }\n \n .met-toast-checkbox input {\n width: 16px;\n height: 16px;\n cursor: pointer;\n }\n \n /* Toast单选框 */\n .met-toast-radio {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n cursor: pointer;\n }\n \n .met-toast-radio input {\n width: 16px;\n height: 16px;\n cursor: pointer;\n }\n \n /* Toast输入框 */\n .met-toast-input {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 6px;\n font-size: 13px;\n margin-top: 8px;\n background: transparent;\n color: inherit;\n }\n \n .met-theme-dark .met-toast-input {\n border-color: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-input:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\n }\n \n /* Toast文本域 */\n .met-toast-textarea {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 6px;\n font-size: 13px;\n margin-top: 8px;\n background: transparent;\n color: inherit;\n resize: vertical;\n min-height: 80px;\n }\n \n .met-theme-dark .met-toast-textarea {\n border-color: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-textarea:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\n }\n \n /* Toast选择框 */\n .met-toast-select {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 6px;\n font-size: 13px;\n margin-top: 8px;\n background: transparent;\n color: inherit;\n cursor: pointer;\n }\n \n .met-theme-dark .met-toast-select {\n border-color: rgba(255, 255, 255, 0.1);\n }\n \n .met-toast-select:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\n }\n \n /* Toast下拉菜单 */\n .met-toast-dropdown {\n position: relative;\n display: inline-block;\n }\n \n .met-toast-dropdown-content {\n display: none;\n position: absolute;\n background: ${theme.bg};\n min-width: 160px;\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n z-index: 1;\n padding: 8px 0;\n margin-top: 4px;\n }\n \n .met-theme-dark .met-toast-dropdown-content {\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);\n }\n \n .met-toast-dropdown:hover .met-toast-dropdown-content {\n display: block;\n }\n \n .met-toast-dropdown-item {\n padding: 8px 16px;\n cursor: pointer;\n font-size: 13px;\n }\n \n .met-toast-dropdown-item:hover {\n background: rgba(0, 0, 0, 0.05);\n }\n \n .met-theme-dark .met-toast-dropdown-item:hover {\n background: rgba(255, 255, 255, 0.05);\n }\n \n /* Toast工具提示 */\n .met-toast-tooltip {\n position: relative;\n display: inline-block;\n }\n \n .met-toast-tooltip .met-toast-tooltip-text {\n visibility: hidden;\n width: 120px;\n background: ${theme.bg};\n color: ${theme.text};\n text-align: center;\n border-radius: 6px;\n padding: 6px 8px;\n position: absolute;\n z-index: 1;\n bottom: 125%;\n left: 50%;\n margin-left: -60px;\n opacity: 0;\n transition: opacity 0.3s;\n font-size: 12px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n }\n \n .met-theme-dark .met-toast-tooltip .met-toast-tooltip-text {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n }\n \n .met-toast-tooltip:hover .met-toast-tooltip-text {\n visibility: visible;\n opacity: 1;\n }\n \n /* Toast弹出框 */\n .met-toast-popover {\n position: relative;\n display: inline-block;\n }\n \n .met-toast-popover .met-toast-popover-content {\n visibility: hidden;\n background: ${theme.bg};\n color: ${theme.text};\n border-radius: 8px;\n padding: 12px 16px;\n position: absolute;\n z-index: 1;\n bottom: 125%;\n left: 50%;\n transform: translateX(-50%);\n opacity: 0;\n transition: opacity 0.3s;\n min-width: 200px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);\n }\n \n .met-theme-dark .met-toast-popover .met-toast-popover-content {\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\n }\n \n .met-toast-popover:hover .met-toast-popover-content {\n visibility: visible;\n opacity: 1;\n }\n \n /* Toast模态框 */\n .met-toast-modal {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10000;\n }\n \n .met-toast-modal-content {\n background: ${theme.bg};\n color: ${theme.text};\n border-radius: 12px;\n padding: 24px;\n max-width: 500px;\n width: 90%;\n max-height: 80vh;\n overflow-y: auto;\n }\n \n /* Toast抽屉 */\n .met-toast-drawer {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.5);\n z-index: 10000;\n }\n \n .met-toast-drawer-content {\n position: absolute;\n top: 0;\n right: 0;\n width: 300px;\n height: 100%;\n background: ${theme.bg};\n color: ${theme.text};\n padding: 24px;\n transform: translateX(100%);\n transition: transform 0.3s ease;\n }\n \n .met-toast-drawer.open .met-toast-drawer-content {\n transform: translateX(0);\n }\n \n /* Toast通知栏 */\n .met-toast-notification-bar {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n background: ${theme.bg};\n color: ${theme.text};\n padding: 12px 24px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n z-index: 9999;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n }\n \n /* Toast状态栏 */\n .met-toast-status-bar {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n background: ${theme.bg};\n color: ${theme.text};\n padding: 8px 24px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n z-index: 9999;\n font-size: 12px;\n box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.1);\n }\n `;\n};\n\n/**\n * 注入样式\n * @param {Object} theme - 主题配置\n */\nexport const injectStyles = (theme = THEMES.light) => {\n // 检查是否在浏览器环境\n if (typeof document === 'undefined') return;\n \n // 检查是否已注入\n if (styleElement && document.getElementById('metona-toast-styles')) {\n return;\n }\n \n // 生成CSS\n const css = generateCSS(theme);\n \n // 创建样式元素\n styleElement = document.createElement('style');\n styleElement.id = 'metona-toast-styles';\n styleElement.textContent = css.replace(/\\s+/g, ' ');\n \n // 添加到文档头\n document.head.appendChild(styleElement);\n \n // 缓存样式\n injectedStyles = css;\n};\n\n/**\n * 更新样式\n * @param {Object} theme - 新主题配置\n */\nexport const updateStyles = (theme) => {\n if (!styleElement) {\n injectStyles(theme);\n return;\n }\n \n const css = generateCSS(theme);\n styleElement.textContent = css.replace(/\\s+/g, ' ');\n injectedStyles = css;\n};\n\n/**\n * 移除样式\n */\nexport const removeStyles = () => {\n if (styleElement && styleElement.parentNode) {\n styleElement.parentNode.removeChild(styleElement);\n }\n \n styleElement = null;\n injectedStyles = null;\n};\n\n/**\n * 获取当前样式\n * @returns {string|null} 当前CSS字符串\n */\nexport const getStyles = () => {\n return injectedStyles;\n};\n\n/**\n * 检查样式是否已注入\n * @returns {boolean} 是否已注入\n */\nexport const isStylesInjected = () => {\n return !!styleElement && !!document.getElementById('metona-toast-styles');\n};\n\n/**\n * 重置样式\n */\nexport const resetStyles = () => {\n removeStyles();\n injectStyles();\n};\n\n/**\n * 添加自定义CSS\n * @param {string} css - CSS字符串\n */\nexport const addCustomCSS = (css) => {\n if (!styleElement) {\n injectStyles();\n }\n \n const customStyle = document.createElement('style');\n customStyle.id = 'metona-toast-custom-styles';\n customStyle.textContent = css;\n document.head.appendChild(customStyle);\n};\n\n/**\n * 移除自定义CSS\n */\nexport const removeCustomCSS = () => {\n const customStyle = document.getElementById('metona-toast-custom-styles');\n if (customStyle && customStyle.parentNode) {\n customStyle.parentNode.removeChild(customStyle);\n }\n};\n\n/**\n * 生成主题变量\n * @param {Object} theme - 主题配置\n * @returns {string} CSS变量字符串\n */\nexport const generateThemeVariables = (theme) => {\n return `\n :root {\n --met-theme-bg: ${theme.bg};\n --met-theme-text: ${theme.text};\n --met-theme-border: ${theme.border};\n --met-theme-shadow: ${theme.shadow};\n --met-theme-hover-shadow: ${theme.hoverShadow};\n --met-theme-progress-bg: ${theme.progressBg};\n --met-theme-close-hover-bg: ${theme.closeHoverBg};\n }\n `;\n};\n\n/**\n * 应用主题变量\n * @param {Object} theme - 主题配置\n */\nexport const applyThemeVariables = (theme) => {\n const css = generateThemeVariables(theme);\n addCustomCSS(css);\n};\n\n/**\n * 清除主题变量\n */\nexport const clearThemeVariables = () => {\n removeCustomCSS();\n};\n\n/**\n * 获取系统主题\n * @returns {string} 系统主题\n */\nexport const getSystemTheme = () => {\n if (typeof window === 'undefined') return 'light';\n \n return window.matchMedia && \n window.matchMedia('(prefers-color-scheme: dark)').matches \n ? 'dark' \n : 'light';\n};\n\n/**\n * 监听系统主题变化\n * @param {Function} callback - 回调函数\n * @returns {Function} 取消监听函数\n */\nexport const watchSystemTheme = (callback) => {\n if (typeof window === 'undefined' || !window.matchMedia) {\n return () => {};\n }\n \n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n \n const handler = (e) => {\n callback(e.matches ? 'dark' : 'light');\n };\n \n mediaQuery.addEventListener('change', handler);\n \n return () => {\n mediaQuery.removeEventListener('change', handler);\n };\n};\n\n/**\n * 自动应用系统主题\n * @returns {Function} 取消监听函数\n */\nexport const autoApplySystemTheme = () => {\n const applyTheme = (theme) => {\n updateStyles(THEMES[theme]);\n applyThemeVariables(THEMES[theme]);\n };\n \n // 应用当前系统主题\n applyTheme(getSystemTheme());\n \n // 监听系统主题变化\n return watchSystemTheme(applyTheme);\n};\n","/**\n * MetonaToast Themes - 主题管理\n * @module themes\n * @version 2.0.0\n * @description 主题系统、自定义主题和主题切换\n */\n\nimport { THEMES } from './constants.js';\nimport { prefersDark } from './utils.js';\n\n// 当前主题状态\nlet currentTheme = 'auto';\nlet themeListeners = new Set();\nlet systemThemeMediaQuery = null;\nlet systemThemeListener = null;\n\n/**\n * 获取系统主题\n * @returns {string} 系统主题 ('light' 或 'dark')\n */\nexport const getSystemTheme = () => {\n if (typeof window === 'undefined') return 'light';\n return prefersDark() ? 'dark' : 'light';\n};\n\n/**\n * 获取主题(别名)\n * @param {string} theme - 主题名称\n * @returns {string} 解析后的主题\n */\nexport const getTheme = (theme) => {\n return resolveTheme(theme);\n};\n\n/**\n * 解析主题\n * @param {string} theme - 主题名称\n * @returns {string} 解析后的主题\n */\nexport const resolveTheme = (theme) => {\n if (theme === 'auto') {\n // 优先使用用户设置的全局主题,否则使用系统主题\n if (currentTheme && currentTheme !== 'auto') {\n return currentTheme;\n }\n return getSystemTheme();\n }\n return theme;\n};\n\n/**\n * 获取主题配置\n * @param {string} theme - 主题名称\n * @returns {Object} 主题配置\n */\nexport const getThemeConfig = (theme) => {\n const resolved = resolveTheme(theme);\n return THEMES[resolved] || THEMES.light;\n};\n\n/**\n * 应用主题\n * @param {string} theme - 主题名称\n */\nexport const applyTheme = (theme) => {\n currentTheme = theme;\n const resolved = resolveTheme(theme);\n \n // 应用主题到文档\n if (typeof document !== 'undefined') {\n document.documentElement.setAttribute('data-met-theme', resolved);\n document.documentElement.classList.remove('met-theme-light', 'met-theme-dark', 'met-theme-auto');\n document.documentElement.classList.add(`met-theme-${resolved}`);\n \n // 设置CSS变量\n const config = getThemeConfig(theme);\n setThemeVariables(config);\n }\n \n // 通知监听器\n notifyThemeListeners(theme, resolved);\n};\n\n/**\n * 设置主题CSS变量\n * @param {Object} config - 主题配置\n */\nexport const setThemeVariables = (config) => {\n if (typeof document === 'undefined') return;\n \n const root = document.documentElement;\n root.style.setProperty('--met-bg', config.bg);\n root.style.setProperty('--met-text', config.text);\n root.style.setProperty('--met-border', config.border);\n root.style.setProperty('--met-shadow', config.shadow);\n root.style.setProperty('--met-hover-shadow', config.hoverShadow);\n root.style.setProperty('--met-progress-bg', config.progressBg);\n root.style.setProperty('--met-close-hover-bg', config.closeHoverBg);\n \n // 设置颜色变量\n root.style.setProperty('--met-success', '#10b981');\n root.style.setProperty('--met-error', '#ef4444');\n root.style.setProperty('--met-warning', '#f59e0b');\n root.style.setProperty('--met-info', '#3b82f6');\n root.style.setProperty('--met-loading', '#6366f1');\n};\n\n/**\n * 清除主题CSS变量\n */\nexport const clearThemeVariables = () => {\n if (typeof document === 'undefined') return;\n \n const root = document.documentElement;\n const variables = [\n '--met-bg',\n '--met-text',\n '--met-border',\n '--met-shadow',\n '--met-hover-shadow',\n '--met-progress-bg',\n '--met-close-hover-bg',\n '--met-success',\n '--met-error',\n '--met-warning',\n '--met-info',\n '--met-loading',\n ];\n \n variables.forEach((variable) => {\n root.style.removeProperty(variable);\n });\n};\n\n/**\n * 获取当前主题\n * @returns {string} 当前主题\n */\nexport const getCurrentTheme = () => {\n return currentTheme;\n};\n\n/**\n * 获取解析后的主题\n * @returns {string} 解析后的主题\n */\nexport const getResolvedTheme = () => {\n return resolveTheme(currentTheme);\n};\n\n/**\n * 切换主题\n * @param {string} theme - 新主题\n */\nexport const switchTheme = (theme) => {\n applyTheme(theme);\n saveTheme(theme);\n};\n\n/**\n * 切换亮色/暗色主题\n */\nexport const toggleTheme = () => {\n const resolved = getResolvedTheme();\n const newTheme = resolved === 'dark' ? 'light' : 'dark';\n switchTheme(newTheme);\n};\n\n/**\n * 重置为自动主题\n */\nexport const resetToAuto = () => {\n switchTheme('auto');\n};\n\n/**\n * 保存主题到本地存储\n * @param {string} theme - 主题名称\n */\nexport const saveTheme = (theme) => {\n if (typeof localStorage !== 'undefined') {\n try {\n localStorage.setItem('metona-toast-theme', theme);\n } catch (e) {\n console.warn('Failed to save theme:', e);\n }\n }\n};\n\n/**\n * 从本地存储加载主题\n * @returns {string} 主题名称\n */\nexport const loadTheme = () => {\n if (typeof localStorage !== 'undefined') {\n try {\n return localStorage.getItem('metona-toast-theme') || 'auto';\n } catch (e) {\n console.warn('Failed to load theme:', e);\n }\n }\n return 'auto';\n};\n\n/**\n * 初始化主题系统\n */\nexport const initTheme = () => {\n // 加载保存的主题\n const savedTheme = loadTheme();\n applyTheme(savedTheme);\n \n // 监听系统主题变化\n watchSystemTheme();\n};\n\n/**\n * 监听系统主题变化\n */\nexport const watchSystemTheme = () => {\n if (typeof window === 'undefined' || !window.matchMedia) return;\n \n // 移除旧的监听器\n if (systemThemeMediaQuery && systemThemeListener) {\n systemThemeMediaQuery.removeEventListener('change', systemThemeListener);\n }\n \n // 创建新的监听器\n systemThemeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n systemThemeListener = (e) => {\n if (currentTheme === 'auto') {\n applyTheme('auto');\n }\n };\n \n systemThemeMediaQuery.addEventListener('change', systemThemeListener);\n};\n\n/**\n * 停止监听系统主题变化\n */\nexport const unwatchSystemTheme = () => {\n if (systemThemeMediaQuery && systemThemeListener) {\n systemThemeMediaQuery.removeEventListener('change', systemThemeListener);\n systemThemeMediaQuery = null;\n systemThemeListener = null;\n }\n};\n\n/**\n * 添加主题监听器\n * @param {Function} listener - 监听器函数\n * @returns {Function} 移除监听器函数\n */\nexport const addThemeListener = (listener) => {\n themeListeners.add(listener);\n \n return () => {\n themeListeners.delete(listener);\n };\n};\n\n/**\n * 移除主题监听器\n * @param {Function} listener - 监听器函数\n */\nexport const removeThemeListener = (listener) => {\n themeListeners.delete(listener);\n};\n\n/**\n * 通知主题监听器\n * @param {string} theme - 主题名称\n * @param {string} resolved - 解析后的主题\n */\nconst notifyThemeListeners = (theme, resolved) => {\n themeListeners.forEach((listener) => {\n try {\n listener(theme, resolved);\n } catch (e) {\n console.error('Theme listener error:', e);\n }\n });\n};\n\n/**\n * 清除所有主题监听器\n */\nexport const clearThemeListeners = () => {\n themeListeners.clear();\n};\n\n/**\n * 注册自定义主题\n * @param {string} name - 主题名称\n * @param {Object} config - 主题配置\n */\nexport const registerTheme = (name, config) => {\n THEMES[name] = {\n bg: config.bg || THEMES.light.bg,\n text: config.text || THEMES.light.text,\n border: config.border || THEMES.light.border,\n shadow: config.shadow || THEMES.light.shadow,\n hoverShadow: config.hoverShadow || THEMES.light.hoverShadow,\n progressBg: config.progressBg || THEMES.light.progressBg,\n closeHoverBg: config.closeHoverBg || THEMES.light.closeHoverBg,\n };\n};\n\n/**\n * 注销自定义主题\n * @param {string} name - 主题名称\n */\nexport const unregisterTheme = (name) => {\n if (name === 'light' || name === 'dark' || name === 'auto') {\n console.warn('Cannot unregister built-in theme:', name);\n return;\n }\n \n delete THEMES[name];\n};\n\n/**\n * 获取所有主题\n * @returns {Object} 主题映射\n */\nexport const getAllThemes = () => {\n return { ...THEMES };\n};\n\n/**\n * 获取主题名称列表\n * @returns {Array} 主题名称数组\n */\nexport const getThemeNames = () => {\n return Object.keys(THEMES);\n};\n\n/**\n * 检查主题是否存在\n * @param {string} name - 主题名称\n * @returns {boolean} 是否存在\n */\nexport const hasTheme = (name) => {\n return name in THEMES;\n};\n\n/**\n * 获取主题预览\n * @param {string} theme - 主题名称\n * @returns {Object} 主题预览\n */\nexport const getThemePreview = (theme) => {\n const config = getThemeConfig(theme);\n const resolved = resolveTheme(theme);\n \n return {\n name: theme,\n resolved,\n colors: {\n background: config.bg,\n text: config.text,\n border: config.border,\n },\n isDark: resolved === 'dark',\n isLight: resolved === 'light',\n isAuto: theme === 'auto',\n };\n};\n\n/**\n * 生成主题CSS\n * @param {string} theme - 主题名称\n * @returns {string} CSS字符串\n */\nexport const generateThemeCSS = (theme) => {\n const config = getThemeConfig(theme);\n const resolved = resolveTheme(theme);\n \n return `\n .met-theme-${resolved} {\n --met-bg: ${config.bg};\n --met-text: ${config.text};\n --met-border: ${config.border};\n --met-shadow: ${config.shadow};\n --met-hover-shadow: ${config.hoverShadow};\n --met-progress-bg: ${config.progressBg};\n --met-close-hover-bg: ${config.closeHoverBg};\n }\n `;\n};\n\n/**\n * 应用主题CSS\n * @param {string} theme - 主题名称\n */\nexport const applyThemeCSS = (theme) => {\n if (typeof document === 'undefined') return;\n \n const css = generateThemeCSS(theme);\n const styleId = 'metona-toast-theme-css';\n \n // 移除旧样式\n const oldStyle = document.getElementById(styleId);\n if (oldStyle) {\n oldStyle.remove();\n }\n \n // 添加新样式\n const style = document.createElement('style');\n style.id = styleId;\n style.textContent = css;\n document.head.appendChild(style);\n};\n\n/**\n * 移除主题CSS\n */\nexport const removeThemeCSS = () => {\n if (typeof document === 'undefined') return;\n \n const styleId = 'metona-toast-theme-css';\n const style = document.getElementById(styleId);\n if (style) {\n style.remove();\n }\n};\n\n/**\n * 主题工具 — 代理层,直接引用模块函数\n */\nexport const themeUtils = {\n getSystemTheme,\n resolveTheme,\n getThemeConfig,\n applyTheme,\n getCurrentTheme,\n getResolvedTheme,\n switchTheme,\n toggleTheme,\n resetToAuto,\n initTheme,\n watchSystemTheme,\n unwatchSystemTheme,\n addThemeListener,\n removeThemeListener,\n clearThemeListeners,\n registerTheme,\n unregisterTheme,\n getAllThemes,\n getThemeNames,\n hasTheme,\n getThemePreview,\n generateThemeCSS,\n applyThemeCSS,\n removeThemeCSS,\n saveTheme,\n loadTheme,\n};\n\n/**\n * 预设主题\n */\nexport const presetThemes = {\n /**\n * 浅色主题\n */\n light: {\n name: '浅色',\n description: '明亮清晰的主题',\n config: THEMES.light,\n },\n \n /**\n * 深色主题\n */\n dark: {\n name: '深色',\n description: '护眼舒适的暗色主题',\n config: THEMES.dark,\n },\n \n /**\n * 自动主题\n */\n auto: {\n name: '自动',\n description: '跟随系统主题设置',\n config: 'auto',\n },\n \n warm: {\n name: '暖色',\n description: '温馨舒适的暖色主题',\n config: THEMES.warm,\n },\n};\n\n// 注册预设主题\nObject.entries(presetThemes).forEach(([name, theme]) => {\n if (name !== 'auto' && theme.config !== 'auto') {\n THEMES[name] = theme.config;\n }\n});\n\n/**\n * 创建主题管理器\n * @returns {Object} 主题管理器\n */\nexport const createThemeManager = () => {\n return {\n getSystemTheme,\n resolveTheme,\n getThemeConfig,\n applyTheme,\n getCurrentTheme,\n getResolvedTheme,\n switchTheme,\n toggleTheme,\n resetToAuto,\n initTheme,\n watchSystemTheme,\n unwatchSystemTheme,\n addThemeListener,\n removeThemeListener,\n clearThemeListeners,\n registerTheme,\n unregisterTheme,\n getAllThemes,\n getThemeNames,\n hasTheme,\n getThemePreview,\n generateThemeCSS,\n applyThemeCSS,\n removeThemeCSS,\n saveTheme,\n loadTheme,\n };\n};\n\nexport { themeUtils as default };\n","/**\n * MetonaToast i18n - 国际化管理\n * @module i18n\n * @version 2.0.0\n * @description 多语言支持、语言切换和翻译管理\n */\n\nimport { LOCALES } from './constants.js';\n\n// 当前语言状态\nlet currentLocale = 'zh-CN';\nlet localeListeners = new Set();\nlet fallbackLocale = 'zh-CN';\n\n/**\n * 获取当前语言\n * @returns {string} 当前语言\n */\nexport const getCurrentLocale = () => {\n return currentLocale;\n};\n\n/**\n * 设置当前语言\n * @param {string} locale - 语言代码\n */\nexport const setCurrentLocale = (locale) => {\n if (!LOCALES[locale]) {\n console.warn(`Locale \"${locale}\" not found, falling back to \"${fallbackLocale}\"`);\n locale = fallbackLocale;\n }\n \n currentLocale = locale;\n notifyLocaleListeners(locale);\n saveLocale(locale);\n};\n\n/**\n * 获取回退语言\n * @returns {string} 回退语言\n */\nexport const getFallbackLocale = () => {\n return fallbackLocale;\n};\n\n/**\n * 设置回退语言\n * @param {string} locale - 语言代码\n */\nexport const setFallbackLocale = (locale) => {\n if (!LOCALES[locale]) {\n console.warn(`Fallback locale \"${locale}\" not found`);\n return;\n }\n \n fallbackLocale = locale;\n};\n\n/**\n * 翻译函数\n * @param {string} key - 翻译键\n * @param {Object} params - 插值参数\n * @returns {string} 翻译后的字符串\n */\nexport const t = (key, params = {}) => {\n // 尝试当前语言\n const currentTranslation = getTranslation(currentLocale, key);\n if (currentTranslation !== undefined) {\n return interpolate(currentTranslation, params);\n }\n \n // 尝试回退语言\n if (currentLocale !== fallbackLocale) {\n const fallbackTranslation = getTranslation(fallbackLocale, key);\n if (fallbackTranslation !== undefined) {\n return interpolate(fallbackTranslation, params);\n }\n }\n \n // 返回键名\n console.warn(`Translation missing for key \"${key}\" in locale \"${currentLocale}\"`);\n return key;\n};\n\n/**\n * 获取翻译\n * @param {string} locale - 语言代码\n * @param {string} key - 翻译键\n * @returns {string|undefined} 翻译字符串\n */\nconst getTranslation = (locale, key) => {\n const localeData = LOCALES[locale];\n if (!localeData) return undefined;\n \n // 支持嵌套键 (如 'common.close')\n const keys = key.split('.');\n let result = localeData;\n \n for (const k of keys) {\n if (result && typeof result === 'object' && k in result) {\n result = result[k];\n } else {\n return undefined;\n }\n }\n \n return typeof result === 'string' ? result : undefined;\n};\n\n/**\n * 插值函数\n * @param {string} str - 包含占位符的字符串\n * @param {Object} params - 插值参数\n * @returns {string} 插值后的字符串\n */\nconst interpolate = (str, params) => {\n return str.replace(/\\{(\\w+)\\}/g, (match, key) => {\n return params[key] !== undefined ? params[key] : match;\n });\n};\n\n/**\n * 检查翻译是否存在\n * @param {string} key - 翻译键\n * @returns {boolean} 是否存在\n */\nexport const hasTranslation = (key) => {\n return getTranslation(currentLocale, key) !== undefined ||\n getTranslation(fallbackLocale, key) !== undefined;\n};\n\n/**\n * 获取所有翻译\n * @param {string} locale - 语言代码\n * @returns {Object} 翻译对象\n */\nexport const getTranslations = (locale) => {\n return LOCALES[locale] || {};\n};\n\n/**\n * 添加翻译\n * @param {string} locale - 语言代码\n * @param {Object} translations - 翻译对象\n */\nexport const addTranslations = (locale, translations) => {\n if (!LOCALES[locale]) {\n LOCALES[locale] = {};\n }\n \n deepMerge(LOCALES[locale], translations);\n};\n\n/**\n * 深度合并对象\n * @param {Object} target - 目标对象\n * @param {Object} source - 源对象\n * @returns {Object} 合并后的对象\n */\nconst deepMerge = (target, source) => {\n for (const key in source) {\n if (source[key] instanceof Object && key in target && target[key] instanceof Object) {\n deepMerge(target[key], source[key]);\n } else {\n target[key] = source[key];\n }\n }\n return target;\n};\n\n/**\n * 移除翻译\n * @param {string} locale - 语言代码\n * @param {string} key - 翻译键\n */\nexport const removeTranslation = (locale, key) => {\n const localeData = LOCALES[locale];\n if (!localeData) return;\n \n const keys = key.split('.');\n let current = localeData;\n \n for (let i = 0; i < keys.length - 1; i++) {\n if (current[keys[i]] && typeof current[keys[i]] === 'object') {\n current = current[keys[i]];\n } else {\n return;\n }\n }\n \n delete current[keys[keys.length - 1]];\n};\n\n/**\n * 清除翻译\n * @param {string} locale - 语言代码\n */\nexport const clearTranslations = (locale) => {\n if (LOCALES[locale]) {\n LOCALES[locale] = {};\n }\n};\n\n/**\n * 获取支持的语言列表\n * @returns {Array} 语言代码数组\n */\nexport const getSupportedLocales = () => {\n return Object.keys(LOCALES);\n};\n\n/**\n * 检查语言是否支持\n * @param {string} locale - 语言代码\n * @returns {boolean} 是否支持\n */\nexport const isLocaleSupported = (locale) => {\n return locale in LOCALES;\n};\n\n/**\n * 获取语言名称\n * @param {string} locale - 语言代码\n * @returns {string} 语言名称\n */\nexport const getLocaleName = (locale) => {\n const names = {\n 'zh-CN': '简体中文',\n 'zh-TW': '繁體中文',\n 'en-US': 'English (US)',\n 'en-GB': 'English (UK)',\n 'ja': '日本語',\n 'ko': '한국어',\n 'fr': 'Français',\n 'de': 'Deutsch',\n 'es': 'Español',\n 'pt': 'Português',\n 'ru': 'Русский',\n 'ar': 'العربية',\n 'hi': 'हिन्दी',\n 'th': 'ไทย',\n 'vi': 'Tiếng Việt',\n 'id': 'Bahasa Indonesia',\n 'ms': 'Bahasa Melayu',\n 'tr': 'Türkçe',\n 'it': 'Italiano',\n 'nl': 'Nederlands',\n 'pl': 'Polski',\n 'uk': 'Українська',\n 'cs': 'Čeština',\n 'sv': 'Svenska',\n 'da': 'Dansk',\n 'fi': 'Suomi',\n 'nb': 'Norsk',\n 'el': 'Ελληνικά',\n 'he': 'עברית',\n 'hu': 'Magyar',\n 'ro': 'Română',\n 'bg': 'Български',\n 'hr': 'Hrvatski',\n 'sk': 'Slovenčina',\n 'sl': 'Slovenščina',\n 'et': 'Eesti',\n 'lv': 'Latviešu',\n 'lt': 'Lietuvių',\n 'ca': 'Català',\n 'gl': 'Galego',\n 'eu': 'Euskara',\n 'cy': 'Cymraeg',\n 'ga': 'Gaeilge',\n 'mt': 'Malti',\n 'is': 'Íslenska',\n 'mk': 'Македонски',\n 'sq': 'Shqip',\n 'sr': 'Српски',\n 'bs': 'Bosanski',\n 'me': 'Crnogorski',\n 'ka': 'ქართული',\n 'hy': 'Հայերեն',\n 'az': 'Azərbaycan',\n 'uz': \"O'zbek\",\n 'kk': 'Қазақ',\n 'ky': 'Кыргыз',\n 'tg': 'Тоҷикӣ',\n 'tk': 'Türkmen',\n 'mn': 'Монгол',\n 'ne': 'नेपाली',\n 'si': 'සිංහල',\n 'my': 'မြန်မာ',\n 'km': 'ខ្មែរ',\n 'lo': 'ລາວ',\n 'am': 'አማርኛ',\n 'sw': 'Kiswahili',\n 'yo': 'Yorùbá',\n 'ig': 'Igbo',\n 'ha': 'Hausa',\n 'zu': 'isiZulu',\n 'af': 'Afrikaans',\n 'xh': 'isiXhosa',\n 'st': 'Sesotho',\n 'tn': 'Setswana',\n 'ts': 'Xitsonga',\n 'ss': 'siSwati',\n 've': 'Tshivenda',\n 'nr': 'isiNdebele',\n };\n \n return names[locale] || locale;\n};\n\n/**\n * 获取语言方向\n * @param {string} locale - 语言代码\n * @returns {string} 语言方向 ('ltr' 或 'rtl')\n */\nexport const getLocaleDirection = (locale) => {\n const rtlLocales = ['ar', 'he', 'fa', 'ur', 'yi', 'ps', 'sd', 'ug'];\n return rtlLocales.includes(locale) ? 'rtl' : 'ltr';\n};\n\n/**\n * 获取语言信息\n * @param {string} locale - 语言代码\n * @returns {Object} 语言信息\n */\nexport const getLocaleInfo = (locale) => {\n return {\n code: locale,\n name: getLocaleName(locale),\n direction: getLocaleDirection(locale),\n isSupported: isLocaleSupported(locale),\n isCurrent: locale === currentLocale,\n isFallback: locale === fallbackLocale,\n };\n};\n\n/**\n * 获取所有语言信息\n * @returns {Array} 语言信息数组\n */\nexport const getAllLocaleInfo = () => {\n return getSupportedLocales().map(getLocaleInfo);\n};\n\n/**\n * 保存语言到本地存储\n * @param {string} locale - 语言代码\n */\nexport const saveLocale = (locale) => {\n if (typeof localStorage !== 'undefined') {\n try {\n localStorage.setItem('metona-toast-locale', locale);\n } catch (e) {\n console.warn('Failed to save locale:', e);\n }\n }\n};\n\n/**\n * 从本地存储加载语言\n * @returns {string} 语言代码\n */\nexport const loadLocale = () => {\n if (typeof localStorage !== 'undefined') {\n try {\n return localStorage.getItem('metona-toast-locale') || getDefaultLocale();\n } catch (e) {\n console.warn('Failed to load locale:', e);\n }\n }\n return getDefaultLocale();\n};\n\n/**\n * 获取默认语言\n * @returns {string} 语言代码\n */\nexport const getDefaultLocale = () => {\n if (typeof navigator !== 'undefined') {\n // 尝试从浏览器获取语言\n const browserLocale = navigator.language || navigator.userLanguage;\n if (browserLocale && isLocaleSupported(browserLocale)) {\n return browserLocale;\n }\n \n // 尝试语言代码的前两位\n const shortLocale = browserLocale?.split('-')[0];\n if (shortLocale && isLocaleSupported(shortLocale)) {\n return shortLocale;\n }\n }\n \n return fallbackLocale;\n};\n\n/**\n * 初始化国际化系统\n */\nexport const initI18n = () => {\n const savedLocale = loadLocale();\n setCurrentLocale(savedLocale);\n};\n\n/**\n * 切换语言\n * @param {string} locale - 新语言\n */\nexport const switchLocale = (locale) => {\n setCurrentLocale(locale);\n};\n\n/**\n * 添加语言监听器\n * @param {Function} listener - 监听器函数\n * @returns {Function} 移除监听器函数\n */\nexport const addLocaleListener = (listener) => {\n localeListeners.add(listener);\n \n return () => {\n localeListeners.delete(listener);\n };\n};\n\n/**\n * 移除语言监听器\n * @param {Function} listener - 监听器函数\n */\nexport const removeLocaleListener = (listener) => {\n localeListeners.delete(listener);\n};\n\n/**\n * 通知语言监听器\n * @param {string} locale - 语言代码\n */\nconst notifyLocaleListeners = (locale) => {\n localeListeners.forEach((listener) => {\n try {\n listener(locale);\n } catch (e) {\n console.error('Locale listener error:', e);\n }\n });\n};\n\n/**\n * 清除所有语言监听器\n */\nexport const clearLocaleListeners = () => {\n localeListeners.clear();\n};\n\n/**\n * 格式化数字\n * @param {number} number - 数字\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatNumber = (number, options = {}) => {\n try {\n return new Intl.NumberFormat(currentLocale, options).format(number);\n } catch (e) {\n return number.toString();\n }\n};\n\n/**\n * 格式化货币\n * @param {number} amount - 金额\n * @param {string} currency - 货币代码\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatCurrency = (amount, currency = 'USD', options = {}) => {\n try {\n return new Intl.NumberFormat(currentLocale, {\n style: 'currency',\n currency,\n ...options,\n }).format(amount);\n } catch (e) {\n return amount.toString();\n }\n};\n\n/**\n * 格式化百分比\n * @param {number} value - 值\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatPercent = (value, options = {}) => {\n try {\n return new Intl.NumberFormat(currentLocale, {\n style: 'percent',\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n ...options,\n }).format(value / 100);\n } catch (e) {\n return `${value}%`;\n }\n};\n\n/**\n * 格式化日期\n * @param {Date|number|string} date - 日期\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatDate = (date, options = {}) => {\n try {\n const dateObj = date instanceof Date ? date : new Date(date);\n return new Intl.DateTimeFormat(currentLocale, options).format(dateObj);\n } catch (e) {\n return date.toString();\n }\n};\n\n/**\n * 格式化时间\n * @param {Date|number|string} date - 日期\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatTime = (date, options = {}) => {\n return formatDate(date, {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n ...options,\n });\n};\n\n/**\n * 格式化相对时间\n * @param {Date|number|string} date - 日期\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatRelativeTime = (date, options = {}) => {\n try {\n const dateObj = date instanceof Date ? date : new Date(date);\n const now = new Date();\n const diff = dateObj - now;\n \n const rtf = new Intl.RelativeTimeFormat(currentLocale, {\n numeric: 'auto',\n ...options,\n });\n \n const units = [\n { unit: 'year', ms: 365 * 24 * 60 * 60 * 1000 },\n { unit: 'month', ms: 30 * 24 * 60 * 60 * 1000 },\n { unit: 'week', ms: 7 * 24 * 60 * 60 * 1000 },\n { unit: 'day', ms: 24 * 60 * 60 * 1000 },\n { unit: 'hour', ms: 60 * 60 * 1000 },\n { unit: 'minute', ms: 60 * 1000 },\n { unit: 'second', ms: 1000 },\n ];\n \n for (const { unit, ms } of units) {\n if (Math.abs(diff) >= ms || unit === 'second') {\n const value = Math.round(diff / ms);\n return rtf.format(value, unit);\n }\n }\n \n return date.toString();\n } catch (e) {\n return date.toString();\n }\n};\n\n/**\n * 格式化列表\n * @param {Array} list - 列表\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatList = (list, options = {}) => {\n try {\n return new Intl.ListFormat(currentLocale, options).format(list);\n } catch (e) {\n return list.join(', ');\n }\n};\n\n/**\n * 格式化复数\n * @param {number} count - 数量\n * @param {Object} options - 格式化选项\n * @returns {string} 格式化后的字符串\n */\nexport const formatPlural = (count, options = {}) => {\n try {\n return new Intl.PluralRules(currentLocale, options).select(count);\n } catch (e) {\n return count === 1 ? 'one' : 'other';\n }\n};\n\n/**\n * 复数翻译\n * @param {string} key - 翻译键\n * @param {number} count - 数量\n * @param {Object} params - 插值参数\n * @returns {string} 翻译后的字符串\n */\nexport const plural = (key, count, params = {}) => {\n const pluralForm = formatPlural(count);\n const pluralKey = `${key}.${pluralForm}`;\n \n if (hasTranslation(pluralKey)) {\n return t(pluralKey, { ...params, count });\n }\n \n // 尝试通用形式\n if (hasTranslation(key)) {\n return t(key, { ...params, count });\n }\n \n return key;\n};\n\n/**\n * 日期时间格式化选项\n */\nexport const dateTimeFormats = {\n short: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n },\n medium: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n },\n long: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n weekday: 'long',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n time: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n date: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n },\n weekday: {\n weekday: 'long',\n },\n month: {\n month: 'long',\n },\n year: {\n year: 'numeric',\n },\n};\n\n/**\n * 数字格式化选项\n */\nexport const numberFormats = {\n integer: {\n maximumFractionDigits: 0,\n },\n decimal: {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n },\n percent: {\n style: 'percent',\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n },\n currency: {\n style: 'currency',\n currency: 'USD',\n },\n};\n\n/**\n * 国际化工具 — 代理层,直接引用模块函数\n */\nexport const i18nUtils = {\n t,\n plural,\n getCurrentLocale,\n setCurrentLocale,\n switchLocale,\n getFallbackLocale,\n setFallbackLocale,\n hasTranslation,\n getTranslations,\n addTranslations,\n removeTranslation,\n clearTranslations,\n getSupportedLocales,\n isLocaleSupported,\n getLocaleName,\n getLocaleDirection,\n getLocaleInfo,\n getAllLocaleInfo,\n formatNumber,\n formatCurrency,\n formatPercent,\n formatDate,\n formatTime,\n formatRelativeTime,\n formatList,\n formatPlural,\n addLocaleListener,\n removeLocaleListener,\n clearLocaleListeners,\n initI18n,\n saveLocale,\n loadLocale,\n getDefaultLocale,\n};\n\n/**\n * 预设语言包\n */\nexport const presetLocales = {\n 'zh-CN': {\n name: '简体中文',\n nativeName: '简体中文',\n direction: 'ltr',\n translations: LOCALES['zh-CN'],\n },\n \n 'en-US': {\n name: 'English (US)',\n nativeName: 'English (US)',\n direction: 'ltr',\n translations: LOCALES['en-US'],\n },\n};\n\n/**\n * 创建国际化管理器\n * @returns {Object} 国际化管理器\n */\nexport const createI18nManager = () => {\n return {\n t,\n plural,\n getCurrentLocale,\n setCurrentLocale,\n switchLocale,\n getFallbackLocale,\n setFallbackLocale,\n hasTranslation,\n getTranslations,\n addTranslations,\n removeTranslation,\n clearTranslations,\n getSupportedLocales,\n isLocaleSupported,\n getLocaleName,\n getLocaleDirection,\n getLocaleInfo,\n getAllLocaleInfo,\n formatNumber,\n formatCurrency,\n formatPercent,\n formatDate,\n formatTime,\n formatRelativeTime,\n formatList,\n formatPlural,\n addLocaleListener,\n removeLocaleListener,\n clearLocaleListeners,\n initI18n,\n saveLocale,\n loadLocale,\n getDefaultLocale,\n };\n};\n\nexport { i18nUtils as default };\n","/**\n * MetonaToast Core - 核心Toast逻辑\n * @module core\n * @version 2.0.0\n * @description 重构后的核心模块,包含Toast类的优化实现\n */\n\nimport { generateId, escapeHTML } from './utils.js';\nimport { DEFAULTS, ICONS, TYPE_COLORS, THEMES } from './constants.js';\nimport { injectStyles } from './styles.js';\nimport { getTheme, applyTheme } from './themes.js';\nimport { t as i18nT, setCurrentLocale, getLocaleDirection, getCurrentLocale } from './i18n.js';\n\n// 模块级共享容器缓存,所有 Toast 实例共用\n// 使用 Map 而非 WeakMap:document.body 在页面存活期间永不被 GC,\n// 容器需要显式通过 destroy() 清理,WeakMap 在此场景无实际收益。\nconst _containerCache = new Map();\n\n/**\n * 参数标准化工具\n * 支持多种调用方式:\n * - success('message')\n * - success({ message: 'text' })\n * - success({ title: 'title', message: 'text' })\n * - success('message', { duration: 5000 })\n */\nconst normalizeArgs = (args, defaultType = 'default') => {\n const [first, second] = args;\n \n // 情况1: success('message')\n if (typeof first === 'string') {\n return {\n ...second,\n type: second?.type || defaultType,\n message: first,\n };\n }\n \n // 情况2: success({ message: 'text' }) 或 success({ title: 't', message: 'm' })\n if (first && typeof first === 'object') {\n return {\n ...first,\n type: first.type || defaultType,\n };\n }\n \n // 情况3: success() 无参数\n return {\n type: defaultType,\n message: '',\n };\n};\n\n/**\n * Toast类 - 核心通知组件\n */\nclass Toast {\n // 静态钩子系统\n static _hooks = new Map();\n static on(name, fn) {\n if (!this._hooks.has(name)) this._hooks.set(name, []);\n this._hooks.get(name).push(fn);\n return () => this.off(name, fn);\n }\n static off(name, fn) {\n const list = this._hooks.get(name);\n if (list) this._hooks.set(name, list.filter(f => f !== fn));\n }\n static trigger(name, toast) {\n const list = this._hooks.get(name);\n if (list) list.forEach(fn => { try { fn(toast); } catch (e) { console.error('Hook error:', name, e); } });\n }\n\n constructor(opts) {\n this.id = opts.id || generateId();\n this.type = opts.type || 'default';\n this.title = opts.title || '';\n this.message = opts.message ?? opts.content ?? '';\n this.html = opts.html || '';\n this.iconHTML = opts.iconHTML || '';\n this.config = { ...DEFAULTS, ...opts };\n // 防止嵌套对象被多个 toast 实例共享引用\n if (opts.style && typeof opts.style === 'object') {\n this.config.style = { ...opts.style };\n }\n this.el = null;\n this.barEl = null;\n this.rafId = null;\n this.remaining = this.config.duration;\n this.startedAt = 0;\n this.paused = false;\n this.closing = false;\n this._cleanups = [];\n this.group = opts.group || null;\n }\n\n _palette() {\n const theme = getTheme(this.config.theme);\n const c = TYPE_COLORS[this.type] || TYPE_COLORS.default;\n const tc = THEMES[theme] || THEMES.light;\n const t = { bg: tc.bg, border: tc.border, shadow: tc.shadow };\n return { theme, c, t };\n }\n\n create() {\n if (typeof window === 'undefined' || typeof document === 'undefined') return this;\n \n Toast.trigger('beforeShow', this);\n injectStyles();\n \n const container = this._getContainer();\n const { theme, c, t } = this._palette();\n \n this._limitToasts(container);\n \n const el = document.createElement('div');\n el.className = this._buildClassName(theme);\n el.setAttribute('role', (this.type === 'error' || this.type === 'warning') ? 'alert' : 'status');\n el.setAttribute('aria-live', this.type === 'error' ? 'assertive' : 'polite');\n el.dataset.id = this.id;\n \n this._applyStyles(el, theme, t);\n this._buildContent(el, c);\n \n this.el = el;\n // Chrome bug: column-reverse + appendChild 会导致重叠。改用 column + insertBefore\n const pos = this.config.position || 'top-right';\n if (pos.startsWith('top')) {\n container.insertBefore(el, container.firstChild);\n } else {\n container.appendChild(el);\n }\n \n this._bindEvents(el);\n this._startTimer();\n \n // 进入动画\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n el.classList.add('met-show');\n });\n });\n \n if (typeof this.config.onShow === 'function') {\n try {\n this.config.onShow(this);\n } catch (e) {\n console.error('onShow callback error:', e);\n }\n }\n \n Toast.trigger('afterShow', this);\n \n return this;\n }\n\n _getContainer() {\n const position = this.config.position || 'top-right';\n const zIndex = this.config.zIndex || 9999;\n \n if (_containerCache.has(document.body)) {\n const containers = _containerCache.get(document.body);\n if (containers.has(position)) {\n return containers.get(position);\n }\n } else {\n _containerCache.set(document.body, new Map());\n }\n \n const el = document.createElement('div');\n el.className = `met-container ${position}`;\n el.setAttribute('aria-label', 'Notifications');\n el.setAttribute('role', 'region');\n \n // cssText 完全接管布局,不依赖 CSS class\n const posStyles = {\n 'top-left': 'top:0;left:0;align-items:flex-start',\n 'top-center': 'top:0;left:0;right:0;align-items:center',\n 'top-right': 'top:0;right:0;align-items:flex-end',\n 'bottom-left': 'bottom:0;left:0;align-items:flex-start',\n 'bottom-center':'bottom:0;left:0;right:0;align-items:center',\n 'bottom-right': 'bottom:0;right:0;align-items:flex-end',\n };\n el.style.cssText = `\n display:flex;\n flex-direction:column;\n gap:${this.config.gap || 12}px;\n box-sizing:border-box;\n padding:${this.config.offset || 24}px;\n max-width:100vw;\n position:fixed;\n z-index:${zIndex};\n pointer-events:none;\n ${posStyles[position] || 'top:0;right:0;align-items:flex-end'}\n `;\n \n document.body.appendChild(el);\n _containerCache.get(document.body).set(position, el);\n \n return el;\n }\n\n _limitToasts(container) {\n const max = this.config.max || 6;\n const list = Array.from(container.querySelectorAll('.met-toast'));\n if (list.length >= max) {\n const first = list[0];\n const id = first && first.dataset.id;\n if (id) {\n const old = meToast._toasts.get(id);\n if (old) old.close(true);\n }\n }\n }\n\n _buildClassName(theme) {\n // CSS 支持的动画类型,未列出的 fallback 到 slide\n const CSS_ANIMS = ['slide','fade','scale','bounce','flip','rotate','zoom',\n 'slideUp','slideDown','slideLeft','slideRight'];\n const anim = CSS_ANIMS.includes(this.config.animation) ? this.config.animation : 'slide';\n return [\n 'met-toast',\n `met-${this.type}`,\n `met-theme-${theme}`,\n `met-anim-${anim}`,\n (this.config.closeOnClick || this.config.draggable) ? 'met-clickable' : '',\n this.config.className || '',\n ].filter(Boolean).join(' ');\n }\n\n _applyStyles(el, theme, t) {\n const widthValue = typeof this.config.width === 'number'\n ? `${this.config.width}px`\n : (typeof this.config.width === 'string' ? this.config.width : '360px');\n \n // 只强制核心布局属性,动画/滤镜/颜色由 CSS class 控制\n const set = (p, v) => el.style.setProperty(p, v, 'important');\n set('position', 'relative');\n set('flex-shrink', '0');\n set('min-width', '240px');\n set('max-width', 'calc(100vw - 48px)');\n set('width', widthValue);\n // 用户自定义样式最后应用\n if (this.config.style && Object.keys(this.config.style).length > 0) {\n Object.entries(this.config.style).forEach(([k, v]) => { el.style[k] = v; });\n }\n }\n\n _buildContent(el, c) {\n // 自定义渲染函数 — 完全接管 DOM 构建\n if (typeof this.config.render === 'function') {\n el.innerHTML = this.config.render(this);\n this.barEl = el.querySelector('.met-bar, .met-bar-v');\n return;\n }\n \n const showIcon = this.config.icon !== false && (this.iconHTML || ICONS[this.type]);\n const showClose = this.config.closeButton !== false;\n const showProgress = this.config.showProgress !== false && this.config.duration > 0;\n const showSide = (!showIcon && this.type !== 'default');\n \n const safeTitle = this.title ? `
${escapeHTML(this.title)}
` : '';\n const safeMessage = this.html\n ? `
${this.html}
`\n : (this.message ? `
${escapeHTML(this.message)}
` : '');\n \n const iconHTML = showIcon\n ? `
${this.iconHTML || ICONS[this.type]}
` : '';\n const closeHTML = showClose\n ? ``\n : '';\n const progressHTML = showProgress\n ? (this.config.progressDirection === 'vertical'\n ? `
`\n : `
`)\n : '';\n const sideHTML = showSide\n ? `
` : '';\n \n el.innerHTML = `\n ${iconHTML}\n ${sideHTML}\n
\n ${safeTitle}\n ${safeMessage}\n
\n ${closeHTML}\n ${progressHTML}\n `;\n \n this.barEl = el.querySelector('.met-bar, .met-bar-v');\n }\n\n _bindEvents(el) {\n const eventHandler = (e) => {\n const target = e.target;\n \n if (target.closest('.met-close')) {\n e.stopPropagation();\n this.close();\n return;\n }\n \n if (this.config.closeOnClick && !target.closest('.met-close')) {\n if (typeof this.config.onClick === 'function') {\n try {\n this.config.onClick(this);\n } catch (err) {\n console.error('onClick callback error:', err);\n }\n }\n this.close();\n return;\n }\n };\n \n el.addEventListener('click', eventHandler);\n this._cleanups.push(() => el.removeEventListener('click', eventHandler));\n \n if (this.config.pauseOnHover && this.config.duration > 0) {\n const mouseEnter = () => this._pause();\n const mouseLeave = () => this._resume();\n \n el.addEventListener('mouseenter', mouseEnter);\n el.addEventListener('mouseleave', mouseLeave);\n \n this._cleanups.push(() => {\n el.removeEventListener('mouseenter', mouseEnter);\n el.removeEventListener('mouseleave', mouseLeave);\n });\n }\n \n if (this.config.draggable) {\n this._bindDrag(el);\n }\n }\n\n _bindDrag(el) {\n let sx = 0, sy = 0, dx = 0, dy = 0, dragging = false;\n \n const down = (e) => {\n if (e.target.closest('.met-close')) return;\n dragging = true;\n sx = e.clientX; \n sy = e.clientY;\n el.setPointerCapture(e.pointerId);\n el.style.transition = 'none';\n this._pause();\n };\n \n const move = (e) => {\n if (!dragging) return;\n dx = e.clientX - sx; \n dy = e.clientY - sy;\n el.style.transform = `translate(${dx}px, ${dy}px) rotate(${dx * 0.1}deg)`;\n el.style.opacity = String(Math.max(0, 1 - Math.abs(dx) / 200));\n };\n \n const up = (e) => {\n if (!dragging) return;\n dragging = false;\n el.releasePointerCapture(e.pointerId);\n el.style.transition = '';\n \n if (Math.abs(dx) > 120) {\n el.style.transform = `translate(${dx * 2}px, ${dy}px) rotate(${dx * 0.2}deg)`;\n el.style.opacity = '0';\n setTimeout(() => this.close(true), 250);\n } else {\n el.style.transform = '';\n el.style.opacity = '';\n this._resume();\n }\n dx = dy = 0;\n };\n \n el.addEventListener('pointerdown', down);\n el.addEventListener('pointermove', move);\n el.addEventListener('pointerup', up);\n el.addEventListener('pointercancel', up);\n \n this._cleanups.push(() => {\n el.removeEventListener('pointerdown', down);\n el.removeEventListener('pointermove', move);\n el.removeEventListener('pointerup', up);\n el.removeEventListener('pointercancel', up);\n });\n }\n\n _startTimer() {\n if (this.config.duration <= 0) return;\n \n this.startedAt = Date.now();\n this.remaining = this.config.duration;\n \n const tick = () => {\n if (this.paused || this.closing) return;\n \n const elapsed = Date.now() - this.startedAt;\n this.remaining = Math.max(0, this.config.duration - elapsed);\n \n if (this.barEl) {\n const ratio = this.remaining / this.config.duration;\n const t = this.config.progressDirection === 'vertical'\n ? `scaleY(${ratio})` : `scaleX(${ratio})`;\n this.barEl.style.transform = t;\n }\n \n if (this.remaining <= 0) { \n this.close(); \n return; \n }\n \n this.rafId = requestAnimationFrame(tick);\n };\n \n this.rafId = requestAnimationFrame(tick);\n }\n\n _pause() {\n if (this.paused || this.config.duration <= 0) return;\n this.paused = true;\n cancelAnimationFrame(this.rafId);\n this.remaining = Math.max(0, this.config.duration - (Date.now() - this.startedAt));\n }\n\n _resume() {\n if (!this.paused) return;\n this.paused = false;\n this.startedAt = Date.now() - (this.config.duration - this.remaining);\n this._startTimer();\n }\n\n update(partial) {\n Toast.trigger('beforeUpdate', this);\n if (partial.type) this.type = partial.type;\n if (partial.title !== undefined) this.title = partial.title;\n if (partial.message !== undefined) this.message = partial.message;\n if (partial.html !== undefined) this.html = partial.html;\n \n if (!this.el) { Toast.trigger('afterUpdate', this); return this; }\n \n const content = this.el.querySelector('.met-content');\n if (content) {\n const safeTitle = this.title ? `
${escapeHTML(this.title)}
` : '';\n const safeMessage = this.html\n ? `
${this.html}
`\n : (this.message ? `
${escapeHTML(this.message)}
` : '');\n content.innerHTML = `${safeTitle}${safeMessage}`;\n }\n \n // resetTimerOnUpdate: 更新内容后重置计时器\n if (this.config.resetTimerOnUpdate && this.config.duration > 0) {\n cancelAnimationFrame(this.rafId);\n this.startedAt = Date.now();\n this.remaining = this.config.duration;\n this._startTimer();\n }\n \n if (typeof this.config.onUpdate === 'function') {\n try { this.config.onUpdate(this); } catch (e) { console.error('onUpdate callback error:', e); }\n }\n \n Toast.trigger('afterUpdate', this);\n return this;\n }\n\n close(immediate = false) {\n if (this.closing) return;\n this.closing = true;\n \n Toast.trigger('beforeClose', this);\n cancelAnimationFrame(this.rafId);\n this._cleanups.forEach(fn => { try { fn(); } catch (_) {} });\n this._cleanups = [];\n \n const el = this.el;\n if (!el) { \n meToast._remove(this.id); \n return; \n }\n \n // 立即脱离文档流:记录当前位置,然后设为 absolute,让下方 toast 自然上移\n const container = el.parentNode;\n if (container && !immediate) {\n const elRect = el.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n el.style.position = 'absolute';\n el.style.top = (elRect.top - containerRect.top) + 'px';\n el.style.left = (elRect.left - containerRect.left) + 'px';\n el.style.width = elRect.width + 'px';\n el.style.margin = '0';\n }\n \n el.classList.add('met-leaving');\n el.classList.remove('met-show');\n \n const pos = this.config.position || 'top-right';\n const isRTL = getLocaleDirection(getCurrentLocale()) === 'rtl';\n let transform = 'scale(.96)';\n \n if (pos.includes('right')) transform = isRTL ? 'translateX(-120%)' : 'translateX(120%)';\n else if (pos.includes('left')) transform = isRTL ? 'translateX(120%)' : 'translateX(-120%)';\n else if (pos.startsWith('top')) transform = 'translateY(-20px)';\n else transform = 'translateY(20px)';\n \n el.style.transform = transform;\n el.style.opacity = '0';\n \n setTimeout(() => this._destroy(), immediate ? 0 : 300);\n }\n\n _destroy() {\n if (this.el && this.el.parentNode) {\n this.el.parentNode.removeChild(this.el);\n }\n this.el = null;\n \n if (typeof this.config.onClose === 'function') {\n try {\n this.config.onClose(this);\n } catch (e) {\n console.error('onClose callback error:', e);\n }\n }\n \n Toast.trigger('afterClose', this);\n meToast._remove(this.id);\n }\n}\n\n// ========== HTML模板辅助函数 ==========\n\n/**\n * 按钮行模板 — confirm/prompt 共用\n * @param {string} buttons - 按钮HTML\n * @returns {string} 按钮行HTML\n */\nconst _btnRow = (buttons) => `\n
\n ${buttons}\n
`;\n\n/**\n * 确认对话框模板\n * @param {Object} opts - 选项\n * @returns {string} HTML\n */\nconst _confirmHTML = (opts) => {\n const confirmText = opts.confirmText || i18nT('confirm');\n const cancelText = opts.cancelText || i18nT('cancel');\n const confirmColor = opts.confirmColor || '#10b981';\n const cancelColor = opts.cancelColor || '#6b7280';\n return _btnRow(`\n \n \n `);\n};\n\n/**\n * 输入对话框模板\n * @param {Object} opts - 选项\n * @returns {string} HTML\n */\nconst _promptHTML = (opts) => {\n const submitText = opts.submitText || i18nT('confirm');\n const cancelText = opts.cancelText || i18nT('cancel');\n const submitColor = opts.submitColor || '#3b82f6';\n const cancelColor = opts.cancelColor || '#6b7280';\n return `\n \n ${_btnRow(`\n \n \n `)}\n `;\n};\n\n/**\n * 进度条模板\n * @param {Object} opts - 选项\n * @returns {string} HTML\n */\nconst _progressHTML = (opts) => {\n const color = opts.progressColor || '#3b82f6';\n return `\n
\n
\n
\n
0%
\n `;\n};\n\n/**\n * Action Toast 模板\n * @param {Array} actions - 操作按钮数组 [{ text, onClick, style }]\n * @returns {string} HTML\n */\nconst _actionHTML = (actions) => {\n if (!Array.isArray(actions) || actions.length === 0) return '';\n const buttons = actions.map((a, i) => {\n const bg = a.style?.background || a.color || '#6366f1';\n const cls = `met-action-btn-${i}`;\n return ``;\n }).join('');\n return _btnRow(buttons);\n};\n\n/**\n * 主对象\n */\nconst meToast = {\n _toasts: new Map(),\n _config: { ...DEFAULTS },\n version: '2.0.0',\n \n configure(opts) {\n if (!opts || typeof opts !== 'object') return this;\n this._config = { ...this._config, ...opts };\n \n if (opts.theme) {\n applyTheme(opts.theme);\n }\n \n if (opts.locale) {\n setCurrentLocale(opts.locale);\n }\n \n return this;\n },\n \n _emit(opts) {\n const merged = { ...this._config, ...opts };\n if (merged.content && !merged.message) merged.message = merged.content;\n \n const t = new Toast(merged);\n t.create();\n this._toasts.set(t.id, t);\n \n return t;\n },\n \n _remove(id) { \n this._toasts.delete(id); \n },\n \n find(id) { \n if (!id) return undefined;\n return this._toasts.get(id); \n },\n \n /**\n * 显示默认Toast\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\n * @param {Object} [opts] - 选项对象(当第一个参数是字符串时)\n */\n show(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'default');\n return this._emit(normalized);\n },\n \n /**\n * 显示成功Toast\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\n * @param {Object} [opts] - 选项对象\n */\n success(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'success');\n return this._emit(normalized);\n },\n \n /**\n * 显示错误Toast\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\n * @param {Object} [opts] - 选项对象\n */\n error(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'error');\n return this._emit(normalized);\n },\n \n /**\n * 显示警告Toast\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\n * @param {Object} [opts] - 选项对象\n */\n warning(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'warning');\n return this._emit(normalized);\n },\n \n /**\n * 显示信息Toast\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\n * @param {Object} [opts] - 选项对象\n */\n info(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'info');\n return this._emit(normalized);\n },\n \n /**\n * 显示加载Toast\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\n * @param {Object} [opts] - 选项对象\n */\n loading(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'loading');\n normalized.duration = 0;\n normalized.closeButton = false;\n normalized.showProgress = false;\n \n const t = this._emit(normalized);\n \n return {\n id: t.id,\n success: (msg, o = {}) => this._resolve(t, 'success', msg, o),\n error: (msg, o = {}) => this._resolve(t, 'error', msg, o),\n info: (msg, o = {}) => this._resolve(t, 'info', msg, o),\n warning: (msg, o = {}) => this._resolve(t, 'warning', msg, o),\n update: (p) => { t.update(p); return this; },\n dismiss: () => t.close(),\n };\n },\n \n promise(promise, opts = {}) {\n if (!promise || typeof promise.then !== 'function') {\n console.error('MeToast.promise: first argument must be a Promise');\n return Promise.reject(new Error('Invalid promise'));\n }\n \n const loadingMsg = opts.loading || i18nT('loading');\n const successMsg = opts.success || i18nT('success');\n const errorMsg = opts.error || i18nT('error');\n \n const ctrl = this.loading(loadingMsg);\n \n return Promise.resolve(promise)\n .then((data) => { \n ctrl.success(successMsg); \n return data; \n })\n .catch((err) => { \n ctrl.error(errorMsg); \n throw err; \n });\n },\n \n _resolve(loadingToast, type, message, opts) {\n const id = loadingToast.id;\n const old = this._toasts.get(id);\n if (!old) return null;\n \n const position = old.config.position;\n old.close();\n \n return this._emit({ ...opts, type, message, position });\n },\n \n /**\n * 确认对话框\n * @param {string} message - 消息内容\n * @param {Object} [opts] - 选项\n * @returns {Promise}\n */\n confirm(message, opts = {}) {\n if (typeof message !== 'string') {\n console.error('MeToast.confirm: message must be a string');\n return Promise.resolve(false);\n }\n \n return new Promise((resolve) => {\n let resolved = false;\n const safeResolve = (val) => { if (!resolved) { resolved = true; clearTimeout(safetyTimeout); resolve(val); } };\n const safetyTimeout = setTimeout(() => safeResolve(false), 10000);\n \n const t = this._emit({\n ...opts,\n type: opts.type || 'warning',\n message,\n duration: 0,\n closeButton: false,\n closeOnClick: false,\n draggable: false,\n html: _confirmHTML(opts),\n });\n \n setTimeout(() => {\n const confirmBtn = t.el?.querySelector('.met-confirm-btn');\n const cancelBtn = t.el?.querySelector('.met-cancel-btn');\n \n if (confirmBtn) {\n confirmBtn.addEventListener('click', () => {\n t.close();\n safeResolve(true);\n });\n }\n \n if (cancelBtn) {\n cancelBtn.addEventListener('click', () => {\n t.close();\n safeResolve(false);\n });\n }\n }, 0);\n });\n },\n \n /**\n * 输入对话框\n * @param {string} message - 消息内容\n * @param {Object} [opts] - 选项\n * @returns {Promise}\n */\n prompt(message, opts = {}) {\n if (typeof message !== 'string') {\n console.error('MeToast.prompt: message must be a string');\n return Promise.resolve(null);\n }\n \n return new Promise((resolve) => {\n let resolved = false;\n const safeResolve = (val) => { if (!resolved) { resolved = true; clearTimeout(safetyTimeout); resolve(val); } };\n const safetyTimeout = setTimeout(() => safeResolve(null), 10000);\n \n const t = this._emit({\n ...opts,\n type: opts.type || 'info',\n message,\n duration: 0,\n closeButton: false,\n closeOnClick: false,\n draggable: false,\n html: _promptHTML(opts),\n });\n \n setTimeout(() => {\n const input = t.el?.querySelector('.met-input');\n const submitBtn = t.el?.querySelector('.met-submit-btn');\n const cancelBtn = t.el?.querySelector('.met-cancel-btn');\n \n if (input) {\n input.focus();\n \n input.addEventListener('keydown', (e) => {\n if (e.key === 'Enter') {\n t.close();\n safeResolve(input.value);\n }\n });\n }\n \n if (submitBtn) {\n submitBtn.addEventListener('click', () => {\n t.close();\n safeResolve(input?.value || null);\n });\n }\n \n if (cancelBtn) {\n cancelBtn.addEventListener('click', () => {\n t.close();\n safeResolve(null);\n });\n }\n }, 0);\n });\n },\n \n /**\n * 进度Toast\n * @param {string|Object} messageOrOpts - 消息或选项\n * @param {Object} [opts] - 选项\n * @returns {Object} 控制对象\n */\n progress(messageOrOpts, opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'info');\n normalized.duration = 0;\n normalized.closeButton = false;\n normalized.showProgress = false;\n \n const t = this._emit({\n ...normalized,\n html: _progressHTML(opts),\n });\n \n return {\n id: t.id,\n \n setProgress(percent) {\n const fill = t.el?.querySelector('.met-progress-fill');\n const text = t.el?.querySelector('.met-progress-text');\n \n if (fill) {\n fill.style.width = `${Math.min(100, Math.max(0, percent))}%`;\n }\n \n if (text) {\n text.textContent = `${Math.round(percent)}%`;\n }\n },\n \n complete(message) {\n this.setProgress(100);\n setTimeout(() => {\n t.update({\n type: 'success',\n message: message || i18nT('success'),\n html: '',\n });\n setTimeout(() => t.close(), 1000);\n }, 300);\n },\n \n error(message) {\n t.update({\n type: 'error',\n message: message || i18nT('error'),\n html: '',\n });\n setTimeout(() => t.close(), 2000);\n },\n \n dismiss() {\n t.close();\n },\n };\n },\n \n /**\n * 倒计时Toast\n * @param {string} message - 消息内容\n * @param {number} seconds - 秒数\n * @param {Object} [opts] - 选项\n * @returns {Object} 控制对象\n */\n countdown(message, seconds = 10, opts = {}) {\n if (typeof message !== 'string') {\n console.error('MeToast.countdown: message must be a string');\n return { cancel: () => {}, pause: () => {}, resume: () => {} };\n }\n \n let remaining = Math.max(1, parseInt(seconds) || 10);\n let timer = null;\n \n const t = this._emit({\n ...opts,\n type: opts.type || 'warning',\n message: message.replace(/\\{seconds\\}/g, remaining),\n duration: 0,\n closeButton: true,\n showProgress: false,\n });\n \n const tick = () => {\n remaining--;\n \n if (remaining <= 0) {\n clearInterval(timer);\n t.close();\n \n if (typeof opts.onComplete === 'function') {\n try {\n opts.onComplete();\n } catch (e) {\n console.error('countdown onComplete error:', e);\n }\n }\n return;\n }\n \n t.update({\n message: message.replace(/\\{seconds\\}/g, remaining),\n });\n };\n \n timer = setInterval(tick, 1000);\n \n return {\n id: t.id,\n \n cancel() {\n clearInterval(timer);\n t.close();\n },\n \n pause() {\n clearInterval(timer);\n },\n \n resume() {\n clearInterval(timer);\n timer = setInterval(tick, 1000);\n },\n };\n },\n \n /**\n * Action Toast — 带操作按钮的通知\n * @param {string|Object} messageOrOpts - 消息\n * @param {Array} actions - 操作按钮 [{ text, onClick, color }]\n * @param {Object} [opts] - 选项\n * @returns {Object} toast实例 + dismiss\n */\n action(messageOrOpts, actions = [], opts = {}) {\n const normalized = normalizeArgs([messageOrOpts, opts], 'info');\n normalized.duration = opts.duration ?? 0;\n normalized.closeButton = opts.closeButton ?? true;\n \n const t = this._emit({\n ...normalized,\n html: (normalized.html || '') + _actionHTML(actions),\n });\n \n if (Array.isArray(actions)) {\n setTimeout(() => {\n actions.forEach((a, i) => {\n const btn = t.el?.querySelector(`.met-action-btn-${i}`);\n if (btn && typeof a.onClick === 'function') {\n btn.addEventListener('click', () => {\n try { a.onClick(t); } catch (e) { console.error('Action onClick error:', e); }\n if (a.close !== false) t.close();\n });\n }\n });\n }, 0);\n }\n \n return { id: t.id, toast: t, dismiss: () => t.close() };\n },\n\n /**\n * 队列Toast\n * @param {Array} messages - 消息数组\n * @param {Object} [opts] - 选项\n * @returns {Promise}\n */\n queue(messages, opts = {}) {\n if (!Array.isArray(messages)) {\n console.error('MeToast.queue: messages must be an array');\n return { then: (fn) => Promise.resolve().then(fn), cancel: () => {} };\n }\n \n let cancelled = false;\n const promise = new Promise((resolve) => {\n let index = 0;\n const delay = opts.delay || 1000;\n const userOnClose = opts.onClose;\n \n const showNext = () => {\n if (cancelled || index >= messages.length) {\n resolve();\n return;\n }\n \n const message = messages[index];\n index++;\n \n const msg = typeof message === 'string' ? message : (message?.message || '');\n const msgObj = (typeof message === 'object' && message !== null) ? message : {};\n const msgOnClose = msgObj.onClose;\n \n this._emit({\n ...opts,\n ...msgObj,\n message: msg,\n duration: msgObj.duration || opts.duration || 3000,\n onClose: (toast) => {\n if (typeof msgOnClose === 'function') {\n try { msgOnClose(toast); } catch (_) {}\n }\n if (typeof userOnClose === 'function') {\n try { userOnClose(toast); } catch (_) {}\n }\n setTimeout(showNext, delay);\n },\n });\n };\n \n showNext();\n });\n return {\n then: (fn, rj) => promise.then(fn, rj),\n catch: (rj) => promise.catch(rj),\n cancel: () => { cancelled = true; },\n };\n },\n \n /**\n * 堆叠Toast\n * @param {Array} messages - 消息数组\n * @param {Object} [opts] - 选项\n */\n stack(messages, opts = {}) {\n if (!Array.isArray(messages)) {\n console.error('MeToast.stack: messages must be an array');\n return;\n }\n \n messages.forEach((message, index) => {\n setTimeout(() => {\n const msg = typeof message === 'string' ? message : (message?.message || '');\n \n this._emit({\n ...opts,\n ...((typeof message === 'object' && message !== null) ? message : {}),\n message: msg,\n });\n }, index * (opts.stagger || 100));\n });\n },\n \n dismiss(id) {\n if (id) { \n const t = this._toasts.get(id); \n if (t) t.close(); \n return; \n }\n this._toasts.forEach(t => t.close());\n },\n \n clear(position) {\n this._toasts.forEach(t => {\n if (!position || t.config.position === position) t.close();\n });\n },\n \n destroy() {\n this.dismiss();\n \n if (typeof document !== 'undefined') {\n const containers = document.querySelectorAll('.met-container');\n containers.forEach(c => c.parentNode && c.parentNode.removeChild(c));\n \n const style = document.getElementById('metona-toast-styles');\n if (style) style.parentNode.removeChild(style);\n }\n \n this._toasts.clear();\n _containerCache.clear();\n },\n \n getAll() {\n return new Map(this._toasts);\n },\n \n count() {\n return this._toasts.size;\n },\n \n /**\n * 创建Toast分组 — 返回一个自动添加 group 参数的子对象\n * @param {string} name - 分组名称\n * @returns {Object}\n */\n group(name) {\n const self = this;\n const methods = ['show','success','error','warning','info','loading','action'];\n const g = { _group: name };\n methods.forEach(m => {\n g[m] = (...args) => {\n const lastArg = args[args.length - 1];\n const isObj = typeof lastArg === 'object' && lastArg !== null && !Array.isArray(lastArg);\n // 单对象参数:直接合并group\n if (isObj && args.length === 1) {\n return self[m]({ ...lastArg, group: name });\n }\n // 末尾是配置对象:pop后合并\n if (isObj) {\n args.pop();\n return self[m](...args, { ...lastArg, group: name });\n }\n // 无配置对象\n return self[m](...args, { group: name });\n };\n });\n g.dismiss = () => self.dismissGroup(name);\n g.count = () => self._groupCount(name);\n return g;\n },\n \n /**\n * 按组关闭Toast\n * @param {string} name - 分组名称\n */\n dismissGroup(name) {\n this._toasts.forEach(t => { if (t.group === name) t.close(); });\n },\n \n _groupCount(name) {\n let c = 0;\n this._toasts.forEach(t => { if (t.group === name) c++; });\n return c;\n },\n};\n\nexport { meToast as default, meToast, Toast };\n","/**\n * MetonaToast Animations - 动画管理\n * @module animations\n * @version 2.0.0\n * @description 动画效果管理和自定义\n */\n\nimport { ANIMATIONS } from './constants.js';\n\n// 动画缓存\nconst animationCache = new Map();\n\n/**\n * 动画管理器类\n */\nclass AnimationManager {\n constructor() {\n this.animations = new Map();\n this.activeAnimations = new Map();\n this.animationId = 0;\n \n // 注册默认动画\n this._registerDefaults();\n }\n \n /**\n * 注册默认动画\n */\n _registerDefaults() {\n Object.entries(ANIMATIONS).forEach(([name, config]) => {\n this.register(name, config);\n });\n }\n \n /**\n * 注册动画\n * @param {string} name - 动画名称\n * @param {Object} config - 动画配置\n */\n register(name, config) {\n const animation = {\n name,\n enter: config.enter || {},\n leave: config.leave || {},\n duration: config.duration || 300,\n easing: config.easing || 'cubic-bezier(0.4, 0, 0.2, 1)',\n delay: config.delay || 0,\n iterations: config.iterations || 1,\n direction: config.direction || 'normal',\n fillMode: config.fillMode || 'forwards',\n };\n \n this.animations.set(name, animation);\n animationCache.set(name, animation);\n }\n \n /**\n * 注销动画\n * @param {string} name - 动画名称\n */\n unregister(name) {\n this.animations.delete(name);\n animationCache.delete(name);\n }\n \n /**\n * 获取动画配置\n * @param {string} name - 动画名称\n * @returns {Object|null} 动画配置\n */\n get(name) {\n return this.animations.get(name) || ANIMATIONS[name] || null;\n }\n \n /**\n * 应用动画\n * @param {HTMLElement} element - 目标元素\n * @param {string} animationName - 动画名称\n * @param {Object} options - 额外选项\n * @returns {Promise} 动画完成Promise\n */\n apply(element, animationName, options = {}) {\n return new Promise((resolve, reject) => {\n const animation = this.get(animationName);\n if (!animation) {\n resolve();\n return;\n }\n \n const config = { ...animation, ...options };\n const animId = ++this.animationId;\n \n // 设置初始状态\n Object.assign(element.style, config.enter);\n \n // 强制重绘\n element.offsetHeight;\n \n // 创建动画\n const keyframes = [\n { ...config.enter },\n { ...config.leave },\n ];\n \n const animationOptions = {\n duration: config.duration,\n easing: config.easing,\n delay: config.delay,\n iterations: config.iterations,\n direction: config.direction,\n fill: config.fillMode,\n };\n \n // 应用动画\n const anim = element.animate(keyframes, animationOptions);\n \n // 存储活动动画\n this.activeAnimations.set(animId, {\n element,\n animation: anim,\n config,\n });\n \n // 动画完成处理\n anim.onfinish = () => {\n Object.assign(element.style, config.leave);\n this.activeAnimations.delete(animId);\n resolve();\n };\n \n // 动画取消处理 — reject 让调用者感知取消\n anim.oncancel = () => {\n this.activeAnimations.delete(animId);\n reject(new Error(`Animation \"${animationName}\" was cancelled`));\n };\n });\n }\n \n /**\n * 应用进入动画\n * @param {HTMLElement} element - 目标元素\n * @param {string} animationName - 动画名称\n * @param {Object} options - 额外选项\n * @returns {Promise} 动画完成Promise\n */\n enter(element, animationName, options = {}) {\n const animation = this.get(animationName);\n if (!animation) {\n return Promise.resolve();\n }\n \n return this.apply(element, animationName, {\n ...options,\n direction: 'normal',\n });\n }\n \n /**\n * 应用离开动画\n * @param {HTMLElement} element - 目标元素\n * @param {string} animationName - 动画名称\n * @param {Object} options - 额外选项\n * @returns {Promise} 动画完成Promise\n */\n leave(element, animationName, options = {}) {\n const animation = this.get(animationName);\n if (!animation) {\n return Promise.resolve();\n }\n \n return this.apply(element, animationName, {\n ...options,\n direction: 'reverse',\n });\n }\n \n /**\n * 取消所有动画\n */\n cancelAll() {\n this.activeAnimations.forEach(({ animation }) => {\n animation.cancel();\n });\n \n this.activeAnimations.clear();\n }\n \n /**\n * 取消元素动画\n * @param {HTMLElement} element - 目标元素\n */\n cancel(element) {\n this.activeAnimations.forEach(({ element: el, animation }, id) => {\n if (el === element) {\n animation.cancel();\n this.activeAnimations.delete(id);\n }\n });\n }\n \n /**\n * 暂停所有动画\n */\n pauseAll() {\n this.activeAnimations.forEach(({ animation }) => {\n animation.pause();\n });\n }\n \n /**\n * 恢复所有动画\n */\n resumeAll() {\n this.activeAnimations.forEach(({ animation }) => {\n animation.play();\n });\n }\n \n /**\n * 暂停元素动画\n * @param {HTMLElement} element - 目标元素\n */\n pause(element) {\n this.activeAnimations.forEach(({ element: el, animation }) => {\n if (el === element) {\n animation.pause();\n }\n });\n }\n \n /**\n * 恢复元素动画\n * @param {HTMLElement} element - 目标元素\n */\n resume(element) {\n this.activeAnimations.forEach(({ element: el, animation }) => {\n if (el === element) {\n animation.play();\n }\n });\n }\n \n /**\n * 获取活动动画数量\n * @returns {number} 动画数量\n */\n getActiveCount() {\n return this.activeAnimations.size;\n }\n \n /**\n * 获取所有活动动画\n * @returns {Map} 活动动画映射\n */\n getActiveAnimations() {\n return new Map(this.activeAnimations);\n }\n \n /**\n * 检查元素是否有活动动画\n * @param {HTMLElement} element - 目标元素\n * @returns {boolean} 是否有活动动画\n */\n hasActiveAnimation(element) {\n for (const { element: el } of this.activeAnimations.values()) {\n if (el === element) {\n return true;\n }\n }\n return false;\n }\n \n /**\n * 获取动画配置\n * @returns {Object} 动画配置\n */\n getConfig() {\n return {\n animations: Array.from(this.animations.keys()),\n activeCount: this.getActiveCount(),\n };\n }\n \n /**\n * 重置动画管理器\n */\n reset() {\n this.cancelAll();\n this.animations.clear();\n this._registerDefaults();\n }\n \n /**\n * 销毁动画管理器\n */\n destroy() {\n this.cancelAll();\n this.animations.clear();\n this.activeAnimations.clear();\n }\n}\n\n/**\n * 预设动画效果\n */\nconst presetAnimations = {\n bounce: {\n enter: { transform: 'translateY(-80px)', opacity: 0 },\n leave: { transform: 'translateY(20px)', opacity: 1 },\n duration: 650,\n easing: 'ease',\n },\n slideUp: {\n enter: { transform: 'translateY(60px)', opacity: 0 },\n leave: { transform: 'translateY(0)', opacity: 1 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n slideDown: {\n enter: { transform: 'translateY(-60px)', opacity: 0 },\n leave: { transform: 'translateY(0)', opacity: 1 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n slideLeft: {\n enter: { transform: 'translateX(-90px)', opacity: 0 },\n leave: { transform: 'translateX(0)', opacity: 1 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n slideRight: {\n enter: { transform: 'translateX(90px)', opacity: 0 },\n leave: { transform: 'translateX(0)', opacity: 1 },\n duration: 400,\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n },\n\n};\n\n// 注册预设动画\nObject.entries(presetAnimations).forEach(([name, config]) => {\n ANIMATIONS[name] = config;\n});\n\n/**\n * 创建动画管理器实例\n * @returns {AnimationManager} 动画管理器实例\n */\nexport const createAnimationManager = () => {\n return new AnimationManager();\n};\n\n// 创建默认实例\nconst defaultAnimationManager = createAnimationManager();\n\n/**\n * 动画工具函数\n */\nexport const animationUtils = {\n /**\n * 应用动画\n * @param {HTMLElement} element - 目标元素\n * @param {string} animationName - 动画名称\n * @param {Object} options - 额外选项\n * @returns {Promise} 动画完成Promise\n */\n apply(element, animationName, options = {}) {\n return defaultAnimationManager.apply(element, animationName, options);\n },\n \n /**\n * 应用进入动画\n * @param {HTMLElement} element - 目标元素\n * @param {string} animationName - 动画名称\n * @param {Object} options - 额外选项\n * @returns {Promise} 动画完成Promise\n */\n enter(element, animationName, options = {}) {\n return defaultAnimationManager.enter(element, animationName, options);\n },\n \n /**\n * 应用离开动画\n * @param {HTMLElement} element - 目标元素\n * @param {string} animationName - 动画名称\n * @param {Object} options - 额外选项\n * @returns {Promise} 动画完成Promise\n */\n leave(element, animationName, options = {}) {\n return defaultAnimationManager.leave(element, animationName, options);\n },\n \n /**\n * 取消所有动画\n */\n cancelAll() {\n defaultAnimationManager.cancelAll();\n },\n \n /**\n * 取消元素动画\n * @param {HTMLElement} element - 目标元素\n */\n cancel(element) {\n defaultAnimationManager.cancel(element);\n },\n \n /**\n * 暂停所有动画\n */\n pauseAll() {\n defaultAnimationManager.pauseAll();\n },\n \n /**\n * 恢复所有动画\n */\n resumeAll() {\n defaultAnimationManager.resumeAll();\n },\n \n /**\n * 暂停元素动画\n * @param {HTMLElement} element - 目标元素\n */\n pause(element) {\n defaultAnimationManager.pause(element);\n },\n \n /**\n * 恢复元素动画\n * @param {HTMLElement} element - 目标元素\n */\n resume(element) {\n defaultAnimationManager.resume(element);\n },\n \n /**\n * 获取活动动画数量\n * @returns {number} 动画数量\n */\n getActiveCount() {\n return defaultAnimationManager.getActiveCount();\n },\n \n /**\n * 检查元素是否有活动动画\n * @param {HTMLElement} element - 目标元素\n * @returns {boolean} 是否有活动动画\n */\n hasActiveAnimation(element) {\n return defaultAnimationManager.hasActiveAnimation(element);\n },\n \n /**\n * 注册动画\n * @param {string} name - 动画名称\n * @param {Object} config - 动画配置\n */\n register(name, config) {\n defaultAnimationManager.register(name, config);\n },\n \n /**\n * 注销动画\n * @param {string} name - 动画名称\n */\n unregister(name) {\n defaultAnimationManager.unregister(name);\n },\n \n /**\n * 获取动画配置\n * @param {string} name - 动画名称\n * @returns {Object|null} 动画配置\n */\n get(name) {\n return defaultAnimationManager.get(name);\n },\n \n /**\n * 获取所有动画名称\n * @returns {Array} 动画名称数组\n */\n getAnimationNames() {\n return Array.from(defaultAnimationManager.animations.keys());\n },\n \n /**\n * 获取动画配置\n * @returns {Object} 动画配置\n */\n getConfig() {\n return defaultAnimationManager.getConfig();\n },\n \n /**\n * 重置动画管理器\n */\n reset() {\n defaultAnimationManager.reset();\n },\n \n /**\n * 销毁动画管理器\n */\n destroy() {\n defaultAnimationManager.destroy();\n },\n};\n\n/**\n * 动画预设\n */\nexport const animationPresets = presetAnimations;\n\n/**\n * 创建自定义动画\n * @param {Object} config - 动画配置\n * @returns {Object} 动画配置\n */\nexport const createAnimation = (config) => {\n return {\n enter: config.enter || {},\n leave: config.leave || {},\n duration: config.duration || 300,\n easing: config.easing || 'cubic-bezier(0.4, 0, 0.2, 1)',\n delay: config.delay || 0,\n iterations: config.iterations || 1,\n direction: config.direction || 'normal',\n fillMode: config.fillMode || 'forwards',\n };\n};\n\n/**\n * 组合动画\n * @param {Array} animations - 动画数组\n * @returns {Object} 组合后的动画配置\n */\nexport const combineAnimations = (animations) => {\n const combined = {\n enter: {},\n leave: {},\n duration: 0,\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n delay: 0,\n iterations: 1,\n direction: 'normal',\n fillMode: 'forwards',\n };\n \n animations.forEach((anim) => {\n if (anim.enter) {\n Object.assign(combined.enter, anim.enter);\n }\n if (anim.leave) {\n Object.assign(combined.leave, anim.leave);\n }\n if (anim.duration) {\n combined.duration = Math.max(combined.duration, anim.duration);\n }\n if (anim.easing) {\n combined.easing = anim.easing;\n }\n if (anim.delay) {\n combined.delay = Math.max(combined.delay, anim.delay);\n }\n });\n \n return combined;\n};\n\n/**\n * 链式动画\n * @param {Array} animations - 动画数组\n * @returns {Promise} 动画完成Promise\n */\nexport const chainAnimations = async (element, animations) => {\n for (const anim of animations) {\n await defaultAnimationManager.apply(element, anim.name, anim.options);\n }\n};\n\n/**\n * 并行动画\n * @param {Array} animations - 动画数组\n * @returns {Promise} 动画完成Promise\n */\nexport const parallelAnimations = (element, animations) => {\n return Promise.all(\n animations.map((anim) => \n defaultAnimationManager.apply(element, anim.name, anim.options)\n )\n );\n};\n\n/**\n * 延迟动画\n * @param {number} delay - 延迟时间(毫秒)\n * @returns {Promise} Promise对象\n */\nexport const delayAnimation = (delay) => {\n return new Promise((resolve) => setTimeout(resolve, delay));\n};\n\n/**\n * 动画队列\n */\nexport class AnimationQueue {\n constructor() {\n this.queue = [];\n this.isProcessing = false;\n }\n \n /**\n * 添加动画到队列\n * @param {Function} animationFn - 动画函数\n * @returns {Promise} 动画完成Promise\n */\n add(animationFn) {\n return new Promise((resolve, reject) => {\n this.queue.push({\n fn: animationFn,\n resolve,\n reject,\n });\n \n this._process();\n });\n }\n \n /**\n * 处理队列\n */\n async _process() {\n if (this.isProcessing || this.queue.length === 0) {\n return;\n }\n \n this.isProcessing = true;\n \n while (this.queue.length > 0) {\n const { fn, resolve, reject } = this.queue.shift();\n \n try {\n const result = await fn();\n resolve(result);\n } catch (error) {\n reject(error);\n }\n }\n \n this.isProcessing = false;\n }\n \n /**\n * 清空队列\n */\n clear() {\n this.queue = [];\n }\n \n /**\n * 暂停队列\n */\n pause() {\n this.isProcessing = true;\n }\n \n /**\n * 恢复队列\n */\n resume() {\n this.isProcessing = false;\n this._process();\n }\n \n /**\n * 获取队列长度\n * @returns {number} 队列长度\n */\n get length() {\n return this.queue.length;\n }\n \n /**\n * 检查是否正在处理\n * @returns {boolean} 是否正在处理\n */\n get processing() {\n return this.isProcessing;\n }\n}\n\n/**\n * 创建动画队列\n * @returns {AnimationQueue} 动画队列实例\n */\nexport const createAnimationQueue = () => {\n return new AnimationQueue();\n};\n\n/**\n * 动画性能监控\n */\nexport class AnimationPerformanceMonitor {\n constructor() {\n this.metrics = {\n totalAnimations: 0,\n activeAnimations: 0,\n averageDuration: 0,\n maxDuration: 0,\n minDuration: Infinity,\n };\n \n this.history = [];\n }\n \n /**\n * 记录动画开始\n * @param {string} animationName - 动画名称\n */\n recordStart(animationName) {\n this.metrics.totalAnimations++;\n this.metrics.activeAnimations++;\n \n this.history.push({\n name: animationName,\n startTime: performance.now(),\n endTime: null,\n duration: null,\n });\n }\n \n /**\n * 记录动画结束\n * @param {string} animationName - 动画名称\n */\n recordEnd(animationName) {\n this.metrics.activeAnimations--;\n \n const entry = this.history.find(\n (h) => h.name === animationName && h.endTime === null\n );\n \n if (entry) {\n entry.endTime = performance.now();\n entry.duration = entry.endTime - entry.startTime;\n \n // 更新统计\n this.metrics.maxDuration = Math.max(this.metrics.maxDuration, entry.duration);\n this.metrics.minDuration = Math.min(this.metrics.minDuration, entry.duration);\n \n // 计算平均值\n const completed = this.history.filter((h) => h.duration !== null);\n this.metrics.averageDuration = \n completed.reduce((sum, h) => sum + h.duration, 0) / completed.length;\n }\n }\n \n /**\n * 获取指标\n * @returns {Object} 性能指标\n */\n getMetrics() {\n return { ...this.metrics };\n }\n \n /**\n * 获取历史记录\n * @returns {Array} 历史记录\n */\n getHistory() {\n return [...this.history];\n }\n \n /**\n * 重置监控\n */\n reset() {\n this.metrics = {\n totalAnimations: 0,\n activeAnimations: 0,\n averageDuration: 0,\n maxDuration: 0,\n minDuration: Infinity,\n };\n \n this.history = [];\n }\n}\n\n/**\n * 创建性能监控实例\n * @returns {AnimationPerformanceMonitor} 性能监控实例\n */\nexport const createPerformanceMonitor = () => {\n return new AnimationPerformanceMonitor();\n};\n\n/**\n * 动画缓存管理\n */\nexport const animationCacheManager = {\n /**\n * 缓存动画\n * @param {string} key - 缓存键\n * @param {Object} animation - 动画配置\n */\n set(key, animation) {\n animationCache.set(key, animation);\n },\n \n /**\n * 获取缓存动画\n * @param {string} key - 缓存键\n * @returns {Object|null} 动画配置\n */\n get(key) {\n return animationCache.get(key) || null;\n },\n \n /**\n * 检查缓存\n * @param {string} key - 缓存键\n * @returns {boolean} 是否存在\n */\n has(key) {\n return animationCache.has(key);\n },\n \n /**\n * 删除缓存\n * @param {string} key - 缓存键\n */\n delete(key) {\n animationCache.delete(key);\n },\n \n /**\n * 清空缓存\n */\n clear() {\n animationCache.clear();\n },\n \n /**\n * 获取缓存大小\n * @returns {number} 缓存大小\n */\n size() {\n return animationCache.size;\n },\n};\n\nexport { AnimationManager, defaultAnimationManager };\n","/**\n * MetonaToast Plugins - 插件系统\n * @module plugins\n * @version 2.0.0\n * @description 插件管理器 + 3 款预设插件 (keyboard / persistence / accessibility)\n */\n\nimport { t } from './i18n.js';\n\n/**\n * 插件管理器\n */\nclass PluginManager {\n constructor() {\n this.plugins = new Map();\n this.initialized = false;\n }\n\n register(name, plugin) {\n if (this.plugins.has(name)) {\n console.warn(`Plugin \"${name}\" is already registered`);\n return this;\n }\n if (!plugin || typeof plugin !== 'object' || (!plugin.name && !plugin.version)) {\n console.error(`Invalid plugin \"${name}\"`);\n return this;\n }\n\n this.plugins.set(name, { name, ...plugin, installed: false, enabled: true });\n\n if (plugin.install) {\n try { plugin.install(this); this.plugins.get(name).installed = true; }\n catch (e) { console.error(`Failed to install plugin \"${name}\":`, e); }\n }\n return this;\n }\n\n unregister(name) {\n const plugin = this.plugins.get(name);\n if (!plugin) return this;\n if (plugin.uninstall) {\n try { plugin.uninstall(this); } catch (e) { console.error(`Failed to uninstall plugin \"${name}\":`, e); }\n }\n this.plugins.delete(name);\n return this;\n }\n\n get(name) { return this.plugins.get(name) || null; }\n has(name) { return this.plugins.has(name); }\n getAll() { return Array.from(this.plugins.values()); }\n getNames() { return Array.from(this.plugins.keys()); }\n\n enable(name) {\n const p = this.plugins.get(name);\n if (p) p.enabled = true;\n return this;\n }\n disable(name) {\n const p = this.plugins.get(name);\n if (p) p.enabled = false;\n return this;\n }\n isEnabled(name) {\n const p = this.plugins.get(name);\n return p ? p.enabled : false;\n }\n\n destroy() {\n this.plugins.forEach((p, name) => {\n if (p.destroy) { try { p.destroy(this); } catch (e) {} }\n });\n this.plugins.clear();\n }\n}\n\n/**\n * 预设插件\n */\nconst presetPlugins = {\n\n /**\n * 键盘快捷键插件 — ESC 关闭所有 Toast\n */\n keyboard: {\n name: 'keyboard',\n version: '1.0.0',\n description: 'ESC 关闭所有 Toast',\n\n _handler: null,\n\n install() {\n if (typeof document === 'undefined') return;\n this._handler = (e) => {\n if (e.key === 'Escape') {\n // 点击所有关闭按钮\n document.querySelectorAll('.met-toast .met-close').forEach(btn => {\n try { btn.click(); } catch (_) {}\n });\n }\n };\n document.addEventListener('keydown', this._handler);\n },\n\n uninstall() {\n if (this._handler && typeof document !== 'undefined') {\n document.removeEventListener('keydown', this._handler);\n this._handler = null;\n }\n },\n },\n\n /**\n * 持久化插件 — 自动保存/加载配置到 localStorage\n */\n persistence: {\n name: 'persistence',\n version: '1.0.0',\n description: '自动持久化配置到 localStorage',\n storageKey: 'metona-toast-config',\n\n install() {\n // 加载已保存的配置\n if (typeof localStorage !== 'undefined') {\n try {\n const saved = localStorage.getItem(this.storageKey);\n return saved ? JSON.parse(saved) : null;\n } catch (_) { return null; }\n }\n return null;\n },\n\n save(config) {\n if (typeof localStorage !== 'undefined') {\n try { localStorage.setItem(this.storageKey, JSON.stringify(config)); } catch (_) {}\n }\n },\n\n uninstall() {\n if (typeof localStorage !== 'undefined') {\n try { localStorage.removeItem(this.storageKey); } catch (_) {}\n }\n },\n },\n\n /**\n * 无障碍插件 — 屏幕阅读器公告\n */\n accessibility: {\n name: 'accessibility',\n version: '1.0.0',\n description: '通过屏幕阅读器朗读 Toast 内容',\n\n announce(toast) {\n if (typeof document === 'undefined') return;\n const el = document.createElement('div');\n el.setAttribute('aria-live', 'assertive');\n el.setAttribute('aria-atomic', 'true');\n el.style.cssText = 'position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;';\n const typeName = t(toast.type) || toast.type;\n el.textContent = `${typeName}: ${toast.title || ''} ${toast.message || ''}`;\n document.body.appendChild(el);\n setTimeout(() => { if (el.parentNode) el.parentNode.removeChild(el); }, 3000);\n },\n },\n};\n\n/**\n * 插件工具\n */\nconst pluginUtils = {\n createManager() { return new PluginManager(); },\n register(name, plugin) { return defaultPluginManager.register(name, plugin); },\n unregister(name) { return defaultPluginManager.unregister(name); },\n get(name) { return defaultPluginManager.get(name); },\n has(name) { return defaultPluginManager.has(name); },\n getAll() { return defaultPluginManager.getAll(); },\n getNames() { return defaultPluginManager.getNames(); },\n enable(name) { return defaultPluginManager.enable(name); },\n disable(name) { return defaultPluginManager.disable(name); },\n isEnabled(name) { return defaultPluginManager.isEnabled(name); },\n getPreset(name) { return presetPlugins[name] || null; },\n getAllPresets() { return { ...presetPlugins }; },\n\n createPlugin(config) {\n return {\n name: config.name || 'custom',\n version: config.version || '1.0.0',\n description: config.description || '',\n hooks: config.hooks || {},\n install: config.install || null,\n uninstall: config.uninstall || null,\n ...config,\n };\n },\n\n validatePlugin(plugin) {\n const errors = [];\n if (!plugin || typeof plugin !== 'object') errors.push('Plugin must be an object');\n if (!plugin.name && !plugin.version) errors.push('Plugin must have a name or version');\n return { valid: errors.length === 0, errors };\n },\n};\n\nconst defaultPluginManager = new PluginManager();\n\nexport { presetPlugins, pluginUtils, defaultPluginManager, PluginManager };\n","/**\n * MetonaToast - 轻量级Toast通知库\n * @module metona-toast\n * @version 2.0.0\n * @author thzxx\n * @description 轻量、零依赖、精致美观的Toast通知库。单文件,开箱即用。\n * @license MIT\n */\n\nimport { meToast, Toast } from './core.js';\nimport { animationUtils } from './animations.js';\nimport { themeUtils } from './themes.js';\nimport { i18nUtils } from './i18n.js';\nimport { pluginUtils, presetPlugins } from './plugins.js';\nimport { DEFAULTS } from './constants.js';\n\n// 版本信息\nconst VERSION = '2.0.0';\n\n/**\n * 主对象增强\n */\nconst enhancedMeToast = {\n ...meToast,\n \n version: VERSION,\n \n animations: animationUtils,\n themes: themeUtils,\n i18n: i18nUtils,\n plugins: pluginUtils,\n presetPlugins,\n \n /**\n * 安装插件,并连接必要的生命周期钩子\n */\n use(plugin, options = {}) {\n if (typeof plugin === 'string') {\n const preset = presetPlugins[plugin];\n if (!preset) {\n console.warn(`Preset plugin \"${plugin}\" not found`);\n return this;\n }\n this.plugins.register(plugin, { ...preset, ...options });\n\n // 连接插件钩子\n if (plugin === 'accessibility') {\n Toast.on('afterShow', (toast) => preset.announce(toast));\n }\n if (plugin === 'persistence') {\n const saved = preset.install();\n if (saved) this.configure(saved);\n Toast.on('afterClose', () => { preset.save(this.getConfig()); });\n }\n } else if (plugin && typeof plugin === 'object') {\n const name = plugin.name || 'custom';\n this.plugins.register(name, { ...plugin, ...options });\n }\n\n return this;\n },\n \n /**\n * 初始化\n */\n init(options = {}) {\n if (options.config) {\n this.configure(options.config);\n }\n \n if (options.theme) {\n this.themes.switchTheme(options.theme);\n }\n \n if (options.locale) {\n this.i18n.switchLocale(options.locale);\n }\n \n if (options.plugins && Array.isArray(options.plugins)) {\n options.plugins.forEach((plugin) => {\n this.use(plugin);\n });\n }\n \n return this;\n },\n \n /**\n * 销毁\n */\n destroy() {\n this.dismiss();\n \n if (this.plugins && typeof this.plugins.destroy === 'function') {\n this.plugins.destroy();\n }\n \n if (this.themes) {\n if (typeof this.themes.clearThemeListeners === 'function') {\n this.themes.clearThemeListeners();\n }\n if (typeof this.themes.unwatchSystemTheme === 'function') {\n this.themes.unwatchSystemTheme();\n }\n }\n \n if (this.i18n && typeof this.i18n.clearLocaleListeners === 'function') {\n this.i18n.clearLocaleListeners();\n }\n \n if (this.animations && typeof this.animations.cancelAll === 'function') {\n this.animations.cancelAll();\n }\n \n if (typeof document !== 'undefined') {\n const containers = document.querySelectorAll('.met-container');\n containers.forEach((c) => c.parentNode && c.parentNode.removeChild(c));\n \n const style = document.getElementById('metona-toast-styles');\n if (style) style.parentNode.removeChild(style);\n }\n \n this._toasts.clear();\n },\n \n /**\n * 获取状态\n */\n getStatus() {\n return {\n version: VERSION,\n toasts: this._toasts.size,\n theme: this.themes?.getCurrentTheme?.() || 'auto',\n locale: this.i18n?.getCurrentLocale?.() || 'zh-CN',\n plugins: this.plugins?.getNames?.() || [],\n animations: this.animations?.getActiveCount?.() || 0,\n };\n },\n \n /**\n * 获取配置\n */\n getConfig() {\n return { ...this._config };\n },\n \n /**\n * 更新配置\n */\n updateConfig(config) {\n if (config && typeof config === 'object') {\n this._config = { ...this._config, ...config };\n }\n return this;\n },\n \n /**\n * 重置配置\n */\n resetConfig() {\n this._config = { ...DEFAULTS };\n return this;\n },\n \n /**\n * 获取Toast列表\n */\n getToasts() {\n return Array.from(this._toasts.values());\n },\n \n /**\n * 检查是否有Toast\n */\n hasToasts() {\n return this._toasts.size > 0;\n },\n \n /**\n * 获取Toast\n */\n getToast(id) {\n if (!id) return null;\n return this._toasts.get(id) || null;\n },\n \n /**\n * 关闭所有Toast\n */\n closeAll() {\n this._toasts.forEach((t) => t.close());\n },\n \n /**\n * 清除所有Toast\n */\n clearAll() {\n this._toasts.forEach((t) => t.close());\n },\n \n /**\n * 暂停所有Toast\n */\n pauseAll() {\n this._toasts.forEach((t) => t._pause());\n },\n \n /**\n * 恢复所有Toast\n */\n resumeAll() {\n this._toasts.forEach((t) => t._resume());\n },\n \n /**\n * 更新所有Toast\n */\n updateAll(partial) {\n if (partial && typeof partial === 'object') {\n this._toasts.forEach((t) => t.update(partial));\n }\n },\n \n /**\n * 查找Toast\n */\n findToasts(predicate) {\n if (typeof predicate !== 'function') return [];\n return Array.from(this._toasts.values()).filter(predicate);\n },\n \n /**\n * 按类型查找Toast\n */\n findByType(type) {\n return this.findToasts((t) => t.type === type);\n },\n \n /**\n * 按位置查找Toast\n */\n findByPosition(position) {\n return this.findToasts((t) => t.config.position === position);\n },\n \n};\n// 初始化主题和国际化\nif (typeof themeUtils.initTheme === 'function') {\n themeUtils.initTheme();\n}\nif (typeof i18nUtils.initI18n === 'function') {\n i18nUtils.initI18n();\n}\n\n// 浏览器环境全局注册\nif (typeof window !== 'undefined') {\n window.MeToast = enhancedMeToast;\n window.Met = enhancedMeToast;\n \n // Notification API — 页面不可见时自动发送系统通知\n enhancedMeToast._notify = (toast) => {\n if (typeof Notification === 'undefined') return;\n if (Notification.permission === 'denied') return;\n if (!document.hidden) return;\n if (Notification.permission === 'default') {\n Notification.requestPermission().then(p => { if (p === 'granted') sendNotification(toast); });\n return;\n }\n sendNotification(toast);\n };\n const sendNotification = (toast) => {\n try {\n new Notification(toast.title || toast.type, { body: toast.message });\n } catch (_) {}\n };\n Toast.on('afterShow', (toast) => {\n if (toast.config.notifyWhenHidden) enhancedMeToast._notify(toast);\n });\n}\n\n// 导出\nexport default enhancedMeToast;\nexport { enhancedMeToast as meToast, enhancedMeToast as Met, enhancedMeToast as MeToast, Toast, VERSION };\n"],"names":["i18nT","t"],"mappings":"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B,IAAI,MAAM,EAAE,qBAAqB;EACjC,IAAI,MAAM,EAAE,4EAA4E;EACxF,IAAI,WAAW,EAAE,4EAA4E;EAC7F,IAAI,UAAU,EAAE,qBAAqB;EACrC,IAAI,YAAY,EAAE,qBAAqB;EACvC,GAAG;EACH,EAAE,IAAI,EAAE;EACR,IAAI,EAAE,EAAE,wBAAwB;EAChC,IAAI,IAAI,EAAE,SAAS;EACnB,IAAI,MAAM,EAAE,2BAA2B;EACvC,IAAI,MAAM,EAAE,0EAA0E;EACtF,IAAI,WAAW,EAAE,yEAAyE;EAC1F,IAAI,UAAU,EAAE,2BAA2B;EAC3C,IAAI,YAAY,EAAE,2BAA2B;EAC7C,GAAG;EACH,EAAE,IAAI,EAAE,MAAM;EACd,EAAE,IAAI,EAAE;EACR,IAAI,EAAE,EAAE,2BAA2B;EACnC,IAAI,IAAI,EAAE,SAAS;EACnB,IAAI,MAAM,EAAE,yBAAyB;EACrC,IAAI,MAAM,EAAE,sFAAsF;EAClG,IAAI,WAAW,EAAE,sFAAsF;EACvG,IAAI,UAAU,EAAE,yBAAyB;EACzC,IAAI,YAAY,EAAE,yBAAyB;EAC3C,GAAG;EACH,CAAC;;ECvRD;EACA;EACA;EACA;EACA;EACA;AACA;EAKA,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK;EAC/B,EAAE,OAAO,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,CAAC;EACJ,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACO,MAAM,YAAY,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK;EACtD;EACA,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,OAAO;EAC9C;EACA;EACA,EAAE,IAAI,YAAY,IAAI,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE;EACtE,IAAI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"} \ No newline at end of file +{"version":3,"file":"metona-toast.js","sources":["../src/utils.js","../src/icons.js","../src/locales.js","../src/constants.js","../src/styles.js","../src/themes.js","../src/i18n.js","../src/core.js","../src/animations.js","../src/plugins.js","../src/index.js"],"sourcesContent":["/**\r\n * MetonaToast Utils - 工具函数\r\n * @module utils\r\n * @version 2.0.0\r\n * @description 通用工具函数集合\r\n */\r\n\r\n/**\r\n * 生成唯一ID\r\n * @returns {string} 唯一ID\r\n */\r\nexport const generateId = () => {\r\n return 'met-' + Date.now().toString(36) + '-' + Math.random().toString(36).slice(2, 8);\r\n};\r\n\r\n/**\r\n * HTML转义\r\n * @param {string} s - 输入字符串\r\n * @returns {string} 转义后的字符串\r\n */\r\nexport const escapeHTML = (s) => {\r\n if (typeof document === 'undefined') {\r\n // Node.js环境\r\n return String(s == null ? '' : s)\r\n .replace(/&/g, '&')\r\n .replace(//g, '>')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''');\r\n }\r\n \r\n const div = document.createElement('div');\r\n div.textContent = String(s == null ? '' : s);\r\n return div.innerHTML;\r\n};\r\n\r\n/**\r\n * 事件绑定\r\n * @param {HTMLElement} el - 元素\r\n * @param {string} evt - 事件名\r\n * @param {Function} handler - 事件处理函数\r\n * @param {Object} opts - 选项\r\n * @returns {Function} 清理函数\r\n */\r\nexport const on = (el, evt, handler, opts) => {\r\n el.addEventListener(evt, handler, opts);\r\n return () => el.removeEventListener(evt, handler, opts);\r\n};\r\n\r\n/**\r\n * 检测暗色模式偏好\r\n * @returns {boolean} 是否偏好暗色模式\r\n */\r\nexport const prefersDark = () => {\r\n return typeof window !== 'undefined' && \r\n window.matchMedia && \r\n window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n};\r\n\r\n/**\r\n * 防抖函数\r\n * @param {Function} func - 要防抖的函数\r\n * @param {number} wait - 等待时间(毫秒)\r\n * @param {boolean} immediate - 是否立即执行\r\n * @returns {Function} 防抖后的函数\r\n */\r\nexport const debounce = (func, wait, immediate = false) => {\r\n let timeout;\r\n return function executedFunction(...args) {\r\n const context = this;\r\n const later = () => {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n const callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n};\r\n\r\n/**\r\n * 节流函数\r\n * @param {Function} func - 要节流的函数\r\n * @param {number} limit - 限制时间(毫秒)\r\n * @returns {Function} 节流后的函数\r\n */\r\nexport const throttle = (func, limit) => {\r\n let inThrottle;\r\n return function executedFunction(...args) {\r\n const context = this;\r\n if (!inThrottle) {\r\n func.apply(context, args);\r\n inThrottle = true;\r\n setTimeout(() => inThrottle = false, limit);\r\n }\r\n };\r\n};\r\n\r\n/**\r\n * 深度合并对象\r\n * @param {Object} target - 目标对象\r\n * @param {Object} source - 源对象\r\n * @returns {Object} 合并后的对象\r\n */\r\nexport const deepMerge = (target, source) => {\r\n const output = { ...target };\r\n \r\n Object.keys(source).forEach(key => {\r\n if (source[key] instanceof Object && key in target && target[key] instanceof Object) {\r\n output[key] = deepMerge(target[key], source[key]);\r\n } else {\r\n output[key] = source[key];\r\n }\r\n });\r\n \r\n return output;\r\n};\r\n\r\n/**\r\n * 检查是否为浏览器环境\r\n * @returns {boolean} 是否为浏览器环境\r\n */\r\nexport const isBrowser = () => {\r\n return typeof window !== 'undefined' && typeof document !== 'undefined';\r\n};\r\n\r\n/**\r\n * 安全获取嵌套对象属性\r\n * @param {Object} obj - 对象\r\n * @param {string} path - 属性路径\r\n * @param {*} defaultValue - 默认值\r\n * @returns {*} 属性值\r\n */\r\nexport const getNestedValue = (obj, path, defaultValue = undefined) => {\r\n const keys = path.split('.');\r\n let result = obj;\r\n \r\n for (const key of keys) {\r\n result = result?.[key];\r\n if (result === undefined) return defaultValue;\r\n }\r\n \r\n return result;\r\n};\r\n\r\n/**\r\n * 格式化文件大小\r\n * @param {number} bytes - 字节数\r\n * @param {number} decimals - 小数位数\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatFileSize = (bytes, decimals = 2) => {\r\n if (bytes === 0) return '0 Bytes';\r\n \r\n const k = 1024;\r\n const dm = decimals < 0 ? 0 : decimals;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n \r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n \r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n};\r\n\r\n/**\r\n * 格式化日期\r\n * @param {Date|string|number} date - 日期\r\n * @param {string} format - 格式\r\n * @returns {string} 格式化后的日期字符串\r\n */\r\nexport const formatDate = (date, format = 'YYYY-MM-DD HH:mm:ss') => {\r\n const d = new Date(date);\r\n \r\n const year = d.getFullYear();\r\n const month = String(d.getMonth() + 1).padStart(2, '0');\r\n const day = String(d.getDate()).padStart(2, '0');\r\n const hours = String(d.getHours()).padStart(2, '0');\r\n const minutes = String(d.getMinutes()).padStart(2, '0');\r\n const seconds = String(d.getSeconds()).padStart(2, '0');\r\n \r\n return format\r\n .replace('YYYY', year)\r\n .replace('MM', month)\r\n .replace('DD', day)\r\n .replace('HH', hours)\r\n .replace('mm', minutes)\r\n .replace('ss', seconds);\r\n};\r\n\r\n/**\r\n * 生成随机数\r\n * @param {number} min - 最小值\r\n * @param {number} max - 最大值\r\n * @returns {number} 随机数\r\n */\r\nexport const random = (min, max) => {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n};\r\n\r\n/**\r\n * 检查元素是否在视口中\r\n * @param {HTMLElement} el - 元素\r\n * @returns {boolean} 是否在视口中\r\n */\r\nexport const isInViewport = (el) => {\r\n const rect = el.getBoundingClientRect();\r\n return (\r\n rect.top >= 0 &&\r\n rect.left >= 0 &&\r\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\r\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\r\n );\r\n};\r\n\r\n/**\r\n * 平滑滚动到元素\r\n * @param {HTMLElement} el - 元素\r\n * @param {Object} options - 选项\r\n */\r\nexport const scrollToElement = (el, options = {}) => {\r\n const defaultOptions = {\r\n behavior: 'smooth',\r\n block: 'start',\r\n inline: 'nearest',\r\n };\r\n \r\n el.scrollIntoView({ ...defaultOptions, ...options });\r\n};\r\n\r\n/**\r\n * 复制文本到剪贴板\r\n * @param {string} text - 文本\r\n * @returns {Promise} 是否成功\r\n */\r\nexport const copyToClipboard = async (text) => {\r\n try {\r\n if (navigator.clipboard) {\r\n await navigator.clipboard.writeText(text);\r\n return true;\r\n }\r\n \r\n // 降级方案\r\n const textarea = document.createElement('textarea');\r\n textarea.value = text;\r\n textarea.style.position = 'fixed';\r\n textarea.style.opacity = '0';\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(textarea);\r\n \r\n return true;\r\n } catch (err) {\r\n console.error('Failed to copy text: ', err);\r\n return false;\r\n }\r\n};\r\n\r\n/**\r\n * 检测设备类型\r\n * @returns {string} 设备类型\r\n */\r\nexport const getDeviceType = () => {\r\n const ua = navigator.userAgent;\r\n \r\n if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {\r\n return 'tablet';\r\n }\r\n \r\n if (/Mobile|Android|iP(hone|od)|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/.test(ua)) {\r\n return 'mobile';\r\n }\r\n \r\n return 'desktop';\r\n};\r\n\r\n/**\r\n * 检测浏览器\r\n * @returns {Object} 浏览器信息\r\n */\r\nexport const getBrowserInfo = () => {\r\n const ua = navigator.userAgent;\r\n let browser = 'unknown';\r\n let version = 'unknown';\r\n \r\n if (ua.includes('Firefox/')) {\r\n browser = 'Firefox';\r\n version = ua.split('Firefox/')[1];\r\n } else if (ua.includes('Edg/')) {\r\n browser = 'Edge';\r\n version = ua.split('Edg/')[1];\r\n } else if (ua.includes('Chrome/')) {\r\n browser = 'Chrome';\r\n version = ua.split('Chrome/')[1];\r\n } else if (ua.includes('Safari/')) {\r\n browser = 'Safari';\r\n version = ua.split('Version/')[1];\r\n }\r\n \r\n return { browser, version };\r\n};\r\n\r\n/**\r\n * 检测操作系统\r\n * @returns {string} 操作系统\r\n */\r\nexport const getOS = () => {\r\n const ua = navigator.userAgent;\r\n \r\n if (ua.includes('Win')) return 'Windows';\r\n if (ua.includes('Mac')) return 'MacOS';\r\n if (ua.includes('Linux')) return 'Linux';\r\n if (ua.includes('Android')) return 'Android';\r\n if (ua.includes('iOS') || ua.includes('iPhone') || ua.includes('iPad')) return 'iOS';\r\n \r\n return 'Unknown';\r\n};\r\n\r\n/**\r\n * 检测网络状态\r\n * @returns {Object} 网络信息\r\n */\r\nexport const getNetworkInfo = () => {\r\n if (!navigator.connection) {\r\n return { online: navigator.onLine, type: 'unknown', speed: 'unknown' };\r\n }\r\n \r\n const connection = navigator.connection;\r\n \r\n return {\r\n online: navigator.onLine,\r\n type: connection.effectiveType || 'unknown',\r\n speed: connection.downlink || 'unknown',\r\n rtt: connection.rtt || 'unknown',\r\n };\r\n};\r\n\r\n/**\r\n * 存储数据到localStorage\r\n * @param {string} key - 键\r\n * @param {*} value - 值\r\n * @param {number} expiry - 过期时间(毫秒)\r\n */\r\nexport const setStorage = (key, value, expiry = null) => {\r\n const item = {\r\n value,\r\n timestamp: Date.now(),\r\n expiry: expiry ? Date.now() + expiry : null,\r\n };\r\n \r\n localStorage.setItem(key, JSON.stringify(item));\r\n};\r\n\r\n/**\r\n * 从localStorage获取数据\r\n * @param {string} key - 键\r\n * @param {*} defaultValue - 默认值\r\n * @returns {*} 值\r\n */\r\nexport const getStorage = (key, defaultValue = null) => {\r\n const itemStr = localStorage.getItem(key);\r\n \r\n if (!itemStr) return defaultValue;\r\n \r\n try {\r\n const item = JSON.parse(itemStr);\r\n \r\n // 检查是否过期\r\n if (item.expiry && Date.now() > item.expiry) {\r\n localStorage.removeItem(key);\r\n return defaultValue;\r\n }\r\n \r\n return item.value;\r\n } catch (err) {\r\n console.error('Error parsing storage item:', err);\r\n return defaultValue;\r\n }\r\n};\r\n\r\n/**\r\n * 从localStorage删除数据\r\n * @param {string} key - 键\r\n */\r\nexport const removeStorage = (key) => {\r\n localStorage.removeItem(key);\r\n};\r\n\r\n/**\r\n * 清空localStorage\r\n */\r\nexport const clearStorage = () => {\r\n localStorage.clear();\r\n};\r\n\r\n/**\r\n * 生成UUID\r\n * @returns {string} UUID\r\n */\r\nexport const generateUUID = () => {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n const r = (Math.random() * 16) | 0;\r\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n};\r\n\r\n/**\r\n * 检查是否支持某个CSS属性\r\n * @param {string} property - CSS属性\r\n * @returns {boolean} 是否支持\r\n */\r\nexport const supportsCSSProperty = (property) => {\r\n return typeof document !== 'undefined' && \r\n property in document.documentElement.style;\r\n};\r\n\r\n/**\r\n * 检查是否支持某个JavaScript API\r\n * @param {string} api - API名称\r\n * @returns {boolean} 是否支持\r\n */\r\nexport const supportsAPI = (api) => {\r\n return api in window || api in navigator;\r\n};\r\n\r\n/**\r\n * 获取URL参数\r\n * @param {string} name - 参数名\r\n * @returns {string|null} 参数值\r\n */\r\nexport const getURLParam = (name) => {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n return urlParams.get(name);\r\n};\r\n\r\n/**\r\n * 设置URL参数\r\n * @param {string} name - 参数名\r\n * @param {string} value - 参数值\r\n */\r\nexport const setURLParam = (name, value) => {\r\n const url = new URL(window.location);\r\n url.searchParams.set(name, value);\r\n window.history.pushState({}, '', url);\r\n};\r\n\r\n/**\r\n * 删除URL参数\r\n * @param {string} name - 参数名\r\n */\r\nexport const removeURLParam = (name) => {\r\n const url = new URL(window.location);\r\n url.searchParams.delete(name);\r\n window.history.pushState({}, '', url);\r\n};\r\n\r\n/**\r\n * 格式化数字\r\n * @param {number} number - 数字\r\n * @param {number} decimals - 小数位数\r\n * @param {string} decimalSeparator - 小数分隔符\r\n * @param {string} thousandsSeparator - 千位分隔符\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatNumber = (number, decimals = 0, decimalSeparator = '.', thousandsSeparator = ',') => {\r\n const fixed = number.toFixed(decimals);\r\n const [intPart, decPart] = fixed.split('.');\r\n \r\n const formattedInt = intPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator);\r\n \r\n return decimals > 0 ? `${formattedInt}${decimalSeparator}${decPart}` : formattedInt;\r\n};\r\n\r\n/**\r\n * 格式化货币\r\n * @param {number} amount - 金额\r\n * @param {string} currency - 货币代码\r\n * @param {string} locale - 地区\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatCurrency = (amount, currency = 'USD', locale = 'en-US') => {\r\n return new Intl.NumberFormat(locale, {\r\n style: 'currency',\r\n currency,\r\n }).format(amount);\r\n};\r\n\r\n/**\r\n * 格式化百分比\r\n * @param {number} value - 值\r\n * @param {number} decimals - 小数位数\r\n * @param {string} locale - 地区\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatPercent = (value, decimals = 2, locale = 'en-US') => {\r\n return new Intl.NumberFormat(locale, {\r\n style: 'percent',\r\n minimumFractionDigits: decimals,\r\n maximumFractionDigits: decimals,\r\n }).format(value / 100);\r\n};\r\n\r\n/**\r\n * 检查是否为空值\r\n * @param {*} value - 值\r\n * @returns {boolean} 是否为空\r\n */\r\nexport const isEmpty = (value) => {\r\n if (value === null || value === undefined) return true;\r\n if (typeof value === 'string') return value.trim().length === 0;\r\n if (Array.isArray(value)) return value.length === 0;\r\n if (typeof value === 'object') return Object.keys(value).length === 0;\r\n return false;\r\n};\r\n\r\n/**\r\n * 深拷贝对象\r\n * @param {*} obj - 对象\r\n * @returns {*} 拷贝后的对象\r\n */\r\nexport const deepClone = (obj) => {\r\n if (obj === null || typeof obj !== 'object') return obj;\r\n if (obj instanceof Date) return new Date(obj.getTime());\r\n if (obj instanceof RegExp) return new RegExp(obj);\r\n if (obj instanceof Map) return new Map([...obj].map(([k, v]) => [k, deepClone(v)]));\r\n if (obj instanceof Set) return new Set([...obj].map(item => deepClone(item)));\r\n \r\n const cloned = Array.isArray(obj) ? [] : {};\r\n \r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n cloned[key] = deepClone(obj[key]);\r\n }\r\n }\r\n \r\n return cloned;\r\n};\r\n\r\n/**\r\n * 比较两个对象是否相等\r\n * @param {*} obj1 - 对象1\r\n * @param {*} obj2 - 对象2\r\n * @returns {boolean} 是否相等\r\n */\r\nexport const isEqual = (obj1, obj2) => {\r\n if (obj1 === obj2) return true;\r\n if (obj1 === null || obj2 === null) return false;\r\n if (typeof obj1 !== typeof obj2) return false;\r\n \r\n if (typeof obj1 !== 'object') return obj1 === obj2;\r\n \r\n const keys1 = Object.keys(obj1);\r\n const keys2 = Object.keys(obj2);\r\n \r\n if (keys1.length !== keys2.length) return false;\r\n \r\n for (const key of keys1) {\r\n if (!keys2.includes(key)) return false;\r\n if (!isEqual(obj1[key], obj2[key])) return false;\r\n }\r\n \r\n return true;\r\n};\r\n\r\n/**\r\n * 验证邮箱格式\r\n * @param {string} email - 邮箱\r\n * @returns {boolean} 是否有效\r\n */\r\nexport const isValidEmail = (email) => {\r\n const re = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n return re.test(email);\r\n};\r\n\r\n/**\r\n * 验证URL格式\r\n * @param {string} url - URL\r\n * @returns {boolean} 是否有效\r\n */\r\nexport const isValidURL = (url) => {\r\n try {\r\n new URL(url);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n};\r\n\r\n/**\r\n * 验证手机号格式\r\n * @param {string} phone - 手机号\r\n * @returns {boolean} 是否有效\r\n */\r\nexport const isValidPhone = (phone) => {\r\n const re = /^1[3-9]\\d{9}$/;\r\n return re.test(phone);\r\n};\r\n\r\n/**\r\n * 验证身份证号格式\r\n * @param {string} idCard - 身份证号\r\n * @returns {boolean} 是否有效\r\n */\r\nexport const isValidIDCard = (idCard) => {\r\n const re = /^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$/;\r\n return re.test(idCard);\r\n};\r\n\r\n/**\r\n * 生成随机颜色\r\n * @returns {string} 颜色值\r\n */\r\nexport const randomColor = () => {\r\n return '#' + Math.floor(Math.random() * 16777215).toString(16).padStart(6, '0');\r\n};\r\n\r\n/**\r\n * 颜色转RGBA\r\n * @param {string} color - 颜色值\r\n * @param {number} alpha - 透明度\r\n * @returns {string} RGBA颜色值\r\n */\r\nexport const colorToRGBA = (color, alpha = 1) => {\r\n const hex = color.replace('#', '');\r\n const r = parseInt(hex.substring(0, 2), 16);\r\n const g = parseInt(hex.substring(2, 4), 16);\r\n const b = parseInt(hex.substring(4, 6), 16);\r\n \r\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\r\n};\r\n\r\n/**\r\n * 获取颜色亮度\r\n * @param {string} color - 颜色值\r\n * @returns {number} 亮度值(0-255)\r\n */\r\nexport const getColorBrightness = (color) => {\r\n const hex = color.replace('#', '');\r\n const r = parseInt(hex.substring(0, 2), 16);\r\n const g = parseInt(hex.substring(2, 4), 16);\r\n const b = parseInt(hex.substring(4, 6), 16);\r\n \r\n return (r * 299 + g * 587 + b * 114) / 1000;\r\n};\r\n\r\n/**\r\n * 判断是否为浅色\r\n * @param {string} color - 颜色值\r\n * @returns {boolean} 是否为浅色\r\n */\r\nexport const isLightColor = (color) => {\r\n return getColorBrightness(color) > 128;\r\n};\r\n\r\n/**\r\n * 获取对比色\r\n * @param {string} color - 颜色值\r\n * @returns {string} 对比色\r\n */\r\nexport const getContrastColor = (color) => {\r\n return isLightColor(color) ? '#000000' : '#FFFFFF';\r\n};\r\n\r\n/**\r\n * 生成渐变色\r\n * @param {string} color1 - 起始颜色\r\n * @param {string} color2 - 结束颜色\r\n * @param {number} steps - 步数\r\n * @returns {Array} 颜色数组\r\n */\r\nexport const generateGradient = (color1, color2, steps = 10) => {\r\n const hex = (color) => {\r\n const c = color.replace('#', '');\r\n return [\r\n parseInt(c.substring(0, 2), 16),\r\n parseInt(c.substring(2, 4), 16),\r\n parseInt(c.substring(4, 6), 16),\r\n ];\r\n };\r\n \r\n const [r1, g1, b1] = hex(color1);\r\n const [r2, g2, b2] = hex(color2);\r\n \r\n const gradient = [];\r\n \r\n for (let i = 0; i < steps; i++) {\r\n const r = Math.round(r1 + (r2 - r1) * (i / (steps - 1)));\r\n const g = Math.round(g1 + (g2 - g1) * (i / (steps - 1)));\r\n const b = Math.round(b1 + (b2 - b1) * (i / (steps - 1)));\r\n \r\n gradient.push(`#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`);\r\n }\r\n \r\n return gradient;\r\n};\r\n\r\n/**\r\n * 获取字符长度(支持中文)\r\n * @param {string} str - 字符串\r\n * @returns {number} 长度\r\n */\r\nexport const getStringLength = (str) => {\r\n let length = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n const code = str.charCodeAt(i);\r\n if (code > 0 && code <= 128) {\r\n length += 1;\r\n } else {\r\n length += 2;\r\n }\r\n }\r\n return length;\r\n};\r\n\r\n/**\r\n * 截取字符串(支持中文)\r\n * @param {string} str - 字符串\r\n * @param {number} length - 长度\r\n * @param {string} suffix - 后缀\r\n * @returns {string} 截取后的字符串\r\n */\r\nexport const truncateString = (str, length, suffix = '...') => {\r\n let currentLength = 0;\r\n let result = '';\r\n \r\n for (let i = 0; i < str.length; i++) {\r\n const char = str[i];\r\n const code = str.charCodeAt(i);\r\n \r\n if (code > 0 && code <= 128) {\r\n currentLength += 1;\r\n } else {\r\n currentLength += 2;\r\n }\r\n \r\n if (currentLength > length) {\r\n return result + suffix;\r\n }\r\n \r\n result += char;\r\n }\r\n \r\n return result;\r\n};\r\n\r\n/**\r\n * 驼峰转换\r\n * @param {string} str - 字符串\r\n * @returns {string} 驼峰格式字符串\r\n */\r\nexport const toCamelCase = (str) => {\r\n return str\r\n .replace(/[-_\\s]+(.)?/g, (_, c) => (c ? c.toUpperCase() : ''))\r\n .replace(/^[A-Z]/, (c) => c.toLowerCase());\r\n};\r\n\r\n/**\r\n * 短横线转换\r\n * @param {string} str - 字符串\r\n * @returns {string} 短横线格式字符串\r\n */\r\nexport const toKebabCase = (str) => {\r\n return str\r\n .replace(/([a-z])([A-Z])/g, '$1-$2')\r\n .replace(/[\\s_]+/g, '-')\r\n .toLowerCase();\r\n};\r\n\r\n/**\r\n * 下划线转换\r\n * @param {string} str - 字符串\r\n * @returns {string} 下划线格式字符串\r\n */\r\nexport const toSnakeCase = (str) => {\r\n return str\r\n .replace(/([a-z])([A-Z])/g, '$1_$2')\r\n .replace(/[\\s\\-]+/g, '_')\r\n .toLowerCase();\r\n};\r\n\r\n/**\r\n * 首字母大写\r\n * @param {string} str - 字符串\r\n * @returns {string} 首字母大写字符串\r\n */\r\nexport const capitalize = (str) => {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n};\r\n\r\n/**\r\n * 每个单词首字母大写\r\n * @param {string} str - 字符串\r\n * @returns {string} 每个单词首字母大写字符串\r\n */\r\nexport const capitalizeWords = (str) => {\r\n return str.replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n};\r\n\r\n/**\r\n * 移除HTML标签\r\n * @param {string} html - HTML字符串\r\n * @returns {string} 纯文本\r\n */\r\nexport const stripHTML = (html) => {\r\n const tmp = document.createElement('div');\r\n tmp.innerHTML = html;\r\n return tmp.textContent || tmp.innerText || '';\r\n};\r\n\r\n/**\r\n * 转义正则表达式\r\n * @param {string} str - 字符串\r\n * @returns {string} 转义后的字符串\r\n */\r\nexport const escapeRegExp = (str) => {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n};\r\n\r\n/**\r\n * 生成随机字符串\r\n * @param {number} length - 长度\r\n * @param {string} chars - 字符集\r\n * @returns {string} 随机字符串\r\n */\r\nexport const randomString = (length = 8, chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') => {\r\n let result = '';\r\n for (let i = 0; i < length; i++) {\r\n result += chars.charAt(Math.floor(Math.random() * chars.length));\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * 延迟执行\r\n * @param {number} ms - 毫秒数\r\n * @returns {Promise} Promise对象\r\n */\r\nexport const sleep = (ms) => {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n};\r\n\r\n/**\r\n * 重试函数\r\n * @param {Function} fn - 函数\r\n * @param {number} maxAttempts - 最大尝试次数\r\n * @param {number} delay - 延迟时间\r\n * @returns {Promise} Promise对象\r\n */\r\nexport const retry = async (fn, maxAttempts = 3, delay = 1000) => {\r\n let lastError;\r\n \r\n for (let attempt = 1; attempt <= maxAttempts; attempt++) {\r\n try {\r\n return await fn();\r\n } catch (err) {\r\n lastError = err;\r\n if (attempt < maxAttempts) {\r\n await sleep(delay * attempt);\r\n }\r\n }\r\n }\r\n \r\n throw lastError;\r\n};\r\n\r\n/**\r\n * 超时控制\r\n * @param {Promise} promise - Promise对象\r\n * @param {number} ms - 毫秒数\r\n * @returns {Promise} Promise对象\r\n */\r\nexport const timeout = (promise, ms) => {\r\n return Promise.race([\r\n promise,\r\n new Promise((_, reject) => {\r\n setTimeout(() => reject(new Error('Timeout')), ms);\r\n }),\r\n ]);\r\n};\r\n\r\n/**\r\n * 并发控制\r\n * @param {Array} tasks - 任务数组\r\n * @param {number} concurrency - 并发数\r\n * @returns {Promise} Promise对象\r\n */\r\nexport const parallel = async (tasks, concurrency = 5) => {\r\n const results = [];\r\n const executing = new Set();\r\n \r\n for (const [index, task] of tasks.entries()) {\r\n const p = Promise.resolve().then(() => task());\r\n results.push(p);\r\n executing.add(p);\r\n \r\n const clean = () => executing.delete(p);\r\n p.then(clean, clean);\r\n \r\n if (executing.size >= concurrency) {\r\n await Promise.race(executing);\r\n }\r\n }\r\n \r\n return Promise.all(results);\r\n};\r\n\r\n/**\r\n * 序列执行\r\n * @param {Array} tasks - 任务数组\r\n * @returns {Promise} Promise对象\r\n */\r\nexport const sequence = async (tasks) => {\r\n const results = [];\r\n \r\n for (const task of tasks) {\r\n results.push(await task());\r\n }\r\n \r\n return results;\r\n};\r\n\r\n/**\r\n * 缓存函数\r\n * @param {Function} fn - 函数\r\n * @param {number} maxSize - 最大缓存数\r\n * @returns {Function} 缓存后的函数\r\n */\r\nexport const memoize = (fn, maxSize = 100) => {\r\n const cache = new Map();\r\n \r\n return (...args) => {\r\n const key = JSON.stringify(args);\r\n \r\n if (cache.has(key)) {\r\n return cache.get(key);\r\n }\r\n \r\n const result = fn(...args);\r\n \r\n if (cache.size >= maxSize) {\r\n const firstKey = cache.keys().next().value;\r\n cache.delete(firstKey);\r\n }\r\n \r\n cache.set(key, result);\r\n \r\n return result;\r\n };\r\n};\r\n\r\n/**\r\n * 单例模式\r\n * @param {Function} fn - 函数\r\n * @returns {Function} 单例函数\r\n */\r\nexport const singleton = (fn) => {\r\n let instance;\r\n \r\n return (...args) => {\r\n if (!instance) {\r\n instance = fn(...args);\r\n }\r\n return instance;\r\n };\r\n};\r\n\r\n/**\r\n * 观察者模式\r\n * @returns {Object} 观察者对象\r\n */\r\nexport const createObserver = () => {\r\n const listeners = new Map();\r\n \r\n return {\r\n on(event, callback) {\r\n if (!listeners.has(event)) {\r\n listeners.set(event, new Set());\r\n }\r\n listeners.get(event).add(callback);\r\n \r\n return () => this.off(event, callback);\r\n },\r\n \r\n off(event, callback) {\r\n if (listeners.has(event)) {\r\n listeners.get(event).delete(callback);\r\n }\r\n },\r\n \r\n emit(event, ...args) {\r\n if (listeners.has(event)) {\r\n listeners.get(event).forEach(callback => callback(...args));\r\n }\r\n },\r\n \r\n once(event, callback) {\r\n const wrapper = (...args) => {\r\n callback(...args);\r\n this.off(event, wrapper);\r\n };\r\n this.on(event, wrapper);\r\n },\r\n \r\n clear() {\r\n listeners.clear();\r\n },\r\n };\r\n};\r\n\r\n/**\r\n * 状态机\r\n * @param {Object} config - 配置\r\n * @returns {Object} 状态机对象\r\n */\r\nexport const createStateMachine = (config) => {\r\n let currentState = config.initial;\r\n const listeners = new Map();\r\n \r\n return {\r\n get state() {\r\n return currentState;\r\n },\r\n \r\n transition(event) {\r\n const transitions = config.transitions[currentState];\r\n if (!transitions || !transitions[event]) {\r\n throw new Error(`Invalid transition: ${event} from ${currentState}`);\r\n }\r\n \r\n const nextState = transitions[event];\r\n const prevState = currentState;\r\n currentState = nextState;\r\n \r\n if (listeners.has(nextState)) {\r\n listeners.get(nextState).forEach(callback => callback(prevState, nextState));\r\n }\r\n \r\n return nextState;\r\n },\r\n \r\n on(state, callback) {\r\n if (!listeners.has(state)) {\r\n listeners.set(state, new Set());\r\n }\r\n listeners.get(state).add(callback);\r\n \r\n return () => this.off(state, callback);\r\n },\r\n \r\n off(state, callback) {\r\n if (listeners.has(state)) {\r\n listeners.get(state).delete(callback);\r\n }\r\n },\r\n \r\n can(event) {\r\n const transitions = config.transitions[currentState];\r\n return transitions && transitions[event] !== undefined;\r\n },\r\n };\r\n};\r\n","/**\r\n * MetonaToast Icons — 图标SVG定义\r\n * @module icons\r\n * @version 2.0.0\r\n * @description 80+ 内置SVG图标\r\n */\r\n\r\nexport const ICONS = {\r\n success: `\r\n \r\n `,\r\n \r\n error: `\r\n \r\n \r\n \r\n `,\r\n \r\n warning: `\r\n \r\n \r\n \r\n `,\r\n \r\n info: `\r\n \r\n \r\n \r\n `,\r\n \r\n loading: `\r\n \r\n `,\r\n \r\n close: `\r\n \r\n \r\n `,\r\n \r\n check: `\r\n \r\n `,\r\n \r\n x: `\r\n \r\n \r\n `,\r\n \r\n alert: `\r\n \r\n \r\n \r\n `,\r\n \r\n question: `\r\n \r\n \r\n \r\n `,\r\n \r\n star: `\r\n \r\n `,\r\n \r\n heart: `\r\n \r\n `,\r\n \r\n bell: `\r\n \r\n \r\n `,\r\n \r\n mail: `\r\n \r\n \r\n `,\r\n \r\n settings: `\r\n \r\n \r\n `,\r\n \r\n user: `\r\n \r\n \r\n `,\r\n \r\n home: `\r\n \r\n \r\n `,\r\n \r\n search: `\r\n \r\n \r\n `,\r\n \r\n plus: `\r\n \r\n \r\n `,\r\n \r\n minus: `\r\n \r\n `,\r\n \r\n edit: `\r\n \r\n \r\n `,\r\n \r\n trash: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n download: `\r\n \r\n \r\n \r\n `,\r\n \r\n upload: `\r\n \r\n \r\n \r\n `,\r\n \r\n share: `\r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n link: `\r\n \r\n \r\n `,\r\n \r\n external: `\r\n \r\n \r\n \r\n `,\r\n \r\n clock: `\r\n \r\n \r\n `,\r\n \r\n calendar: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n map: `\r\n \r\n \r\n \r\n `,\r\n \r\n compass: `\r\n \r\n \r\n `,\r\n \r\n globe: `\r\n \r\n \r\n \r\n `,\r\n \r\n wifi: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n cloud: `\r\n \r\n `,\r\n \r\n sun: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n moon: `\r\n \r\n `,\r\n \r\n zap: `\r\n \r\n `,\r\n \r\n activity: `\r\n \r\n `,\r\n \r\n cpu: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n database: `\r\n \r\n \r\n \r\n `,\r\n \r\n server: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n terminal: `\r\n \r\n \r\n `,\r\n \r\n code: `\r\n \r\n \r\n `,\r\n \r\n git: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n package: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n layers: `\r\n \r\n \r\n \r\n `,\r\n \r\n grid: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n list: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n filter: `\r\n \r\n `,\r\n \r\n sort: `\r\n \r\n \r\n `,\r\n \r\n refresh: `\r\n \r\n \r\n \r\n `,\r\n \r\n sync: `\r\n \r\n \r\n \r\n `,\r\n \r\n power: `\r\n \r\n \r\n `,\r\n \r\n battery: `\r\n \r\n \r\n `,\r\n \r\n bluetooth: `\r\n \r\n `,\r\n \r\n volume: `\r\n \r\n \r\n `,\r\n \r\n mic: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n camera: `\r\n \r\n \r\n `,\r\n \r\n image: `\r\n \r\n \r\n \r\n `,\r\n \r\n video: `\r\n \r\n \r\n `,\r\n \r\n music: `\r\n \r\n \r\n \r\n `,\r\n \r\n file: `\r\n \r\n \r\n `,\r\n \r\n folder: `\r\n \r\n `,\r\n \r\n clipboard: `\r\n \r\n \r\n `,\r\n \r\n save: `\r\n \r\n \r\n \r\n `,\r\n \r\n print: `\r\n \r\n \r\n \r\n `,\r\n \r\n eye: `\r\n \r\n \r\n `,\r\n \r\n eyeOff: `\r\n \r\n \r\n `,\r\n \r\n lock: `\r\n \r\n \r\n `,\r\n \r\n unlock: `\r\n \r\n \r\n `,\r\n \r\n shield: `\r\n \r\n `,\r\n \r\n key: `\r\n \r\n `,\r\n \r\n flag: `\r\n \r\n \r\n `,\r\n \r\n bookmark: `\r\n \r\n `,\r\n \r\n tag: `\r\n \r\n \r\n `,\r\n \r\n gift: `\r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n award: `\r\n \r\n \r\n `,\r\n \r\n target: `\r\n \r\n \r\n \r\n `,\r\n \r\n crosshair: `\r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n move: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n maximize: `\r\n \r\n `,\r\n \r\n minimize: `\r\n \r\n `,\r\n \r\n copy: `\r\n \r\n \r\n `,\r\n \r\n cut: `\r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n paste: `\r\n \r\n \r\n `,\r\n \r\n rotateCw: `\r\n \r\n \r\n `,\r\n \r\n rotateCcw: `\r\n \r\n \r\n `,\r\n \r\n zoomIn: `\r\n \r\n \r\n \r\n \r\n `,\r\n \r\n zoomOut: `\r\n \r\n \r\n \r\n `,\r\n \r\n crop: `\r\n \r\n \r\n `,\r\n \r\n sliders: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n \r\n toggleLeft: `\r\n \r\n \r\n `,\r\n \r\n toggleRight: `\r\n \r\n \r\n `,\r\n \r\n checkCircle: `\r\n \r\n \r\n `,\r\n \r\n xCircle: `\r\n \r\n \r\n \r\n `,\r\n \r\n alertCircle: `\r\n \r\n \r\n \r\n `,\r\n \r\n infoCircle: `\r\n \r\n \r\n \r\n `,\r\n \r\n helpCircle: `\r\n \r\n \r\n \r\n `,\r\n \r\n alertTriangle: `\r\n \r\n \r\n \r\n `,\r\n \r\n checkSquare: `\r\n \r\n \r\n `,\r\n \r\n square: `\r\n \r\n `,\r\n \r\n circle: `\r\n \r\n `,\r\n \r\n triangle: `\r\n \r\n `,\r\n \r\n hexagon: `\r\n \r\n `,\r\n \r\n octagon: `\r\n \r\n `,\r\n \r\n pentagon: `\r\n \r\n `,\r\n \r\n diamond: `\r\n \r\n `,\r\n};\r\n","/**\r\n * MetonaToast Locales — 国际化翻译数据\r\n * @module locales\r\n * @version 2.0.0\r\n * @description 内置 zh-CN / en-US 完整翻译\r\n */\r\n\r\nexport const LOCALES = {\r\n 'zh-CN': {\r\n close: '关闭',\r\n loading: '加载中...',\r\n success: '操作成功',\r\n error: '操作失败',\r\n warning: '警告',\r\n info: '信息',\r\n confirm: '确认',\r\n cancel: '取消',\r\n yes: '是',\r\n no: '否',\r\n ok: '确定',\r\n retry: '重试',\r\n undo: '撤销',\r\n redo: '重做',\r\n save: '保存',\r\n delete: '删除',\r\n edit: '编辑',\r\n add: '添加',\r\n remove: '移除',\r\n search: '搜索',\r\n filter: '筛选',\r\n sort: '排序',\r\n refresh: '刷新',\r\n sync: '同步',\r\n upload: '上传',\r\n download: '下载',\r\n share: '分享',\r\n copy: '复制',\r\n cut: '剪切',\r\n paste: '粘贴',\r\n print: '打印',\r\n export: '导出',\r\n import: '导入',\r\n settings: '设置',\r\n help: '帮助',\r\n about: '关于',\r\n version: '版本',\r\n language: '语言',\r\n theme: '主题',\r\n dark: '暗色',\r\n light: '亮色',\r\n auto: '自动',\r\n notifications: '通知',\r\n enable: '启用',\r\n disable: '禁用',\r\n on: '开启',\r\n off: '关闭',\r\n max: '最大',\r\n min: '最小',\r\n expand: '展开',\r\n collapse: '折叠',\r\n fullscreen: '全屏',\r\n exitFullscreen: '退出全屏',\r\n zoomIn: '放大',\r\n zoomOut: '缩小',\r\n reset: '重置',\r\n apply: '应用',\r\n submit: '提交',\r\n send: '发送',\r\n receive: '接收',\r\n connect: '连接',\r\n disconnect: '断开',\r\n start: '开始',\r\n stop: '停止',\r\n pause: '暂停',\r\n resume: '继续',\r\n next: '下一个',\r\n previous: '上一个',\r\n first: '第一个',\r\n last: '最后一个',\r\n back: '返回',\r\n forward: '前进',\r\n home: '首页',\r\n menu: '菜单',\r\n more: '更多',\r\n less: '更少',\r\n show: '显示',\r\n hide: '隐藏',\r\n visible: '可见',\r\n hidden: '隐藏',\r\n enabled: '已启用',\r\n disabled: '已禁用',\r\n active: '活跃',\r\n inactive: '非活跃',\r\n online: '在线',\r\n offline: '离线',\r\n connected: '已连接',\r\n disconnected: '已断开',\r\n loading: '加载中',\r\n loaded: '已加载',\r\n saving: '保存中',\r\n saved: '已保存',\r\n deleting: '删除中',\r\n deleted: '已删除',\r\n uploading: '上传中',\r\n uploaded: '已上传',\r\n downloading: '下载中',\r\n downloaded: '已下载',\r\n processing: '处理中',\r\n processed: '已处理',\r\n syncing: '同步中',\r\n synced: '已同步',\r\n sending: '发送中',\r\n sent: '已发送',\r\n receiving: '接收中',\r\n received: '已接收',\r\n connecting: '连接中',\r\n error: '错误',\r\n warning: '警告',\r\n info: '信息',\r\n success: '成功',\r\n question: '问题',\r\n help: '帮助',\r\n feedback: '反馈',\r\n report: '报告',\r\n bug: '错误',\r\n feature: '功能',\r\n improvement: '改进',\r\n suggestion: '建议',\r\n request: '请求',\r\n response: '响应',\r\n status: '状态',\r\n progress: '进度',\r\n complete: '完成',\r\n incomplete: '未完成',\r\n pending: '待处理',\r\n processing: '处理中',\r\n failed: '失败',\r\n cancelled: '已取消',\r\n timeout: '超时',\r\n expired: '已过期',\r\n invalid: '无效',\r\n valid: '有效',\r\n required: '必填',\r\n optional: '可选',\r\n enabled: '启用',\r\n disabled: '禁用',\r\n allowed: '允许',\r\n denied: '拒绝',\r\n approved: '已批准',\r\n rejected: '已拒绝',\r\n accepted: '已接受',\r\n declined: '已拒绝',\r\n confirmed: '已确认',\r\n unconfirmed: '未确认',\r\n verified: '已验证',\r\n unverified: '未验证',\r\n authenticated: '已认证',\r\n unauthenticated: '未认证',\r\n authorized: '已授权',\r\n unauthorized: '未授权',\r\n public: '公开',\r\n private: '私有',\r\n protected: '受保护',\r\n internal: '内部',\r\n external: '外部',\r\n local: '本地',\r\n remote: '远程',\r\n global: '全局',\r\n system: '系统',\r\n user: '用户',\r\n admin: '管理员',\r\n moderator: '版主',\r\n guest: '访客',\r\n member: '成员',\r\n owner: '所有者',\r\n creator: '创建者',\r\n editor: '编辑者',\r\n viewer: '查看者',\r\n subscriber: '订阅者',\r\n follower: '关注者',\r\n following: '关注中',\r\n friend: '朋友',\r\n contact: '联系人',\r\n group: '群组',\r\n team: '团队',\r\n organization: '组织',\r\n company: '公司',\r\n department: '部门',\r\n project: '项目',\r\n task: '任务',\r\n issue: '问题',\r\n ticket: '工单',\r\n request: '请求',\r\n response: '响应',\r\n message: '消息',\r\n notification: '通知',\r\n alert: '警报',\r\n reminder: '提醒',\r\n event: '事件',\r\n activity: '活动',\r\n log: '日志',\r\n report: '报告',\r\n analytics: '分析',\r\n statistics: '统计',\r\n metrics: '指标',\r\n performance: '性能',\r\n security: '安全',\r\n privacy: '隐私',\r\n compliance: '合规',\r\n policy: '政策',\r\n terms: '条款',\r\n conditions: '条件',\r\n agreement: '协议',\r\n contract: '合同',\r\n license: '许可证',\r\n copyright: '版权',\r\n trademark: '商标',\r\n patent: '专利',\r\n tradeSecret: '商业秘密',\r\n confidential: '机密',\r\n sensitive: '敏感',\r\n critical: '关键',\r\n important: '重要',\r\n urgent: '紧急',\r\n high: '高',\r\n medium: '中',\r\n low: '低',\r\n none: '无',\r\n all: '全部',\r\n any: '任何',\r\n some: '一些',\r\n each: '每个',\r\n every: '每个',\r\n both: '两者',\r\n neither: '两者都不',\r\n either: '任一',\r\n other: '其他',\r\n another: '另一个',\r\n this: '这个',\r\n that: '那个',\r\n these: '这些',\r\n those: '那些',\r\n here: '这里',\r\n there: '那里',\r\n where: '哪里',\r\n when: '何时',\r\n why: '为什么',\r\n how: '如何',\r\n what: '什么',\r\n who: '谁',\r\n which: '哪个',\r\n whose: '谁的',\r\n whom: '谁',\r\n myself: '我自己',\r\n yourself: '你自己',\r\n himself: '他自己',\r\n herself: '她自己',\r\n itself: '它自己',\r\n ourselves: '我们自己',\r\n yourselves: '你们自己',\r\n themselves: '他们自己',\r\n mine: '我的',\r\n yours: '你的',\r\n his: '他的',\r\n hers: '她的',\r\n its: '它的',\r\n ours: '我们的',\r\n yours: '你们的',\r\n theirs: '他们的',\r\n me: '我',\r\n you: '你',\r\n him: '他',\r\n her: '她',\r\n it: '它',\r\n us: '我们',\r\n them: '他们',\r\n my: '我的',\r\n your: '你的',\r\n his: '他的',\r\n her: '她的',\r\n its: '它的',\r\n our: '我们的',\r\n your: '你们的',\r\n their: '他们的',\r\n i: '我',\r\n you: '你',\r\n he: '他',\r\n she: '她',\r\n it: '它',\r\n we: '我们',\r\n they: '他们',\r\n am: '是',\r\n is: '是',\r\n are: '是',\r\n was: '是',\r\n were: '是',\r\n be: '是',\r\n been: '是',\r\n being: '是',\r\n have: '有',\r\n has: '有',\r\n had: '有',\r\n having: '有',\r\n do: '做',\r\n does: '做',\r\n did: '做',\r\n doing: '做',\r\n will: '会',\r\n would: '会',\r\n shall: '将',\r\n should: '应该',\r\n may: '可以',\r\n might: '可能',\r\n can: '能',\r\n could: '能',\r\n must: '必须',\r\n need: '需要',\r\n dare: '敢',\r\n ought: '应该',\r\n used: '过去常常',\r\n to: '到',\r\n of: '的',\r\n in: '在',\r\n for: '为了',\r\n on: '在',\r\n with: '和',\r\n at: '在',\r\n by: '通过',\r\n from: '从',\r\n into: '进入',\r\n during: '在...期间',\r\n before: '在...之前',\r\n after: '在...之后',\r\n above: '在...上面',\r\n below: '在...下面',\r\n between: '在...之间',\r\n under: '在...下面',\r\n over: '在...上面',\r\n across: '穿过',\r\n through: '通过',\r\n into: '进入',\r\n towards: '朝向',\r\n upon: '在...上面',\r\n about: '关于',\r\n against: '反对',\r\n among: '在...之中',\r\n along: '沿着',\r\n around: '周围',\r\n beyond: '超出',\r\n but: '但是',\r\n despite: '尽管',\r\n except: '除了',\r\n inside: '里面',\r\n outside: '外面',\r\n since: '自从',\r\n until: '直到',\r\n unless: '除非',\r\n whether: '是否',\r\n while: '当...时候',\r\n although: '虽然',\r\n because: '因为',\r\n if: '如果',\r\n once: '一旦',\r\n since: '自从',\r\n so: '所以',\r\n that: '那个',\r\n though: '虽然',\r\n till: '直到',\r\n unless: '除非',\r\n until: '直到',\r\n when: '当...时候',\r\n whenever: '每当',\r\n where: '哪里',\r\n wherever: '无论哪里',\r\n whereas: '然而',\r\n wherever: '无论哪里',\r\n while: '当...时候',\r\n why: '为什么',\r\n },\r\n \r\n 'en-US': {\r\n close: 'Close',\r\n loading: 'Loading...',\r\n success: 'Success',\r\n error: 'Error',\r\n warning: 'Warning',\r\n info: 'Info',\r\n confirm: 'Confirm',\r\n cancel: 'Cancel',\r\n yes: 'Yes',\r\n no: 'No',\r\n ok: 'OK',\r\n retry: 'Retry',\r\n undo: 'Undo',\r\n redo: 'Redo',\r\n save: 'Save',\r\n delete: 'Delete',\r\n edit: 'Edit',\r\n add: 'Add',\r\n remove: 'Remove',\r\n search: 'Search',\r\n filter: 'Filter',\r\n sort: 'Sort',\r\n refresh: 'Refresh',\r\n sync: 'Sync',\r\n upload: 'Upload',\r\n download: 'Download',\r\n share: 'Share',\r\n copy: 'Copy',\r\n cut: 'Cut',\r\n paste: 'Paste',\r\n print: 'Print',\r\n export: 'Export',\r\n import: 'Import',\r\n settings: 'Settings',\r\n help: 'Help',\r\n about: 'About',\r\n version: 'Version',\r\n language: 'Language',\r\n theme: 'Theme',\r\n dark: 'Dark',\r\n light: 'Light',\r\n auto: 'Auto',\r\n notifications: 'Notifications',\r\n enable: 'Enable',\r\n disable: 'Disable',\r\n on: 'On',\r\n off: 'Off',\r\n max: 'Max',\r\n min: 'Min',\r\n expand: 'Expand',\r\n collapse: 'Collapse',\r\n fullscreen: 'Fullscreen',\r\n exitFullscreen: 'Exit Fullscreen',\r\n zoomIn: 'Zoom In',\r\n zoomOut: 'Zoom Out',\r\n reset: 'Reset',\r\n apply: 'Apply',\r\n submit: 'Submit',\r\n send: 'Send',\r\n receive: 'Receive',\r\n connect: 'Connect',\r\n disconnect: 'Disconnect',\r\n start: 'Start',\r\n stop: 'Stop',\r\n pause: 'Pause',\r\n resume: 'Resume',\r\n next: 'Next',\r\n previous: 'Previous',\r\n first: 'First',\r\n last: 'Last',\r\n back: 'Back',\r\n forward: 'Forward',\r\n home: 'Home',\r\n menu: 'Menu',\r\n more: 'More',\r\n less: 'Less',\r\n show: 'Show',\r\n hide: 'Hide',\r\n visible: 'Visible',\r\n hidden: 'Hidden',\r\n enabled: 'Enabled',\r\n disabled: 'Disabled',\r\n active: 'Active',\r\n inactive: 'Inactive',\r\n online: 'Online',\r\n offline: 'Offline',\r\n connected: 'Connected',\r\n disconnected: 'Disconnected',\r\n loading: 'Loading',\r\n loaded: 'Loaded',\r\n saving: 'Saving',\r\n saved: 'Saved',\r\n deleting: 'Deleting',\r\n deleted: 'Deleted',\r\n uploading: 'Uploading',\r\n uploaded: 'Uploaded',\r\n downloading: 'Downloading',\r\n downloaded: 'Downloaded',\r\n processing: 'Processing',\r\n processed: 'Processed',\r\n syncing: 'Syncing',\r\n synced: 'Synced',\r\n sending: 'Sending',\r\n sent: 'Sent',\r\n receiving: 'Receiving',\r\n received: 'Received',\r\n connecting: 'Connecting',\r\n error: 'Error',\r\n warning: 'Warning',\r\n info: 'Info',\r\n success: 'Success',\r\n question: 'Question',\r\n help: 'Help',\r\n feedback: 'Feedback',\r\n report: 'Report',\r\n bug: 'Bug',\r\n feature: 'Feature',\r\n improvement: 'Improvement',\r\n suggestion: 'Suggestion',\r\n request: 'Request',\r\n response: 'Response',\r\n status: 'Status',\r\n progress: 'Progress',\r\n complete: 'Complete',\r\n incomplete: 'Incomplete',\r\n pending: 'Pending',\r\n processing: 'Processing',\r\n failed: 'Failed',\r\n cancelled: 'Cancelled',\r\n timeout: 'Timeout',\r\n expired: 'Expired',\r\n invalid: 'Invalid',\r\n valid: 'Valid',\r\n required: 'Required',\r\n optional: 'Optional',\r\n enabled: 'Enabled',\r\n disabled: 'Disabled',\r\n allowed: 'Allowed',\r\n denied: 'Denied',\r\n approved: 'Approved',\r\n rejected: 'Rejected',\r\n accepted: 'Accepted',\r\n declined: 'Declined',\r\n confirmed: 'Confirmed',\r\n unconfirmed: 'Unconfirmed',\r\n verified: 'Verified',\r\n unverified: 'Unverified',\r\n authenticated: 'Authenticated',\r\n unauthenticated: 'Unauthenticated',\r\n authorized: 'Authorized',\r\n unauthorized: 'Unauthorized',\r\n public: 'Public',\r\n private: 'Private',\r\n protected: 'Protected',\r\n internal: 'Internal',\r\n external: 'External',\r\n local: 'Local',\r\n remote: 'Remote',\r\n global: 'Global',\r\n system: 'System',\r\n user: 'User',\r\n admin: 'Admin',\r\n moderator: 'Moderator',\r\n guest: 'Guest',\r\n member: 'Member',\r\n owner: 'Owner',\r\n creator: 'Creator',\r\n editor: 'Editor',\r\n viewer: 'Viewer',\r\n subscriber: 'Subscriber',\r\n follower: 'Follower',\r\n following: 'Following',\r\n friend: 'Friend',\r\n contact: 'Contact',\r\n group: 'Group',\r\n team: 'Team',\r\n organization: 'Organization',\r\n company: 'Company',\r\n department: 'Department',\r\n project: 'Project',\r\n task: 'Task',\r\n issue: 'Issue',\r\n ticket: 'Ticket',\r\n request: 'Request',\r\n response: 'Response',\r\n message: 'Message',\r\n notification: 'Notification',\r\n alert: 'Alert',\r\n reminder: 'Reminder',\r\n event: 'Event',\r\n activity: 'Activity',\r\n log: 'Log',\r\n report: 'Report',\r\n analytics: 'Analytics',\r\n statistics: 'Statistics',\r\n metrics: 'Metrics',\r\n performance: 'Performance',\r\n security: 'Security',\r\n privacy: 'Privacy',\r\n compliance: 'Compliance',\r\n policy: 'Policy',\r\n terms: 'Terms',\r\n conditions: 'Conditions',\r\n agreement: 'Agreement',\r\n contract: 'Contract',\r\n license: 'License',\r\n copyright: 'Copyright',\r\n trademark: 'Trademark',\r\n patent: 'Patent',\r\n tradeSecret: 'Trade Secret',\r\n confidential: 'Confidential',\r\n sensitive: 'Sensitive',\r\n critical: 'Critical',\r\n important: 'Important',\r\n urgent: 'Urgent',\r\n high: 'High',\r\n medium: 'Medium',\r\n low: 'Low',\r\n none: 'None',\r\n all: 'All',\r\n any: 'Any',\r\n some: 'Some',\r\n each: 'Each',\r\n every: 'Every',\r\n both: 'Both',\r\n neither: 'Neither',\r\n either: 'Either',\r\n other: 'Other',\r\n another: 'Another',\r\n this: 'This',\r\n that: 'That',\r\n these: 'These',\r\n those: 'Those',\r\n here: 'Here',\r\n there: 'There',\r\n where: 'Where',\r\n when: 'When',\r\n why: 'Why',\r\n how: 'How',\r\n what: 'What',\r\n who: 'Who',\r\n which: 'Which',\r\n whose: 'Whose',\r\n whom: 'Whom',\r\n myself: 'Myself',\r\n yourself: 'Yourself',\r\n himself: 'Himself',\r\n herself: 'Herself',\r\n itself: 'Itself',\r\n ourselves: 'Ourselves',\r\n yourselves: 'Yourselves',\r\n themselves: 'Themselves',\r\n mine: 'Mine',\r\n yours: 'Yours',\r\n his: 'His',\r\n hers: 'Hers',\r\n its: 'Its',\r\n ours: 'Ours',\r\n yours: 'Yours',\r\n theirs: 'Theirs',\r\n me: 'Me',\r\n you: 'You',\r\n him: 'Him',\r\n her: 'Her',\r\n it: 'It',\r\n us: 'Us',\r\n them: 'Them',\r\n my: 'My',\r\n your: 'Your',\r\n his: 'His',\r\n her: 'Her',\r\n its: 'Its',\r\n our: 'Our',\r\n your: 'Your',\r\n their: 'Their',\r\n i: 'I',\r\n you: 'You',\r\n he: 'He',\r\n she: 'She',\r\n it: 'It',\r\n we: 'We',\r\n they: 'They',\r\n am: 'Am',\r\n is: 'Is',\r\n are: 'Are',\r\n was: 'Was',\r\n were: 'Were',\r\n be: 'Be',\r\n been: 'Been',\r\n being: 'Being',\r\n have: 'Have',\r\n has: 'Has',\r\n had: 'Had',\r\n having: 'Having',\r\n do: 'Do',\r\n does: 'Does',\r\n did: 'Did',\r\n doing: 'Doing',\r\n will: 'Will',\r\n would: 'Would',\r\n shall: 'Shall',\r\n should: 'Should',\r\n may: 'May',\r\n might: 'Might',\r\n can: 'Can',\r\n could: 'Could',\r\n must: 'Must',\r\n need: 'Need',\r\n dare: 'Dare',\r\n ought: 'Ought',\r\n used: 'Used',\r\n to: 'To',\r\n of: 'Of',\r\n in: 'In',\r\n for: 'For',\r\n on: 'On',\r\n with: 'With',\r\n at: 'At',\r\n by: 'By',\r\n from: 'From',\r\n into: 'Into',\r\n during: 'During',\r\n before: 'Before',\r\n after: 'After',\r\n above: 'Above',\r\n below: 'Below',\r\n between: 'Between',\r\n under: 'Under',\r\n over: 'Over',\r\n across: 'Across',\r\n through: 'Through',\r\n into: 'Into',\r\n towards: 'Towards',\r\n upon: 'Upon',\r\n about: 'About',\r\n against: 'Against',\r\n among: 'Among',\r\n along: 'Along',\r\n around: 'Around',\r\n beyond: 'Beyond',\r\n but: 'But',\r\n despite: 'Despite',\r\n except: 'Except',\r\n inside: 'Inside',\r\n outside: 'Outside',\r\n since: 'Since',\r\n until: 'Until',\r\n unless: 'Unless',\r\n whether: 'Whether',\r\n while: 'While',\r\n although: 'Although',\r\n because: 'Because',\r\n if: 'If',\r\n once: 'Once',\r\n since: 'Since',\r\n so: 'So',\r\n that: 'That',\r\n though: 'Though',\r\n till: 'Till',\r\n unless: 'Unless',\r\n until: 'Until',\r\n when: 'When',\r\n whenever: 'Whenever',\r\n where: 'Where',\r\n wherever: 'Wherever',\r\n whereas: 'Whereas',\r\n wherever: 'Wherever',\r\n while: 'While',\r\n why: 'Why',\r\n },\r\n};\r\n","/**\r\n * MetonaToast Constants - 常量定义\r\n * @module constants\r\n * @version 2.0.0\r\n * @description 默认配置、颜色、动画、主题等常量\r\n */\r\n\r\n/**\r\n * 默认配置\r\n */\r\nexport const DEFAULTS = Object.freeze({\r\n // 基础配置\r\n position: 'top-right',\r\n duration: 4000,\r\n max: 6,\r\n gap: 12,\r\n offset: 24,\r\n \r\n // 交互配置\r\n pauseOnHover: true,\r\n closeOnClick: true,\r\n draggable: true,\r\n \r\n // 显示配置\r\n showProgress: true,\r\n progressDirection: 'horizontal',\r\n icon: true,\r\n closeButton: true,\r\n \r\n // 主题配置\r\n theme: 'auto',\r\n animation: 'slide',\r\n \r\n // 布局配置\r\n zIndex: 9999,\r\n width: 360,\r\n \r\n // 自定义配置\r\n className: '',\r\n style: {},\r\n \r\n // 回调函数\r\n onShow: null,\r\n onClose: null,\r\n onClick: null,\r\n onUpdate: null,\r\n \r\n // 高级\r\n resetTimerOnUpdate: false,\r\n notifyWhenHidden: false,\r\n \r\n // 国际化\r\n locale: 'zh-CN',\r\n \r\n // 插件\r\n plugins: [],\r\n});\r\n\r\n// Icons — 从 icons.js 导入并重新导出(保持向后兼容)\r\nimport { ICONS } from './icons.js';\r\nexport { ICONS };\r\n\r\n/**\r\n * 类型颜色配置\r\n */\r\nexport const TYPE_COLORS = {\r\n success: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n error: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n warning: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n info: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n loading: { fg: '#6366f1', bg: 'rgba(99, 102, 241, 0.1)' },\r\n default: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n check: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n x: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n alert: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n question: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n star: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n heart: { fg: '#ec4899', bg: 'rgba(236, 72, 153, 0.1)' },\r\n bell: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n mail: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n settings: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n user: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n home: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n search: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n plus: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n minus: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n edit: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n trash: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n download: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n upload: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n share: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n link: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n external: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n clock: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n calendar: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n map: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n compass: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n globe: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n wifi: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n cloud: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n sun: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n moon: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n zap: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n activity: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n cpu: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n database: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n server: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n terminal: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n code: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n git: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n package: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n layers: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n grid: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n list: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n filter: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n sort: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n refresh: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n sync: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n power: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n battery: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n bluetooth: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n volume: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n mic: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n camera: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n image: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n video: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n music: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n file: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n folder: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n clipboard: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n save: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n print: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n eye: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n eyeOff: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n lock: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n unlock: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n shield: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n key: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n flag: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n bookmark: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n tag: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n gift: { fg: '#ec4899', bg: 'rgba(236, 72, 153, 0.1)' },\r\n award: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n target: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n crosshair: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n move: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n maximize: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n minimize: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n copy: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n cut: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n paste: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n rotateCw: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n rotateCcw: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n zoomIn: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n zoomOut: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n crop: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n sliders: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n toggleLeft: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n toggleRight: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n checkCircle: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n xCircle: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n alertCircle: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n infoCircle: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n helpCircle: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n alertTriangle: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n checkSquare: { fg: '#10b981', bg: 'rgba(16, 185, 129, 0.1)' },\r\n square: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n circle: { fg: '#6b7280', bg: 'rgba(107, 114, 128, 0.1)' },\r\n triangle: { fg: '#f59e0b', bg: 'rgba(245, 158, 11, 0.1)' },\r\n hexagon: { fg: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)' },\r\n octagon: { fg: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)' },\r\n pentagon: { fg: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.1)' },\r\n diamond: { fg: '#ec4899', bg: 'rgba(236, 72, 153, 0.1)' },\r\n};\r\n\r\n/**\r\n * 动画配置\r\n */\r\nexport const ANIMATIONS = {\r\n slide: {\r\n enter: { transform: 'translateX(80px)', opacity: 0 },\r\n leave: { transform: 'translateX(120%)', opacity: 0 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n fade: {\r\n enter: { opacity: 0, filter: 'blur(3px)' },\r\n leave: { opacity: 0, filter: 'blur(3px)' },\r\n duration: 500,\r\n easing: 'ease',\r\n },\r\n scale: {\r\n enter: { transform: 'scale(0.55)', opacity: 0 },\r\n leave: { transform: 'scale(0.55)', opacity: 0 },\r\n duration: 450,\r\n easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\r\n },\r\n bounce: {\r\n enter: { transform: 'translateY(-80px)', opacity: 0 },\r\n leave: { transform: 'translateY(20px)', opacity: 0 },\r\n duration: 650,\r\n easing: 'ease',\r\n },\r\n flip: {\r\n enter: { transform: 'perspective(500px) rotateX(-90deg)', opacity: 0 },\r\n leave: { transform: 'perspective(500px) rotateX(90deg)', opacity: 0 },\r\n duration: 500,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n rotate: {\r\n enter: { transform: 'rotate(-25deg) scale(0.6)', opacity: 0 },\r\n leave: { transform: 'rotate(25deg) scale(0.6)', opacity: 0 },\r\n duration: 500,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n zoom: {\r\n enter: { transform: 'scale(0.1)', opacity: 0 },\r\n leave: { transform: 'scale(0.1)', opacity: 0 },\r\n duration: 500,\r\n easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\r\n },\r\n slideUp: {\r\n enter: { transform: 'translateY(60px)', opacity: 0 },\r\n leave: { transform: 'translateY(-120%)', opacity: 0 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n slideDown: {\r\n enter: { transform: 'translateY(-60px)', opacity: 0 },\r\n leave: { transform: 'translateY(120%)', opacity: 0 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n slideLeft: {\r\n enter: { transform: 'translateX(-90px)', opacity: 0 },\r\n leave: { transform: 'translateX(120%)', opacity: 0 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n slideRight: {\r\n enter: { transform: 'translateX(90px)', opacity: 0 },\r\n leave: { transform: 'translateX(-120%)', opacity: 0 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n};\r\n\r\n/**\r\n * 主题配置\r\n */\r\nexport const THEMES = {\r\n light: {\r\n bg: 'rgba(255, 255, 255, 0.96)',\r\n text: '#1f2937',\r\n border: 'rgba(0, 0, 0, 0.06)',\r\n shadow: '0 10px 36px -10px rgba(0, 0, 0, 0.18), 0 4px 14px -4px rgba(0, 0, 0, 0.08)',\r\n hoverShadow: '0 14px 48px -10px rgba(0, 0, 0, 0.22), 0 6px 18px -4px rgba(0, 0, 0, 0.10)',\r\n progressBg: 'rgba(0, 0, 0, 0.06)',\r\n closeHoverBg: 'rgba(0, 0, 0, 0.06)',\r\n },\r\n dark: {\r\n bg: 'rgba(28, 32, 40, 0.94)',\r\n text: '#e6e8eb',\r\n border: 'rgba(255, 255, 255, 0.08)',\r\n shadow: '0 10px 36px -10px rgba(0, 0, 0, 0.6), 0 4px 14px -4px rgba(0, 0, 0, 0.4)',\r\n hoverShadow: '0 14px 48px -8px rgba(0, 0, 0, 0.6), 0 6px 18px -4px rgba(0, 0, 0, 0.4)',\r\n progressBg: 'rgba(255, 255, 255, 0.08)',\r\n closeHoverBg: 'rgba(255, 255, 255, 0.08)',\r\n },\r\n auto: 'auto',\r\n warm: {\r\n bg: 'rgba(255, 251, 235, 0.96)',\r\n text: '#78350f',\r\n border: 'rgba(245, 158, 11, 0.2)',\r\n shadow: '0 10px 36px -10px rgba(245, 158, 11, 0.18), 0 4px 14px -4px rgba(245, 158, 11, 0.08)',\r\n hoverShadow: '0 14px 48px -10px rgba(245, 158, 11, 0.22), 0 6px 18px -4px rgba(245, 158, 11, 0.10)',\r\n progressBg: 'rgba(245, 158, 11, 0.1)',\r\n closeHoverBg: 'rgba(245, 158, 11, 0.1)',\r\n },\r\n};\r\n\r\n/**\r\n * 位置配置\r\n */\r\nexport const POSITIONS = [\r\n 'top-left',\r\n 'top-center',\r\n 'top-right',\r\n 'bottom-left',\r\n 'bottom-center',\r\n 'bottom-right',\r\n];\r\n\r\n/**\r\n * 类型配置\r\n */\r\nexport const TYPES = [\r\n 'default', 'success', 'error', 'warning', 'info', 'loading',\r\n 'check', 'x', 'alert', 'question', 'star', 'heart', 'bell', 'mail',\r\n 'settings', 'user', 'home', 'search', 'plus', 'minus', 'edit', 'trash',\r\n 'download', 'upload', 'share', 'link', 'external', 'clock', 'calendar',\r\n 'map', 'compass', 'globe', 'wifi', 'cloud', 'sun', 'moon', 'zap',\r\n 'activity', 'cpu', 'database', 'server', 'terminal', 'code', 'git',\r\n 'package', 'layers', 'grid', 'list', 'filter', 'sort', 'refresh', 'sync',\r\n 'power', 'battery', 'bluetooth', 'volume', 'mic', 'camera', 'image', 'video',\r\n 'music', 'file', 'folder', 'clipboard', 'save', 'print', 'eye', 'eyeOff',\r\n 'lock', 'unlock', 'shield', 'key', 'flag', 'bookmark', 'tag', 'gift',\r\n 'award', 'target', 'crosshair', 'move', 'maximize', 'minimize',\r\n 'copy', 'cut', 'paste', 'rotateCw', 'rotateCcw', 'zoomIn', 'zoomOut',\r\n 'crop', 'sliders', 'toggleLeft', 'toggleRight',\r\n 'checkCircle', 'xCircle', 'alertCircle', 'infoCircle', 'helpCircle',\r\n 'alertTriangle', 'checkSquare', 'square', 'circle', 'triangle',\r\n 'hexagon', 'octagon', 'pentagon', 'diamond',\r\n];\r\n\r\n// Locales — 从 locales.js 导入并重新导出(保持向后兼容)\r\nimport { LOCALES } from './locales.js';\r\nexport { LOCALES };\r\n\r\n/**\r\n * 进度条方向\r\n */\r\nexport const PROGRESS_DIRECTIONS = ['horizontal', 'vertical'];\r\n\r\n/**\r\n * 动画类型\r\n */\r\nexport const ANIMATION_TYPES = ['slide', 'fade', 'scale', 'bounce', 'flip', 'rotate', 'zoom', 'slideUp', 'slideDown', 'slideLeft', 'slideRight'];\r\n\r\n/**\r\n * 主题类型\r\n */\r\nexport const THEME_TYPES = ['light', 'dark', 'auto'];\r\n","/**\r\n * MetonaToast Styles - 样式管理\r\n * @module styles\r\n * @version 2.0.0\r\n * @description 样式注入、更新和主题管理\r\n */\r\n\r\nimport { THEMES } from './constants.js';\r\n\r\n// 样式缓存\r\nlet injectedStyles = null;\r\nlet styleElement = null;\r\n\r\n/**\r\n * 生成CSS样式\r\n * @param {Object} theme - 主题配置\r\n * @returns {string} CSS字符串\r\n */\r\nconst generateCSS = (theme) => {\r\n return `\r\n /* MetonaToast 基础样式 */\r\n .met-container {\r\n pointer-events: none;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 12px;\r\n box-sizing: border-box;\r\n padding: 24px;\r\n max-width: 100vw;\r\n position: fixed;\r\n z-index: 9999;\r\n }\r\n \r\n /* 位置样式 — 顶部位置用 column-reverse,新 toast 出现在最上方 */\r\n .met-container.top-left {\r\n top: 0;\r\n left: 0;\r\n align-items: flex-start;\r\n flex-direction: column-reverse;\r\n }\r\n \r\n .met-container.top-center {\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n align-items: center;\r\n flex-direction: column-reverse;\r\n }\r\n \r\n .met-container.top-right {\r\n top: 0;\r\n right: 0;\r\n align-items: flex-end;\r\n flex-direction: column-reverse;\r\n }\r\n \r\n .met-container.bottom-left {\r\n bottom: 0;\r\n left: 0;\r\n align-items: flex-start;\r\n flex-direction: column-reverse;\r\n }\r\n \r\n .met-container.bottom-center {\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n align-items: center;\r\n flex-direction: column-reverse;\r\n }\r\n \r\n .met-container.bottom-right {\r\n bottom: 0;\r\n right: 0;\r\n align-items: flex-end;\r\n flex-direction: column-reverse;\r\n }\r\n \r\n /* Toast基础样式 */\r\n .met-toast {\r\n position: relative;\r\n display: flex;\r\n align-items: flex-start;\r\n gap: 12px;\r\n padding: 14px 16px;\r\n border-radius: 12px;\r\n box-sizing: border-box;\r\n backdrop-filter: blur(14px) saturate(180%);\r\n -webkit-backdrop-filter: blur(14px) saturate(180%);\r\n font: 14px/1.5 -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\r\n user-select: none;\r\n -webkit-user-select: none;\r\n transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), \r\n box-shadow 0.25s ease, \r\n opacity 0.25s ease;\r\n will-change: transform, opacity;\r\n flex-shrink: 0;\r\n pointer-events: auto;\r\n min-width: 240px;\r\n max-width: calc(100vw - 48px);\r\n width: 360px;\r\n border: 1px solid var(--met-border, rgba(0,0,0,0.06));\r\n background: var(--met-bg, rgba(255,255,255,0.96));\r\n color: var(--met-text, #1f2937);\r\n box-shadow: var(--met-shadow, 0 10px 36px -10px rgba(0,0,0,0.18), 0 4px 14px -4px rgba(0,0,0,0.08));\r\n }\r\n \r\n /* 悬停效果 */\r\n .met-toast:hover {\r\n box-shadow: var(--met-hover-shadow, 0 14px 48px -10px rgba(0,0,0,0.22), 0 6px 18px -4px rgba(0,0,0,0.10)) !important;\r\n }\r\n \r\n /* 可点击状态 */\r\n .met-toast.met-clickable {\r\n cursor: pointer;\r\n }\r\n \r\n /* 图标样式 */\r\n .met-icon {\r\n flex-shrink: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 24px;\r\n height: 24px;\r\n margin-top: 1px;\r\n }\r\n \r\n /* 内容样式 */\r\n .met-content {\r\n flex: 1;\r\n min-width: 0;\r\n word-wrap: break-word;\r\n overflow-wrap: break-word;\r\n }\r\n \r\n /* 标题样式 */\r\n .met-title {\r\n font-weight: 600;\r\n font-size: 14px;\r\n letter-spacing: 0.1px;\r\n }\r\n \r\n /* 消息样式 */\r\n .met-message {\r\n font-size: 13px;\r\n opacity: 0.85;\r\n margin-top: 2px;\r\n }\r\n \r\n /* 关闭按钮样式 */\r\n .met-close {\r\n flex-shrink: 0;\r\n background: transparent;\r\n border: 0;\r\n padding: 4px;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 6px;\r\n transition: background 0.2s, color 0.2s;\r\n line-height: 0;\r\n color: inherit;\r\n opacity: 0.5;\r\n }\r\n \r\n .met-close:hover {\r\n opacity: 1;\r\n background: var(--met-close-hover-bg, rgba(0,0,0,0.06));\r\n }\r\n \r\n /* 进度条样式 - 水平 */\r\n .met-progress {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n height: 3px;\r\n overflow: hidden;\r\n background: var(--met-progress-bg, rgba(0,0,0,0.06));\r\n border-radius: 0 0 12px 12px;\r\n }\r\n \r\n /* 进度条样式 - 垂直 */\r\n .met-progress-v {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n bottom: 0;\r\n width: 3px;\r\n overflow: hidden;\r\n background: var(--met-progress-bg, rgba(0,0,0,0.06));\r\n border-radius: 12px 0 0 12px;\r\n }\r\n \r\n /* 进度条指示器 - 水平 */\r\n .met-bar {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n height: 100%;\r\n width: 100%;\r\n transform-origin: left;\r\n transform: scaleX(1);\r\n }\r\n \r\n /* 进度条指示器 - 垂直 */\r\n .met-bar-v {\r\n position: absolute;\r\n left: 0;\r\n bottom: 0;\r\n width: 100%;\r\n height: 100%;\r\n transform-origin: bottom;\r\n transform: scaleY(1);\r\n }\r\n \r\n /* 侧边指示器 */\r\n .met-side {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n bottom: 0;\r\n width: 4px;\r\n border-radius: 12px 0 0 12px;\r\n }\r\n \r\n /* 加载动画 */\r\n .met-spin {\r\n animation: met-rot 1s linear infinite;\r\n transform-origin: 50% 50%;\r\n }\r\n \r\n /* 离开状态 */\r\n .met-toast.met-leaving {\r\n pointer-events: none;\r\n z-index: 1;\r\n }\r\n \r\n /* 动画关键帧 */\r\n @keyframes met-rot {\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n \r\n /* === 进入动画:初始隐藏态 === */\r\n .met-anim-slide.met-toast,\r\n .met-anim-fade.met-toast,\r\n .met-anim-scale.met-toast,\r\n .met-anim-bounce.met-toast,\r\n .met-anim-flip.met-toast,\r\n .met-anim-rotate.met-toast,\r\n .met-anim-zoom.met-toast,\r\n .met-anim-slideUp.met-toast,\r\n .met-anim-slideDown.met-toast,\r\n .met-anim-slideLeft.met-toast,\r\n .met-anim-slideRight.met-toast {\r\n opacity: 0;\r\n }\r\n \r\n /* === 进入动画:@keyframes 定义 === */\r\n @keyframes met-slide-in {\r\n 0% { transform: translateX(80px); opacity: 0; }\r\n 65% { transform: translateX(-6px); opacity: 1; }\r\n 100% { transform: translateX(0); opacity: 1; }\r\n }\r\n @keyframes met-fade-in {\r\n 0% { opacity: 0; filter: blur(3px); }\r\n 100% { opacity: 1; filter: blur(0); }\r\n }\r\n @keyframes met-scale-in {\r\n 0% { transform: scale(0.55); opacity: 0; }\r\n 65% { transform: scale(1.07); opacity: 1; }\r\n 100% { transform: scale(1); opacity: 1; }\r\n }\r\n @keyframes met-bounce-in {\r\n 0% { transform: translateY(-80px); opacity: 0; animation-timing-function: ease-in; }\r\n 45% { transform: translateY(14px); opacity: 1; animation-timing-function: ease-out; }\r\n 65% { transform: translateY(-12px); animation-timing-function: ease-in; }\r\n 82% { transform: translateY(4px); animation-timing-function: ease-out; }\r\n 100% { transform: translateY(0); opacity: 1; }\r\n }\r\n @keyframes met-flip-in {\r\n 0% { transform: perspective(500px) rotateX(-90deg); opacity: 0; }\r\n 60% { transform: perspective(500px) rotateX(8deg); opacity: 1; }\r\n 85% { transform: perspective(500px) rotateX(-2deg); }\r\n 100% { transform: perspective(500px) rotateX(0); opacity: 1; }\r\n }\r\n @keyframes met-rotate-in {\r\n 0% { transform: rotate(-25deg) scale(0.6); opacity: 0; }\r\n 60% { transform: rotate(4deg) scale(1.05); opacity: 1; }\r\n 85% { transform: rotate(-1deg) scale(0.98); }\r\n 100% { transform: rotate(0) scale(1); opacity: 1; }\r\n }\r\n @keyframes met-zoom-in {\r\n 0% { transform: scale(0.1); opacity: 0; }\r\n 50% { transform: scale(1.12); opacity: 1; }\r\n 75% { transform: scale(0.94); }\r\n 100% { transform: scale(1); opacity: 1; }\r\n }\r\n @keyframes met-slideUp-in {\r\n 0% { transform: translateY(60px); opacity: 0; }\r\n 70% { transform: translateY(-6px); opacity: 1; }\r\n 100% { transform: translateY(0); opacity: 1; }\r\n }\r\n @keyframes met-slideDown-in {\r\n 0% { transform: translateY(-60px); opacity: 0; }\r\n 70% { transform: translateY(6px); opacity: 1; }\r\n 100% { transform: translateY(0); opacity: 1; }\r\n }\r\n @keyframes met-slideLeft-in {\r\n 0% { transform: translateX(-90px); opacity: 0; }\r\n 65% { transform: translateX(6px); opacity: 1; }\r\n 100% { transform: translateX(0); opacity: 1; }\r\n }\r\n @keyframes met-slideRight-in {\r\n 0% { transform: translateX(90px); opacity: 0; }\r\n 65% { transform: translateX(-6px); opacity: 1; }\r\n 100% { transform: translateX(0); opacity: 1; }\r\n }\r\n \r\n /* === 进入动画:绑定到 .met-show === */\r\n .met-anim-slide.met-toast.met-show { animation: met-slide-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n .met-anim-fade.met-toast.met-show { animation: met-fade-in 0.50s ease forwards; }\r\n .met-anim-scale.met-toast.met-show { animation: met-scale-in 0.45s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }\r\n .met-anim-bounce.met-toast.met-show { animation: met-bounce-in 0.65s ease forwards; }\r\n .met-anim-flip.met-toast.met-show { animation: met-flip-in 0.50s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n .met-anim-rotate.met-toast.met-show { animation: met-rotate-in 0.50s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n .met-anim-zoom.met-toast.met-show { animation: met-zoom-in 0.50s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }\r\n .met-anim-slideUp.met-toast.met-show { animation: met-slideUp-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n .met-anim-slideDown.met-toast.met-show { animation: met-slideDown-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n .met-anim-slideLeft.met-toast.met-show { animation: met-slideLeft-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n .met-anim-slideRight.met-toast.met-show { animation: met-slideRight-in 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; }\r\n \r\n /* 响应式设计 */\r\n @media (prefers-reduced-motion: reduce) {\r\n .met-toast {\r\n transition: opacity 0.15s !important;\r\n }\r\n \r\n .met-toast.met-show {\r\n animation: none !important;\r\n opacity: 1 !important;\r\n }\r\n \r\n .met-spin {\r\n animation-duration: 2.5s !important;\r\n }\r\n }\r\n \r\n @media (max-width: 480px) {\r\n .met-container {\r\n padding: 12px !important;\r\n }\r\n \r\n .met-toast {\r\n width: 100% !important;\r\n min-width: 0 !important;\r\n }\r\n }\r\n \r\n /* 暗色主题特定样式 */\r\n .met-toast.met-theme-dark {\r\n background: rgba(28, 32, 40, 0.94);\r\n color: #e6e8eb;\r\n border-color: rgba(255, 255, 255, 0.08);\r\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.6), \r\n 0 4px 14px -4px rgba(0, 0, 0, 0.4);\r\n }\r\n \r\n .met-toast.met-theme-dark:hover {\r\n box-shadow: 0 14px 48px -8px rgba(0, 0, 0, 0.6), \r\n 0 6px 18px -4px rgba(0, 0, 0, 0.4) !important;\r\n }\r\n \r\n .met-toast.met-theme-dark .met-close:hover {\r\n background: rgba(255, 255, 255, 0.08);\r\n }\r\n \r\n .met-toast.met-theme-dark .met-progress,\r\n .met-toast.met-theme-dark .met-progress-v {\r\n background: rgba(255, 255, 255, 0.08);\r\n }\r\n \r\n /* 亮色主题特定样式 */\r\n .met-toast.met-theme-light {\r\n background: rgba(255, 255, 255, 0.96);\r\n color: #1f2937;\r\n border-color: rgba(0, 0, 0, 0.06);\r\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.18), \r\n 0 4px 14px -4px rgba(0, 0, 0, 0.08);\r\n }\r\n \r\n .met-toast.met-theme-light:hover {\r\n box-shadow: 0 14px 48px -10px rgba(0, 0, 0, 0.22), \r\n 0 6px 18px -4px rgba(0, 0, 0, 0.10) !important;\r\n }\r\n \r\n .met-toast.met-theme-light .met-close:hover {\r\n background: rgba(0, 0, 0, 0.06);\r\n }\r\n \r\n .met-toast.met-theme-light .met-progress,\r\n .met-toast.met-theme-light .met-progress-v {\r\n background: rgba(0, 0, 0, 0.06);\r\n }\r\n \r\n /* 自定义主题支持 */\r\n .met-toast[data-theme] {\r\n --met-bg: var(--met-theme-bg);\r\n --met-text: var(--met-theme-text);\r\n --met-border: var(--met-theme-border);\r\n --met-shadow: var(--met-theme-shadow);\r\n }\r\n \r\n /* 动画性能优化 */\r\n .met-toast {\r\n backface-visibility: hidden;\r\n -webkit-backface-visibility: hidden;\r\n perspective: 1000;\r\n }\r\n \r\n /* 滚动条样式 */\r\n .met-container::-webkit-scrollbar {\r\n width: 6px;\r\n height: 6px;\r\n }\r\n \r\n .met-container::-webkit-scrollbar-track {\r\n background: transparent;\r\n }\r\n \r\n .met-container::-webkit-scrollbar-thumb {\r\n background: rgba(0, 0, 0, 0.2);\r\n border-radius: 3px;\r\n }\r\n \r\n .met-container::-webkit-scrollbar-thumb:hover {\r\n background: rgba(0, 0, 0, 0.3);\r\n }\r\n \r\n /* 打印样式 */\r\n @media print {\r\n .met-container {\r\n display: none !important;\r\n }\r\n .met-toast {\r\n display: none !important;\r\n }\r\n }\r\n \r\n /* 高对比度模式 */\r\n @media (forced-colors: active) {\r\n .met-toast {\r\n border: 2px solid ButtonText;\r\n }\r\n \r\n .met-close {\r\n border: 1px solid ButtonText;\r\n }\r\n }\r\n \r\n /* 焦点样式 */\r\n .met-toast:focus-visible {\r\n outline: 2px solid #3b82f6;\r\n outline-offset: 2px;\r\n }\r\n \r\n .met-close:focus-visible {\r\n outline: 2px solid #3b82f6;\r\n outline-offset: 2px;\r\n }\r\n \r\n /* 禁用状态 */\r\n .met-toast:disabled,\r\n .met-toast[disabled] {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n }\r\n \r\n /* 加载状态 */\r\n .met-toast.met-loading {\r\n cursor: wait;\r\n }\r\n \r\n /* 成功状态 */\r\n .met-toast.met-success {\r\n border-left: 4px solid #10b981;\r\n }\r\n \r\n /* 错误状态 */\r\n .met-toast.met-error {\r\n border-left: 4px solid #ef4444;\r\n }\r\n \r\n /* 警告状态 */\r\n .met-toast.met-warning {\r\n border-left: 4px solid #f59e0b;\r\n }\r\n \r\n /* 信息状态 */\r\n .met-toast.met-info {\r\n border-left: 4px solid #3b82f6;\r\n }\r\n \r\n /* 加载状态 */\r\n .met-toast.met-loading {\r\n border-left: 4px solid #6366f1;\r\n }\r\n \r\n /* 进度条动画 */\r\n .met-bar,\r\n .met-bar-v {\r\n transition: transform 0.1s linear;\r\n }\r\n \r\n /* 容器动画 */\r\n .met-container {\r\n transition: all 0.3s ease;\r\n }\r\n \r\n /* Toast进入动画 */\r\n .met-toast.met-enter {\r\n animation: met-enter 0.3s ease forwards;\r\n }\r\n \r\n /* Toast离开动画 */\r\n .met-toast.met-leave {\r\n animation: met-leave 0.3s ease forwards;\r\n }\r\n \r\n @keyframes met-enter {\r\n from {\r\n opacity: 0;\r\n transform: translateY(-20px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n }\r\n \r\n @keyframes met-leave {\r\n from {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n to {\r\n opacity: 0;\r\n transform: translateY(-20px);\r\n }\r\n }\r\n \r\n /* 响应式字体大小 */\r\n @media (max-width: 768px) {\r\n .met-toast {\r\n font-size: 13px;\r\n }\r\n \r\n .met-title {\r\n font-size: 13px;\r\n }\r\n \r\n .met-message {\r\n font-size: 12px;\r\n }\r\n }\r\n \r\n @media (max-width: 480px) {\r\n .met-toast {\r\n font-size: 12px;\r\n padding: 12px 14px;\r\n }\r\n \r\n .met-title {\r\n font-size: 12px;\r\n }\r\n \r\n .met-message {\r\n font-size: 11px;\r\n }\r\n }\r\n \r\n /* 无障碍支持 */\r\n .met-toast[role=\"alert\"] {\r\n /* 警告类型Toast的特殊样式 */\r\n }\r\n \r\n .met-toast[role=\"status\"] {\r\n /* 状态类型Toast的特殊样式 */\r\n }\r\n \r\n /* 高对比度模式增强 */\r\n @media (prefers-contrast: high) {\r\n .met-toast {\r\n border-width: 2px;\r\n }\r\n \r\n .met-close {\r\n border: 1px solid currentColor;\r\n }\r\n }\r\n \r\n /* 暗色模式自动检测 */\r\n @media (prefers-color-scheme: dark) {\r\n .met-theme-auto .met-toast {\r\n background: rgba(28, 32, 40, 0.94);\r\n color: #e6e8eb;\r\n border-color: rgba(255, 255, 255, 0.08);\r\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.6), \r\n 0 4px 14px -4px rgba(0, 0, 0, 0.4);\r\n }\r\n \r\n .met-theme-auto .met-toast:hover {\r\n box-shadow: 0 14px 48px -8px rgba(0, 0, 0, 0.6), \r\n 0 6px 18px -4px rgba(0, 0, 0, 0.4) !important;\r\n }\r\n \r\n .met-theme-auto .met-close:hover {\r\n background: rgba(255, 255, 255, 0.08);\r\n }\r\n \r\n .met-theme-auto .met-progress,\r\n .met-theme-auto .met-progress-v {\r\n background: rgba(255, 255, 255, 0.08);\r\n }\r\n }\r\n \r\n /* 亮色模式自动检测 */\r\n @media (prefers-color-scheme: light) {\r\n .met-theme-auto .met-toast {\r\n background: rgba(255, 255, 255, 0.96);\r\n color: #1f2937;\r\n border-color: rgba(0, 0, 0, 0.06);\r\n box-shadow: 0 10px 36px -10px rgba(0, 0, 0, 0.18), \r\n 0 4px 14px -4px rgba(0, 0, 0, 0.08);\r\n }\r\n \r\n .met-theme-auto .met-toast:hover {\r\n box-shadow: 0 14px 48px -10px rgba(0, 0, 0, 0.22), \r\n 0 6px 18px -4px rgba(0, 0, 0, 0.10) !important;\r\n }\r\n \r\n .met-theme-auto .met-close:hover {\r\n background: rgba(0, 0, 0, 0.06);\r\n }\r\n \r\n .met-theme-auto .met-progress,\r\n .met-theme-auto .met-progress-v {\r\n background: rgba(0, 0, 0, 0.06);\r\n }\r\n }\r\n \r\n /* 动画性能优化 */\r\n .met-toast {\r\n transform: translateZ(0);\r\n -webkit-transform: translateZ(0);\r\n }\r\n \r\n /* 触摸设备优化 */\r\n @media (hover: none) {\r\n .met-toast:hover {\r\n box-shadow: inherit;\r\n }\r\n }\r\n \r\n /* 滚动时固定位置 */\r\n .met-container {\r\n position: fixed;\r\n z-index: 9999;\r\n }\r\n \r\n /* 全屏模式 */\r\n :fullscreen .met-container {\r\n z-index: 2147483647;\r\n }\r\n \r\n /* 画中画模式 */\r\n :picture-in-picture .met-container {\r\n z-index: 2147483647;\r\n }\r\n \r\n /* 安全区域适配 */\r\n @supports (padding: max(0px)) {\r\n .met-container {\r\n padding: max(24px, env(safe-area-inset-top)) \r\n max(24px, env(safe-area-inset-right)) \r\n max(24px, env(safe-area-inset-bottom)) \r\n max(24px, env(safe-area-inset-left));\r\n }\r\n }\r\n \r\n /* 暗色模式安全区域 */\r\n @media (prefers-color-scheme: dark) {\r\n @supports (padding: max(0px)) {\r\n .met-container {\r\n padding: max(24px, env(safe-area-inset-top)) \r\n max(24px, env(safe-area-inset-right)) \r\n max(24px, env(safe-area-inset-bottom)) \r\n max(24px, env(safe-area-inset-left));\r\n }\r\n }\r\n }\r\n \r\n /* 高分辨率屏幕优化 */\r\n @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {\r\n .met-toast {\r\n border-width: 0.5px;\r\n }\r\n }\r\n \r\n /* 触摸设备优化 */\r\n @media (hover: none) and (pointer: coarse) {\r\n .met-toast {\r\n min-height: 48px;\r\n }\r\n \r\n .met-close {\r\n min-width: 48px;\r\n min-height: 48px;\r\n }\r\n }\r\n \r\n /* 键盘导航优化 */\r\n .met-toast:focus {\r\n outline: 2px solid #3b82f6;\r\n outline-offset: 2px;\r\n }\r\n \r\n .met-toast:focus:not(:focus-visible) {\r\n outline: none;\r\n }\r\n \r\n .met-toast:focus-visible {\r\n outline: 2px solid #3b82f6;\r\n outline-offset: 2px;\r\n }\r\n \r\n /* 减少动画模式 */\r\n @media (prefers-reduced-motion: reduce) {\r\n .met-toast {\r\n transition: opacity 0.15s ease !important;\r\n animation: none !important;\r\n }\r\n \r\n .met-bar,\r\n .met-bar-v {\r\n transition: none !important;\r\n }\r\n \r\n .met-container {\r\n transition: none !important;\r\n }\r\n }\r\n \r\n /* 高对比度模式 */\r\n @media (prefers-contrast: high) {\r\n .met-toast {\r\n border-width: 3px;\r\n border-style: solid;\r\n }\r\n \r\n .met-close {\r\n border: 2px solid currentColor;\r\n border-radius: 4px;\r\n }\r\n \r\n .met-progress,\r\n .met-progress-v {\r\n height: 4px;\r\n }\r\n \r\n .met-bar,\r\n .met-bar-v {\r\n height: 100%;\r\n }\r\n }\r\n \r\n /* 低分辨率屏幕优化 */\r\n @media (max-resolution: 1dppx) {\r\n .met-toast {\r\n border-width: 1px;\r\n }\r\n }\r\n \r\n /* 触摸设备优化 */\r\n @media (hover: none) and (pointer: coarse) {\r\n .met-toast {\r\n min-height: 52px;\r\n padding: 16px 18px;\r\n }\r\n \r\n .met-close {\r\n min-width: 52px;\r\n min-height: 52px;\r\n padding: 8px;\r\n }\r\n \r\n .met-icon {\r\n width: 28px;\r\n height: 28px;\r\n }\r\n }\r\n \r\n /* 大屏幕优化 */\r\n @media (min-width: 1200px) {\r\n .met-toast {\r\n width: 400px;\r\n }\r\n }\r\n \r\n /* 超大屏幕优化 */\r\n @media (min-width: 1920px) {\r\n .met-toast {\r\n width: 440px;\r\n }\r\n }\r\n \r\n /* 小屏幕优化 */\r\n @media (max-width: 320px) {\r\n .met-toast {\r\n width: 100%;\r\n min-width: 0;\r\n padding: 12px 14px;\r\n }\r\n \r\n .met-container {\r\n padding: 8px;\r\n }\r\n }\r\n \r\n /* 横屏优化 */\r\n @media (orientation: landscape) and (max-height: 500px) {\r\n .met-container {\r\n padding: 12px 24px;\r\n }\r\n \r\n .met-toast {\r\n min-height: 44px;\r\n padding: 10px 14px;\r\n }\r\n }\r\n \r\n /* 竖屏优化 */\r\n @media (orientation: portrait) and (max-width: 500px) {\r\n .met-container {\r\n padding: 12px;\r\n }\r\n \r\n .met-toast {\r\n width: 100%;\r\n min-width: 0;\r\n }\r\n }\r\n \r\n /* 无障碍支持 */\r\n .met-toast[aria-live=\"assertive\"] {\r\n /* 紧急通知样式 */\r\n }\r\n \r\n .met-toast[aria-live=\"polite\"] {\r\n /* 普通通知样式 */\r\n }\r\n \r\n /* 焦点陷阱 */\r\n .met-toast:focus-within {\r\n /* 包含焦点元素的Toast样式 */\r\n }\r\n \r\n /* 加载状态 */\r\n .met-toast[aria-busy=\"true\"] {\r\n cursor: wait;\r\n }\r\n \r\n /* 禁用状态 */\r\n .met-toast[aria-disabled=\"true\"] {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n }\r\n \r\n /* 隐藏状态 */\r\n .met-toast[aria-hidden=\"true\"] {\r\n display: none;\r\n }\r\n \r\n /* 展开状态 */\r\n .met-toast[aria-expanded=\"true\"] {\r\n /* 展开状态样式 */\r\n }\r\n \r\n /* 选中状态 */\r\n .met-toast[aria-selected=\"true\"] {\r\n /* 选中状态样式 */\r\n }\r\n \r\n /* 按下状态 */\r\n .met-toast:active {\r\n transform: scale(0.98);\r\n }\r\n \r\n /* 加载状态动画 */\r\n .met-toast.met-loading::after {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background: linear-gradient(\r\n 90deg,\r\n transparent,\r\n rgba(255, 255, 255, 0.1),\r\n transparent\r\n );\r\n animation: met-loading 1.5s infinite;\r\n }\r\n \r\n @keyframes met-loading {\r\n 0% {\r\n transform: translateX(-100%);\r\n }\r\n 100% {\r\n transform: translateX(100%);\r\n }\r\n }\r\n \r\n /* 成功状态动画 */\r\n .met-toast.met-success::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 4px;\r\n height: 100%;\r\n background: #10b981;\r\n border-radius: 12px 0 0 12px;\r\n animation: met-success 0.3s ease;\r\n }\r\n \r\n @keyframes met-success {\r\n from {\r\n transform: scaleY(0);\r\n }\r\n to {\r\n transform: scaleY(1);\r\n }\r\n }\r\n \r\n /* 错误状态动画 */\r\n .met-toast.met-error::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 4px;\r\n height: 100%;\r\n background: #ef4444;\r\n border-radius: 12px 0 0 12px;\r\n animation: met-error 0.3s ease;\r\n }\r\n \r\n @keyframes met-error {\r\n from {\r\n transform: scaleY(0);\r\n }\r\n to {\r\n transform: scaleY(1);\r\n }\r\n }\r\n \r\n /* 警告状态动画 */\r\n .met-toast.met-warning::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 4px;\r\n height: 100%;\r\n background: #f59e0b;\r\n border-radius: 12px 0 0 12px;\r\n animation: met-warning 0.3s ease;\r\n }\r\n \r\n @keyframes met-warning {\r\n from {\r\n transform: scaleY(0);\r\n }\r\n to {\r\n transform: scaleY(1);\r\n }\r\n }\r\n \r\n /* 信息状态动画 */\r\n .met-toast.met-info::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 4px;\r\n height: 100%;\r\n background: #3b82f6;\r\n border-radius: 12px 0 0 12px;\r\n animation: met-info 0.3s ease;\r\n }\r\n \r\n @keyframes met-info {\r\n from {\r\n transform: scaleY(0);\r\n }\r\n to {\r\n transform: scaleY(1);\r\n }\r\n }\r\n \r\n /* 加载状态动画 */\r\n .met-toast.met-loading::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 4px;\r\n height: 100%;\r\n background: #6366f1;\r\n border-radius: 12px 0 0 12px;\r\n animation: met-loading-bar 1s infinite;\r\n }\r\n \r\n @keyframes met-loading-bar {\r\n 0% {\r\n transform: scaleY(0);\r\n transform-origin: top;\r\n }\r\n 50% {\r\n transform: scaleY(1);\r\n transform-origin: top;\r\n }\r\n 51% {\r\n transform-origin: bottom;\r\n }\r\n 100% {\r\n transform: scaleY(0);\r\n transform-origin: bottom;\r\n }\r\n }\r\n \r\n /* 进度条脉冲动画 */\r\n .met-bar,\r\n .met-bar-v {\r\n animation: met-pulse 2s infinite;\r\n }\r\n \r\n @keyframes met-pulse {\r\n 0%, 100% {\r\n opacity: 1;\r\n }\r\n 50% {\r\n opacity: 0.8;\r\n }\r\n }\r\n \r\n /* Toast堆叠效果 */\r\n .met-toast + .met-toast {\r\n margin-top: 8px;\r\n }\r\n \r\n /* Toast分组 */\r\n .met-toast-group {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n }\r\n \r\n /* Toast头部 */\r\n .met-toast-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin-bottom: 8px;\r\n }\r\n \r\n /* Toast底部 */\r\n .met-toast-footer {\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n gap: 8px;\r\n margin-top: 12px;\r\n }\r\n \r\n /* Toast操作按钮 */\r\n .met-toast-action {\r\n background: transparent;\r\n border: 1px solid currentColor;\r\n padding: 6px 12px;\r\n border-radius: 6px;\r\n cursor: pointer;\r\n font-size: 12px;\r\n opacity: 0.7;\r\n transition: opacity 0.2s;\r\n }\r\n \r\n .met-toast-action:hover {\r\n opacity: 1;\r\n }\r\n \r\n /* Toast进度文本 */\r\n .met-toast-progress-text {\r\n font-size: 12px;\r\n opacity: 0.7;\r\n margin-left: 8px;\r\n }\r\n \r\n /* Toast时间戳 */\r\n .met-toast-timestamp {\r\n font-size: 11px;\r\n opacity: 0.5;\r\n margin-left: auto;\r\n }\r\n \r\n /* Toast头像 */\r\n .met-toast-avatar {\r\n width: 32px;\r\n height: 32px;\r\n border-radius: 50%;\r\n object-fit: cover;\r\n flex-shrink: 0;\r\n }\r\n \r\n /* Toast图片 */\r\n .met-toast-image {\r\n max-width: 100%;\r\n max-height: 200px;\r\n border-radius: 8px;\r\n margin-top: 8px;\r\n object-fit: cover;\r\n }\r\n \r\n /* Toast视频 */\r\n .met-toast-video {\r\n max-width: 100%;\r\n max-height: 200px;\r\n border-radius: 8px;\r\n margin-top: 8px;\r\n }\r\n \r\n /* Toast音频 */\r\n .met-toast-audio {\r\n width: 100%;\r\n margin-top: 8px;\r\n }\r\n \r\n /* Toast代码块 */\r\n .met-toast-code {\r\n background: rgba(0, 0, 0, 0.05);\r\n padding: 8px 12px;\r\n border-radius: 6px;\r\n font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;\r\n font-size: 12px;\r\n margin-top: 8px;\r\n overflow-x: auto;\r\n }\r\n \r\n .met-theme-dark .met-toast-code {\r\n background: rgba(255, 255, 255, 0.05);\r\n }\r\n \r\n /* Toast引用 */\r\n .met-toast-quote {\r\n border-left: 3px solid currentColor;\r\n padding-left: 12px;\r\n margin-top: 8px;\r\n opacity: 0.8;\r\n }\r\n \r\n /* Toast列表 */\r\n .met-toast-list {\r\n margin: 8px 0 0 0;\r\n padding-left: 20px;\r\n }\r\n \r\n .met-toast-list li {\r\n margin-bottom: 4px;\r\n }\r\n \r\n /* Toast表格 */\r\n .met-toast-table {\r\n width: 100%;\r\n border-collapse: collapse;\r\n margin-top: 8px;\r\n font-size: 12px;\r\n }\r\n \r\n .met-toast-table th,\r\n .met-toast-table td {\r\n border: 1px solid rgba(0, 0, 0, 0.1);\r\n padding: 6px 8px;\r\n text-align: left;\r\n }\r\n \r\n .met-theme-dark .met-toast-table th,\r\n .met-theme-dark .met-toast-table td {\r\n border-color: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-table th {\r\n background: rgba(0, 0, 0, 0.05);\r\n font-weight: 600;\r\n }\r\n \r\n .met-theme-dark .met-toast-table th {\r\n background: rgba(255, 255, 255, 0.05);\r\n }\r\n \r\n /* Toast分割线 */\r\n .met-toast-divider {\r\n height: 1px;\r\n background: rgba(0, 0, 0, 0.1);\r\n margin: 12px 0;\r\n }\r\n \r\n .met-theme-dark .met-toast-divider {\r\n background: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n /* Toast标签 */\r\n .met-toast-tag {\r\n display: inline-block;\r\n background: rgba(0, 0, 0, 0.05);\r\n padding: 2px 8px;\r\n border-radius: 4px;\r\n font-size: 11px;\r\n margin-right: 4px;\r\n margin-bottom: 4px;\r\n }\r\n \r\n .met-theme-dark .met-toast-tag {\r\n background: rgba(255, 255, 255, 0.05);\r\n }\r\n \r\n /* Toast徽章 */\r\n .met-toast-badge {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: #3b82f6;\r\n color: white;\r\n padding: 2px 8px;\r\n border-radius: 10px;\r\n font-size: 11px;\r\n font-weight: 600;\r\n min-width: 20px;\r\n height: 20px;\r\n }\r\n \r\n /* Toast进度环 */\r\n .met-toast-progress-ring {\r\n width: 40px;\r\n height: 40px;\r\n transform: rotate(-90deg);\r\n }\r\n \r\n .met-toast-progress-ring circle {\r\n fill: none;\r\n stroke-width: 3;\r\n stroke-linecap: round;\r\n }\r\n \r\n .met-toast-progress-ring .met-progress-ring-bg {\r\n stroke: rgba(0, 0, 0, 0.1);\r\n }\r\n \r\n .met-theme-dark .met-toast-progress-ring .met-progress-ring-bg {\r\n stroke: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-progress-ring .met-progress-ring-fill {\r\n stroke: #3b82f6;\r\n stroke-dasharray: 100;\r\n stroke-dashoffset: 100;\r\n transition: stroke-dashoffset 0.3s ease;\r\n }\r\n \r\n /* Toast滑块 */\r\n .met-toast-slider {\r\n width: 100%;\r\n height: 4px;\r\n background: rgba(0, 0, 0, 0.1);\r\n border-radius: 2px;\r\n margin-top: 8px;\r\n position: relative;\r\n }\r\n \r\n .met-theme-dark .met-toast-slider {\r\n background: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-slider-fill {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n height: 100%;\r\n background: #3b82f6;\r\n border-radius: 2px;\r\n transition: width 0.3s ease;\r\n }\r\n \r\n /* Toast开关 */\r\n .met-toast-switch {\r\n position: relative;\r\n display: inline-block;\r\n width: 36px;\r\n height: 20px;\r\n margin-top: 8px;\r\n }\r\n \r\n .met-toast-switch input {\r\n opacity: 0;\r\n width: 0;\r\n height: 0;\r\n }\r\n \r\n .met-toast-switch-slider {\r\n position: absolute;\r\n cursor: pointer;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background: rgba(0, 0, 0, 0.1);\r\n border-radius: 20px;\r\n transition: 0.3s;\r\n }\r\n \r\n .met-theme-dark .met-toast-switch-slider {\r\n background: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-switch-slider:before {\r\n content: '';\r\n position: absolute;\r\n height: 16px;\r\n width: 16px;\r\n left: 2px;\r\n bottom: 2px;\r\n background: white;\r\n border-radius: 50%;\r\n transition: 0.3s;\r\n }\r\n \r\n .met-toast-switch input:checked + .met-toast-switch-slider {\r\n background: #3b82f6;\r\n }\r\n \r\n .met-toast-switch input:checked + .met-toast-switch-slider:before {\r\n transform: translateX(16px);\r\n }\r\n \r\n /* Toast复选框 */\r\n .met-toast-checkbox {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n margin-top: 8px;\r\n cursor: pointer;\r\n }\r\n \r\n .met-toast-checkbox input {\r\n width: 16px;\r\n height: 16px;\r\n cursor: pointer;\r\n }\r\n \r\n /* Toast单选框 */\r\n .met-toast-radio {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n margin-top: 8px;\r\n cursor: pointer;\r\n }\r\n \r\n .met-toast-radio input {\r\n width: 16px;\r\n height: 16px;\r\n cursor: pointer;\r\n }\r\n \r\n /* Toast输入框 */\r\n .met-toast-input {\r\n width: 100%;\r\n padding: 8px 12px;\r\n border: 1px solid rgba(0, 0, 0, 0.1);\r\n border-radius: 6px;\r\n font-size: 13px;\r\n margin-top: 8px;\r\n background: transparent;\r\n color: inherit;\r\n }\r\n \r\n .met-theme-dark .met-toast-input {\r\n border-color: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-input:focus {\r\n outline: none;\r\n border-color: #3b82f6;\r\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\r\n }\r\n \r\n /* Toast文本域 */\r\n .met-toast-textarea {\r\n width: 100%;\r\n padding: 8px 12px;\r\n border: 1px solid rgba(0, 0, 0, 0.1);\r\n border-radius: 6px;\r\n font-size: 13px;\r\n margin-top: 8px;\r\n background: transparent;\r\n color: inherit;\r\n resize: vertical;\r\n min-height: 80px;\r\n }\r\n \r\n .met-theme-dark .met-toast-textarea {\r\n border-color: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-textarea:focus {\r\n outline: none;\r\n border-color: #3b82f6;\r\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\r\n }\r\n \r\n /* Toast选择框 */\r\n .met-toast-select {\r\n width: 100%;\r\n padding: 8px 12px;\r\n border: 1px solid rgba(0, 0, 0, 0.1);\r\n border-radius: 6px;\r\n font-size: 13px;\r\n margin-top: 8px;\r\n background: transparent;\r\n color: inherit;\r\n cursor: pointer;\r\n }\r\n \r\n .met-theme-dark .met-toast-select {\r\n border-color: rgba(255, 255, 255, 0.1);\r\n }\r\n \r\n .met-toast-select:focus {\r\n outline: none;\r\n border-color: #3b82f6;\r\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\r\n }\r\n \r\n /* Toast下拉菜单 */\r\n .met-toast-dropdown {\r\n position: relative;\r\n display: inline-block;\r\n }\r\n \r\n .met-toast-dropdown-content {\r\n display: none;\r\n position: absolute;\r\n background: ${theme.bg};\r\n min-width: 160px;\r\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);\r\n border-radius: 8px;\r\n z-index: 1;\r\n padding: 8px 0;\r\n margin-top: 4px;\r\n }\r\n \r\n .met-theme-dark .met-toast-dropdown-content {\r\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);\r\n }\r\n \r\n .met-toast-dropdown:hover .met-toast-dropdown-content {\r\n display: block;\r\n }\r\n \r\n .met-toast-dropdown-item {\r\n padding: 8px 16px;\r\n cursor: pointer;\r\n font-size: 13px;\r\n }\r\n \r\n .met-toast-dropdown-item:hover {\r\n background: rgba(0, 0, 0, 0.05);\r\n }\r\n \r\n .met-theme-dark .met-toast-dropdown-item:hover {\r\n background: rgba(255, 255, 255, 0.05);\r\n }\r\n \r\n /* Toast工具提示 */\r\n .met-toast-tooltip {\r\n position: relative;\r\n display: inline-block;\r\n }\r\n \r\n .met-toast-tooltip .met-toast-tooltip-text {\r\n visibility: hidden;\r\n width: 120px;\r\n background: ${theme.bg};\r\n color: ${theme.text};\r\n text-align: center;\r\n border-radius: 6px;\r\n padding: 6px 8px;\r\n position: absolute;\r\n z-index: 1;\r\n bottom: 125%;\r\n left: 50%;\r\n margin-left: -60px;\r\n opacity: 0;\r\n transition: opacity 0.3s;\r\n font-size: 12px;\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\r\n }\r\n \r\n .met-theme-dark .met-toast-tooltip .met-toast-tooltip-text {\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\r\n }\r\n \r\n .met-toast-tooltip:hover .met-toast-tooltip-text {\r\n visibility: visible;\r\n opacity: 1;\r\n }\r\n \r\n /* Toast弹出框 */\r\n .met-toast-popover {\r\n position: relative;\r\n display: inline-block;\r\n }\r\n \r\n .met-toast-popover .met-toast-popover-content {\r\n visibility: hidden;\r\n background: ${theme.bg};\r\n color: ${theme.text};\r\n border-radius: 8px;\r\n padding: 12px 16px;\r\n position: absolute;\r\n z-index: 1;\r\n bottom: 125%;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n opacity: 0;\r\n transition: opacity 0.3s;\r\n min-width: 200px;\r\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);\r\n }\r\n \r\n .met-theme-dark .met-toast-popover .met-toast-popover-content {\r\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\r\n }\r\n \r\n .met-toast-popover:hover .met-toast-popover-content {\r\n visibility: visible;\r\n opacity: 1;\r\n }\r\n \r\n /* Toast模态框 */\r\n .met-toast-modal {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 10000;\r\n }\r\n \r\n .met-toast-modal-content {\r\n background: ${theme.bg};\r\n color: ${theme.text};\r\n border-radius: 12px;\r\n padding: 24px;\r\n max-width: 500px;\r\n width: 90%;\r\n max-height: 80vh;\r\n overflow-y: auto;\r\n }\r\n \r\n /* Toast抽屉 */\r\n .met-toast-drawer {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(0, 0, 0, 0.5);\r\n z-index: 10000;\r\n }\r\n \r\n .met-toast-drawer-content {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n width: 300px;\r\n height: 100%;\r\n background: ${theme.bg};\r\n color: ${theme.text};\r\n padding: 24px;\r\n transform: translateX(100%);\r\n transition: transform 0.3s ease;\r\n }\r\n \r\n .met-toast-drawer.open .met-toast-drawer-content {\r\n transform: translateX(0);\r\n }\r\n \r\n /* Toast通知栏 */\r\n .met-toast-notification-bar {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n background: ${theme.bg};\r\n color: ${theme.text};\r\n padding: 12px 24px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n z-index: 9999;\r\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\r\n }\r\n \r\n /* Toast状态栏 */\r\n .met-toast-status-bar {\r\n position: fixed;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n background: ${theme.bg};\r\n color: ${theme.text};\r\n padding: 8px 24px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n z-index: 9999;\r\n font-size: 12px;\r\n box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.1);\r\n }\r\n `;\r\n};\r\n\r\n/**\r\n * 注入样式\r\n * @param {Object} theme - 主题配置\r\n */\r\nexport const injectStyles = (theme = THEMES.light) => {\r\n // 检查是否在浏览器环境\r\n if (typeof document === 'undefined') return;\r\n \r\n // 检查是否已注入\r\n if (styleElement && document.getElementById('metona-toast-styles')) {\r\n return;\r\n }\r\n \r\n // 生成CSS\r\n const css = generateCSS(theme);\r\n \r\n // 创建样式元素\r\n styleElement = document.createElement('style');\r\n styleElement.id = 'metona-toast-styles';\r\n styleElement.textContent = css.replace(/\\s+/g, ' ');\r\n \r\n // 添加到文档头\r\n document.head.appendChild(styleElement);\r\n \r\n // 缓存样式\r\n injectedStyles = css;\r\n};\r\n\r\n/**\r\n * 更新样式\r\n * @param {Object} theme - 新主题配置\r\n */\r\nexport const updateStyles = (theme) => {\r\n if (!styleElement) {\r\n injectStyles(theme);\r\n return;\r\n }\r\n \r\n const css = generateCSS(theme);\r\n styleElement.textContent = css.replace(/\\s+/g, ' ');\r\n injectedStyles = css;\r\n};\r\n\r\n/**\r\n * 移除样式\r\n */\r\nexport const removeStyles = () => {\r\n if (styleElement && styleElement.parentNode) {\r\n styleElement.parentNode.removeChild(styleElement);\r\n }\r\n \r\n styleElement = null;\r\n injectedStyles = null;\r\n};\r\n\r\n/**\r\n * 获取当前样式\r\n * @returns {string|null} 当前CSS字符串\r\n */\r\nexport const getStyles = () => {\r\n return injectedStyles;\r\n};\r\n\r\n/**\r\n * 检查样式是否已注入\r\n * @returns {boolean} 是否已注入\r\n */\r\nexport const isStylesInjected = () => {\r\n return !!styleElement && !!document.getElementById('metona-toast-styles');\r\n};\r\n\r\n/**\r\n * 重置样式\r\n */\r\nexport const resetStyles = () => {\r\n removeStyles();\r\n injectStyles();\r\n};\r\n\r\n/**\r\n * 添加自定义CSS\r\n * @param {string} css - CSS字符串\r\n */\r\nexport const addCustomCSS = (css) => {\r\n if (!styleElement) {\r\n injectStyles();\r\n }\r\n \r\n const customStyle = document.createElement('style');\r\n customStyle.id = 'metona-toast-custom-styles';\r\n customStyle.textContent = css;\r\n document.head.appendChild(customStyle);\r\n};\r\n\r\n/**\r\n * 移除自定义CSS\r\n */\r\nexport const removeCustomCSS = () => {\r\n const customStyle = document.getElementById('metona-toast-custom-styles');\r\n if (customStyle && customStyle.parentNode) {\r\n customStyle.parentNode.removeChild(customStyle);\r\n }\r\n};\r\n\r\n/**\r\n * 生成主题变量\r\n * @param {Object} theme - 主题配置\r\n * @returns {string} CSS变量字符串\r\n */\r\nexport const generateThemeVariables = (theme) => {\r\n return `\r\n :root {\r\n --met-theme-bg: ${theme.bg};\r\n --met-theme-text: ${theme.text};\r\n --met-theme-border: ${theme.border};\r\n --met-theme-shadow: ${theme.shadow};\r\n --met-theme-hover-shadow: ${theme.hoverShadow};\r\n --met-theme-progress-bg: ${theme.progressBg};\r\n --met-theme-close-hover-bg: ${theme.closeHoverBg};\r\n }\r\n `;\r\n};\r\n\r\n/**\r\n * 应用主题变量\r\n * @param {Object} theme - 主题配置\r\n */\r\nexport const applyThemeVariables = (theme) => {\r\n const css = generateThemeVariables(theme);\r\n addCustomCSS(css);\r\n};\r\n\r\n/**\r\n * 清除主题变量\r\n */\r\nexport const clearThemeVariables = () => {\r\n removeCustomCSS();\r\n};\r\n\r\n/**\r\n * 获取系统主题\r\n * @returns {string} 系统主题\r\n */\r\nexport const getSystemTheme = () => {\r\n if (typeof window === 'undefined') return 'light';\r\n \r\n return window.matchMedia && \r\n window.matchMedia('(prefers-color-scheme: dark)').matches \r\n ? 'dark' \r\n : 'light';\r\n};\r\n\r\n/**\r\n * 监听系统主题变化\r\n * @param {Function} callback - 回调函数\r\n * @returns {Function} 取消监听函数\r\n */\r\nexport const watchSystemTheme = (callback) => {\r\n if (typeof window === 'undefined' || !window.matchMedia) {\r\n return () => {};\r\n }\r\n \r\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\r\n \r\n const handler = (e) => {\r\n callback(e.matches ? 'dark' : 'light');\r\n };\r\n \r\n mediaQuery.addEventListener('change', handler);\r\n \r\n return () => {\r\n mediaQuery.removeEventListener('change', handler);\r\n };\r\n};\r\n\r\n/**\r\n * 自动应用系统主题\r\n * @returns {Function} 取消监听函数\r\n */\r\nexport const autoApplySystemTheme = () => {\r\n const applyTheme = (theme) => {\r\n updateStyles(THEMES[theme]);\r\n applyThemeVariables(THEMES[theme]);\r\n };\r\n \r\n // 应用当前系统主题\r\n applyTheme(getSystemTheme());\r\n \r\n // 监听系统主题变化\r\n return watchSystemTheme(applyTheme);\r\n};\r\n","/**\r\n * MetonaToast Themes - 主题管理\r\n * @module themes\r\n * @version 2.0.0\r\n * @description 主题系统、自定义主题和主题切换\r\n */\r\n\r\nimport { THEMES } from './constants.js';\r\nimport { prefersDark } from './utils.js';\r\n\r\n// 当前主题状态\r\nlet currentTheme = 'auto';\r\nlet themeListeners = new Set();\r\nlet systemThemeMediaQuery = null;\r\nlet systemThemeListener = null;\r\n\r\n/**\r\n * 获取系统主题\r\n * @returns {string} 系统主题 ('light' 或 'dark')\r\n */\r\nexport const getSystemTheme = () => {\r\n if (typeof window === 'undefined') return 'light';\r\n return prefersDark() ? 'dark' : 'light';\r\n};\r\n\r\n/**\r\n * 获取主题(别名)\r\n * @param {string} theme - 主题名称\r\n * @returns {string} 解析后的主题\r\n */\r\nexport const getTheme = (theme) => {\r\n return resolveTheme(theme);\r\n};\r\n\r\n/**\r\n * 解析主题\r\n * @param {string} theme - 主题名称\r\n * @returns {string} 解析后的主题\r\n */\r\nexport const resolveTheme = (theme) => {\r\n if (theme === 'auto') {\r\n // 优先使用用户设置的全局主题,否则使用系统主题\r\n if (currentTheme && currentTheme !== 'auto') {\r\n return currentTheme;\r\n }\r\n return getSystemTheme();\r\n }\r\n return theme;\r\n};\r\n\r\n/**\r\n * 获取主题配置\r\n * @param {string} theme - 主题名称\r\n * @returns {Object} 主题配置\r\n */\r\nexport const getThemeConfig = (theme) => {\r\n const resolved = resolveTheme(theme);\r\n return THEMES[resolved] || THEMES.light;\r\n};\r\n\r\n/**\r\n * 应用主题\r\n * @param {string} theme - 主题名称\r\n */\r\nexport const applyTheme = (theme) => {\r\n currentTheme = theme;\r\n const resolved = resolveTheme(theme);\r\n \r\n // 应用主题到文档\r\n if (typeof document !== 'undefined') {\r\n document.documentElement.setAttribute('data-met-theme', resolved);\r\n document.documentElement.classList.remove('met-theme-light', 'met-theme-dark', 'met-theme-auto');\r\n document.documentElement.classList.add(`met-theme-${resolved}`);\r\n \r\n // 设置CSS变量\r\n const config = getThemeConfig(theme);\r\n setThemeVariables(config);\r\n }\r\n \r\n // 通知监听器\r\n notifyThemeListeners(theme, resolved);\r\n};\r\n\r\n/**\r\n * 设置主题CSS变量\r\n * @param {Object} config - 主题配置\r\n */\r\nexport const setThemeVariables = (config) => {\r\n if (typeof document === 'undefined') return;\r\n \r\n const root = document.documentElement;\r\n root.style.setProperty('--met-bg', config.bg);\r\n root.style.setProperty('--met-text', config.text);\r\n root.style.setProperty('--met-border', config.border);\r\n root.style.setProperty('--met-shadow', config.shadow);\r\n root.style.setProperty('--met-hover-shadow', config.hoverShadow);\r\n root.style.setProperty('--met-progress-bg', config.progressBg);\r\n root.style.setProperty('--met-close-hover-bg', config.closeHoverBg);\r\n \r\n // 设置颜色变量\r\n root.style.setProperty('--met-success', '#10b981');\r\n root.style.setProperty('--met-error', '#ef4444');\r\n root.style.setProperty('--met-warning', '#f59e0b');\r\n root.style.setProperty('--met-info', '#3b82f6');\r\n root.style.setProperty('--met-loading', '#6366f1');\r\n};\r\n\r\n/**\r\n * 清除主题CSS变量\r\n */\r\nexport const clearThemeVariables = () => {\r\n if (typeof document === 'undefined') return;\r\n \r\n const root = document.documentElement;\r\n const variables = [\r\n '--met-bg',\r\n '--met-text',\r\n '--met-border',\r\n '--met-shadow',\r\n '--met-hover-shadow',\r\n '--met-progress-bg',\r\n '--met-close-hover-bg',\r\n '--met-success',\r\n '--met-error',\r\n '--met-warning',\r\n '--met-info',\r\n '--met-loading',\r\n ];\r\n \r\n variables.forEach((variable) => {\r\n root.style.removeProperty(variable);\r\n });\r\n};\r\n\r\n/**\r\n * 获取当前主题\r\n * @returns {string} 当前主题\r\n */\r\nexport const getCurrentTheme = () => {\r\n return currentTheme;\r\n};\r\n\r\n/**\r\n * 获取解析后的主题\r\n * @returns {string} 解析后的主题\r\n */\r\nexport const getResolvedTheme = () => {\r\n return resolveTheme(currentTheme);\r\n};\r\n\r\n/**\r\n * 切换主题\r\n * @param {string} theme - 新主题\r\n */\r\nexport const switchTheme = (theme) => {\r\n applyTheme(theme);\r\n saveTheme(theme);\r\n};\r\n\r\n/**\r\n * 切换亮色/暗色主题\r\n */\r\nexport const toggleTheme = () => {\r\n const resolved = getResolvedTheme();\r\n const newTheme = resolved === 'dark' ? 'light' : 'dark';\r\n switchTheme(newTheme);\r\n};\r\n\r\n/**\r\n * 重置为自动主题\r\n */\r\nexport const resetToAuto = () => {\r\n switchTheme('auto');\r\n};\r\n\r\n/**\r\n * 保存主题到本地存储\r\n * @param {string} theme - 主题名称\r\n */\r\nexport const saveTheme = (theme) => {\r\n if (typeof localStorage !== 'undefined') {\r\n try {\r\n localStorage.setItem('metona-toast-theme', theme);\r\n } catch (e) {\r\n console.warn('Failed to save theme:', e);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * 从本地存储加载主题\r\n * @returns {string} 主题名称\r\n */\r\nexport const loadTheme = () => {\r\n if (typeof localStorage !== 'undefined') {\r\n try {\r\n return localStorage.getItem('metona-toast-theme') || 'auto';\r\n } catch (e) {\r\n console.warn('Failed to load theme:', e);\r\n }\r\n }\r\n return 'auto';\r\n};\r\n\r\n/**\r\n * 初始化主题系统\r\n */\r\nexport const initTheme = () => {\r\n // 加载保存的主题\r\n const savedTheme = loadTheme();\r\n applyTheme(savedTheme);\r\n \r\n // 监听系统主题变化\r\n watchSystemTheme();\r\n};\r\n\r\n/**\r\n * 监听系统主题变化\r\n */\r\nexport const watchSystemTheme = () => {\r\n if (typeof window === 'undefined' || !window.matchMedia) return;\r\n \r\n // 移除旧的监听器\r\n if (systemThemeMediaQuery && systemThemeListener) {\r\n systemThemeMediaQuery.removeEventListener('change', systemThemeListener);\r\n }\r\n \r\n // 创建新的监听器\r\n systemThemeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\r\n systemThemeListener = (e) => {\r\n if (currentTheme === 'auto') {\r\n applyTheme('auto');\r\n }\r\n };\r\n \r\n systemThemeMediaQuery.addEventListener('change', systemThemeListener);\r\n};\r\n\r\n/**\r\n * 停止监听系统主题变化\r\n */\r\nexport const unwatchSystemTheme = () => {\r\n if (systemThemeMediaQuery && systemThemeListener) {\r\n systemThemeMediaQuery.removeEventListener('change', systemThemeListener);\r\n systemThemeMediaQuery = null;\r\n systemThemeListener = null;\r\n }\r\n};\r\n\r\n/**\r\n * 添加主题监听器\r\n * @param {Function} listener - 监听器函数\r\n * @returns {Function} 移除监听器函数\r\n */\r\nexport const addThemeListener = (listener) => {\r\n themeListeners.add(listener);\r\n \r\n return () => {\r\n themeListeners.delete(listener);\r\n };\r\n};\r\n\r\n/**\r\n * 移除主题监听器\r\n * @param {Function} listener - 监听器函数\r\n */\r\nexport const removeThemeListener = (listener) => {\r\n themeListeners.delete(listener);\r\n};\r\n\r\n/**\r\n * 通知主题监听器\r\n * @param {string} theme - 主题名称\r\n * @param {string} resolved - 解析后的主题\r\n */\r\nconst notifyThemeListeners = (theme, resolved) => {\r\n themeListeners.forEach((listener) => {\r\n try {\r\n listener(theme, resolved);\r\n } catch (e) {\r\n console.error('Theme listener error:', e);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * 清除所有主题监听器\r\n */\r\nexport const clearThemeListeners = () => {\r\n themeListeners.clear();\r\n};\r\n\r\n/**\r\n * 注册自定义主题\r\n * @param {string} name - 主题名称\r\n * @param {Object} config - 主题配置\r\n */\r\nexport const registerTheme = (name, config) => {\r\n THEMES[name] = {\r\n bg: config.bg || THEMES.light.bg,\r\n text: config.text || THEMES.light.text,\r\n border: config.border || THEMES.light.border,\r\n shadow: config.shadow || THEMES.light.shadow,\r\n hoverShadow: config.hoverShadow || THEMES.light.hoverShadow,\r\n progressBg: config.progressBg || THEMES.light.progressBg,\r\n closeHoverBg: config.closeHoverBg || THEMES.light.closeHoverBg,\r\n };\r\n};\r\n\r\n/**\r\n * 注销自定义主题\r\n * @param {string} name - 主题名称\r\n */\r\nexport const unregisterTheme = (name) => {\r\n if (name === 'light' || name === 'dark' || name === 'auto') {\r\n console.warn('Cannot unregister built-in theme:', name);\r\n return;\r\n }\r\n \r\n delete THEMES[name];\r\n};\r\n\r\n/**\r\n * 获取所有主题\r\n * @returns {Object} 主题映射\r\n */\r\nexport const getAllThemes = () => {\r\n return { ...THEMES };\r\n};\r\n\r\n/**\r\n * 获取主题名称列表\r\n * @returns {Array} 主题名称数组\r\n */\r\nexport const getThemeNames = () => {\r\n return Object.keys(THEMES);\r\n};\r\n\r\n/**\r\n * 检查主题是否存在\r\n * @param {string} name - 主题名称\r\n * @returns {boolean} 是否存在\r\n */\r\nexport const hasTheme = (name) => {\r\n return name in THEMES;\r\n};\r\n\r\n/**\r\n * 获取主题预览\r\n * @param {string} theme - 主题名称\r\n * @returns {Object} 主题预览\r\n */\r\nexport const getThemePreview = (theme) => {\r\n const config = getThemeConfig(theme);\r\n const resolved = resolveTheme(theme);\r\n \r\n return {\r\n name: theme,\r\n resolved,\r\n colors: {\r\n background: config.bg,\r\n text: config.text,\r\n border: config.border,\r\n },\r\n isDark: resolved === 'dark',\r\n isLight: resolved === 'light',\r\n isAuto: theme === 'auto',\r\n };\r\n};\r\n\r\n/**\r\n * 生成主题CSS\r\n * @param {string} theme - 主题名称\r\n * @returns {string} CSS字符串\r\n */\r\nexport const generateThemeCSS = (theme) => {\r\n const config = getThemeConfig(theme);\r\n const resolved = resolveTheme(theme);\r\n \r\n return `\r\n .met-theme-${resolved} {\r\n --met-bg: ${config.bg};\r\n --met-text: ${config.text};\r\n --met-border: ${config.border};\r\n --met-shadow: ${config.shadow};\r\n --met-hover-shadow: ${config.hoverShadow};\r\n --met-progress-bg: ${config.progressBg};\r\n --met-close-hover-bg: ${config.closeHoverBg};\r\n }\r\n `;\r\n};\r\n\r\n/**\r\n * 应用主题CSS\r\n * @param {string} theme - 主题名称\r\n */\r\nexport const applyThemeCSS = (theme) => {\r\n if (typeof document === 'undefined') return;\r\n \r\n const css = generateThemeCSS(theme);\r\n const styleId = 'metona-toast-theme-css';\r\n \r\n // 移除旧样式\r\n const oldStyle = document.getElementById(styleId);\r\n if (oldStyle) {\r\n oldStyle.remove();\r\n }\r\n \r\n // 添加新样式\r\n const style = document.createElement('style');\r\n style.id = styleId;\r\n style.textContent = css;\r\n document.head.appendChild(style);\r\n};\r\n\r\n/**\r\n * 移除主题CSS\r\n */\r\nexport const removeThemeCSS = () => {\r\n if (typeof document === 'undefined') return;\r\n \r\n const styleId = 'metona-toast-theme-css';\r\n const style = document.getElementById(styleId);\r\n if (style) {\r\n style.remove();\r\n }\r\n};\r\n\r\n/**\r\n * 主题工具 — 代理层,直接引用模块函数\r\n */\r\nexport const themeUtils = {\r\n getSystemTheme,\r\n resolveTheme,\r\n getThemeConfig,\r\n applyTheme,\r\n getCurrentTheme,\r\n getResolvedTheme,\r\n switchTheme,\r\n toggleTheme,\r\n resetToAuto,\r\n initTheme,\r\n watchSystemTheme,\r\n unwatchSystemTheme,\r\n addThemeListener,\r\n removeThemeListener,\r\n clearThemeListeners,\r\n registerTheme,\r\n unregisterTheme,\r\n getAllThemes,\r\n getThemeNames,\r\n hasTheme,\r\n getThemePreview,\r\n generateThemeCSS,\r\n applyThemeCSS,\r\n removeThemeCSS,\r\n saveTheme,\r\n loadTheme,\r\n};\r\n\r\n/**\r\n * 预设主题\r\n */\r\nexport const presetThemes = {\r\n /**\r\n * 浅色主题\r\n */\r\n light: {\r\n name: '浅色',\r\n description: '明亮清晰的主题',\r\n config: THEMES.light,\r\n },\r\n \r\n /**\r\n * 深色主题\r\n */\r\n dark: {\r\n name: '深色',\r\n description: '护眼舒适的暗色主题',\r\n config: THEMES.dark,\r\n },\r\n \r\n /**\r\n * 自动主题\r\n */\r\n auto: {\r\n name: '自动',\r\n description: '跟随系统主题设置',\r\n config: 'auto',\r\n },\r\n \r\n warm: {\r\n name: '暖色',\r\n description: '温馨舒适的暖色主题',\r\n config: THEMES.warm,\r\n },\r\n};\r\n\r\n// 注册预设主题\r\nObject.entries(presetThemes).forEach(([name, theme]) => {\r\n if (name !== 'auto' && theme.config !== 'auto') {\r\n THEMES[name] = theme.config;\r\n }\r\n});\r\n\r\n/**\r\n * 创建主题管理器\r\n * @returns {Object} 主题管理器\r\n */\r\nexport const createThemeManager = () => {\r\n return {\r\n getSystemTheme,\r\n resolveTheme,\r\n getThemeConfig,\r\n applyTheme,\r\n getCurrentTheme,\r\n getResolvedTheme,\r\n switchTheme,\r\n toggleTheme,\r\n resetToAuto,\r\n initTheme,\r\n watchSystemTheme,\r\n unwatchSystemTheme,\r\n addThemeListener,\r\n removeThemeListener,\r\n clearThemeListeners,\r\n registerTheme,\r\n unregisterTheme,\r\n getAllThemes,\r\n getThemeNames,\r\n hasTheme,\r\n getThemePreview,\r\n generateThemeCSS,\r\n applyThemeCSS,\r\n removeThemeCSS,\r\n saveTheme,\r\n loadTheme,\r\n };\r\n};\r\n\r\nexport { themeUtils as default };\r\n","/**\r\n * MetonaToast i18n - 国际化管理\r\n * @module i18n\r\n * @version 2.0.0\r\n * @description 多语言支持、语言切换和翻译管理\r\n */\r\n\r\nimport { LOCALES } from './constants.js';\r\n\r\n// 当前语言状态\r\nlet currentLocale = 'zh-CN';\r\nlet localeListeners = new Set();\r\nlet fallbackLocale = 'zh-CN';\r\n\r\n/**\r\n * 获取当前语言\r\n * @returns {string} 当前语言\r\n */\r\nexport const getCurrentLocale = () => {\r\n return currentLocale;\r\n};\r\n\r\n/**\r\n * 设置当前语言\r\n * @param {string} locale - 语言代码\r\n */\r\nexport const setCurrentLocale = (locale) => {\r\n if (!LOCALES[locale]) {\r\n console.warn(`Locale \"${locale}\" not found, falling back to \"${fallbackLocale}\"`);\r\n locale = fallbackLocale;\r\n }\r\n \r\n currentLocale = locale;\r\n notifyLocaleListeners(locale);\r\n saveLocale(locale);\r\n};\r\n\r\n/**\r\n * 获取回退语言\r\n * @returns {string} 回退语言\r\n */\r\nexport const getFallbackLocale = () => {\r\n return fallbackLocale;\r\n};\r\n\r\n/**\r\n * 设置回退语言\r\n * @param {string} locale - 语言代码\r\n */\r\nexport const setFallbackLocale = (locale) => {\r\n if (!LOCALES[locale]) {\r\n console.warn(`Fallback locale \"${locale}\" not found`);\r\n return;\r\n }\r\n \r\n fallbackLocale = locale;\r\n};\r\n\r\n/**\r\n * 翻译函数\r\n * @param {string} key - 翻译键\r\n * @param {Object} params - 插值参数\r\n * @returns {string} 翻译后的字符串\r\n */\r\nexport const t = (key, params = {}) => {\r\n // 尝试当前语言\r\n const currentTranslation = getTranslation(currentLocale, key);\r\n if (currentTranslation !== undefined) {\r\n return interpolate(currentTranslation, params);\r\n }\r\n \r\n // 尝试回退语言\r\n if (currentLocale !== fallbackLocale) {\r\n const fallbackTranslation = getTranslation(fallbackLocale, key);\r\n if (fallbackTranslation !== undefined) {\r\n return interpolate(fallbackTranslation, params);\r\n }\r\n }\r\n \r\n // 返回键名\r\n console.warn(`Translation missing for key \"${key}\" in locale \"${currentLocale}\"`);\r\n return key;\r\n};\r\n\r\n/**\r\n * 获取翻译\r\n * @param {string} locale - 语言代码\r\n * @param {string} key - 翻译键\r\n * @returns {string|undefined} 翻译字符串\r\n */\r\nconst getTranslation = (locale, key) => {\r\n const localeData = LOCALES[locale];\r\n if (!localeData) return undefined;\r\n \r\n // 支持嵌套键 (如 'common.close')\r\n const keys = key.split('.');\r\n let result = localeData;\r\n \r\n for (const k of keys) {\r\n if (result && typeof result === 'object' && k in result) {\r\n result = result[k];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n \r\n return typeof result === 'string' ? result : undefined;\r\n};\r\n\r\n/**\r\n * 插值函数\r\n * @param {string} str - 包含占位符的字符串\r\n * @param {Object} params - 插值参数\r\n * @returns {string} 插值后的字符串\r\n */\r\nconst interpolate = (str, params) => {\r\n return str.replace(/\\{(\\w+)\\}/g, (match, key) => {\r\n return params[key] !== undefined ? params[key] : match;\r\n });\r\n};\r\n\r\n/**\r\n * 检查翻译是否存在\r\n * @param {string} key - 翻译键\r\n * @returns {boolean} 是否存在\r\n */\r\nexport const hasTranslation = (key) => {\r\n return getTranslation(currentLocale, key) !== undefined ||\r\n getTranslation(fallbackLocale, key) !== undefined;\r\n};\r\n\r\n/**\r\n * 获取所有翻译\r\n * @param {string} locale - 语言代码\r\n * @returns {Object} 翻译对象\r\n */\r\nexport const getTranslations = (locale) => {\r\n return LOCALES[locale] || {};\r\n};\r\n\r\n/**\r\n * 添加翻译\r\n * @param {string} locale - 语言代码\r\n * @param {Object} translations - 翻译对象\r\n */\r\nexport const addTranslations = (locale, translations) => {\r\n if (!LOCALES[locale]) {\r\n LOCALES[locale] = {};\r\n }\r\n \r\n deepMerge(LOCALES[locale], translations);\r\n};\r\n\r\n/**\r\n * 深度合并对象\r\n * @param {Object} target - 目标对象\r\n * @param {Object} source - 源对象\r\n * @returns {Object} 合并后的对象\r\n */\r\nconst deepMerge = (target, source) => {\r\n for (const key in source) {\r\n if (source[key] instanceof Object && key in target && target[key] instanceof Object) {\r\n deepMerge(target[key], source[key]);\r\n } else {\r\n target[key] = source[key];\r\n }\r\n }\r\n return target;\r\n};\r\n\r\n/**\r\n * 移除翻译\r\n * @param {string} locale - 语言代码\r\n * @param {string} key - 翻译键\r\n */\r\nexport const removeTranslation = (locale, key) => {\r\n const localeData = LOCALES[locale];\r\n if (!localeData) return;\r\n \r\n const keys = key.split('.');\r\n let current = localeData;\r\n \r\n for (let i = 0; i < keys.length - 1; i++) {\r\n if (current[keys[i]] && typeof current[keys[i]] === 'object') {\r\n current = current[keys[i]];\r\n } else {\r\n return;\r\n }\r\n }\r\n \r\n delete current[keys[keys.length - 1]];\r\n};\r\n\r\n/**\r\n * 清除翻译\r\n * @param {string} locale - 语言代码\r\n */\r\nexport const clearTranslations = (locale) => {\r\n if (LOCALES[locale]) {\r\n LOCALES[locale] = {};\r\n }\r\n};\r\n\r\n/**\r\n * 获取支持的语言列表\r\n * @returns {Array} 语言代码数组\r\n */\r\nexport const getSupportedLocales = () => {\r\n return Object.keys(LOCALES);\r\n};\r\n\r\n/**\r\n * 检查语言是否支持\r\n * @param {string} locale - 语言代码\r\n * @returns {boolean} 是否支持\r\n */\r\nexport const isLocaleSupported = (locale) => {\r\n return locale in LOCALES;\r\n};\r\n\r\n/**\r\n * 获取语言名称\r\n * @param {string} locale - 语言代码\r\n * @returns {string} 语言名称\r\n */\r\nexport const getLocaleName = (locale) => {\r\n const names = {\r\n 'zh-CN': '简体中文',\r\n 'zh-TW': '繁體中文',\r\n 'en-US': 'English (US)',\r\n 'en-GB': 'English (UK)',\r\n 'ja': '日本語',\r\n 'ko': '한국어',\r\n 'fr': 'Français',\r\n 'de': 'Deutsch',\r\n 'es': 'Español',\r\n 'pt': 'Português',\r\n 'ru': 'Русский',\r\n 'ar': 'العربية',\r\n 'hi': 'हिन्दी',\r\n 'th': 'ไทย',\r\n 'vi': 'Tiếng Việt',\r\n 'id': 'Bahasa Indonesia',\r\n 'ms': 'Bahasa Melayu',\r\n 'tr': 'Türkçe',\r\n 'it': 'Italiano',\r\n 'nl': 'Nederlands',\r\n 'pl': 'Polski',\r\n 'uk': 'Українська',\r\n 'cs': 'Čeština',\r\n 'sv': 'Svenska',\r\n 'da': 'Dansk',\r\n 'fi': 'Suomi',\r\n 'nb': 'Norsk',\r\n 'el': 'Ελληνικά',\r\n 'he': 'עברית',\r\n 'hu': 'Magyar',\r\n 'ro': 'Română',\r\n 'bg': 'Български',\r\n 'hr': 'Hrvatski',\r\n 'sk': 'Slovenčina',\r\n 'sl': 'Slovenščina',\r\n 'et': 'Eesti',\r\n 'lv': 'Latviešu',\r\n 'lt': 'Lietuvių',\r\n 'ca': 'Català',\r\n 'gl': 'Galego',\r\n 'eu': 'Euskara',\r\n 'cy': 'Cymraeg',\r\n 'ga': 'Gaeilge',\r\n 'mt': 'Malti',\r\n 'is': 'Íslenska',\r\n 'mk': 'Македонски',\r\n 'sq': 'Shqip',\r\n 'sr': 'Српски',\r\n 'bs': 'Bosanski',\r\n 'me': 'Crnogorski',\r\n 'ka': 'ქართული',\r\n 'hy': 'Հայերեն',\r\n 'az': 'Azərbaycan',\r\n 'uz': \"O'zbek\",\r\n 'kk': 'Қазақ',\r\n 'ky': 'Кыргыз',\r\n 'tg': 'Тоҷикӣ',\r\n 'tk': 'Türkmen',\r\n 'mn': 'Монгол',\r\n 'ne': 'नेपाली',\r\n 'si': 'සිංහල',\r\n 'my': 'မြန်မာ',\r\n 'km': 'ខ្មែរ',\r\n 'lo': 'ລາວ',\r\n 'am': 'አማርኛ',\r\n 'sw': 'Kiswahili',\r\n 'yo': 'Yorùbá',\r\n 'ig': 'Igbo',\r\n 'ha': 'Hausa',\r\n 'zu': 'isiZulu',\r\n 'af': 'Afrikaans',\r\n 'xh': 'isiXhosa',\r\n 'st': 'Sesotho',\r\n 'tn': 'Setswana',\r\n 'ts': 'Xitsonga',\r\n 'ss': 'siSwati',\r\n 've': 'Tshivenda',\r\n 'nr': 'isiNdebele',\r\n };\r\n \r\n return names[locale] || locale;\r\n};\r\n\r\n/**\r\n * 获取语言方向\r\n * @param {string} locale - 语言代码\r\n * @returns {string} 语言方向 ('ltr' 或 'rtl')\r\n */\r\nexport const getLocaleDirection = (locale) => {\r\n const rtlLocales = ['ar', 'he', 'fa', 'ur', 'yi', 'ps', 'sd', 'ug'];\r\n return rtlLocales.includes(locale) ? 'rtl' : 'ltr';\r\n};\r\n\r\n/**\r\n * 获取语言信息\r\n * @param {string} locale - 语言代码\r\n * @returns {Object} 语言信息\r\n */\r\nexport const getLocaleInfo = (locale) => {\r\n return {\r\n code: locale,\r\n name: getLocaleName(locale),\r\n direction: getLocaleDirection(locale),\r\n isSupported: isLocaleSupported(locale),\r\n isCurrent: locale === currentLocale,\r\n isFallback: locale === fallbackLocale,\r\n };\r\n};\r\n\r\n/**\r\n * 获取所有语言信息\r\n * @returns {Array} 语言信息数组\r\n */\r\nexport const getAllLocaleInfo = () => {\r\n return getSupportedLocales().map(getLocaleInfo);\r\n};\r\n\r\n/**\r\n * 保存语言到本地存储\r\n * @param {string} locale - 语言代码\r\n */\r\nexport const saveLocale = (locale) => {\r\n if (typeof localStorage !== 'undefined') {\r\n try {\r\n localStorage.setItem('metona-toast-locale', locale);\r\n } catch (e) {\r\n console.warn('Failed to save locale:', e);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * 从本地存储加载语言\r\n * @returns {string} 语言代码\r\n */\r\nexport const loadLocale = () => {\r\n if (typeof localStorage !== 'undefined') {\r\n try {\r\n return localStorage.getItem('metona-toast-locale') || getDefaultLocale();\r\n } catch (e) {\r\n console.warn('Failed to load locale:', e);\r\n }\r\n }\r\n return getDefaultLocale();\r\n};\r\n\r\n/**\r\n * 获取默认语言\r\n * @returns {string} 语言代码\r\n */\r\nexport const getDefaultLocale = () => {\r\n if (typeof navigator !== 'undefined') {\r\n // 尝试从浏览器获取语言\r\n const browserLocale = navigator.language || navigator.userLanguage;\r\n if (browserLocale && isLocaleSupported(browserLocale)) {\r\n return browserLocale;\r\n }\r\n \r\n // 尝试语言代码的前两位\r\n const shortLocale = browserLocale?.split('-')[0];\r\n if (shortLocale && isLocaleSupported(shortLocale)) {\r\n return shortLocale;\r\n }\r\n }\r\n \r\n return fallbackLocale;\r\n};\r\n\r\n/**\r\n * 初始化国际化系统\r\n */\r\nexport const initI18n = () => {\r\n const savedLocale = loadLocale();\r\n setCurrentLocale(savedLocale);\r\n};\r\n\r\n/**\r\n * 切换语言\r\n * @param {string} locale - 新语言\r\n */\r\nexport const switchLocale = (locale) => {\r\n setCurrentLocale(locale);\r\n};\r\n\r\n/**\r\n * 添加语言监听器\r\n * @param {Function} listener - 监听器函数\r\n * @returns {Function} 移除监听器函数\r\n */\r\nexport const addLocaleListener = (listener) => {\r\n localeListeners.add(listener);\r\n \r\n return () => {\r\n localeListeners.delete(listener);\r\n };\r\n};\r\n\r\n/**\r\n * 移除语言监听器\r\n * @param {Function} listener - 监听器函数\r\n */\r\nexport const removeLocaleListener = (listener) => {\r\n localeListeners.delete(listener);\r\n};\r\n\r\n/**\r\n * 通知语言监听器\r\n * @param {string} locale - 语言代码\r\n */\r\nconst notifyLocaleListeners = (locale) => {\r\n localeListeners.forEach((listener) => {\r\n try {\r\n listener(locale);\r\n } catch (e) {\r\n console.error('Locale listener error:', e);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * 清除所有语言监听器\r\n */\r\nexport const clearLocaleListeners = () => {\r\n localeListeners.clear();\r\n};\r\n\r\n/**\r\n * 格式化数字\r\n * @param {number} number - 数字\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatNumber = (number, options = {}) => {\r\n try {\r\n return new Intl.NumberFormat(currentLocale, options).format(number);\r\n } catch (e) {\r\n return number.toString();\r\n }\r\n};\r\n\r\n/**\r\n * 格式化货币\r\n * @param {number} amount - 金额\r\n * @param {string} currency - 货币代码\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatCurrency = (amount, currency = 'USD', options = {}) => {\r\n try {\r\n return new Intl.NumberFormat(currentLocale, {\r\n style: 'currency',\r\n currency,\r\n ...options,\r\n }).format(amount);\r\n } catch (e) {\r\n return amount.toString();\r\n }\r\n};\r\n\r\n/**\r\n * 格式化百分比\r\n * @param {number} value - 值\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatPercent = (value, options = {}) => {\r\n try {\r\n return new Intl.NumberFormat(currentLocale, {\r\n style: 'percent',\r\n minimumFractionDigits: 0,\r\n maximumFractionDigits: 2,\r\n ...options,\r\n }).format(value / 100);\r\n } catch (e) {\r\n return `${value}%`;\r\n }\r\n};\r\n\r\n/**\r\n * 格式化日期\r\n * @param {Date|number|string} date - 日期\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatDate = (date, options = {}) => {\r\n try {\r\n const dateObj = date instanceof Date ? date : new Date(date);\r\n return new Intl.DateTimeFormat(currentLocale, options).format(dateObj);\r\n } catch (e) {\r\n return date.toString();\r\n }\r\n};\r\n\r\n/**\r\n * 格式化时间\r\n * @param {Date|number|string} date - 日期\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatTime = (date, options = {}) => {\r\n return formatDate(date, {\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n second: 'numeric',\r\n ...options,\r\n });\r\n};\r\n\r\n/**\r\n * 格式化相对时间\r\n * @param {Date|number|string} date - 日期\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatRelativeTime = (date, options = {}) => {\r\n try {\r\n const dateObj = date instanceof Date ? date : new Date(date);\r\n const now = new Date();\r\n const diff = dateObj - now;\r\n \r\n const rtf = new Intl.RelativeTimeFormat(currentLocale, {\r\n numeric: 'auto',\r\n ...options,\r\n });\r\n \r\n const units = [\r\n { unit: 'year', ms: 365 * 24 * 60 * 60 * 1000 },\r\n { unit: 'month', ms: 30 * 24 * 60 * 60 * 1000 },\r\n { unit: 'week', ms: 7 * 24 * 60 * 60 * 1000 },\r\n { unit: 'day', ms: 24 * 60 * 60 * 1000 },\r\n { unit: 'hour', ms: 60 * 60 * 1000 },\r\n { unit: 'minute', ms: 60 * 1000 },\r\n { unit: 'second', ms: 1000 },\r\n ];\r\n \r\n for (const { unit, ms } of units) {\r\n if (Math.abs(diff) >= ms || unit === 'second') {\r\n const value = Math.round(diff / ms);\r\n return rtf.format(value, unit);\r\n }\r\n }\r\n \r\n return date.toString();\r\n } catch (e) {\r\n return date.toString();\r\n }\r\n};\r\n\r\n/**\r\n * 格式化列表\r\n * @param {Array} list - 列表\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatList = (list, options = {}) => {\r\n try {\r\n return new Intl.ListFormat(currentLocale, options).format(list);\r\n } catch (e) {\r\n return list.join(', ');\r\n }\r\n};\r\n\r\n/**\r\n * 格式化复数\r\n * @param {number} count - 数量\r\n * @param {Object} options - 格式化选项\r\n * @returns {string} 格式化后的字符串\r\n */\r\nexport const formatPlural = (count, options = {}) => {\r\n try {\r\n return new Intl.PluralRules(currentLocale, options).select(count);\r\n } catch (e) {\r\n return count === 1 ? 'one' : 'other';\r\n }\r\n};\r\n\r\n/**\r\n * 复数翻译\r\n * @param {string} key - 翻译键\r\n * @param {number} count - 数量\r\n * @param {Object} params - 插值参数\r\n * @returns {string} 翻译后的字符串\r\n */\r\nexport const plural = (key, count, params = {}) => {\r\n const pluralForm = formatPlural(count);\r\n const pluralKey = `${key}.${pluralForm}`;\r\n \r\n if (hasTranslation(pluralKey)) {\r\n return t(pluralKey, { ...params, count });\r\n }\r\n \r\n // 尝试通用形式\r\n if (hasTranslation(key)) {\r\n return t(key, { ...params, count });\r\n }\r\n \r\n return key;\r\n};\r\n\r\n/**\r\n * 日期时间格式化选项\r\n */\r\nexport const dateTimeFormats = {\r\n short: {\r\n year: 'numeric',\r\n month: 'short',\r\n day: 'numeric',\r\n },\r\n medium: {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n },\r\n long: {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n weekday: 'long',\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n second: 'numeric',\r\n },\r\n time: {\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n second: 'numeric',\r\n },\r\n date: {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n },\r\n weekday: {\r\n weekday: 'long',\r\n },\r\n month: {\r\n month: 'long',\r\n },\r\n year: {\r\n year: 'numeric',\r\n },\r\n};\r\n\r\n/**\r\n * 数字格式化选项\r\n */\r\nexport const numberFormats = {\r\n integer: {\r\n maximumFractionDigits: 0,\r\n },\r\n decimal: {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n },\r\n percent: {\r\n style: 'percent',\r\n minimumFractionDigits: 0,\r\n maximumFractionDigits: 2,\r\n },\r\n currency: {\r\n style: 'currency',\r\n currency: 'USD',\r\n },\r\n};\r\n\r\n/**\r\n * 国际化工具 — 代理层,直接引用模块函数\r\n */\r\nexport const i18nUtils = {\r\n t,\r\n plural,\r\n getCurrentLocale,\r\n setCurrentLocale,\r\n switchLocale,\r\n getFallbackLocale,\r\n setFallbackLocale,\r\n hasTranslation,\r\n getTranslations,\r\n addTranslations,\r\n removeTranslation,\r\n clearTranslations,\r\n getSupportedLocales,\r\n isLocaleSupported,\r\n getLocaleName,\r\n getLocaleDirection,\r\n getLocaleInfo,\r\n getAllLocaleInfo,\r\n formatNumber,\r\n formatCurrency,\r\n formatPercent,\r\n formatDate,\r\n formatTime,\r\n formatRelativeTime,\r\n formatList,\r\n formatPlural,\r\n addLocaleListener,\r\n removeLocaleListener,\r\n clearLocaleListeners,\r\n initI18n,\r\n saveLocale,\r\n loadLocale,\r\n getDefaultLocale,\r\n};\r\n\r\n/**\r\n * 预设语言包\r\n */\r\nexport const presetLocales = {\r\n 'zh-CN': {\r\n name: '简体中文',\r\n nativeName: '简体中文',\r\n direction: 'ltr',\r\n translations: LOCALES['zh-CN'],\r\n },\r\n \r\n 'en-US': {\r\n name: 'English (US)',\r\n nativeName: 'English (US)',\r\n direction: 'ltr',\r\n translations: LOCALES['en-US'],\r\n },\r\n};\r\n\r\n/**\r\n * 创建国际化管理器\r\n * @returns {Object} 国际化管理器\r\n */\r\nexport const createI18nManager = () => {\r\n return {\r\n t,\r\n plural,\r\n getCurrentLocale,\r\n setCurrentLocale,\r\n switchLocale,\r\n getFallbackLocale,\r\n setFallbackLocale,\r\n hasTranslation,\r\n getTranslations,\r\n addTranslations,\r\n removeTranslation,\r\n clearTranslations,\r\n getSupportedLocales,\r\n isLocaleSupported,\r\n getLocaleName,\r\n getLocaleDirection,\r\n getLocaleInfo,\r\n getAllLocaleInfo,\r\n formatNumber,\r\n formatCurrency,\r\n formatPercent,\r\n formatDate,\r\n formatTime,\r\n formatRelativeTime,\r\n formatList,\r\n formatPlural,\r\n addLocaleListener,\r\n removeLocaleListener,\r\n clearLocaleListeners,\r\n initI18n,\r\n saveLocale,\r\n loadLocale,\r\n getDefaultLocale,\r\n };\r\n};\r\n\r\nexport { i18nUtils as default };\r\n","/**\r\n * MetonaToast Core - 核心Toast逻辑\r\n * @module core\r\n * @version 2.0.0\r\n * @description 重构后的核心模块,包含Toast类的优化实现\r\n */\r\n\r\nimport { generateId, escapeHTML } from './utils.js';\r\nimport { DEFAULTS, ICONS, TYPE_COLORS, THEMES } from './constants.js';\r\nimport { injectStyles } from './styles.js';\r\nimport { getTheme, applyTheme } from './themes.js';\r\nimport { t as i18nT, setCurrentLocale, getLocaleDirection, getCurrentLocale } from './i18n.js';\r\n\r\n// 模块级共享容器缓存,所有 Toast 实例共用\r\n// 使用 Map 而非 WeakMap:document.body 在页面存活期间永不被 GC,\r\n// 容器需要显式通过 destroy() 清理,WeakMap 在此场景无实际收益。\r\nconst _containerCache = new Map();\r\n\r\n/**\r\n * 参数标准化工具\r\n * 支持多种调用方式:\r\n * - success('message')\r\n * - success({ message: 'text' })\r\n * - success({ title: 'title', message: 'text' })\r\n * - success('message', { duration: 5000 })\r\n */\r\nconst normalizeArgs = (args, defaultType = 'default') => {\r\n const [first, second] = args;\r\n \r\n // 情况1: success('message')\r\n if (typeof first === 'string') {\r\n return {\r\n ...second,\r\n type: second?.type || defaultType,\r\n message: first,\r\n };\r\n }\r\n \r\n // 情况2: success({ message: 'text' }) 或 success({ title: 't', message: 'm' })\r\n if (first && typeof first === 'object') {\r\n return {\r\n ...first,\r\n type: first.type || defaultType,\r\n };\r\n }\r\n \r\n // 情况3: success() 无参数\r\n return {\r\n type: defaultType,\r\n message: '',\r\n };\r\n};\r\n\r\n/**\r\n * Toast类 - 核心通知组件\r\n */\r\nclass Toast {\r\n // 静态钩子系统\r\n static _hooks = new Map();\r\n static on(name, fn) {\r\n if (!this._hooks.has(name)) this._hooks.set(name, []);\r\n this._hooks.get(name).push(fn);\r\n return () => this.off(name, fn);\r\n }\r\n static off(name, fn) {\r\n const list = this._hooks.get(name);\r\n if (list) this._hooks.set(name, list.filter(f => f !== fn));\r\n }\r\n static trigger(name, toast) {\r\n const list = this._hooks.get(name);\r\n if (list) list.forEach(fn => { try { fn(toast); } catch (e) { console.error('Hook error:', name, e); } });\r\n }\r\n\r\n constructor(opts) {\r\n this.id = opts.id || generateId();\r\n this.type = opts.type || 'default';\r\n this.title = opts.title || '';\r\n this.message = opts.message ?? opts.content ?? '';\r\n this.html = opts.html || '';\r\n this.iconHTML = opts.iconHTML || '';\r\n this.config = { ...DEFAULTS, ...opts };\r\n // 防止嵌套对象被多个 toast 实例共享引用\r\n if (opts.style && typeof opts.style === 'object') {\r\n this.config.style = { ...opts.style };\r\n }\r\n this.el = null;\r\n this.barEl = null;\r\n this.rafId = null;\r\n this.remaining = this.config.duration;\r\n this.startedAt = 0;\r\n this.paused = false;\r\n this.closing = false;\r\n this._cleanups = [];\r\n this.group = opts.group || null;\r\n }\r\n\r\n _palette() {\r\n const theme = getTheme(this.config.theme);\r\n const c = TYPE_COLORS[this.type] || TYPE_COLORS.default;\r\n const tc = THEMES[theme] || THEMES.light;\r\n const t = { bg: tc.bg, border: tc.border, shadow: tc.shadow };\r\n return { theme, c, t };\r\n }\r\n\r\n create() {\r\n if (typeof window === 'undefined' || typeof document === 'undefined') return this;\r\n \r\n Toast.trigger('beforeShow', this);\r\n injectStyles();\r\n \r\n const container = this._getContainer();\r\n const { theme, c, t } = this._palette();\r\n \r\n this._limitToasts(container);\r\n \r\n const el = document.createElement('div');\r\n el.className = this._buildClassName(theme);\r\n el.setAttribute('role', (this.type === 'error' || this.type === 'warning') ? 'alert' : 'status');\r\n el.setAttribute('aria-live', this.type === 'error' ? 'assertive' : 'polite');\r\n el.dataset.id = this.id;\r\n \r\n this._applyStyles(el, theme, t);\r\n this._buildContent(el, c);\r\n \r\n this.el = el;\r\n // Chrome bug: column-reverse + appendChild 会导致重叠。改用 column + insertBefore\r\n const pos = this.config.position || 'top-right';\r\n if (pos.startsWith('top')) {\r\n container.insertBefore(el, container.firstChild);\r\n } else {\r\n container.appendChild(el);\r\n }\r\n \r\n this._bindEvents(el);\r\n this._startTimer();\r\n \r\n // 进入动画\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n el.classList.add('met-show');\r\n });\r\n });\r\n \r\n if (typeof this.config.onShow === 'function') {\r\n try {\r\n this.config.onShow(this);\r\n } catch (e) {\r\n console.error('onShow callback error:', e);\r\n }\r\n }\r\n \r\n Toast.trigger('afterShow', this);\r\n \r\n return this;\r\n }\r\n\r\n _getContainer() {\r\n const position = this.config.position || 'top-right';\r\n const zIndex = this.config.zIndex || 9999;\r\n \r\n if (_containerCache.has(document.body)) {\r\n const containers = _containerCache.get(document.body);\r\n if (containers.has(position)) {\r\n return containers.get(position);\r\n }\r\n } else {\r\n _containerCache.set(document.body, new Map());\r\n }\r\n \r\n const el = document.createElement('div');\r\n el.className = `met-container ${position}`;\r\n el.setAttribute('aria-label', 'Notifications');\r\n el.setAttribute('role', 'region');\r\n \r\n // cssText 完全接管布局,不依赖 CSS class\r\n const posStyles = {\r\n 'top-left': 'top:0;left:0;align-items:flex-start',\r\n 'top-center': 'top:0;left:0;right:0;align-items:center',\r\n 'top-right': 'top:0;right:0;align-items:flex-end',\r\n 'bottom-left': 'bottom:0;left:0;align-items:flex-start',\r\n 'bottom-center':'bottom:0;left:0;right:0;align-items:center',\r\n 'bottom-right': 'bottom:0;right:0;align-items:flex-end',\r\n };\r\n el.style.cssText = `\r\n display:flex;\r\n flex-direction:column;\r\n gap:${this.config.gap || 12}px;\r\n box-sizing:border-box;\r\n padding:${this.config.offset || 24}px;\r\n max-width:100vw;\r\n position:fixed;\r\n z-index:${zIndex};\r\n pointer-events:none;\r\n ${posStyles[position] || 'top:0;right:0;align-items:flex-end'}\r\n `;\r\n \r\n document.body.appendChild(el);\r\n _containerCache.get(document.body).set(position, el);\r\n \r\n return el;\r\n }\r\n\r\n _limitToasts(container) {\r\n const max = this.config.max || 6;\r\n const list = Array.from(container.querySelectorAll('.met-toast'));\r\n if (list.length >= max) {\r\n const first = list[0];\r\n const id = first && first.dataset.id;\r\n if (id) {\r\n const old = meToast._toasts.get(id);\r\n if (old) old.close(true);\r\n }\r\n }\r\n }\r\n\r\n _buildClassName(theme) {\r\n // CSS 支持的动画类型,未列出的 fallback 到 slide\r\n const CSS_ANIMS = ['slide','fade','scale','bounce','flip','rotate','zoom',\r\n 'slideUp','slideDown','slideLeft','slideRight'];\r\n const anim = CSS_ANIMS.includes(this.config.animation) ? this.config.animation : 'slide';\r\n return [\r\n 'met-toast',\r\n `met-${this.type}`,\r\n `met-theme-${theme}`,\r\n `met-anim-${anim}`,\r\n (this.config.closeOnClick || this.config.draggable) ? 'met-clickable' : '',\r\n this.config.className || '',\r\n ].filter(Boolean).join(' ');\r\n }\r\n\r\n _applyStyles(el, theme, t) {\r\n const widthValue = typeof this.config.width === 'number'\r\n ? `${this.config.width}px`\r\n : (typeof this.config.width === 'string' ? this.config.width : '360px');\r\n \r\n // 只强制核心布局属性,动画/滤镜/颜色由 CSS class 控制\r\n const set = (p, v) => el.style.setProperty(p, v, 'important');\r\n set('position', 'relative');\r\n set('flex-shrink', '0');\r\n set('min-width', '240px');\r\n set('max-width', 'calc(100vw - 48px)');\r\n set('width', widthValue);\r\n // 用户自定义样式最后应用\r\n if (this.config.style && Object.keys(this.config.style).length > 0) {\r\n Object.entries(this.config.style).forEach(([k, v]) => { el.style[k] = v; });\r\n }\r\n }\r\n\r\n _buildContent(el, c) {\r\n // 自定义渲染函数 — 完全接管 DOM 构建\r\n if (typeof this.config.render === 'function') {\r\n el.innerHTML = this.config.render(this);\r\n this.barEl = el.querySelector('.met-bar, .met-bar-v');\r\n return;\r\n }\r\n \r\n const showIcon = this.config.icon !== false && (this.iconHTML || ICONS[this.type]);\r\n const showClose = this.config.closeButton !== false;\r\n const showProgress = this.config.showProgress !== false && this.config.duration > 0;\r\n const showSide = (!showIcon && this.type !== 'default');\r\n \r\n const safeTitle = this.title ? `
${escapeHTML(this.title)}
` : '';\r\n const safeMessage = this.html\r\n ? `
${this.html}
`\r\n : (this.message ? `
${escapeHTML(this.message)}
` : '');\r\n \r\n const iconHTML = showIcon\r\n ? `
${this.iconHTML || ICONS[this.type]}
` : '';\r\n const closeHTML = showClose\r\n ? ``\r\n : '';\r\n const progressHTML = showProgress\r\n ? (this.config.progressDirection === 'vertical'\r\n ? `
`\r\n : `
`)\r\n : '';\r\n const sideHTML = showSide\r\n ? `
` : '';\r\n \r\n el.innerHTML = `\r\n ${iconHTML}\r\n ${sideHTML}\r\n
\r\n ${safeTitle}\r\n ${safeMessage}\r\n
\r\n ${closeHTML}\r\n ${progressHTML}\r\n `;\r\n \r\n this.barEl = el.querySelector('.met-bar, .met-bar-v');\r\n }\r\n\r\n _bindEvents(el) {\r\n const eventHandler = (e) => {\r\n const target = e.target;\r\n \r\n if (target.closest('.met-close')) {\r\n e.stopPropagation();\r\n this.close();\r\n return;\r\n }\r\n \r\n if (this.config.closeOnClick && !target.closest('.met-close')) {\r\n if (typeof this.config.onClick === 'function') {\r\n try {\r\n this.config.onClick(this);\r\n } catch (err) {\r\n console.error('onClick callback error:', err);\r\n }\r\n }\r\n this.close();\r\n return;\r\n }\r\n };\r\n \r\n el.addEventListener('click', eventHandler);\r\n this._cleanups.push(() => el.removeEventListener('click', eventHandler));\r\n \r\n if (this.config.pauseOnHover && this.config.duration > 0) {\r\n const mouseEnter = () => this._pause();\r\n const mouseLeave = () => this._resume();\r\n \r\n el.addEventListener('mouseenter', mouseEnter);\r\n el.addEventListener('mouseleave', mouseLeave);\r\n \r\n this._cleanups.push(() => {\r\n el.removeEventListener('mouseenter', mouseEnter);\r\n el.removeEventListener('mouseleave', mouseLeave);\r\n });\r\n }\r\n \r\n if (this.config.draggable) {\r\n this._bindDrag(el);\r\n }\r\n }\r\n\r\n _bindDrag(el) {\r\n let sx = 0, sy = 0, dx = 0, dy = 0, dragging = false;\r\n \r\n const down = (e) => {\r\n if (e.target.closest('.met-close')) return;\r\n dragging = true;\r\n sx = e.clientX; \r\n sy = e.clientY;\r\n el.setPointerCapture(e.pointerId);\r\n el.style.transition = 'none';\r\n this._pause();\r\n };\r\n \r\n const move = (e) => {\r\n if (!dragging) return;\r\n dx = e.clientX - sx; \r\n dy = e.clientY - sy;\r\n el.style.transform = `translate(${dx}px, ${dy}px) rotate(${dx * 0.1}deg)`;\r\n el.style.opacity = String(Math.max(0, 1 - Math.abs(dx) / 200));\r\n };\r\n \r\n const up = (e) => {\r\n if (!dragging) return;\r\n dragging = false;\r\n el.releasePointerCapture(e.pointerId);\r\n el.style.transition = '';\r\n \r\n if (Math.abs(dx) > 120) {\r\n el.style.transform = `translate(${dx * 2}px, ${dy}px) rotate(${dx * 0.2}deg)`;\r\n el.style.opacity = '0';\r\n setTimeout(() => this.close(true), 250);\r\n } else {\r\n el.style.transform = '';\r\n el.style.opacity = '';\r\n this._resume();\r\n }\r\n dx = dy = 0;\r\n };\r\n \r\n el.addEventListener('pointerdown', down);\r\n el.addEventListener('pointermove', move);\r\n el.addEventListener('pointerup', up);\r\n el.addEventListener('pointercancel', up);\r\n \r\n this._cleanups.push(() => {\r\n el.removeEventListener('pointerdown', down);\r\n el.removeEventListener('pointermove', move);\r\n el.removeEventListener('pointerup', up);\r\n el.removeEventListener('pointercancel', up);\r\n });\r\n }\r\n\r\n _startTimer() {\r\n if (this.config.duration <= 0) return;\r\n \r\n this.startedAt = Date.now();\r\n this.remaining = this.config.duration;\r\n \r\n const tick = () => {\r\n if (this.paused || this.closing) return;\r\n \r\n const elapsed = Date.now() - this.startedAt;\r\n this.remaining = Math.max(0, this.config.duration - elapsed);\r\n \r\n if (this.barEl) {\r\n const ratio = this.remaining / this.config.duration;\r\n const t = this.config.progressDirection === 'vertical'\r\n ? `scaleY(${ratio})` : `scaleX(${ratio})`;\r\n this.barEl.style.transform = t;\r\n }\r\n \r\n if (this.remaining <= 0) { \r\n this.close(); \r\n return; \r\n }\r\n \r\n this.rafId = requestAnimationFrame(tick);\r\n };\r\n \r\n this.rafId = requestAnimationFrame(tick);\r\n }\r\n\r\n _pause() {\r\n if (this.paused || this.config.duration <= 0) return;\r\n this.paused = true;\r\n cancelAnimationFrame(this.rafId);\r\n this.remaining = Math.max(0, this.config.duration - (Date.now() - this.startedAt));\r\n }\r\n\r\n _resume() {\r\n if (!this.paused) return;\r\n this.paused = false;\r\n this.startedAt = Date.now() - (this.config.duration - this.remaining);\r\n this._startTimer();\r\n }\r\n\r\n update(partial) {\r\n Toast.trigger('beforeUpdate', this);\r\n if (partial.type) this.type = partial.type;\r\n if (partial.title !== undefined) this.title = partial.title;\r\n if (partial.message !== undefined) this.message = partial.message;\r\n if (partial.html !== undefined) this.html = partial.html;\r\n \r\n if (!this.el) { Toast.trigger('afterUpdate', this); return this; }\r\n \r\n const content = this.el.querySelector('.met-content');\r\n if (content) {\r\n const safeTitle = this.title ? `
${escapeHTML(this.title)}
` : '';\r\n const safeMessage = this.html\r\n ? `
${this.html}
`\r\n : (this.message ? `
${escapeHTML(this.message)}
` : '');\r\n content.innerHTML = `${safeTitle}${safeMessage}`;\r\n }\r\n \r\n // resetTimerOnUpdate: 更新内容后重置计时器\r\n if (this.config.resetTimerOnUpdate && this.config.duration > 0) {\r\n cancelAnimationFrame(this.rafId);\r\n this.startedAt = Date.now();\r\n this.remaining = this.config.duration;\r\n this._startTimer();\r\n }\r\n \r\n if (typeof this.config.onUpdate === 'function') {\r\n try { this.config.onUpdate(this); } catch (e) { console.error('onUpdate callback error:', e); }\r\n }\r\n \r\n Toast.trigger('afterUpdate', this);\r\n return this;\r\n }\r\n\r\n close(immediate = false) {\r\n if (this.closing) return;\r\n this.closing = true;\r\n \r\n Toast.trigger('beforeClose', this);\r\n cancelAnimationFrame(this.rafId);\r\n this._cleanups.forEach(fn => { try { fn(); } catch (_) {} });\r\n this._cleanups = [];\r\n \r\n const el = this.el;\r\n if (!el) { \r\n meToast._remove(this.id); \r\n return; \r\n }\r\n \r\n // 立即脱离文档流:记录当前位置,然后设为 absolute,让下方 toast 自然上移\r\n const container = el.parentNode;\r\n if (container && !immediate) {\r\n const elRect = el.getBoundingClientRect();\r\n const containerRect = container.getBoundingClientRect();\r\n el.style.position = 'absolute';\r\n el.style.top = (elRect.top - containerRect.top) + 'px';\r\n el.style.left = (elRect.left - containerRect.left) + 'px';\r\n el.style.width = elRect.width + 'px';\r\n el.style.margin = '0';\r\n }\r\n \r\n el.classList.add('met-leaving');\r\n el.classList.remove('met-show');\r\n \r\n const pos = this.config.position || 'top-right';\r\n const isRTL = getLocaleDirection(getCurrentLocale()) === 'rtl';\r\n let transform = 'scale(.96)';\r\n \r\n if (pos.includes('right')) transform = isRTL ? 'translateX(-120%)' : 'translateX(120%)';\r\n else if (pos.includes('left')) transform = isRTL ? 'translateX(120%)' : 'translateX(-120%)';\r\n else if (pos.startsWith('top')) transform = 'translateY(-20px)';\r\n else transform = 'translateY(20px)';\r\n \r\n el.style.transform = transform;\r\n el.style.opacity = '0';\r\n \r\n setTimeout(() => this._destroy(), immediate ? 0 : 300);\r\n }\r\n\r\n _destroy() {\r\n if (this.el && this.el.parentNode) {\r\n this.el.parentNode.removeChild(this.el);\r\n }\r\n this.el = null;\r\n \r\n if (typeof this.config.onClose === 'function') {\r\n try {\r\n this.config.onClose(this);\r\n } catch (e) {\r\n console.error('onClose callback error:', e);\r\n }\r\n }\r\n \r\n Toast.trigger('afterClose', this);\r\n meToast._remove(this.id);\r\n }\r\n}\r\n\r\n// ========== HTML模板辅助函数 ==========\r\n\r\n/**\r\n * 按钮行模板 — confirm/prompt 共用\r\n * @param {string} buttons - 按钮HTML\r\n * @returns {string} 按钮行HTML\r\n */\r\nconst _btnRow = (buttons) => `\r\n
\r\n ${buttons}\r\n
`;\r\n\r\n/**\r\n * 确认对话框模板\r\n * @param {Object} opts - 选项\r\n * @returns {string} HTML\r\n */\r\nconst _confirmHTML = (opts) => {\r\n const confirmText = opts.confirmText || i18nT('confirm');\r\n const cancelText = opts.cancelText || i18nT('cancel');\r\n const confirmColor = opts.confirmColor || '#10b981';\r\n const cancelColor = opts.cancelColor || '#6b7280';\r\n return _btnRow(`\r\n \r\n \r\n `);\r\n};\r\n\r\n/**\r\n * 输入对话框模板\r\n * @param {Object} opts - 选项\r\n * @returns {string} HTML\r\n */\r\nconst _promptHTML = (opts) => {\r\n const submitText = opts.submitText || i18nT('confirm');\r\n const cancelText = opts.cancelText || i18nT('cancel');\r\n const submitColor = opts.submitColor || '#3b82f6';\r\n const cancelColor = opts.cancelColor || '#6b7280';\r\n return `\r\n \r\n ${_btnRow(`\r\n \r\n \r\n `)}\r\n `;\r\n};\r\n\r\n/**\r\n * 进度条模板\r\n * @param {Object} opts - 选项\r\n * @returns {string} HTML\r\n */\r\nconst _progressHTML = (opts) => {\r\n const color = opts.progressColor || '#3b82f6';\r\n return `\r\n
\r\n
\r\n
\r\n
0%
\r\n `;\r\n};\r\n\r\n/**\r\n * Action Toast 模板\r\n * @param {Array} actions - 操作按钮数组 [{ text, onClick, style }]\r\n * @returns {string} HTML\r\n */\r\nconst _actionHTML = (actions) => {\r\n if (!Array.isArray(actions) || actions.length === 0) return '';\r\n const buttons = actions.map((a, i) => {\r\n const bg = a.style?.background || a.color || '#6366f1';\r\n const cls = `met-action-btn-${i}`;\r\n return ``;\r\n }).join('');\r\n return _btnRow(buttons);\r\n};\r\n\r\n/**\r\n * 主对象\r\n */\r\nconst meToast = {\r\n _toasts: new Map(),\r\n _config: { ...DEFAULTS },\r\n version: '2.0.0',\r\n \r\n configure(opts) {\r\n if (!opts || typeof opts !== 'object') return this;\r\n this._config = { ...this._config, ...opts };\r\n \r\n if (opts.theme) {\r\n applyTheme(opts.theme);\r\n }\r\n \r\n if (opts.locale) {\r\n setCurrentLocale(opts.locale);\r\n }\r\n \r\n return this;\r\n },\r\n \r\n _emit(opts) {\r\n const merged = { ...this._config, ...opts };\r\n if (merged.content && !merged.message) merged.message = merged.content;\r\n \r\n const t = new Toast(merged);\r\n t.create();\r\n this._toasts.set(t.id, t);\r\n \r\n return t;\r\n },\r\n \r\n _remove(id) { \r\n this._toasts.delete(id); \r\n },\r\n \r\n find(id) { \r\n if (!id) return undefined;\r\n return this._toasts.get(id); \r\n },\r\n \r\n /**\r\n * 显示默认Toast\r\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\r\n * @param {Object} [opts] - 选项对象(当第一个参数是字符串时)\r\n */\r\n show(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'default');\r\n return this._emit(normalized);\r\n },\r\n \r\n /**\r\n * 显示成功Toast\r\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\r\n * @param {Object} [opts] - 选项对象\r\n */\r\n success(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'success');\r\n return this._emit(normalized);\r\n },\r\n \r\n /**\r\n * 显示错误Toast\r\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\r\n * @param {Object} [opts] - 选项对象\r\n */\r\n error(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'error');\r\n return this._emit(normalized);\r\n },\r\n \r\n /**\r\n * 显示警告Toast\r\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\r\n * @param {Object} [opts] - 选项对象\r\n */\r\n warning(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'warning');\r\n return this._emit(normalized);\r\n },\r\n \r\n /**\r\n * 显示信息Toast\r\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\r\n * @param {Object} [opts] - 选项对象\r\n */\r\n info(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'info');\r\n return this._emit(normalized);\r\n },\r\n \r\n /**\r\n * 显示加载Toast\r\n * @param {string|Object} messageOrOpts - 消息字符串或选项对象\r\n * @param {Object} [opts] - 选项对象\r\n */\r\n loading(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'loading');\r\n normalized.duration = 0;\r\n normalized.closeButton = false;\r\n normalized.showProgress = false;\r\n \r\n const t = this._emit(normalized);\r\n \r\n return {\r\n id: t.id,\r\n success: (msg, o = {}) => this._resolve(t, 'success', msg, o),\r\n error: (msg, o = {}) => this._resolve(t, 'error', msg, o),\r\n info: (msg, o = {}) => this._resolve(t, 'info', msg, o),\r\n warning: (msg, o = {}) => this._resolve(t, 'warning', msg, o),\r\n update: (p) => { t.update(p); return this; },\r\n dismiss: () => t.close(),\r\n };\r\n },\r\n \r\n promise(promise, opts = {}) {\r\n if (!promise || typeof promise.then !== 'function') {\r\n console.error('MeToast.promise: first argument must be a Promise');\r\n return Promise.reject(new Error('Invalid promise'));\r\n }\r\n \r\n const loadingMsg = opts.loading || i18nT('loading');\r\n const successMsg = opts.success || i18nT('success');\r\n const errorMsg = opts.error || i18nT('error');\r\n \r\n const ctrl = this.loading(loadingMsg);\r\n \r\n return Promise.resolve(promise)\r\n .then((data) => { \r\n ctrl.success(successMsg); \r\n return data; \r\n })\r\n .catch((err) => { \r\n ctrl.error(errorMsg); \r\n throw err; \r\n });\r\n },\r\n \r\n _resolve(loadingToast, type, message, opts) {\r\n const id = loadingToast.id;\r\n const old = this._toasts.get(id);\r\n if (!old) return null;\r\n \r\n const position = old.config.position;\r\n old.close();\r\n \r\n return this._emit({ ...opts, type, message, position });\r\n },\r\n \r\n /**\r\n * 确认对话框\r\n * @param {string} message - 消息内容\r\n * @param {Object} [opts] - 选项\r\n * @returns {Promise}\r\n */\r\n confirm(message, opts = {}) {\r\n if (typeof message !== 'string') {\r\n console.error('MeToast.confirm: message must be a string');\r\n return Promise.resolve(false);\r\n }\r\n \r\n return new Promise((resolve) => {\r\n let resolved = false;\r\n const safeResolve = (val) => { if (!resolved) { resolved = true; clearTimeout(safetyTimeout); resolve(val); } };\r\n const safetyTimeout = setTimeout(() => safeResolve(false), 10000);\r\n \r\n const t = this._emit({\r\n ...opts,\r\n type: opts.type || 'warning',\r\n message,\r\n duration: 0,\r\n closeButton: false,\r\n closeOnClick: false,\r\n draggable: false,\r\n html: _confirmHTML(opts),\r\n });\r\n \r\n setTimeout(() => {\r\n const confirmBtn = t.el?.querySelector('.met-confirm-btn');\r\n const cancelBtn = t.el?.querySelector('.met-cancel-btn');\r\n \r\n if (confirmBtn) {\r\n confirmBtn.addEventListener('click', () => {\r\n t.close();\r\n safeResolve(true);\r\n });\r\n }\r\n \r\n if (cancelBtn) {\r\n cancelBtn.addEventListener('click', () => {\r\n t.close();\r\n safeResolve(false);\r\n });\r\n }\r\n }, 0);\r\n });\r\n },\r\n \r\n /**\r\n * 输入对话框\r\n * @param {string} message - 消息内容\r\n * @param {Object} [opts] - 选项\r\n * @returns {Promise}\r\n */\r\n prompt(message, opts = {}) {\r\n if (typeof message !== 'string') {\r\n console.error('MeToast.prompt: message must be a string');\r\n return Promise.resolve(null);\r\n }\r\n \r\n return new Promise((resolve) => {\r\n let resolved = false;\r\n const safeResolve = (val) => { if (!resolved) { resolved = true; clearTimeout(safetyTimeout); resolve(val); } };\r\n const safetyTimeout = setTimeout(() => safeResolve(null), 10000);\r\n \r\n const t = this._emit({\r\n ...opts,\r\n type: opts.type || 'info',\r\n message,\r\n duration: 0,\r\n closeButton: false,\r\n closeOnClick: false,\r\n draggable: false,\r\n html: _promptHTML(opts),\r\n });\r\n \r\n setTimeout(() => {\r\n const input = t.el?.querySelector('.met-input');\r\n const submitBtn = t.el?.querySelector('.met-submit-btn');\r\n const cancelBtn = t.el?.querySelector('.met-cancel-btn');\r\n \r\n if (input) {\r\n input.focus();\r\n \r\n input.addEventListener('keydown', (e) => {\r\n if (e.key === 'Enter') {\r\n t.close();\r\n safeResolve(input.value);\r\n }\r\n });\r\n }\r\n \r\n if (submitBtn) {\r\n submitBtn.addEventListener('click', () => {\r\n t.close();\r\n safeResolve(input?.value || null);\r\n });\r\n }\r\n \r\n if (cancelBtn) {\r\n cancelBtn.addEventListener('click', () => {\r\n t.close();\r\n safeResolve(null);\r\n });\r\n }\r\n }, 0);\r\n });\r\n },\r\n \r\n /**\r\n * 进度Toast\r\n * @param {string|Object} messageOrOpts - 消息或选项\r\n * @param {Object} [opts] - 选项\r\n * @returns {Object} 控制对象\r\n */\r\n progress(messageOrOpts, opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'info');\r\n normalized.duration = 0;\r\n normalized.closeButton = false;\r\n normalized.showProgress = false;\r\n \r\n const t = this._emit({\r\n ...normalized,\r\n html: _progressHTML(opts),\r\n });\r\n \r\n return {\r\n id: t.id,\r\n \r\n setProgress(percent) {\r\n const fill = t.el?.querySelector('.met-progress-fill');\r\n const text = t.el?.querySelector('.met-progress-text');\r\n \r\n if (fill) {\r\n fill.style.width = `${Math.min(100, Math.max(0, percent))}%`;\r\n }\r\n \r\n if (text) {\r\n text.textContent = `${Math.round(percent)}%`;\r\n }\r\n },\r\n \r\n complete(message) {\r\n this.setProgress(100);\r\n setTimeout(() => {\r\n t.update({\r\n type: 'success',\r\n message: message || i18nT('success'),\r\n html: '',\r\n });\r\n setTimeout(() => t.close(), 1000);\r\n }, 300);\r\n },\r\n \r\n error(message) {\r\n t.update({\r\n type: 'error',\r\n message: message || i18nT('error'),\r\n html: '',\r\n });\r\n setTimeout(() => t.close(), 2000);\r\n },\r\n \r\n dismiss() {\r\n t.close();\r\n },\r\n };\r\n },\r\n \r\n /**\r\n * 倒计时Toast\r\n * @param {string} message - 消息内容\r\n * @param {number} seconds - 秒数\r\n * @param {Object} [opts] - 选项\r\n * @returns {Object} 控制对象\r\n */\r\n countdown(message, seconds = 10, opts = {}) {\r\n if (typeof message !== 'string') {\r\n console.error('MeToast.countdown: message must be a string');\r\n return { cancel: () => {}, pause: () => {}, resume: () => {} };\r\n }\r\n \r\n let remaining = Math.max(1, parseInt(seconds) || 10);\r\n let timer = null;\r\n \r\n const t = this._emit({\r\n ...opts,\r\n type: opts.type || 'warning',\r\n message: message.replace(/\\{seconds\\}/g, remaining),\r\n duration: 0,\r\n closeButton: true,\r\n showProgress: false,\r\n });\r\n \r\n const tick = () => {\r\n remaining--;\r\n \r\n if (remaining <= 0) {\r\n clearInterval(timer);\r\n t.close();\r\n \r\n if (typeof opts.onComplete === 'function') {\r\n try {\r\n opts.onComplete();\r\n } catch (e) {\r\n console.error('countdown onComplete error:', e);\r\n }\r\n }\r\n return;\r\n }\r\n \r\n t.update({\r\n message: message.replace(/\\{seconds\\}/g, remaining),\r\n });\r\n };\r\n \r\n timer = setInterval(tick, 1000);\r\n \r\n return {\r\n id: t.id,\r\n \r\n cancel() {\r\n clearInterval(timer);\r\n t.close();\r\n },\r\n \r\n pause() {\r\n clearInterval(timer);\r\n },\r\n \r\n resume() {\r\n clearInterval(timer);\r\n timer = setInterval(tick, 1000);\r\n },\r\n };\r\n },\r\n \r\n /**\r\n * Action Toast — 带操作按钮的通知\r\n * @param {string|Object} messageOrOpts - 消息\r\n * @param {Array} actions - 操作按钮 [{ text, onClick, color }]\r\n * @param {Object} [opts] - 选项\r\n * @returns {Object} toast实例 + dismiss\r\n */\r\n action(messageOrOpts, actions = [], opts = {}) {\r\n const normalized = normalizeArgs([messageOrOpts, opts], 'info');\r\n normalized.duration = opts.duration ?? 0;\r\n normalized.closeButton = opts.closeButton ?? true;\r\n \r\n const t = this._emit({\r\n ...normalized,\r\n html: (normalized.html || '') + _actionHTML(actions),\r\n });\r\n \r\n if (Array.isArray(actions)) {\r\n setTimeout(() => {\r\n actions.forEach((a, i) => {\r\n const btn = t.el?.querySelector(`.met-action-btn-${i}`);\r\n if (btn && typeof a.onClick === 'function') {\r\n btn.addEventListener('click', () => {\r\n try { a.onClick(t); } catch (e) { console.error('Action onClick error:', e); }\r\n if (a.close !== false) t.close();\r\n });\r\n }\r\n });\r\n }, 0);\r\n }\r\n \r\n return { id: t.id, toast: t, dismiss: () => t.close() };\r\n },\r\n\r\n /**\r\n * 队列Toast\r\n * @param {Array} messages - 消息数组\r\n * @param {Object} [opts] - 选项\r\n * @returns {Promise}\r\n */\r\n queue(messages, opts = {}) {\r\n if (!Array.isArray(messages)) {\r\n console.error('MeToast.queue: messages must be an array');\r\n return { then: (fn) => Promise.resolve().then(fn), cancel: () => {} };\r\n }\r\n \r\n let cancelled = false;\r\n const promise = new Promise((resolve) => {\r\n let index = 0;\r\n const delay = opts.delay || 1000;\r\n const userOnClose = opts.onClose;\r\n \r\n const showNext = () => {\r\n if (cancelled || index >= messages.length) {\r\n resolve();\r\n return;\r\n }\r\n \r\n const message = messages[index];\r\n index++;\r\n \r\n const msg = typeof message === 'string' ? message : (message?.message || '');\r\n const msgObj = (typeof message === 'object' && message !== null) ? message : {};\r\n const msgOnClose = msgObj.onClose;\r\n \r\n this._emit({\r\n ...opts,\r\n ...msgObj,\r\n message: msg,\r\n duration: msgObj.duration || opts.duration || 3000,\r\n onClose: (toast) => {\r\n if (typeof msgOnClose === 'function') {\r\n try { msgOnClose(toast); } catch (_) {}\r\n }\r\n if (typeof userOnClose === 'function') {\r\n try { userOnClose(toast); } catch (_) {}\r\n }\r\n setTimeout(showNext, delay);\r\n },\r\n });\r\n };\r\n \r\n showNext();\r\n });\r\n return {\r\n then: (fn, rj) => promise.then(fn, rj),\r\n catch: (rj) => promise.catch(rj),\r\n cancel: () => { cancelled = true; },\r\n };\r\n },\r\n \r\n /**\r\n * 堆叠Toast\r\n * @param {Array} messages - 消息数组\r\n * @param {Object} [opts] - 选项\r\n */\r\n stack(messages, opts = {}) {\r\n if (!Array.isArray(messages)) {\r\n console.error('MeToast.stack: messages must be an array');\r\n return;\r\n }\r\n \r\n messages.forEach((message, index) => {\r\n setTimeout(() => {\r\n const msg = typeof message === 'string' ? message : (message?.message || '');\r\n \r\n this._emit({\r\n ...opts,\r\n ...((typeof message === 'object' && message !== null) ? message : {}),\r\n message: msg,\r\n });\r\n }, index * (opts.stagger || 100));\r\n });\r\n },\r\n \r\n dismiss(id) {\r\n if (id) { \r\n const t = this._toasts.get(id); \r\n if (t) t.close(); \r\n return; \r\n }\r\n this._toasts.forEach(t => t.close());\r\n },\r\n \r\n clear(position) {\r\n this._toasts.forEach(t => {\r\n if (!position || t.config.position === position) t.close();\r\n });\r\n },\r\n \r\n destroy() {\r\n this.dismiss();\r\n \r\n if (typeof document !== 'undefined') {\r\n const containers = document.querySelectorAll('.met-container');\r\n containers.forEach(c => c.parentNode && c.parentNode.removeChild(c));\r\n \r\n const style = document.getElementById('metona-toast-styles');\r\n if (style) style.parentNode.removeChild(style);\r\n }\r\n \r\n this._toasts.clear();\r\n _containerCache.clear();\r\n },\r\n \r\n getAll() {\r\n return new Map(this._toasts);\r\n },\r\n \r\n count() {\r\n return this._toasts.size;\r\n },\r\n \r\n /**\r\n * 创建Toast分组 — 返回一个自动添加 group 参数的子对象\r\n * @param {string} name - 分组名称\r\n * @returns {Object}\r\n */\r\n group(name) {\r\n const self = this;\r\n const methods = ['show','success','error','warning','info','loading','action'];\r\n const g = { _group: name };\r\n methods.forEach(m => {\r\n g[m] = (...args) => {\r\n const lastArg = args[args.length - 1];\r\n const isObj = typeof lastArg === 'object' && lastArg !== null && !Array.isArray(lastArg);\r\n // 单对象参数:直接合并group\r\n if (isObj && args.length === 1) {\r\n return self[m]({ ...lastArg, group: name });\r\n }\r\n // 末尾是配置对象:pop后合并\r\n if (isObj) {\r\n args.pop();\r\n return self[m](...args, { ...lastArg, group: name });\r\n }\r\n // 无配置对象\r\n return self[m](...args, { group: name });\r\n };\r\n });\r\n g.dismiss = () => self.dismissGroup(name);\r\n g.count = () => self._groupCount(name);\r\n return g;\r\n },\r\n \r\n /**\r\n * 按组关闭Toast\r\n * @param {string} name - 分组名称\r\n */\r\n dismissGroup(name) {\r\n this._toasts.forEach(t => { if (t.group === name) t.close(); });\r\n },\r\n \r\n _groupCount(name) {\r\n let c = 0;\r\n this._toasts.forEach(t => { if (t.group === name) c++; });\r\n return c;\r\n },\r\n};\r\n\r\nexport { meToast as default, meToast, Toast };\r\n","/**\r\n * MetonaToast Animations - 动画管理\r\n * @module animations\r\n * @version 2.0.0\r\n * @description 动画效果管理和自定义\r\n */\r\n\r\nimport { ANIMATIONS } from './constants.js';\r\n\r\n// 动画缓存\r\nconst animationCache = new Map();\r\n\r\n/**\r\n * 动画管理器类\r\n */\r\nclass AnimationManager {\r\n constructor() {\r\n this.animations = new Map();\r\n this.activeAnimations = new Map();\r\n this.animationId = 0;\r\n \r\n // 注册默认动画\r\n this._registerDefaults();\r\n }\r\n \r\n /**\r\n * 注册默认动画\r\n */\r\n _registerDefaults() {\r\n Object.entries(ANIMATIONS).forEach(([name, config]) => {\r\n this.register(name, config);\r\n });\r\n }\r\n \r\n /**\r\n * 注册动画\r\n * @param {string} name - 动画名称\r\n * @param {Object} config - 动画配置\r\n */\r\n register(name, config) {\r\n const animation = {\r\n name,\r\n enter: config.enter || {},\r\n leave: config.leave || {},\r\n duration: config.duration || 300,\r\n easing: config.easing || 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n delay: config.delay || 0,\r\n iterations: config.iterations || 1,\r\n direction: config.direction || 'normal',\r\n fillMode: config.fillMode || 'forwards',\r\n };\r\n \r\n this.animations.set(name, animation);\r\n animationCache.set(name, animation);\r\n }\r\n \r\n /**\r\n * 注销动画\r\n * @param {string} name - 动画名称\r\n */\r\n unregister(name) {\r\n this.animations.delete(name);\r\n animationCache.delete(name);\r\n }\r\n \r\n /**\r\n * 获取动画配置\r\n * @param {string} name - 动画名称\r\n * @returns {Object|null} 动画配置\r\n */\r\n get(name) {\r\n return this.animations.get(name) || ANIMATIONS[name] || null;\r\n }\r\n \r\n /**\r\n * 应用动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @param {string} animationName - 动画名称\r\n * @param {Object} options - 额外选项\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n apply(element, animationName, options = {}) {\r\n return new Promise((resolve, reject) => {\r\n const animation = this.get(animationName);\r\n if (!animation) {\r\n resolve();\r\n return;\r\n }\r\n \r\n const config = { ...animation, ...options };\r\n const animId = ++this.animationId;\r\n \r\n // 设置初始状态\r\n Object.assign(element.style, config.enter);\r\n \r\n // 强制重绘\r\n element.offsetHeight;\r\n \r\n // 创建动画\r\n const keyframes = [\r\n { ...config.enter },\r\n { ...config.leave },\r\n ];\r\n \r\n const animationOptions = {\r\n duration: config.duration,\r\n easing: config.easing,\r\n delay: config.delay,\r\n iterations: config.iterations,\r\n direction: config.direction,\r\n fill: config.fillMode,\r\n };\r\n \r\n // 应用动画\r\n const anim = element.animate(keyframes, animationOptions);\r\n \r\n // 存储活动动画\r\n this.activeAnimations.set(animId, {\r\n element,\r\n animation: anim,\r\n config,\r\n });\r\n \r\n // 动画完成处理\r\n anim.onfinish = () => {\r\n Object.assign(element.style, config.leave);\r\n this.activeAnimations.delete(animId);\r\n resolve();\r\n };\r\n \r\n // 动画取消处理 — reject 让调用者感知取消\r\n anim.oncancel = () => {\r\n this.activeAnimations.delete(animId);\r\n reject(new Error(`Animation \"${animationName}\" was cancelled`));\r\n };\r\n });\r\n }\r\n \r\n /**\r\n * 应用进入动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @param {string} animationName - 动画名称\r\n * @param {Object} options - 额外选项\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n enter(element, animationName, options = {}) {\r\n const animation = this.get(animationName);\r\n if (!animation) {\r\n return Promise.resolve();\r\n }\r\n \r\n return this.apply(element, animationName, {\r\n ...options,\r\n direction: 'normal',\r\n });\r\n }\r\n \r\n /**\r\n * 应用离开动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @param {string} animationName - 动画名称\r\n * @param {Object} options - 额外选项\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n leave(element, animationName, options = {}) {\r\n const animation = this.get(animationName);\r\n if (!animation) {\r\n return Promise.resolve();\r\n }\r\n \r\n return this.apply(element, animationName, {\r\n ...options,\r\n direction: 'reverse',\r\n });\r\n }\r\n \r\n /**\r\n * 取消所有动画\r\n */\r\n cancelAll() {\r\n this.activeAnimations.forEach(({ animation }) => {\r\n animation.cancel();\r\n });\r\n \r\n this.activeAnimations.clear();\r\n }\r\n \r\n /**\r\n * 取消元素动画\r\n * @param {HTMLElement} element - 目标元素\r\n */\r\n cancel(element) {\r\n this.activeAnimations.forEach(({ element: el, animation }, id) => {\r\n if (el === element) {\r\n animation.cancel();\r\n this.activeAnimations.delete(id);\r\n }\r\n });\r\n }\r\n \r\n /**\r\n * 暂停所有动画\r\n */\r\n pauseAll() {\r\n this.activeAnimations.forEach(({ animation }) => {\r\n animation.pause();\r\n });\r\n }\r\n \r\n /**\r\n * 恢复所有动画\r\n */\r\n resumeAll() {\r\n this.activeAnimations.forEach(({ animation }) => {\r\n animation.play();\r\n });\r\n }\r\n \r\n /**\r\n * 暂停元素动画\r\n * @param {HTMLElement} element - 目标元素\r\n */\r\n pause(element) {\r\n this.activeAnimations.forEach(({ element: el, animation }) => {\r\n if (el === element) {\r\n animation.pause();\r\n }\r\n });\r\n }\r\n \r\n /**\r\n * 恢复元素动画\r\n * @param {HTMLElement} element - 目标元素\r\n */\r\n resume(element) {\r\n this.activeAnimations.forEach(({ element: el, animation }) => {\r\n if (el === element) {\r\n animation.play();\r\n }\r\n });\r\n }\r\n \r\n /**\r\n * 获取活动动画数量\r\n * @returns {number} 动画数量\r\n */\r\n getActiveCount() {\r\n return this.activeAnimations.size;\r\n }\r\n \r\n /**\r\n * 获取所有活动动画\r\n * @returns {Map} 活动动画映射\r\n */\r\n getActiveAnimations() {\r\n return new Map(this.activeAnimations);\r\n }\r\n \r\n /**\r\n * 检查元素是否有活动动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @returns {boolean} 是否有活动动画\r\n */\r\n hasActiveAnimation(element) {\r\n for (const { element: el } of this.activeAnimations.values()) {\r\n if (el === element) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n \r\n /**\r\n * 获取动画配置\r\n * @returns {Object} 动画配置\r\n */\r\n getConfig() {\r\n return {\r\n animations: Array.from(this.animations.keys()),\r\n activeCount: this.getActiveCount(),\r\n };\r\n }\r\n \r\n /**\r\n * 重置动画管理器\r\n */\r\n reset() {\r\n this.cancelAll();\r\n this.animations.clear();\r\n this._registerDefaults();\r\n }\r\n \r\n /**\r\n * 销毁动画管理器\r\n */\r\n destroy() {\r\n this.cancelAll();\r\n this.animations.clear();\r\n this.activeAnimations.clear();\r\n }\r\n}\r\n\r\n/**\r\n * 预设动画效果\r\n */\r\nconst presetAnimations = {\r\n bounce: {\r\n enter: { transform: 'translateY(-80px)', opacity: 0 },\r\n leave: { transform: 'translateY(20px)', opacity: 1 },\r\n duration: 650,\r\n easing: 'ease',\r\n },\r\n slideUp: {\r\n enter: { transform: 'translateY(60px)', opacity: 0 },\r\n leave: { transform: 'translateY(0)', opacity: 1 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n slideDown: {\r\n enter: { transform: 'translateY(-60px)', opacity: 0 },\r\n leave: { transform: 'translateY(0)', opacity: 1 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n slideLeft: {\r\n enter: { transform: 'translateX(-90px)', opacity: 0 },\r\n leave: { transform: 'translateX(0)', opacity: 1 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n slideRight: {\r\n enter: { transform: 'translateX(90px)', opacity: 0 },\r\n leave: { transform: 'translateX(0)', opacity: 1 },\r\n duration: 400,\r\n easing: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n },\r\n\r\n};\r\n\r\n// 注册预设动画\r\nObject.entries(presetAnimations).forEach(([name, config]) => {\r\n ANIMATIONS[name] = config;\r\n});\r\n\r\n/**\r\n * 创建动画管理器实例\r\n * @returns {AnimationManager} 动画管理器实例\r\n */\r\nexport const createAnimationManager = () => {\r\n return new AnimationManager();\r\n};\r\n\r\n// 创建默认实例\r\nconst defaultAnimationManager = createAnimationManager();\r\n\r\n/**\r\n * 动画工具函数\r\n */\r\nexport const animationUtils = {\r\n /**\r\n * 应用动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @param {string} animationName - 动画名称\r\n * @param {Object} options - 额外选项\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n apply(element, animationName, options = {}) {\r\n return defaultAnimationManager.apply(element, animationName, options);\r\n },\r\n \r\n /**\r\n * 应用进入动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @param {string} animationName - 动画名称\r\n * @param {Object} options - 额外选项\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n enter(element, animationName, options = {}) {\r\n return defaultAnimationManager.enter(element, animationName, options);\r\n },\r\n \r\n /**\r\n * 应用离开动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @param {string} animationName - 动画名称\r\n * @param {Object} options - 额外选项\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n leave(element, animationName, options = {}) {\r\n return defaultAnimationManager.leave(element, animationName, options);\r\n },\r\n \r\n /**\r\n * 取消所有动画\r\n */\r\n cancelAll() {\r\n defaultAnimationManager.cancelAll();\r\n },\r\n \r\n /**\r\n * 取消元素动画\r\n * @param {HTMLElement} element - 目标元素\r\n */\r\n cancel(element) {\r\n defaultAnimationManager.cancel(element);\r\n },\r\n \r\n /**\r\n * 暂停所有动画\r\n */\r\n pauseAll() {\r\n defaultAnimationManager.pauseAll();\r\n },\r\n \r\n /**\r\n * 恢复所有动画\r\n */\r\n resumeAll() {\r\n defaultAnimationManager.resumeAll();\r\n },\r\n \r\n /**\r\n * 暂停元素动画\r\n * @param {HTMLElement} element - 目标元素\r\n */\r\n pause(element) {\r\n defaultAnimationManager.pause(element);\r\n },\r\n \r\n /**\r\n * 恢复元素动画\r\n * @param {HTMLElement} element - 目标元素\r\n */\r\n resume(element) {\r\n defaultAnimationManager.resume(element);\r\n },\r\n \r\n /**\r\n * 获取活动动画数量\r\n * @returns {number} 动画数量\r\n */\r\n getActiveCount() {\r\n return defaultAnimationManager.getActiveCount();\r\n },\r\n \r\n /**\r\n * 检查元素是否有活动动画\r\n * @param {HTMLElement} element - 目标元素\r\n * @returns {boolean} 是否有活动动画\r\n */\r\n hasActiveAnimation(element) {\r\n return defaultAnimationManager.hasActiveAnimation(element);\r\n },\r\n \r\n /**\r\n * 注册动画\r\n * @param {string} name - 动画名称\r\n * @param {Object} config - 动画配置\r\n */\r\n register(name, config) {\r\n defaultAnimationManager.register(name, config);\r\n },\r\n \r\n /**\r\n * 注销动画\r\n * @param {string} name - 动画名称\r\n */\r\n unregister(name) {\r\n defaultAnimationManager.unregister(name);\r\n },\r\n \r\n /**\r\n * 获取动画配置\r\n * @param {string} name - 动画名称\r\n * @returns {Object|null} 动画配置\r\n */\r\n get(name) {\r\n return defaultAnimationManager.get(name);\r\n },\r\n \r\n /**\r\n * 获取所有动画名称\r\n * @returns {Array} 动画名称数组\r\n */\r\n getAnimationNames() {\r\n return Array.from(defaultAnimationManager.animations.keys());\r\n },\r\n \r\n /**\r\n * 获取动画配置\r\n * @returns {Object} 动画配置\r\n */\r\n getConfig() {\r\n return defaultAnimationManager.getConfig();\r\n },\r\n \r\n /**\r\n * 重置动画管理器\r\n */\r\n reset() {\r\n defaultAnimationManager.reset();\r\n },\r\n \r\n /**\r\n * 销毁动画管理器\r\n */\r\n destroy() {\r\n defaultAnimationManager.destroy();\r\n },\r\n};\r\n\r\n/**\r\n * 动画预设\r\n */\r\nexport const animationPresets = presetAnimations;\r\n\r\n/**\r\n * 创建自定义动画\r\n * @param {Object} config - 动画配置\r\n * @returns {Object} 动画配置\r\n */\r\nexport const createAnimation = (config) => {\r\n return {\r\n enter: config.enter || {},\r\n leave: config.leave || {},\r\n duration: config.duration || 300,\r\n easing: config.easing || 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n delay: config.delay || 0,\r\n iterations: config.iterations || 1,\r\n direction: config.direction || 'normal',\r\n fillMode: config.fillMode || 'forwards',\r\n };\r\n};\r\n\r\n/**\r\n * 组合动画\r\n * @param {Array} animations - 动画数组\r\n * @returns {Object} 组合后的动画配置\r\n */\r\nexport const combineAnimations = (animations) => {\r\n const combined = {\r\n enter: {},\r\n leave: {},\r\n duration: 0,\r\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n delay: 0,\r\n iterations: 1,\r\n direction: 'normal',\r\n fillMode: 'forwards',\r\n };\r\n \r\n animations.forEach((anim) => {\r\n if (anim.enter) {\r\n Object.assign(combined.enter, anim.enter);\r\n }\r\n if (anim.leave) {\r\n Object.assign(combined.leave, anim.leave);\r\n }\r\n if (anim.duration) {\r\n combined.duration = Math.max(combined.duration, anim.duration);\r\n }\r\n if (anim.easing) {\r\n combined.easing = anim.easing;\r\n }\r\n if (anim.delay) {\r\n combined.delay = Math.max(combined.delay, anim.delay);\r\n }\r\n });\r\n \r\n return combined;\r\n};\r\n\r\n/**\r\n * 链式动画\r\n * @param {Array} animations - 动画数组\r\n * @returns {Promise} 动画完成Promise\r\n */\r\nexport const chainAnimations = async (element, animations) => {\r\n for (const anim of animations) {\r\n await defaultAnimationManager.apply(element, anim.name, anim.options);\r\n }\r\n};\r\n\r\n/**\r\n * 并行动画\r\n * @param {Array} animations - 动画数组\r\n * @returns {Promise} 动画完成Promise\r\n */\r\nexport const parallelAnimations = (element, animations) => {\r\n return Promise.all(\r\n animations.map((anim) => \r\n defaultAnimationManager.apply(element, anim.name, anim.options)\r\n )\r\n );\r\n};\r\n\r\n/**\r\n * 延迟动画\r\n * @param {number} delay - 延迟时间(毫秒)\r\n * @returns {Promise} Promise对象\r\n */\r\nexport const delayAnimation = (delay) => {\r\n return new Promise((resolve) => setTimeout(resolve, delay));\r\n};\r\n\r\n/**\r\n * 动画队列\r\n */\r\nexport class AnimationQueue {\r\n constructor() {\r\n this.queue = [];\r\n this.isProcessing = false;\r\n }\r\n \r\n /**\r\n * 添加动画到队列\r\n * @param {Function} animationFn - 动画函数\r\n * @returns {Promise} 动画完成Promise\r\n */\r\n add(animationFn) {\r\n return new Promise((resolve, reject) => {\r\n this.queue.push({\r\n fn: animationFn,\r\n resolve,\r\n reject,\r\n });\r\n \r\n this._process();\r\n });\r\n }\r\n \r\n /**\r\n * 处理队列\r\n */\r\n async _process() {\r\n if (this.isProcessing || this.queue.length === 0) {\r\n return;\r\n }\r\n \r\n this.isProcessing = true;\r\n \r\n while (this.queue.length > 0) {\r\n const { fn, resolve, reject } = this.queue.shift();\r\n \r\n try {\r\n const result = await fn();\r\n resolve(result);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n }\r\n \r\n this.isProcessing = false;\r\n }\r\n \r\n /**\r\n * 清空队列\r\n */\r\n clear() {\r\n this.queue = [];\r\n }\r\n \r\n /**\r\n * 暂停队列\r\n */\r\n pause() {\r\n this.isProcessing = true;\r\n }\r\n \r\n /**\r\n * 恢复队列\r\n */\r\n resume() {\r\n this.isProcessing = false;\r\n this._process();\r\n }\r\n \r\n /**\r\n * 获取队列长度\r\n * @returns {number} 队列长度\r\n */\r\n get length() {\r\n return this.queue.length;\r\n }\r\n \r\n /**\r\n * 检查是否正在处理\r\n * @returns {boolean} 是否正在处理\r\n */\r\n get processing() {\r\n return this.isProcessing;\r\n }\r\n}\r\n\r\n/**\r\n * 创建动画队列\r\n * @returns {AnimationQueue} 动画队列实例\r\n */\r\nexport const createAnimationQueue = () => {\r\n return new AnimationQueue();\r\n};\r\n\r\n/**\r\n * 动画性能监控\r\n */\r\nexport class AnimationPerformanceMonitor {\r\n constructor() {\r\n this.metrics = {\r\n totalAnimations: 0,\r\n activeAnimations: 0,\r\n averageDuration: 0,\r\n maxDuration: 0,\r\n minDuration: Infinity,\r\n };\r\n \r\n this.history = [];\r\n }\r\n \r\n /**\r\n * 记录动画开始\r\n * @param {string} animationName - 动画名称\r\n */\r\n recordStart(animationName) {\r\n this.metrics.totalAnimations++;\r\n this.metrics.activeAnimations++;\r\n \r\n this.history.push({\r\n name: animationName,\r\n startTime: performance.now(),\r\n endTime: null,\r\n duration: null,\r\n });\r\n }\r\n \r\n /**\r\n * 记录动画结束\r\n * @param {string} animationName - 动画名称\r\n */\r\n recordEnd(animationName) {\r\n this.metrics.activeAnimations--;\r\n \r\n const entry = this.history.find(\r\n (h) => h.name === animationName && h.endTime === null\r\n );\r\n \r\n if (entry) {\r\n entry.endTime = performance.now();\r\n entry.duration = entry.endTime - entry.startTime;\r\n \r\n // 更新统计\r\n this.metrics.maxDuration = Math.max(this.metrics.maxDuration, entry.duration);\r\n this.metrics.minDuration = Math.min(this.metrics.minDuration, entry.duration);\r\n \r\n // 计算平均值\r\n const completed = this.history.filter((h) => h.duration !== null);\r\n this.metrics.averageDuration = \r\n completed.reduce((sum, h) => sum + h.duration, 0) / completed.length;\r\n }\r\n }\r\n \r\n /**\r\n * 获取指标\r\n * @returns {Object} 性能指标\r\n */\r\n getMetrics() {\r\n return { ...this.metrics };\r\n }\r\n \r\n /**\r\n * 获取历史记录\r\n * @returns {Array} 历史记录\r\n */\r\n getHistory() {\r\n return [...this.history];\r\n }\r\n \r\n /**\r\n * 重置监控\r\n */\r\n reset() {\r\n this.metrics = {\r\n totalAnimations: 0,\r\n activeAnimations: 0,\r\n averageDuration: 0,\r\n maxDuration: 0,\r\n minDuration: Infinity,\r\n };\r\n \r\n this.history = [];\r\n }\r\n}\r\n\r\n/**\r\n * 创建性能监控实例\r\n * @returns {AnimationPerformanceMonitor} 性能监控实例\r\n */\r\nexport const createPerformanceMonitor = () => {\r\n return new AnimationPerformanceMonitor();\r\n};\r\n\r\n/**\r\n * 动画缓存管理\r\n */\r\nexport const animationCacheManager = {\r\n /**\r\n * 缓存动画\r\n * @param {string} key - 缓存键\r\n * @param {Object} animation - 动画配置\r\n */\r\n set(key, animation) {\r\n animationCache.set(key, animation);\r\n },\r\n \r\n /**\r\n * 获取缓存动画\r\n * @param {string} key - 缓存键\r\n * @returns {Object|null} 动画配置\r\n */\r\n get(key) {\r\n return animationCache.get(key) || null;\r\n },\r\n \r\n /**\r\n * 检查缓存\r\n * @param {string} key - 缓存键\r\n * @returns {boolean} 是否存在\r\n */\r\n has(key) {\r\n return animationCache.has(key);\r\n },\r\n \r\n /**\r\n * 删除缓存\r\n * @param {string} key - 缓存键\r\n */\r\n delete(key) {\r\n animationCache.delete(key);\r\n },\r\n \r\n /**\r\n * 清空缓存\r\n */\r\n clear() {\r\n animationCache.clear();\r\n },\r\n \r\n /**\r\n * 获取缓存大小\r\n * @returns {number} 缓存大小\r\n */\r\n size() {\r\n return animationCache.size;\r\n },\r\n};\r\n\r\nexport { AnimationManager, defaultAnimationManager };\r\n","/**\r\n * MetonaToast Plugins - 插件系统\r\n * @module plugins\r\n * @version 2.0.0\r\n * @description 插件管理器 + 3 款预设插件 (keyboard / persistence / accessibility)\r\n */\r\n\r\nimport { t } from './i18n.js';\r\n\r\n/**\r\n * 插件管理器\r\n */\r\nclass PluginManager {\r\n constructor() {\r\n this.plugins = new Map();\r\n this.initialized = false;\r\n }\r\n\r\n register(name, plugin) {\r\n if (this.plugins.has(name)) {\r\n console.warn(`Plugin \"${name}\" is already registered`);\r\n return this;\r\n }\r\n if (!plugin || typeof plugin !== 'object' || (!plugin.name && !plugin.version)) {\r\n console.error(`Invalid plugin \"${name}\"`);\r\n return this;\r\n }\r\n\r\n this.plugins.set(name, { name, ...plugin, installed: false, enabled: true });\r\n\r\n if (plugin.install) {\r\n try { plugin.install(this); this.plugins.get(name).installed = true; }\r\n catch (e) { console.error(`Failed to install plugin \"${name}\":`, e); }\r\n }\r\n return this;\r\n }\r\n\r\n unregister(name) {\r\n const plugin = this.plugins.get(name);\r\n if (!plugin) return this;\r\n if (plugin.uninstall) {\r\n try { plugin.uninstall(this); } catch (e) { console.error(`Failed to uninstall plugin \"${name}\":`, e); }\r\n }\r\n this.plugins.delete(name);\r\n return this;\r\n }\r\n\r\n get(name) { return this.plugins.get(name) || null; }\r\n has(name) { return this.plugins.has(name); }\r\n getAll() { return Array.from(this.plugins.values()); }\r\n getNames() { return Array.from(this.plugins.keys()); }\r\n\r\n enable(name) {\r\n const p = this.plugins.get(name);\r\n if (p) p.enabled = true;\r\n return this;\r\n }\r\n disable(name) {\r\n const p = this.plugins.get(name);\r\n if (p) p.enabled = false;\r\n return this;\r\n }\r\n isEnabled(name) {\r\n const p = this.plugins.get(name);\r\n return p ? p.enabled : false;\r\n }\r\n\r\n destroy() {\r\n this.plugins.forEach((p, name) => {\r\n if (p.destroy) { try { p.destroy(this); } catch (e) {} }\r\n });\r\n this.plugins.clear();\r\n }\r\n}\r\n\r\n/**\r\n * 预设插件\r\n */\r\nconst presetPlugins = {\r\n\r\n /**\r\n * 键盘快捷键插件 — ESC 关闭所有 Toast\r\n */\r\n keyboard: {\r\n name: 'keyboard',\r\n version: '1.0.0',\r\n description: 'ESC 关闭所有 Toast',\r\n\r\n _handler: null,\r\n\r\n install() {\r\n if (typeof document === 'undefined') return;\r\n this._handler = (e) => {\r\n if (e.key === 'Escape') {\r\n // 点击所有关闭按钮\r\n document.querySelectorAll('.met-toast .met-close').forEach(btn => {\r\n try { btn.click(); } catch (_) {}\r\n });\r\n }\r\n };\r\n document.addEventListener('keydown', this._handler);\r\n },\r\n\r\n uninstall() {\r\n if (this._handler && typeof document !== 'undefined') {\r\n document.removeEventListener('keydown', this._handler);\r\n this._handler = null;\r\n }\r\n },\r\n },\r\n\r\n /**\r\n * 持久化插件 — 自动保存/加载配置到 localStorage\r\n */\r\n persistence: {\r\n name: 'persistence',\r\n version: '1.0.0',\r\n description: '自动持久化配置到 localStorage',\r\n storageKey: 'metona-toast-config',\r\n\r\n install() {\r\n // 加载已保存的配置\r\n if (typeof localStorage !== 'undefined') {\r\n try {\r\n const saved = localStorage.getItem(this.storageKey);\r\n return saved ? JSON.parse(saved) : null;\r\n } catch (_) { return null; }\r\n }\r\n return null;\r\n },\r\n\r\n save(config) {\r\n if (typeof localStorage !== 'undefined') {\r\n try { localStorage.setItem(this.storageKey, JSON.stringify(config)); } catch (_) {}\r\n }\r\n },\r\n\r\n uninstall() {\r\n if (typeof localStorage !== 'undefined') {\r\n try { localStorage.removeItem(this.storageKey); } catch (_) {}\r\n }\r\n },\r\n },\r\n\r\n /**\r\n * 无障碍插件 — 屏幕阅读器公告\r\n */\r\n accessibility: {\r\n name: 'accessibility',\r\n version: '1.0.0',\r\n description: '通过屏幕阅读器朗读 Toast 内容',\r\n\r\n announce(toast) {\r\n if (typeof document === 'undefined') return;\r\n const el = document.createElement('div');\r\n el.setAttribute('aria-live', 'assertive');\r\n el.setAttribute('aria-atomic', 'true');\r\n el.style.cssText = 'position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;';\r\n const typeName = t(toast.type) || toast.type;\r\n el.textContent = `${typeName}: ${toast.title || ''} ${toast.message || ''}`;\r\n document.body.appendChild(el);\r\n setTimeout(() => { if (el.parentNode) el.parentNode.removeChild(el); }, 3000);\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * 插件工具\r\n */\r\nconst pluginUtils = {\r\n createManager() { return new PluginManager(); },\r\n register(name, plugin) { return defaultPluginManager.register(name, plugin); },\r\n unregister(name) { return defaultPluginManager.unregister(name); },\r\n get(name) { return defaultPluginManager.get(name); },\r\n has(name) { return defaultPluginManager.has(name); },\r\n getAll() { return defaultPluginManager.getAll(); },\r\n getNames() { return defaultPluginManager.getNames(); },\r\n enable(name) { return defaultPluginManager.enable(name); },\r\n disable(name) { return defaultPluginManager.disable(name); },\r\n isEnabled(name) { return defaultPluginManager.isEnabled(name); },\r\n getPreset(name) { return presetPlugins[name] || null; },\r\n getAllPresets() { return { ...presetPlugins }; },\r\n\r\n createPlugin(config) {\r\n return {\r\n name: config.name || 'custom',\r\n version: config.version || '1.0.0',\r\n description: config.description || '',\r\n hooks: config.hooks || {},\r\n install: config.install || null,\r\n uninstall: config.uninstall || null,\r\n ...config,\r\n };\r\n },\r\n\r\n validatePlugin(plugin) {\r\n const errors = [];\r\n if (!plugin || typeof plugin !== 'object') errors.push('Plugin must be an object');\r\n if (!plugin.name && !plugin.version) errors.push('Plugin must have a name or version');\r\n return { valid: errors.length === 0, errors };\r\n },\r\n};\r\n\r\nconst defaultPluginManager = new PluginManager();\r\n\r\nexport { presetPlugins, pluginUtils, defaultPluginManager, PluginManager };\r\n","/**\r\n * MetonaToast - 轻量级Toast通知库\r\n * @module metona-toast\r\n * @version 2.0.0\r\n * @author thzxx\r\n * @description 轻量、零依赖、精致美观的Toast通知库。单文件,开箱即用。\r\n * @license MIT\r\n */\r\n\r\nimport { meToast, Toast } from './core.js';\r\nimport { animationUtils } from './animations.js';\r\nimport { themeUtils } from './themes.js';\r\nimport { i18nUtils } from './i18n.js';\r\nimport { pluginUtils, presetPlugins } from './plugins.js';\r\nimport { DEFAULTS } from './constants.js';\r\n\r\n// 版本信息\r\nconst VERSION = '2.0.0';\r\n\r\n/**\r\n * 主对象增强\r\n */\r\nconst enhancedMeToast = {\r\n ...meToast,\r\n \r\n version: VERSION,\r\n \r\n animations: animationUtils,\r\n themes: themeUtils,\r\n i18n: i18nUtils,\r\n plugins: pluginUtils,\r\n presetPlugins,\r\n \r\n /**\r\n * 安装插件,并连接必要的生命周期钩子\r\n */\r\n use(plugin, options = {}) {\r\n if (typeof plugin === 'string') {\r\n const preset = presetPlugins[plugin];\r\n if (!preset) {\r\n console.warn(`Preset plugin \"${plugin}\" not found`);\r\n return this;\r\n }\r\n this.plugins.register(plugin, { ...preset, ...options });\r\n\r\n // 连接插件钩子\r\n if (plugin === 'accessibility') {\r\n Toast.on('afterShow', (toast) => preset.announce(toast));\r\n }\r\n if (plugin === 'persistence') {\r\n const saved = preset.install();\r\n if (saved) this.configure(saved);\r\n Toast.on('afterClose', () => { preset.save(this.getConfig()); });\r\n }\r\n } else if (plugin && typeof plugin === 'object') {\r\n const name = plugin.name || 'custom';\r\n this.plugins.register(name, { ...plugin, ...options });\r\n }\r\n\r\n return this;\r\n },\r\n \r\n /**\r\n * 初始化\r\n */\r\n init(options = {}) {\r\n if (options.config) {\r\n this.configure(options.config);\r\n }\r\n \r\n if (options.theme) {\r\n this.themes.switchTheme(options.theme);\r\n }\r\n \r\n if (options.locale) {\r\n this.i18n.switchLocale(options.locale);\r\n }\r\n \r\n if (options.plugins && Array.isArray(options.plugins)) {\r\n options.plugins.forEach((plugin) => {\r\n this.use(plugin);\r\n });\r\n }\r\n \r\n return this;\r\n },\r\n \r\n /**\r\n * 销毁\r\n */\r\n destroy() {\r\n this.dismiss();\r\n \r\n if (this.plugins && typeof this.plugins.destroy === 'function') {\r\n this.plugins.destroy();\r\n }\r\n \r\n if (this.themes) {\r\n if (typeof this.themes.clearThemeListeners === 'function') {\r\n this.themes.clearThemeListeners();\r\n }\r\n if (typeof this.themes.unwatchSystemTheme === 'function') {\r\n this.themes.unwatchSystemTheme();\r\n }\r\n }\r\n \r\n if (this.i18n && typeof this.i18n.clearLocaleListeners === 'function') {\r\n this.i18n.clearLocaleListeners();\r\n }\r\n \r\n if (this.animations && typeof this.animations.cancelAll === 'function') {\r\n this.animations.cancelAll();\r\n }\r\n \r\n if (typeof document !== 'undefined') {\r\n const containers = document.querySelectorAll('.met-container');\r\n containers.forEach((c) => c.parentNode && c.parentNode.removeChild(c));\r\n \r\n const style = document.getElementById('metona-toast-styles');\r\n if (style) style.parentNode.removeChild(style);\r\n }\r\n \r\n this._toasts.clear();\r\n },\r\n \r\n /**\r\n * 获取状态\r\n */\r\n getStatus() {\r\n return {\r\n version: VERSION,\r\n toasts: this._toasts.size,\r\n theme: this.themes?.getCurrentTheme?.() || 'auto',\r\n locale: this.i18n?.getCurrentLocale?.() || 'zh-CN',\r\n plugins: this.plugins?.getNames?.() || [],\r\n animations: this.animations?.getActiveCount?.() || 0,\r\n };\r\n },\r\n \r\n /**\r\n * 获取配置\r\n */\r\n getConfig() {\r\n return { ...this._config };\r\n },\r\n \r\n /**\r\n * 更新配置\r\n */\r\n updateConfig(config) {\r\n if (config && typeof config === 'object') {\r\n this._config = { ...this._config, ...config };\r\n }\r\n return this;\r\n },\r\n \r\n /**\r\n * 重置配置\r\n */\r\n resetConfig() {\r\n this._config = { ...DEFAULTS };\r\n return this;\r\n },\r\n \r\n /**\r\n * 获取Toast列表\r\n */\r\n getToasts() {\r\n return Array.from(this._toasts.values());\r\n },\r\n \r\n /**\r\n * 检查是否有Toast\r\n */\r\n hasToasts() {\r\n return this._toasts.size > 0;\r\n },\r\n \r\n /**\r\n * 获取Toast\r\n */\r\n getToast(id) {\r\n if (!id) return null;\r\n return this._toasts.get(id) || null;\r\n },\r\n \r\n /**\r\n * 关闭所有Toast\r\n */\r\n closeAll() {\r\n this._toasts.forEach((t) => t.close());\r\n },\r\n \r\n /**\r\n * 清除所有Toast\r\n */\r\n clearAll() {\r\n this._toasts.forEach((t) => t.close());\r\n },\r\n \r\n /**\r\n * 暂停所有Toast\r\n */\r\n pauseAll() {\r\n this._toasts.forEach((t) => t._pause());\r\n },\r\n \r\n /**\r\n * 恢复所有Toast\r\n */\r\n resumeAll() {\r\n this._toasts.forEach((t) => t._resume());\r\n },\r\n \r\n /**\r\n * 更新所有Toast\r\n */\r\n updateAll(partial) {\r\n if (partial && typeof partial === 'object') {\r\n this._toasts.forEach((t) => t.update(partial));\r\n }\r\n },\r\n \r\n /**\r\n * 查找Toast\r\n */\r\n findToasts(predicate) {\r\n if (typeof predicate !== 'function') return [];\r\n return Array.from(this._toasts.values()).filter(predicate);\r\n },\r\n \r\n /**\r\n * 按类型查找Toast\r\n */\r\n findByType(type) {\r\n return this.findToasts((t) => t.type === type);\r\n },\r\n \r\n /**\r\n * 按位置查找Toast\r\n */\r\n findByPosition(position) {\r\n return this.findToasts((t) => t.config.position === position);\r\n },\r\n \r\n};\r\n// 初始化主题和国际化\r\nif (typeof themeUtils.initTheme === 'function') {\r\n themeUtils.initTheme();\r\n}\r\nif (typeof i18nUtils.initI18n === 'function') {\r\n i18nUtils.initI18n();\r\n}\r\n\r\n// 浏览器环境全局注册\r\nif (typeof window !== 'undefined') {\r\n window.MeToast = enhancedMeToast;\r\n window.Met = enhancedMeToast;\r\n \r\n // Notification API — 页面不可见时自动发送系统通知\r\n enhancedMeToast._notify = (toast) => {\r\n if (typeof Notification === 'undefined') return;\r\n if (Notification.permission === 'denied') return;\r\n if (!document.hidden) return;\r\n if (Notification.permission === 'default') {\r\n Notification.requestPermission().then(p => { if (p === 'granted') sendNotification(toast); });\r\n return;\r\n }\r\n sendNotification(toast);\r\n };\r\n const sendNotification = (toast) => {\r\n try {\r\n new Notification(toast.title || toast.type, { body: toast.message });\r\n } catch (_) {}\r\n };\r\n Toast.on('afterShow', (toast) => {\r\n if (toast.config.notifyWhenHidden) enhancedMeToast._notify(toast);\r\n });\r\n}\r\n\r\n// 导出\r\nexport default enhancedMeToast;\r\nexport { enhancedMeToast as meToast, enhancedMeToast as Met, enhancedMeToast as MeToast, Toast, VERSION };\r\n"],"names":["i18nT","t"],"mappings":"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B,IAAI,MAAM,EAAE,qBAAqB;EACjC,IAAI,MAAM,EAAE,4EAA4E;EACxF,IAAI,WAAW,EAAE,4EAA4E;EAC7F,IAAI,UAAU,EAAE,qBAAqB;EACrC,IAAI,YAAY,EAAE,qBAAqB;EACvC,GAAG;EACH,EAAE,IAAI,EAAE;EACR,IAAI,EAAE,EAAE,wBAAwB;EAChC,IAAI,IAAI,EAAE,SAAS;EACnB,IAAI,MAAM,EAAE,2BAA2B;EACvC,IAAI,MAAM,EAAE,0EAA0E;EACtF,IAAI,WAAW,EAAE,yEAAyE;EAC1F,IAAI,UAAU,EAAE,2BAA2B;EAC3C,IAAI,YAAY,EAAE,2BAA2B;EAC7C,GAAG;EACH,EAAE,IAAI,EAAE,MAAM;EACd,EAAE,IAAI,EAAE;EACR,IAAI,EAAE,EAAE,2BAA2B;EACnC,IAAI,IAAI,EAAE,SAAS;EACnB,IAAI,MAAM,EAAE,yBAAyB;EACrC,IAAI,MAAM,EAAE,sFAAsF;EAClG,IAAI,WAAW,EAAE,sFAAsF;EACvG,IAAI,UAAU,EAAE,yBAAyB;EACzC,IAAI,YAAY,EAAE,yBAAyB;EAC3C,GAAG;EACH,CAAC;;ECvRD;EACA;EACA;EACA;EACA;EACA;AACA;EAKA,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK;EAC/B,EAAE,OAAO,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,CAAC;EACJ,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACO,MAAM,YAAY,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK;EACtD;EACA,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,OAAO;EAC9C;EACA;EACA,EAAE,IAAI,YAAY,IAAI,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE;EACtE,IAAI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"} \ No newline at end of file diff --git a/package.json b/package.json index acf0b12..1b645b7 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ }, "repository": { "type": "git", - "url": "git+https://gitee.com/thzxx/MetonaToast.git" + "url": "git+https://git.metona.cn/MetonaTeam/MetonaToast.git" }, "keywords": [ "toast", @@ -53,9 +53,9 @@ "author": "thzxx", "license": "MIT", "bugs": { - "url": "https://gitee.com/thzxx/MetonaToast/issues" + "url": "https://git.metona.cn/MetonaTeam/MetonaToast/issues" }, - "homepage": "https://gitee.com/thzxx/MetonaToast#readme", + "homepage": "https://git.metona.cn/MetonaTeam/MetonaToast#readme", "devDependencies": { "@babel/core": "^7.22.0", "@babel/preset-env": "^7.22.0", diff --git a/site/demo.html b/site/demo.html index aa13532..593c407 100644 --- a/site/demo.html +++ b/site/demo.html @@ -56,7 +56,7 @@ 首页 文档 演示 - Gitee + Gitee @@ -273,7 +273,7 @@ diff --git a/site/index.html b/site/index.html index 7d64f22..8a6a2dc 100644 --- a/site/index.html +++ b/site/index.html @@ -73,7 +73,7 @@ 首页 文档 演示 - Gitee + Gitee @@ -237,7 +237,7 @@ orderGroup.dismiss(); // 一键关闭
-

MetonaToast v2.0.0 · MIT License · Gitee

+

MetonaToast v2.0.0 · MIT License · Gitee