/******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ({ /***/ "./node_modules/.pnpm/css-loader@7.1.2_webpack@5.99.0/node_modules/css-loader/dist/runtime/api.js": /*!********************************************************************************************************!*\ !*** ./node_modules/.pnpm/css-loader@7.1.2_webpack@5.99.0/node_modules/css-loader/dist/runtime/api.js ***! \********************************************************************************************************/ /***/ ((module) => { /* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ module.exports = function (cssWithMappingToString) { var list = []; // return the list of modules as css string list.toString = function toString() { return this.map(function (item) { var content = ""; var needLayer = typeof item[5] !== "undefined"; if (item[4]) { content += "@supports (".concat(item[4], ") {"); } if (item[2]) { content += "@media ".concat(item[2], " {"); } if (needLayer) { content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {"); } content += cssWithMappingToString(item); if (needLayer) { content += "}"; } if (item[2]) { content += "}"; } if (item[4]) { content += "}"; } return content; }).join(""); }; // import a list of modules into the list list.i = function i(modules, media, dedupe, supports, layer) { if (typeof modules === "string") { modules = [[null, modules, undefined]]; } var alreadyImportedModules = {}; if (dedupe) { for (var k = 0; k < this.length; k++) { var id = this[k][0]; if (id != null) { alreadyImportedModules[id] = true; } } } for (var _k = 0; _k < modules.length; _k++) { var item = [].concat(modules[_k]); if (dedupe && alreadyImportedModules[item[0]]) { continue; } if (typeof layer !== "undefined") { if (typeof item[5] === "undefined") { item[5] = layer; } else { item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}"); item[5] = layer; } } if (media) { if (!item[2]) { item[2] = media; } else { item[1] = "@media ".concat(item[2], " {").concat(item[1], "}"); item[2] = media; } } if (supports) { if (!item[4]) { item[4] = "".concat(supports); } else { item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}"); item[4] = supports; } } list.push(item); } }; return list; }; /***/ }), /***/ "./node_modules/.pnpm/css-loader@7.1.2_webpack@5.99.0/node_modules/css-loader/dist/runtime/sourceMaps.js": /*!***************************************************************************************************************!*\ !*** ./node_modules/.pnpm/css-loader@7.1.2_webpack@5.99.0/node_modules/css-loader/dist/runtime/sourceMaps.js ***! \***************************************************************************************************************/ /***/ ((module) => { module.exports = function (item) { var content = item[1]; var cssMapping = item[3]; if (!cssMapping) { return content; } if (typeof btoa === "function") { var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping)))); var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64); var sourceMapping = "/*# ".concat(data, " */"); return [content].concat([sourceMapping]).join("\n"); } return [content].join("\n"); }; /***/ }), /***/ "./src/shared/copy.ts": /*!****************************!*\ !*** ./src/shared/copy.ts ***! \****************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ BACKGROUND_COLOR_OUT: () => (/* binding */ BACKGROUND_COLOR_OUT), /* harmony export */ BACKGROUND_COLOR_OVER: () => (/* binding */ BACKGROUND_COLOR_OVER), /* harmony export */ SETTINGS_BACKGROUND_OUT: () => (/* binding */ SETTINGS_BACKGROUND_OUT), /* harmony export */ SETTINGS_BACKGROUND_OVER: () => (/* binding */ SETTINGS_BACKGROUND_OVER), /* harmony export */ addCopyButtonToAnswer: () => (/* binding */ addCopyButtonToAnswer), /* harmony export */ applyToPlatform: () => (/* binding */ applyToPlatform), /* harmony export */ applyToPlatforms: () => (/* binding */ applyToPlatforms), /* harmony export */ createCopyButton: () => (/* binding */ createCopyButton), /* harmony export */ createFlashOverlay: () => (/* binding */ createFlashOverlay), /* harmony export */ createGlowingAnimationStyle: () => (/* binding */ createGlowingAnimationStyle), /* harmony export */ initTurndownService: () => (/* binding */ initTurndownService), /* harmony export */ observeDOMChanges: () => (/* binding */ observeDOMChanges), /* harmony export */ processMarkdown: () => (/* binding */ processMarkdown), /* harmony export */ stripMarkdown: () => (/* binding */ stripMarkdown) /* harmony export */ }); /* harmony import */ var turndown__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! turndown */ "turndown"); /* harmony import */ var turndown__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(turndown__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var turndown_plugin_gfm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! turndown-plugin-gfm */ "turndown-plugin-gfm"); /* harmony import */ var turndown_plugin_gfm__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(turndown_plugin_gfm__WEBPACK_IMPORTED_MODULE_1__); // 背景颜色常量 const BACKGROUND_COLOR_OUT = 'linear-gradient(135deg, rgba(25, 239, 192, 0.6), rgba(64, 128, 255, 0.4))'; const BACKGROUND_COLOR_OVER = 'linear-gradient(135deg, rgba(25, 239, 192, 0.8), rgba(64, 128, 255, 0.6))'; const SETTINGS_BACKGROUND_OUT = 'linear-gradient(135deg, rgba(64, 128, 255, 0.6), rgba(25, 239, 192, 0.4))'; const SETTINGS_BACKGROUND_OVER = 'linear-gradient(135deg, rgba(64, 128, 255, 0.8), rgba(25, 239, 192, 0.6))'; // 初始化turndown服务 function initTurndownService() { const turndownService = new (turndown__WEBPACK_IMPORTED_MODULE_0___default())({ preformattedCode: true, // 是否保留预格式化代码,设为true时会保持代码块的原始格式,包括缩进和换行 headingStyle: 'atx', // 标题样式,'atx'使用#号(如:# 标题),'setext'使用底线(如:标题\n===) bulletListMarker: '-', // 无序列表的标记符号,可以是 '-', '*', 或 '+' emDelimiter: '*', // 斜体文本的分隔符,可以是 '_' 或 '*' strongDelimiter: '**', // 加粗文本的分隔符 codeBlockStyle: 'fenced' // 代码块样式,'fenced'使用```包裹,'indented'使用缩进 }); turndownService.use(turndown_plugin_gfm__WEBPACK_IMPORTED_MODULE_1__.gfm); // 自定义代码块规则 turndownService.addRule('codeBlock', { filter: function (node) { if (!(node instanceof HTMLElement)) { return false; } // 比如【百度-AI搜索】平台,pre元素下的code元素,不是子元素而是后代元素,为了使其识别为代码块,所以需要特殊处理 const codeElement = node.querySelector('code'); return node.nodeName === 'PRE' && codeElement !== null; }, replacement: function (content, node) { const codeElement = node.querySelector('code'); const code = codeElement?.textContent?.trim() || ''; const lang = codeElement?.getAttribute('class') || ''; const languageMatch = lang.match(/language-([\w-]+)/i); const language = languageMatch ? languageMatch[1] : ''; return '\n```' + (language ? language + '\n' : '\n') + code + '\n```\n'; } }); // 自定义escape函数,避免不必要的转义 turndownService.escape = function (text) { return text .replace(/\\([!"#$%&'()*+,\-./:;<=>?@\[\]^_`{|}~])/g, '$1') // 移除已有的转义 .replace(/([*_`])/g, '\\$1'); // 只转义特殊Markdown字符 }; return turndownService; } // Markdown 工具函数 function stripMarkdown(text) { return text .replace(/```[\s\S]*?```/g, '$1') // 移除代码块 .replace(/\*\*(.*?)\*\*/g, '$1') // 移除加粗 .replace(/\*(.*?)\*/g, '$1') // 移除斜体 .replace(/`([^`]+)`/g, '$1') // 移除行内代码 .replace(/^#+\s+/gm, '') // 移除标题标记 .replace(/^[-*]\s+/gm, '') // 移除无序列表标记 .replace(/^\d+\.\s+/gm, '') // 移除有序列表标记 .replace(/^>\s+/gm, '') // 移除引用标记 .trim(); } // 处理Markdown文本,根据配置决定是否去除参考文献角标和特殊span节点 function processMarkdown(markdown, removeSelectorList, config) { // 创建节点的深拷贝,以免修改原始节点 const clonedMarkdown = markdown.cloneNode(true); // 根据配置决定是否在拷贝的节点上移除参考文献角标 if (config.removeReferences) { removeSelectorList.forEach(selector => { clonedMarkdown.querySelectorAll(selector).forEach(node => node.remove()); }); } // 移除零宽连字符 const treeWalker = document.createTreeWalker(clonedMarkdown, NodeFilter.SHOW_TEXT); let currentNode; while (currentNode = treeWalker.nextNode()) { currentNode.textContent = currentNode.textContent?.replace(/|\u200c/g, '') ?? ''; } return clonedMarkdown; } // 创建复制按钮的闪光动画样式 function createGlowingAnimationStyle() { const style = document.createElement('style'); style.textContent = ` @keyframes glowing { 0% { box-shadow: 0 0 5px rgba(0, 255, 128, 0.8), 0 0 10px rgba(0, 0, 0, 0.8), 0 0 15px rgba(64, 128, 255, 0.6); } 50% { box-shadow: 0 0 15px rgba(0, 255, 128, 1), 0 0 20px rgba(255, 7, 160, 0.9), 0 0 25px rgba(64, 128, 255, 0.8); } 100% { box-shadow: 0 0 5px rgba(0, 255, 128, 0.8), 0 0 10px rgba(0, 0, 0, 0.8), 0 0 15px rgba(64, 128, 255, 0.6); } } @keyframes flash-animation { 0% { opacity: 0; transform: scale(1); filter: brightness(1); background-color: rgba(255, 255, 255, 0); } 25% { opacity: 1; transform: scale(1.02); filter: brightness(1.5); background-color: rgba(255, 255, 255, 0.95); } 50% { opacity: 0.5; transform: scale(1.01); filter: brightness(1.2); background-color: rgba(255, 255, 255, 0.5); } 100% { opacity: 0; transform: scale(1); filter: brightness(1); background-color: rgba(255, 255, 255, 0); } } `; return style; } // 创建复制按钮 function createCopyButton(position = 'top') { const button = document.createElement('button'); button.textContent = '复制'; button.className = 'ai-copy-button'; button.style.position = 'absolute'; // 根据位置设置top和bottom值 switch (position) { case 'top': button.style.top = '10px'; break; case 'middle': button.style.top = '50%'; button.style.transform = 'translateY(-50%)'; break; case 'bottom': button.style.bottom = '10px'; break; } button.style.right = '10px'; button.style.padding = '4px 8px'; button.style.background = BACKGROUND_COLOR_OUT; button.style.color = 'white'; button.style.border = '2px dashed #fff'; button.style.borderRadius = '4px'; button.style.cursor = 'pointer'; button.style.fontSize = '16px'; button.style.zIndex = '1000'; button.style.animation = 'glowing 2s infinite'; // 添加悬停效果 button.addEventListener('mouseover', () => { button.style.background = BACKGROUND_COLOR_OVER; }); button.addEventListener('mouseout', () => { button.style.background = BACKGROUND_COLOR_OUT; }); return button; } // 创建闪光效果遮罩层 function createFlashOverlay() { const flashOverlay = document.createElement('div'); flashOverlay.style.position = 'absolute'; flashOverlay.style.top = '0'; flashOverlay.style.left = '0'; flashOverlay.style.width = '100%'; flashOverlay.style.height = '100%'; flashOverlay.style.backgroundColor = 'rgba(255, 255, 255, 0)'; flashOverlay.style.animation = 'flash-animation 1s ease-in-out'; flashOverlay.style.pointerEvents = 'none'; flashOverlay.style.zIndex = '999'; return flashOverlay; } // 为AI回答添加复制按钮 function addCopyButtonToAnswer(answerElement, platform, config, turndownService, copyToClipboard) { // 检查是否已经添加了复制按钮 if (answerElement.querySelector('.ai-copy-button')) { return; } // 设置相对定位,以便正确放置复制按钮 if (window.getComputedStyle(answerElement).position === 'static') { answerElement.style.position = 'relative'; } // 创建三个不同位置的复制按钮 const positions = ['top', 'middle', 'bottom']; positions.forEach(position => { const button = createCopyButton(position); answerElement.appendChild(button); // 为每个按钮添加点击事件 button.addEventListener('click', async () => { // 让按钮获得焦点 button.focus(); // 查找Markdown内容 const markdownElement = answerElement.querySelector(`[class*="${platform.markdownContentClass}"]`); if (!markdownElement) { console.error('未找到Markdown内容元素'); return; } // 添加闪光效果 const flashOverlay = createFlashOverlay(); answerElement.appendChild(flashOverlay); // 动画结束后移除遮罩层 flashOverlay.addEventListener('animationend', () => { flashOverlay.remove(); }); // 处理Markdown内容 const markdownOuterHTML = processMarkdown(markdownElement, platform.removeSelectorList, config); // 根据用户选择的格式进行复制 let content = ''; if (config.copyFormat === 'markdown') { content = turndownService.turndown(markdownOuterHTML.outerHTML); } else { content = markdownOuterHTML.outerHTML; } // 复制到剪贴板 await copyToClipboard(content); // 修改按钮文本提示复制成功 const originalText = button.textContent; button.textContent = '✓ 已复制'; // 一段时间后恢复按钮文本 setTimeout(() => { button.textContent = originalText; }, 2000); }); }); } // 为单个平台应用复制功能 function applyToPlatform(platform, config, turndownService, copyToClipboard) { if (!config.enableCopy) return; const answerElements = document.querySelectorAll(platform.selector); if (answerElements.length === 0) return; answerElements.forEach(element => { addCopyButtonToAnswer(element, platform, config, turndownService, copyToClipboard); }); } // 为所有平台应用复制功能 function applyToPlatforms(platforms, config, turndownService, copyToClipboard) { platforms.forEach(platform => { applyToPlatform(platform, config, turndownService, copyToClipboard); }); } // 监听DOM变化,为新的回答添加复制按钮 function observeDOMChanges(platforms, config, turndownService, copyToClipboard) { const observer = new MutationObserver(mutations => { let shouldApply = false; mutations.forEach(mutation => { if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { shouldApply = true; } }); if (shouldApply) { applyToPlatforms(platforms, config, turndownService, copyToClipboard); } }); // 观察整个文档的变化 observer.observe(document.body, { childList: true, subtree: true }); return observer; } /***/ }), /***/ "./src/shared/styles/common.css": /*!**************************************!*\ !*** ./src/shared/styles/common.css ***! \**************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_pnpm_css_loader_7_1_2_webpack_5_99_0_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/.pnpm/css-loader@7.1.2_webpack@5.99.0/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/.pnpm/css-loader@7.1.2_webpack@5.99.0/node_modules/css-loader/dist/runtime/sourceMaps.js"); /* harmony import */ var _node_modules_pnpm_css_loader_7_1_2_webpack_5_99_0_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_webpack_5_99_0_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_pnpm_css_loader_7_1_2_webpack_5_99_0_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/.pnpm/css-loader@7.1.2_webpack@5.99.0/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/.pnpm/css-loader@7.1.2_webpack@5.99.0/node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_pnpm_css_loader_7_1_2_webpack_5_99_0_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_webpack_5_99_0_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_webpack_5_99_0_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_pnpm_css_loader_7_1_2_webpack_5_99_0_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@keyframes glowing { 0% { box-shadow: 0 0 5px rgba(0, 255, 128, 0.8), 0 0 10px rgba(0, 0, 0, 0.8), 0 0 15px rgba(64, 128, 255, 0.6); } 50% { box-shadow: 0 0 15px rgba(0, 255, 128, 1), 0 0 20px rgba(255, 7, 160, 0.9), 0 0 25px rgba(64, 128, 255, 0.8); } 100% { box-shadow: 0 0 5px rgba(0, 255, 128, 0.8), 0 0 10px rgba(0, 0, 0, 0.8), 0 0 15px rgba(64, 128, 255, 0.6); } } @keyframes flash-animation { 0% { opacity: 0; transform: scale(1); filter: brightness(1); background-color: rgba(255, 255, 255, 0); } 25% { opacity: 1; transform: scale(1.02); filter: brightness(1.5); background-color: rgba(255, 255, 255, 0.95); } 50% { opacity: 0.5; transform: scale(1.01); filter: brightness(1.2); background-color: rgba(255, 255, 255, 0.5); } 100% { opacity: 0; transform: scale(1); filter: brightness(1); background-color: rgba(255, 255, 255, 0); } } .ai-copy-button { width: auto; position: absolute; right: 10px; padding: 4px 8px; background: linear-gradient(135deg, rgba(25, 239, 192, 0.6), rgba(64, 128, 255, 0.4)); color: white; border: 2px dashed #fff; border-radius: 4px; cursor: pointer; font-size: 16px; z-index: 1000; animation: glowing 2s infinite; } .ai-copy-button:hover { background: linear-gradient(135deg, rgba(25, 239, 192, 0.8), rgba(64, 128, 255, 0.6)); } .ai-copy-button.top { top: 10px; } .ai-copy-button.middle { top: 50%; transform: translateY(-50%); } .ai-copy-button.bottom { bottom: 10px; } body { font-family: system-ui, -apple-system, sans-serif; } .option-container { margin: 16px; border: 2px dashed #e0e0e0; border-radius: 12px; padding: 4px 16px; } .checkbox-container { display: flex; align-items: center; margin-bottom: 12px; padding: 0 8px; border-radius: 8px; cursor: pointer !important; transition: background-color 0.2s; font-size: 14px; } .checkbox-container:hover { background-color: #f5f5f5; } .checkbox-container input[type='checkbox'] { margin-right: 12px; width: 20px; height: 20px; cursor: pointer; accent-color: #4285f4; } .radio-group { position: relative; display: inline-flex; align-items: center; margin-left: 2px; background-color: #f5f5f5; border-radius: 20px; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); } .radio-group input[type='radio'] { display: none; } .radio-group label { position: relative; padding: 6px 16px; font-size: 14px; color: #bdbdbd; cursor: pointer; border-radius: 16px; transition: all 0.3s ease; user-select: none; z-index: 1; } .radio-group label:hover { color: #4285f4; } .label-key { width: 124px; text-align: left; margin-right: 10px; } .radio-group input[type='radio']:checked + label { color: #4285f4; } .radio-group::before { content: ''; position: absolute; top: 4px; left: 4px; width: calc(50% - 4px); height: calc(100% - 8px); border-radius: 16px; transition: all 0.3s ease; z-index: 0; } .radio-group input[type='radio']:nth-of-type(2):checked ~ .radio-group::before { transform: translateX(100%); } button { width: 100%; padding: 8px; margin-top: 8px; background-color: #4285f4; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 16px; } button:hover { background-color: #3367d6; } .privacy-notice { margin: 2px 0 0 14px; padding: 10px; background-color: #f8f9fa; border-left: 3px solid #4285f4; font-size: 13px; } .privacy-link { color: #4285f4; text-decoration: none; display: inline-block; margin-top: 5px; } .privacy-link:hover { text-decoration: underline; } .consent-container { margin-top: 12px; padding: 10px; background-color: #fff8e1; border-radius: 4px; border: 2px dashed #ffe082; } .consent-container .checkbox-container { margin-bottom: 0; } .disabled-notice { color: #d32f2f; font-weight: bold; margin: 8px 0 0 44px; } .platforms-info { margin-top: 12px; padding: 4px 24px; background-color: #e8f0fe; border: 2px dashed #4285f4; border-radius: 8px; font-size: 12px; color: #1a73e8; font-weight: 500; } .platforms-info.unsupported { background-color: #fce8e6; border-color: #ea4335; color: #d93025; } .status-message { display: none; padding: 8px; text-align: center; color: #4CAF50; margin-top: 10px; font-weight: bold; background-color: #f1f8e9; border-radius: 4px; } `, "",{"version":3,"sources":["webpack://./src/shared/styles/common.css"],"names":[],"mappings":"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","sourcesContent":["@keyframes glowing {\r\n 0% { box-shadow: 0 0 5px rgba(0, 255, 128, 0.8), 0 0 10px rgba(0, 0, 0, 0.8), 0 0 15px rgba(64, 128, 255, 0.6); }\r\n 50% { box-shadow: 0 0 15px rgba(0, 255, 128, 1), 0 0 20px rgba(255, 7, 160, 0.9), 0 0 25px rgba(64, 128, 255, 0.8); }\r\n 100% { box-shadow: 0 0 5px rgba(0, 255, 128, 0.8), 0 0 10px rgba(0, 0, 0, 0.8), 0 0 15px rgba(64, 128, 255, 0.6); }\r\n}\r\n\r\n@keyframes flash-animation {\r\n 0% { opacity: 0; transform: scale(1); filter: brightness(1); background-color: rgba(255, 255, 255, 0); }\r\n 25% { opacity: 1; transform: scale(1.02); filter: brightness(1.5); background-color: rgba(255, 255, 255, 0.95); }\r\n 50% { opacity: 0.5; transform: scale(1.01); filter: brightness(1.2); background-color: rgba(255, 255, 255, 0.5); }\r\n 100% { opacity: 0; transform: scale(1); filter: brightness(1); background-color: rgba(255, 255, 255, 0); }\r\n}\r\n\r\n.ai-copy-button {\r\n width: auto;\r\n position: absolute;\r\n right: 10px;\r\n padding: 4px 8px;\r\n background: linear-gradient(135deg, rgba(25, 239, 192, 0.6), rgba(64, 128, 255, 0.4));\r\n color: white;\r\n border: 2px dashed #fff;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n font-size: 16px;\r\n z-index: 1000;\r\n animation: glowing 2s infinite;\r\n}\r\n\r\n.ai-copy-button:hover {\r\n background: linear-gradient(135deg, rgba(25, 239, 192, 0.8), rgba(64, 128, 255, 0.6));\r\n}\r\n\r\n.ai-copy-button.top {\r\n top: 10px;\r\n}\r\n\r\n.ai-copy-button.middle {\r\n top: 50%;\r\n transform: translateY(-50%);\r\n}\r\n\r\n.ai-copy-button.bottom {\r\n bottom: 10px;\r\n}\r\n\r\nbody {\r\n font-family: system-ui, -apple-system, sans-serif;\r\n}\r\n\r\n.option-container {\r\n margin: 16px;\r\n border: 2px dashed #e0e0e0;\r\n border-radius: 12px;\r\n padding: 4px 16px;\r\n}\r\n\r\n.checkbox-container {\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 12px;\r\n padding: 0 8px;\r\n border-radius: 8px;\r\n cursor: pointer !important;\r\n transition: background-color 0.2s;\r\n font-size: 14px;\r\n}\r\n\r\n.checkbox-container:hover {\r\n background-color: #f5f5f5;\r\n}\r\n\r\n.checkbox-container input[type='checkbox'] {\r\n margin-right: 12px;\r\n width: 20px;\r\n height: 20px;\r\n cursor: pointer;\r\n accent-color: #4285f4;\r\n}\r\n\r\n.radio-group {\r\n position: relative;\r\n display: inline-flex;\r\n align-items: center;\r\n margin-left: 2px;\r\n background-color: #f5f5f5;\r\n border-radius: 20px;\r\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);\r\n}\r\n\r\n.radio-group input[type='radio'] {\r\n display: none;\r\n}\r\n\r\n.radio-group label {\r\n position: relative;\r\n padding: 6px 16px;\r\n font-size: 14px;\r\n color: #bdbdbd;\r\n cursor: pointer;\r\n border-radius: 16px;\r\n transition: all 0.3s ease;\r\n user-select: none;\r\n z-index: 1;\r\n}\r\n\r\n.radio-group label:hover {\r\n color: #4285f4;\r\n}\r\n\r\n.label-key {\r\n width: 124px;\r\n text-align: left;\r\n margin-right: 10px;\r\n}\r\n\r\n.radio-group input[type='radio']:checked + label {\r\n color: #4285f4;\r\n}\r\n\r\n.radio-group::before {\r\n content: '';\r\n position: absolute;\r\n top: 4px;\r\n left: 4px;\r\n width: calc(50% - 4px);\r\n height: calc(100% - 8px);\r\n border-radius: 16px;\r\n transition: all 0.3s ease;\r\n z-index: 0;\r\n}\r\n\r\n.radio-group input[type='radio']:nth-of-type(2):checked ~ .radio-group::before {\r\n transform: translateX(100%);\r\n}\r\n\r\nbutton {\r\n width: 100%;\r\n padding: 8px;\r\n margin-top: 8px;\r\n background-color: #4285f4;\r\n color: white;\r\n border: none;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n font-size: 16px;\r\n}\r\n\r\nbutton:hover {\r\n background-color: #3367d6;\r\n}\r\n\r\n.privacy-notice {\r\n margin: 2px 0 0 14px;\r\n padding: 10px;\r\n background-color: #f8f9fa;\r\n border-left: 3px solid #4285f4;\r\n font-size: 13px;\r\n}\r\n\r\n.privacy-link {\r\n color: #4285f4;\r\n text-decoration: none;\r\n display: inline-block;\r\n margin-top: 5px;\r\n}\r\n\r\n.privacy-link:hover {\r\n text-decoration: underline;\r\n}\r\n\r\n.consent-container {\r\n margin-top: 12px;\r\n padding: 10px;\r\n background-color: #fff8e1;\r\n border-radius: 4px;\r\n border: 2px dashed #ffe082;\r\n}\r\n\r\n.consent-container .checkbox-container {\r\n margin-bottom: 0;\r\n}\r\n\r\n.disabled-notice {\r\n color: #d32f2f;\r\n font-weight: bold;\r\n margin: 8px 0 0 44px;\r\n}\r\n\r\n.platforms-info {\r\n margin-top: 12px;\r\n padding: 4px 24px;\r\n background-color: #e8f0fe;\r\n border: 2px dashed #4285f4;\r\n border-radius: 8px;\r\n font-size: 12px;\r\n color: #1a73e8;\r\n font-weight: 500;\r\n}\r\n\r\n.platforms-info.unsupported {\r\n background-color: #fce8e6;\r\n border-color: #ea4335;\r\n color: #d93025;\r\n}\r\n\r\n.status-message {\r\n display: none;\r\n padding: 8px;\r\n text-align: center;\r\n color: #4CAF50;\r\n margin-top: 10px;\r\n font-weight: bold;\r\n background-color: #f1f8e9;\r\n border-radius: 4px;\r\n} "],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./src/shared/styles/tampermonkey.css": /*!********************************************!*\ !*** ./src/shared/styles/tampermonkey.css ***! \********************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_pnpm_css_loader_7_1_2_webpack_5_99_0_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/.pnpm/css-loader@7.1.2_webpack@5.99.0/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/.pnpm/css-loader@7.1.2_webpack@5.99.0/node_modules/css-loader/dist/runtime/sourceMaps.js"); /* harmony import */ var _node_modules_pnpm_css_loader_7_1_2_webpack_5_99_0_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_webpack_5_99_0_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_pnpm_css_loader_7_1_2_webpack_5_99_0_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/.pnpm/css-loader@7.1.2_webpack@5.99.0/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/.pnpm/css-loader@7.1.2_webpack@5.99.0/node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_pnpm_css_loader_7_1_2_webpack_5_99_0_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_webpack_5_99_0_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_webpack_5_99_0_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_pnpm_css_loader_7_1_2_webpack_5_99_0_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.tm-settings-panel { position: fixed; right: 20px; bottom: 20px; z-index: 10000; } .tm-settings-icon { width: 40px; height: 40px; background: linear-gradient(135deg, rgba(64, 128, 255, 0.8), rgba(25, 239, 192, 0.6)); border-radius: 50%; display: flex; justify-content: center; align-items: center; cursor: pointer; margin-left: auto; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); animation: glowing 2s infinite; font-size: 20px; } .tm-fixed-settings-button { position: fixed; right: 20px; width: 40px; height: 40px; background: linear-gradient(135deg, rgba(64, 128, 255, 0.8), rgba(25, 239, 192, 0.6)); border-radius: 50%; display: flex; justify-content: center; align-items: center; cursor: move; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); animation: glowing 2s infinite; font-size: 20px; z-index: 10000; user-select: none; transition: transform 0.2s ease; } .tm-fixed-settings-button:hover { transform: scale(1.1); box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3); } .tm-fixed-settings-button:active { transform: scale(0.95); } .tm-settings-content { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: white; border-radius: 8px; padding: 20px; width: 400px; max-width: 80vw; max-height: 80vh; overflow-y: auto; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); z-index: 10001; display: none; } .tm-settings-title { font-size: 20px; font-weight: bold; margin-bottom: 16px; color: #333; text-align: center; } .option-container { margin-bottom: 16px; border: 2px dashed #e0e0e0; border-radius: 12px; padding: 4px 16px; } .checkbox-container { display: flex; align-items: center; margin-bottom: 12px; padding: 0 8px; border-radius: 8px; cursor: pointer !important; transition: background-color 0.2s; font-size: 14px; } .checkbox-container:hover { background-color: #f5f5f5; } .checkbox-container input[type='checkbox'] { margin-right: 12px; width: 20px; height: 20px; cursor: pointer; accent-color: #4285f4; } .radio-group { position: relative; display: inline-flex; align-items: center; margin-left: 2px; background-color: #f5f5f5; border-radius: 20px; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); } .radio-group input[type='radio'] { display: none; } .radio-group label { position: relative; padding: 6px 16px; font-size: 14px; color: #bdbdbd; cursor: pointer; border-radius: 16px; transition: all 0.3s ease; user-select: none; z-index: 1; } .radio-group label:hover { color: #4285f4; } .label-key { width: 124px; text-align: left; margin-right: 10px; } .radio-group input[type='radio']:checked + label { color: #4285f4; } .consent-container { margin-top: 12px; padding: 10px; background-color: #fff8e1; border-radius: 4px; border: 2px dashed #ffe082; } .consent-container .checkbox-container { margin-bottom: 0; } .disabled-notice { color: #d32f2f; font-weight: bold; margin: 8px 0 0 44px; font-size: 12px; } .privacy-notice { margin: 2px 0 0 14px; padding: 10px; background-color: #f8f9fa; border-left: 3px solid #4285f4; font-size: 13px; } .privacy-link { color: #4285f4; text-decoration: none; display: inline-block; margin-top: 5px; } .privacy-link:hover { text-decoration: underline; } .platforms-info { margin-top: 12px; padding: 4px 24px; background-color: #e8f0fe; border: 2px dashed #4285f4; border-radius: 8px; font-size: 12px; color: #1a73e8; font-weight: 500; } .platforms-info.unsupported { background-color: #fce8e6; border-color: #ea4335; color: #d93025; } button { width: 100%; padding: 8px; margin-top: 8px; background-color: #4285f4; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 16px; } button:hover { background-color: #3367d6; } .status-message { display: none; padding: 8px; text-align: center; color: #4CAF50; margin-top: 10px; font-weight: bold; background-color: #f1f8e9; border-radius: 4px; } /* 设置按钮样式 - 已不再使用,但保留以便未来可能的扩展 */ .ai-settings-button { position: absolute; padding: 4px 8px; background: linear-gradient(135deg, rgba(64, 128, 255, 0.6), rgba(25, 239, 192, 0.4)); color: white; border: 2px dashed #fff; border-radius: 4px; cursor: pointer; font-size: 16px; z-index: 1000; animation: glowing 2s infinite; } .ai-settings-button:hover { background: linear-gradient(135deg, rgba(64, 128, 255, 0.8), rgba(25, 239, 192, 0.6)); } `, "",{"version":3,"sources":["webpack://./src/shared/styles/tampermonkey.css"],"names":[],"mappings":"AAAA;EACE,eAAe;EACf,WAAW;EACX,YAAY;EACZ,cAAc;AAChB;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,qFAAqF;EACrF,kBAAkB;EAClB,aAAa;EACb,uBAAuB;EACvB,mBAAmB;EACnB,eAAe;EACf,iBAAiB;EACjB,yCAAyC;EACzC,8BAA8B;EAC9B,eAAe;AACjB;;AAEA;EACE,eAAe;EACf,WAAW;EACX,WAAW;EACX,YAAY;EACZ,qFAAqF;EACrF,kBAAkB;EAClB,aAAa;EACb,uBAAuB;EACvB,mBAAmB;EACnB,YAAY;EACZ,yCAAyC;EACzC,8BAA8B;EAC9B,eAAe;EACf,cAAc;EACd,iBAAiB;EACjB,+BAA+B;AACjC;;AAEA;EACE,qBAAqB;EACrB,yCAAyC;AAC3C;;AAEA;EACE,sBAAsB;AACxB;;AAEA;EACE,eAAe;EACf,QAAQ;EACR,SAAS;EACT,gCAAgC;EAChC,iBAAiB;EACjB,kBAAkB;EAClB,aAAa;EACb,YAAY;EACZ,eAAe;EACf,gBAAgB;EAChB,gBAAgB;EAChB,yCAAyC;EACzC,cAAc;EACd,aAAa;AACf;;AAEA;EACE,eAAe;EACf,iBAAiB;EACjB,mBAAmB;EACnB,WAAW;EACX,kBAAkB;AACpB;;AAEA;EACE,mBAAmB;EACnB,0BAA0B;EAC1B,mBAAmB;EACnB,iBAAiB;AACnB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,mBAAmB;EACnB,cAAc;EACd,kBAAkB;EAClB,0BAA0B;EAC1B,iCAAiC;EACjC,eAAe;AACjB;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,eAAe;EACf,qBAAqB;AACvB;;AAEA;EACE,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,gBAAgB;EAChB,yBAAyB;EACzB,mBAAmB;EACnB,8CAA8C;AAChD;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,kBAAkB;EAClB,iBAAiB;EACjB,eAAe;EACf,cAAc;EACd,eAAe;EACf,mBAAmB;EACnB,yBAAyB;EACzB,iBAAiB;EACjB,UAAU;AACZ;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,YAAY;EACZ,gBAAgB;EAChB,kBAAkB;AACpB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,gBAAgB;EAChB,aAAa;EACb,yBAAyB;EACzB,kBAAkB;EAClB,0BAA0B;AAC5B;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,cAAc;EACd,iBAAiB;EACjB,oBAAoB;EACpB,eAAe;AACjB;;AAEA;EACE,oBAAoB;EACpB,aAAa;EACb,yBAAyB;EACzB,8BAA8B;EAC9B,eAAe;AACjB;;AAEA;EACE,cAAc;EACd,qBAAqB;EACrB,qBAAqB;EACrB,eAAe;AACjB;;AAEA;EACE,0BAA0B;AAC5B;;AAEA;EACE,gBAAgB;EAChB,iBAAiB;EACjB,yBAAyB;EACzB,0BAA0B;EAC1B,kBAAkB;EAClB,eAAe;EACf,cAAc;EACd,gBAAgB;AAClB;;AAEA;EACE,yBAAyB;EACzB,qBAAqB;EACrB,cAAc;AAChB;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,eAAe;EACf,yBAAyB;EACzB,YAAY;EACZ,YAAY;EACZ,kBAAkB;EAClB,eAAe;EACf,eAAe;AACjB;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,aAAa;EACb,YAAY;EACZ,kBAAkB;EAClB,cAAc;EACd,gBAAgB;EAChB,iBAAiB;EACjB,yBAAyB;EACzB,kBAAkB;AACpB;;AAEA,gCAAgC;AAChC;EACE,kBAAkB;EAClB,gBAAgB;EAChB,qFAAqF;EACrF,YAAY;EACZ,uBAAuB;EACvB,kBAAkB;EAClB,eAAe;EACf,eAAe;EACf,aAAa;EACb,8BAA8B;AAChC;;AAEA;EACE,qFAAqF;AACvF","sourcesContent":[".tm-settings-panel {\r\n position: fixed;\r\n right: 20px;\r\n bottom: 20px;\r\n z-index: 10000;\r\n}\r\n\r\n.tm-settings-icon {\r\n width: 40px;\r\n height: 40px;\r\n background: linear-gradient(135deg, rgba(64, 128, 255, 0.8), rgba(25, 239, 192, 0.6));\r\n border-radius: 50%;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n cursor: pointer;\r\n margin-left: auto;\r\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);\r\n animation: glowing 2s infinite;\r\n font-size: 20px;\r\n}\r\n\r\n.tm-fixed-settings-button {\r\n position: fixed;\r\n right: 20px;\r\n width: 40px;\r\n height: 40px;\r\n background: linear-gradient(135deg, rgba(64, 128, 255, 0.8), rgba(25, 239, 192, 0.6));\r\n border-radius: 50%;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n cursor: move;\r\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);\r\n animation: glowing 2s infinite;\r\n font-size: 20px;\r\n z-index: 10000;\r\n user-select: none;\r\n transition: transform 0.2s ease;\r\n}\r\n\r\n.tm-fixed-settings-button:hover {\r\n transform: scale(1.1);\r\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);\r\n}\r\n\r\n.tm-fixed-settings-button:active {\r\n transform: scale(0.95);\r\n}\r\n\r\n.tm-settings-content {\r\n position: fixed;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n background: white;\r\n border-radius: 8px;\r\n padding: 20px;\r\n width: 400px;\r\n max-width: 80vw;\r\n max-height: 80vh;\r\n overflow-y: auto;\r\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);\r\n z-index: 10001;\r\n display: none;\r\n}\r\n\r\n.tm-settings-title {\r\n font-size: 20px;\r\n font-weight: bold;\r\n margin-bottom: 16px;\r\n color: #333;\r\n text-align: center;\r\n}\r\n\r\n.option-container {\r\n margin-bottom: 16px;\r\n border: 2px dashed #e0e0e0;\r\n border-radius: 12px;\r\n padding: 4px 16px;\r\n}\r\n\r\n.checkbox-container {\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 12px;\r\n padding: 0 8px;\r\n border-radius: 8px;\r\n cursor: pointer !important;\r\n transition: background-color 0.2s;\r\n font-size: 14px;\r\n}\r\n\r\n.checkbox-container:hover {\r\n background-color: #f5f5f5;\r\n}\r\n\r\n.checkbox-container input[type='checkbox'] {\r\n margin-right: 12px;\r\n width: 20px;\r\n height: 20px;\r\n cursor: pointer;\r\n accent-color: #4285f4;\r\n}\r\n\r\n.radio-group {\r\n position: relative;\r\n display: inline-flex;\r\n align-items: center;\r\n margin-left: 2px;\r\n background-color: #f5f5f5;\r\n border-radius: 20px;\r\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);\r\n}\r\n\r\n.radio-group input[type='radio'] {\r\n display: none;\r\n}\r\n\r\n.radio-group label {\r\n position: relative;\r\n padding: 6px 16px;\r\n font-size: 14px;\r\n color: #bdbdbd;\r\n cursor: pointer;\r\n border-radius: 16px;\r\n transition: all 0.3s ease;\r\n user-select: none;\r\n z-index: 1;\r\n}\r\n\r\n.radio-group label:hover {\r\n color: #4285f4;\r\n}\r\n\r\n.label-key {\r\n width: 124px;\r\n text-align: left;\r\n margin-right: 10px;\r\n}\r\n\r\n.radio-group input[type='radio']:checked + label {\r\n color: #4285f4;\r\n}\r\n\r\n.consent-container {\r\n margin-top: 12px;\r\n padding: 10px;\r\n background-color: #fff8e1;\r\n border-radius: 4px;\r\n border: 2px dashed #ffe082;\r\n}\r\n\r\n.consent-container .checkbox-container {\r\n margin-bottom: 0;\r\n}\r\n\r\n.disabled-notice {\r\n color: #d32f2f;\r\n font-weight: bold;\r\n margin: 8px 0 0 44px;\r\n font-size: 12px;\r\n}\r\n\r\n.privacy-notice {\r\n margin: 2px 0 0 14px;\r\n padding: 10px;\r\n background-color: #f8f9fa;\r\n border-left: 3px solid #4285f4;\r\n font-size: 13px;\r\n}\r\n\r\n.privacy-link {\r\n color: #4285f4;\r\n text-decoration: none;\r\n display: inline-block;\r\n margin-top: 5px;\r\n}\r\n\r\n.privacy-link:hover {\r\n text-decoration: underline;\r\n}\r\n\r\n.platforms-info {\r\n margin-top: 12px;\r\n padding: 4px 24px;\r\n background-color: #e8f0fe;\r\n border: 2px dashed #4285f4;\r\n border-radius: 8px;\r\n font-size: 12px;\r\n color: #1a73e8;\r\n font-weight: 500;\r\n}\r\n\r\n.platforms-info.unsupported {\r\n background-color: #fce8e6;\r\n border-color: #ea4335;\r\n color: #d93025;\r\n}\r\n\r\nbutton {\r\n width: 100%;\r\n padding: 8px;\r\n margin-top: 8px;\r\n background-color: #4285f4;\r\n color: white;\r\n border: none;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n font-size: 16px;\r\n}\r\n\r\nbutton:hover {\r\n background-color: #3367d6;\r\n}\r\n\r\n.status-message {\r\n display: none;\r\n padding: 8px;\r\n text-align: center;\r\n color: #4CAF50;\r\n margin-top: 10px;\r\n font-weight: bold;\r\n background-color: #f1f8e9;\r\n border-radius: 4px;\r\n}\r\n\r\n/* 设置按钮样式 - 已不再使用,但保留以便未来可能的扩展 */\r\n.ai-settings-button {\r\n position: absolute;\r\n padding: 4px 8px;\r\n background: linear-gradient(135deg, rgba(64, 128, 255, 0.6), rgba(25, 239, 192, 0.4));\r\n color: white;\r\n border: 2px dashed #fff;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n font-size: 16px;\r\n z-index: 1000;\r\n animation: glowing 2s infinite;\r\n}\r\n\r\n.ai-settings-button:hover {\r\n background: linear-gradient(135deg, rgba(64, 128, 255, 0.8), rgba(25, 239, 192, 0.6));\r\n} "],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./src/shared/templates.ts": /*!*********************************!*\ !*** ./src/shared/templates.ts ***! \*********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createSettingsPanelHTML: () => (/* binding */ createSettingsPanelHTML) /* harmony export */ }); // 生成设置面板的HTML内容,为Chrome扩展和油猴脚本提供统一UI function createSettingsPanelHTML(config, options = {}) { const { prefix = '', title = 'AI助手智能复制工具-设置', includePrivacyLink = true, privacyLinkUrl = 'privacy.html' } = options; // 为ID添加前缀以避免冲突 const ids = { enableCopy: `${prefix}enableCopy`, formatMarkdown: `${prefix}formatMarkdown`, formatHtml: `${prefix}formatHtml`, removeReferences: `${prefix}removeReferences`, userConsent: `${prefix}user-consent`, consentStatus: `${prefix}consent-status`, saveButton: `${prefix}saveButton`, status: `${prefix}status` }; return `