@touchvue/chat 1.0.0-beta.56 → 1.0.0-beta.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/index.mjs.map +1 -1
- package/es/node_modules/.pnpm/{dompurify@3.4.3 → dompurify@3.4.11}/node_modules/dompurify/dist/purify.es.mjs +939 -226
- package/es/node_modules/.pnpm/dompurify@3.4.11/node_modules/dompurify/dist/purify.es.mjs.map +1 -0
- package/es/node_modules/.pnpm/{linkify-it@5.0.0 → linkify-it@5.0.2}/node_modules/linkify-it/index.mjs +109 -105
- package/es/node_modules/.pnpm/linkify-it@5.0.2/node_modules/linkify-it/index.mjs.map +1 -0
- package/es/node_modules/.pnpm/{linkify-it@5.0.0 → linkify-it@5.0.2}/node_modules/linkify-it/lib/re.mjs +34 -30
- package/es/node_modules/.pnpm/linkify-it@5.0.2/node_modules/linkify-it/lib/re.mjs.map +1 -0
- package/es/node_modules/.pnpm/{markdown-it-deflist@3.0.0 → markdown-it-deflist@3.0.1}/node_modules/markdown-it-deflist/index.mjs +2 -1
- package/es/node_modules/.pnpm/markdown-it-deflist@3.0.1/node_modules/markdown-it-deflist/index.mjs.map +1 -0
- package/es/node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/index.mjs +1 -1
- package/es/package.json.mjs +1 -1
- package/es/packages/components/touchchat/component/AiRobot/face.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs +1 -1
- package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/AiRobot/meterialPrepare.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/AiRobot/start.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/CardView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/ImageFile.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/ImageView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/LinkView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/Screenshot.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/ThoughtChain.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/UploadView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/UploadView_api.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/index.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/Chat/TouchChat.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs +7 -2
- package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/Chat/useMessageRender.mjs +1 -1
- package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs +10 -7
- package/es/packages/components/touchchat/src/AiChat/Chat/useSSE.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/Chat/useScroll.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +6 -2
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs +136 -120
- package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/index.vue2.mjs +6 -1
- package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/types/a2a.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/a2aService.mjs +189 -132
- package/es/packages/components/touchchat/utils/a2aService.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/chatRobot.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/deepCloneDom.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/hight-it.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/markdown.mjs +2 -2
- package/es/packages/components/touchchat/utils/markdown.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/socket.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/tools.mjs.map +1 -1
- package/es/packages/components/touchchat/utils/uuid.mjs.map +1 -1
- package/es/packages/utils/config.mjs.map +1 -1
- package/es/packages/utils/types.mjs.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/node_modules/.pnpm/{dompurify@3.4.3 → dompurify@3.4.11}/node_modules/dompurify/dist/purify.es.js +939 -226
- package/lib/node_modules/.pnpm/dompurify@3.4.11/node_modules/dompurify/dist/purify.es.js.map +1 -0
- package/lib/node_modules/.pnpm/{linkify-it@5.0.0 → linkify-it@5.0.2}/node_modules/linkify-it/index.js +109 -105
- package/lib/node_modules/.pnpm/linkify-it@5.0.2/node_modules/linkify-it/index.js.map +1 -0
- package/lib/node_modules/.pnpm/{linkify-it@5.0.0 → linkify-it@5.0.2}/node_modules/linkify-it/lib/re.js +34 -30
- package/lib/node_modules/.pnpm/linkify-it@5.0.2/node_modules/linkify-it/lib/re.js.map +1 -0
- package/lib/node_modules/.pnpm/{markdown-it-deflist@3.0.0 → markdown-it-deflist@3.0.1}/node_modules/markdown-it-deflist/index.js +2 -1
- package/lib/node_modules/.pnpm/markdown-it-deflist@3.0.1/node_modules/markdown-it-deflist/index.js.map +1 -0
- package/lib/node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/index.js +1 -1
- package/lib/package.json.js +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/face.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/meterialPrepare.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/start.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/CardView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/ImageFile.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/ImageView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/LinkView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/MarkLayer.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/Screenshot.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/ThoughtChain.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/UploadView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/UploadView_api.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/index.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/Chat/TouchChat.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js +6 -1
- package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/Chat/useMessageRender.js +1 -1
- package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js +10 -7
- package/lib/packages/components/touchchat/src/AiChat/Chat/useSSE.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/Chat/useScroll.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +5 -1
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js +136 -120
- package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/index.vue2.js +6 -1
- package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/types/a2a.js.map +1 -1
- package/lib/packages/components/touchchat/utils/a2aService.js +189 -132
- package/lib/packages/components/touchchat/utils/a2aService.js.map +1 -1
- package/lib/packages/components/touchchat/utils/chatRobot.js.map +1 -1
- package/lib/packages/components/touchchat/utils/deepCloneDom.js.map +1 -1
- package/lib/packages/components/touchchat/utils/hight-it.js.map +1 -1
- package/lib/packages/components/touchchat/utils/markdown.js +2 -2
- package/lib/packages/components/touchchat/utils/markdown.js.map +1 -1
- package/lib/packages/components/touchchat/utils/socket.js.map +1 -1
- package/lib/packages/components/touchchat/utils/tools.js.map +1 -1
- package/lib/packages/components/touchchat/utils/uuid.js.map +1 -1
- package/lib/packages/utils/config.js.map +1 -1
- package/lib/packages/utils/types.js.map +1 -1
- package/package.json +83 -83
- package/es/node_modules/.pnpm/dompurify@3.4.3/node_modules/dompurify/dist/purify.es.mjs.map +0 -1
- package/es/node_modules/.pnpm/linkify-it@5.0.0/node_modules/linkify-it/index.mjs.map +0 -1
- package/es/node_modules/.pnpm/linkify-it@5.0.0/node_modules/linkify-it/lib/re.mjs.map +0 -1
- package/es/node_modules/.pnpm/markdown-it-deflist@3.0.0/node_modules/markdown-it-deflist/index.mjs.map +0 -1
- package/lib/node_modules/.pnpm/dompurify@3.4.3/node_modules/dompurify/dist/purify.es.js.map +0 -1
- package/lib/node_modules/.pnpm/linkify-it@5.0.0/node_modules/linkify-it/index.js.map +0 -1
- package/lib/node_modules/.pnpm/linkify-it@5.0.0/node_modules/linkify-it/lib/re.js.map +0 -1
- package/lib/node_modules/.pnpm/markdown-it-deflist@3.0.0/node_modules/markdown-it-deflist/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"re.js","sources":["../../../../../../../../node_modules/.pnpm/linkify-it@5.0.2/node_modules/linkify-it/lib/re.mjs"],"sourcesContent":["import { Any, Cc, Z, P } from 'uc.micro'\n\nexport default function (opts) {\n const re = {}\n opts = opts || {}\n\n re.src_Any = Any.source\n re.src_Cc = Cc.source\n re.src_Z = Z.source\n re.src_P = P.source\n\n // \\p{\\Z\\P\\Cc\\CF} (white spaces + control + format + punctuation)\n re.src_ZPCc = [re.src_Z, re.src_P, re.src_Cc].join('|')\n\n // \\p{\\Z\\Cc} (white spaces + control)\n re.src_ZCc = [re.src_Z, re.src_Cc].join('|')\n\n // Experimental. List of chars, completely prohibited in links\n // because can separate it from other part of text\n const text_separators = '[><\\uff5c]'\n\n // All possible word characters (everything without punctuation, spaces & controls)\n // Defined via punctuation & spaces to save space\n // Should be something like \\p{\\L\\N\\S\\M} (\\w but without `_`)\n re.src_pseudo_letter = `(?:(?!${text_separators}|${re.src_ZPCc})${re.src_Any})`\n // The same as abothe but without [0-9]\n // var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCc + ')' + src_Any + ')';\n\n re.src_ip4 =\n\n '(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'\n\n // Prohibit any of \"@/[]()\" in user/pass to avoid wrong domain fetch.\n // Length is capped to exclude possible rescans till the end and avoid O(n^2)\n // DoS. No standard limit, just take something reasonable.\n re.src_auth = `(?:(?:(?!${re.src_ZCc}|[@/\\\\[\\\\]()]).){1,50}@)?`\n\n re.src_port =\n\n '(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?'\n\n re.src_host_terminator =\n\n `(?=$|${text_separators}|${re.src_ZPCc})` +\n `(?!${opts['---'] ? '-(?!--)|' : '-|'}_|:\\\\d|\\\\.-|\\\\.(?!$|${re.src_ZPCc}))`\n\n re.src_path =\n\n '(?:' +\n '[/?#]' +\n '(?:' +\n `(?!${re.src_ZCc}|${text_separators}|[()[\\\\]{}.,\"'?!\\\\-;]).|` +\n `\\\\[(?:(?!${re.src_ZCc}|\\\\]).)*\\\\]|` +\n `\\\\((?:(?!${re.src_ZCc}|[)]).)*\\\\)|` +\n `\\\\{(?:(?!${re.src_ZCc}|[}]).)*\\\\}|` +\n `\\\\\"(?:(?!${re.src_ZCc}|[\"]).)+\\\\\"|` +\n `\\\\'(?:(?!${re.src_ZCc}|[']).)+\\\\'|` +\n\n // allow `I'm_king` if no pair found\n `\\\\'(?=${re.src_pseudo_letter}|[-])|` +\n\n // google has many dots in \"google search\" links (#66, #81).\n // github has ... in commit range links,\n // Restrict to\n // - english\n // - percent-encoded\n // - parts of file path\n // - params separator\n // until more examples found.\n '\\\\.{2,}[a-zA-Z0-9%/&]|' +\n\n `\\\\.(?!${re.src_ZCc}|[.]|$)|` +\n (opts['---']\n ? '\\\\-(?!--(?:[^-]|$))(?:-*)|' // `---` => long dash, terminate\n : '\\\\-+|'\n ) +\n // allow `,,,` in paths\n `,(?!${re.src_ZCc}|$)|` +\n\n // allow `;` if not followed by space-like char\n `;(?!${re.src_ZCc}|$)|` +\n\n // allow `!!!` in paths, but not at the end\n `\\\\!+(?!${re.src_ZCc}|[!]|$)|` +\n\n `\\\\?(?!${re.src_ZCc}|[?]|$)` +\n ')+' +\n '|\\\\/' +\n ')?'\n\n // Allow anything in markdown spec, forbid quote (\") at the first position\n // because emails enclosed in quotes are far more common\n // Max name length capped to 64 chars (RFC 5321). This also prevents O(n^2)\n // rescans to the end on inputs like `mailto:mailto:...`\n re.src_email_name =\n\n '[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]{0,63}'\n\n re.src_xn =\n\n 'xn--[a-z0-9\\\\-]{1,59}'\n\n // More to read about domain names\n // http://serverfault.com/questions/638260/\n\n re.src_domain_root =\n\n // Allow letters & digits (http://test1)\n '(?:' +\n re.src_xn +\n '|' +\n `${re.src_pseudo_letter}{1,63}` +\n ')'\n\n re.src_domain =\n\n '(?:' +\n re.src_xn +\n '|' +\n `(?:${re.src_pseudo_letter})` +\n '|' +\n `(?:${re.src_pseudo_letter}(?:-|${re.src_pseudo_letter}){0,61}${re.src_pseudo_letter})` +\n ')'\n\n re.src_host =\n\n '(?:' +\n // Don't need IP check, because digits are already allowed in normal domain names\n // src_ip4 +\n // '|' +\n `(?:(?:(?:${re.src_domain})\\\\.)*${re.src_domain})`/* _root */ +\n ')'\n\n re.tpl_host_fuzzy =\n\n '(?:' +\n re.src_ip4 +\n '|' +\n `(?:(?:(?:${re.src_domain})\\\\.)+(?:%TLDS%))` +\n ')'\n\n re.tpl_host_no_ip_fuzzy =\n\n `(?:(?:(?:${re.src_domain})\\\\.)+(?:%TLDS%))`\n\n re.src_host_strict =\n\n re.src_host + re.src_host_terminator\n\n re.tpl_host_fuzzy_strict =\n\n re.tpl_host_fuzzy + re.src_host_terminator\n\n re.src_host_port_strict =\n\n re.src_host + re.src_port + re.src_host_terminator\n\n re.tpl_host_port_fuzzy_strict =\n\n re.tpl_host_fuzzy + re.src_port + re.src_host_terminator\n\n re.tpl_host_port_no_ip_fuzzy_strict =\n\n re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator\n\n //\n // Main rules\n //\n\n // Rude test fuzzy links by host, for quick deny\n re.tpl_host_fuzzy_test =\n\n `localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:${re.src_ZPCc}|>|$))`\n\n re.tpl_email_fuzzy =\n\n `(^|${text_separators}|\"|\\\\(|${re.src_ZCc})` +\n `(${re.src_email_name}@${re.tpl_host_fuzzy_strict})`\n\n re.tpl_link_fuzzy =\n // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n `(^|(?![.:/\\\\-_@])(?:[$+<=>^\\`|\\uff5c]|${re.src_ZPCc}))` +\n `((?![$+<=>^\\`|\\uff5c])${re.tpl_host_port_fuzzy_strict}${re.src_path})`\n\n re.tpl_link_no_ip_fuzzy =\n // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n `(^|(?![.:/\\\\-_@])(?:[$+<=>^\\`|\\uff5c]|${re.src_ZPCc}))` +\n `((?![$+<=>^\\`|\\uff5c])${re.tpl_host_port_no_ip_fuzzy_strict}${re.src_path})`\n\n return re\n}\n"],"names":["Any","Cc","Z","P"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -46,7 +46,8 @@ function deflist_plugin (md) {
|
|
|
46
46
|
if (silent) {
|
|
47
47
|
// quirk: validation mode validates a dd block only, not a whole deflist
|
|
48
48
|
if (state.ddIndent < 0) { return false }
|
|
49
|
-
|
|
49
|
+
const markerPos = skipMarker(state, startLine);
|
|
50
|
+
return markerPos >= 0 && state.sCount[startLine] < state.blkIndent
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
let nextLine = startLine + 1;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../../node_modules/.pnpm/markdown-it-deflist@3.0.1/node_modules/markdown-it-deflist/index.mjs"],"sourcesContent":["// Process definition lists\n//\nexport default function deflist_plugin (md) {\n const isSpace = md.utils.isSpace\n\n // Search `[:~][\\n ]`, returns next pos after marker on success\n // or -1 on fail.\n function skipMarker (state, line) {\n let start = state.bMarks[line] + state.tShift[line]\n const max = state.eMarks[line]\n\n if (start >= max) { return -1 }\n\n // Check bullet\n const marker = state.src.charCodeAt(start++)\n if (marker !== 0x7E/* ~ */ && marker !== 0x3A/* : */) { return -1 }\n\n const pos = state.skipSpaces(start)\n\n // require space after \":\"\n if (start === pos) { return -1 }\n\n // no empty definitions, e.g. \" : \"\n if (pos >= max) { return -1 }\n\n return start\n }\n\n function markTightParagraphs (state, idx) {\n const level = state.level + 2\n\n for (let i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n state.tokens[i + 2].hidden = true\n state.tokens[i].hidden = true\n i += 2\n }\n }\n }\n\n function deflist (state, startLine, endLine, silent) {\n if (silent) {\n // quirk: validation mode validates a dd block only, not a whole deflist\n if (state.ddIndent < 0) { return false }\n const markerPos = skipMarker(state, startLine)\n return markerPos >= 0 && state.sCount[startLine] < state.blkIndent\n }\n\n let nextLine = startLine + 1\n if (nextLine >= endLine) { return false }\n\n if (state.isEmpty(nextLine)) {\n nextLine++\n if (nextLine >= endLine) { return false }\n }\n\n if (state.sCount[nextLine] < state.blkIndent) { return false }\n let contentStart = skipMarker(state, nextLine)\n if (contentStart < 0) { return false }\n\n // Start list\n const listTokIdx = state.tokens.length\n let tight = true\n\n const token_dl_o = state.push('dl_open', 'dl', 1)\n const listLines = [startLine, 0]\n token_dl_o.map = listLines\n\n //\n // Iterate list items\n //\n\n let dtLine = startLine\n let ddLine = nextLine\n\n // One definition list can contain multiple DTs,\n // and one DT can be followed by multiple DDs.\n //\n // Thus, there is two loops here, and label is\n // needed to break out of the second one\n //\n /* eslint no-labels:0,block-scoped-var:0 */\n OUTER:\n for (;;) {\n let prevEmptyEnd = false\n\n const token_dt_o = state.push('dt_open', 'dt', 1)\n token_dt_o.map = [dtLine, dtLine]\n\n const token_i = state.push('inline', '', 0)\n token_i.map = [dtLine, dtLine]\n token_i.content = state.getLines(dtLine, dtLine + 1, state.blkIndent, false).trim()\n token_i.children = []\n\n state.push('dt_close', 'dt', -1)\n\n for (;;) {\n const token_dd_o = state.push('dd_open', 'dd', 1)\n const itemLines = [nextLine, 0]\n token_dd_o.map = itemLines\n\n let pos = contentStart\n const max = state.eMarks[ddLine]\n let offset = state.sCount[ddLine] + contentStart - (state.bMarks[ddLine] + state.tShift[ddLine])\n\n while (pos < max) {\n const ch = state.src.charCodeAt(pos)\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - offset % 4\n } else {\n offset++\n }\n } else {\n break\n }\n\n pos++\n }\n\n contentStart = pos\n\n const oldTight = state.tight\n const oldDDIndent = state.ddIndent\n const oldIndent = state.blkIndent\n const oldTShift = state.tShift[ddLine]\n const oldSCount = state.sCount[ddLine]\n const oldParentType = state.parentType\n state.blkIndent = state.ddIndent = state.sCount[ddLine] + 2\n state.tShift[ddLine] = contentStart - state.bMarks[ddLine]\n state.sCount[ddLine] = offset\n state.tight = true\n state.parentType = 'deflist'\n\n state.md.block.tokenize(state, ddLine, endLine, true)\n\n // If any of list item is tight, mark list as tight\n if (!state.tight || prevEmptyEnd) {\n tight = false\n }\n // Item become loose if finish with empty line,\n // but we should filter last element, because it means list finish\n prevEmptyEnd = (state.line - ddLine) > 1 && state.isEmpty(state.line - 1)\n\n state.tShift[ddLine] = oldTShift\n state.sCount[ddLine] = oldSCount\n state.tight = oldTight\n state.parentType = oldParentType\n state.blkIndent = oldIndent\n state.ddIndent = oldDDIndent\n\n state.push('dd_close', 'dd', -1)\n\n itemLines[1] = nextLine = state.line\n\n if (nextLine >= endLine) { break OUTER }\n\n if (state.sCount[nextLine] < state.blkIndent) { break OUTER }\n contentStart = skipMarker(state, nextLine)\n if (contentStart < 0) { break }\n\n ddLine = nextLine\n\n // go to the next loop iteration:\n // insert DD tag and repeat checking\n }\n\n if (nextLine >= endLine) { break }\n dtLine = nextLine\n\n if (state.isEmpty(dtLine)) { break }\n if (state.sCount[dtLine] < state.blkIndent) { break }\n\n ddLine = dtLine + 1\n if (ddLine >= endLine) { break }\n if (state.isEmpty(ddLine)) { ddLine++ }\n if (ddLine >= endLine) { break }\n\n if (state.sCount[ddLine] < state.blkIndent) { break }\n contentStart = skipMarker(state, ddLine)\n if (contentStart < 0) { break }\n\n // go to the next loop iteration:\n // insert DT and DD tags and repeat checking\n }\n\n // Finilize list\n state.push('dl_close', 'dl', -1)\n\n listLines[1] = nextLine\n\n state.line = nextLine\n\n // mark paragraphs tight if needed\n if (tight) {\n markTightParagraphs(state, listTokIdx)\n }\n\n return true\n }\n\n md.block.ruler.before('paragraph', 'deflist', deflist, { alt: ['paragraph', 'reference', 'blockquote'] })\n};\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -8,7 +8,7 @@ var renderer = require('./renderer.js');
|
|
|
8
8
|
var parser_core = require('./parser_core.js');
|
|
9
9
|
var parser_block = require('./parser_block.js');
|
|
10
10
|
var parser_inline = require('./parser_inline.js');
|
|
11
|
-
var index = require('../../../../linkify-it@5.0.
|
|
11
|
+
var index = require('../../../../linkify-it@5.0.2/node_modules/linkify-it/index.js');
|
|
12
12
|
var punycode_es6 = require('../../../../punycode.js@2.3.1/node_modules/punycode.js/punycode.es6.js');
|
|
13
13
|
var _default = require('./presets/default.js');
|
|
14
14
|
var zero = require('./presets/zero.js');
|
package/lib/package.json.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var name = "@touchvue/chat";
|
|
6
|
-
var version = "1.0.0-beta.
|
|
6
|
+
var version = "1.0.0-beta.57";
|
|
7
7
|
var description = "TouchVue Chat Component Library";
|
|
8
8
|
var main = "lib/index.js";
|
|
9
9
|
var module$1 = "es/index.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"face.vue2.js","sources":["../../../../../../../packages/components/touchchat/component/AiRobot/face.vue"],"sourcesContent":["<template>\n\t<div>\n\t\t<letter data=\"* 这个功能需要人脸识别\" @complete=\"complete\"></letter>\n\t\t<button v-show=\"showBtn\" class=\"apply-btn\" @click=\"openFaceRecognition\">开始识别</button>\n\n\t\t<!-- 人脸识别弹窗 -->\n\t\t<div v-if=\"isRecognizing\" class=\"face-modal-overlay\">\n\t\t\t<div class=\"face-modal\">\n\t\t\t\t<div class=\"recognition-header\">人脸识别中</div>\n\t\t\t\t<div class=\"recognition-timer\">{{ timer }}</div>\n\t\t\t\t<div class=\"recognition-footer\">请将面部对准摄像头</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, inject, onUnmounted } from 'vue'\nimport Letter from './letter.vue'\nconst emits = defineEmits<{\n\t(e: 'complete'): void\n}>()\nconst showBtn = ref(false)\nconst isRecognizing = ref(false)\nconst timer = ref('00')\nlet timerInterval: number | null = null\n\nconst complete = () => {\n\tshowBtn.value = true\n\temits('complete')\n}\n\ninterface Touchchat {\n\tsend: (content?: string, fileList?: any[], auto?: boolean, type?: string) => void\n}\n\nconst touchchat = inject<Touchchat>('touchchat', { send: () => {} })\n\n// 打开人脸识别弹窗\nconst openFaceRecognition = () => {\n\tisRecognizing.value = true\n\tstartTimer()\n\t// 这里可以添加实际的人脸识别API调用\n}\n\n// 开始计时器\nconst startTimer = () => {\n\tlet seconds = 0\n\ttimer.value = '00'\n\tif (timerInterval) clearInterval(timerInterval)\n\ttimerInterval = window.setInterval(() => {\n\t\tseconds++\n\t\ttimer.value = seconds.toString().padStart(2, '0')\n\t\t// 模拟识别完成(5秒后自动关闭)\n\t\tif (seconds >= 5) {\n\t\t\tcloseRecognition()\n\t\t\tif (touchchat) {\n\t\t\t\ttouchchat.send('[人脸识别成功]')\n\t\t\t}\n\t\t}\n\t}, 1000)\n}\n\n// 关闭人脸识别弹窗\nconst closeRecognition = () => {\n\tisRecognizing.value = false\n\tif (timerInterval) {\n\t\tclearInterval(timerInterval)\n\t\ttimerInterval = null\n\t}\n}\n\n// 组件卸载时清理计时器\nonUnmounted(() => {\n\tif (timerInterval) {\n\t\tclearInterval(timerInterval)\n\t}\n})\n</script>\n\n<!-- <style lang=\"less\" scoped>\n@import '../style/Face.less';\n</style> -->\n"],"names":["ref","inject","onUnmounted","_createElementBlock","_createVNode","Letter","_createElementVNode","_createCommentVNode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"face.vue2.js","sources":["../../../../../../../packages/components/touchchat/component/AiRobot/face.vue"],"sourcesContent":["<template>\r\n\t<div>\r\n\t\t<letter data=\"* 这个功能需要人脸识别\" @complete=\"complete\"></letter>\r\n\t\t<button v-show=\"showBtn\" class=\"apply-btn\" @click=\"openFaceRecognition\">开始识别</button>\r\n\r\n\t\t<!-- 人脸识别弹窗 -->\r\n\t\t<div v-if=\"isRecognizing\" class=\"face-modal-overlay\">\r\n\t\t\t<div class=\"face-modal\">\r\n\t\t\t\t<div class=\"recognition-header\">人脸识别中</div>\r\n\t\t\t\t<div class=\"recognition-timer\">{{ timer }}</div>\r\n\t\t\t\t<div class=\"recognition-footer\">请将面部对准摄像头</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, inject, onUnmounted } from 'vue'\r\nimport Letter from './letter.vue'\r\nconst emits = defineEmits<{\r\n\t(e: 'complete'): void\r\n}>()\r\nconst showBtn = ref(false)\r\nconst isRecognizing = ref(false)\r\nconst timer = ref('00')\r\nlet timerInterval: number | null = null\r\n\r\nconst complete = () => {\r\n\tshowBtn.value = true\r\n\temits('complete')\r\n}\r\n\r\ninterface Touchchat {\r\n\tsend: (content?: string, fileList?: any[], auto?: boolean, type?: string) => void\r\n}\r\n\r\nconst touchchat = inject<Touchchat>('touchchat', { send: () => {} })\r\n\r\n// 打开人脸识别弹窗\r\nconst openFaceRecognition = () => {\r\n\tisRecognizing.value = true\r\n\tstartTimer()\r\n\t// 这里可以添加实际的人脸识别API调用\r\n}\r\n\r\n// 开始计时器\r\nconst startTimer = () => {\r\n\tlet seconds = 0\r\n\ttimer.value = '00'\r\n\tif (timerInterval) clearInterval(timerInterval)\r\n\ttimerInterval = window.setInterval(() => {\r\n\t\tseconds++\r\n\t\ttimer.value = seconds.toString().padStart(2, '0')\r\n\t\t// 模拟识别完成(5秒后自动关闭)\r\n\t\tif (seconds >= 5) {\r\n\t\t\tcloseRecognition()\r\n\t\t\tif (touchchat) {\r\n\t\t\t\ttouchchat.send('[人脸识别成功]')\r\n\t\t\t}\r\n\t\t}\r\n\t}, 1000)\r\n}\r\n\r\n// 关闭人脸识别弹窗\r\nconst closeRecognition = () => {\r\n\tisRecognizing.value = false\r\n\tif (timerInterval) {\r\n\t\tclearInterval(timerInterval)\r\n\t\ttimerInterval = null\r\n\t}\r\n}\r\n\r\n// 组件卸载时清理计时器\r\nonUnmounted(() => {\r\n\tif (timerInterval) {\r\n\t\tclearInterval(timerInterval)\r\n\t}\r\n})\r\n</script>\r\n\r\n<!-- <style lang=\"less\" scoped>\r\n@import '../style/Face.less';\r\n</style> -->\r\n"],"names":["ref","inject","onUnmounted","_createElementBlock","_createVNode","Letter","_createElementVNode","_createCommentVNode"],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
20
20
|
const loadDOMPurify = async () => {
|
|
21
21
|
if (!DOMPurifyModule) {
|
|
22
22
|
if (typeof window !== "undefined") {
|
|
23
|
-
DOMPurifyModule = await Promise.resolve().then(function () { return require('../../../../../node_modules/.pnpm/dompurify@3.4.
|
|
23
|
+
DOMPurifyModule = await Promise.resolve().then(function () { return require('../../../../../node_modules/.pnpm/dompurify@3.4.11/node_modules/dompurify/dist/purify.es.js'); });
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
return (DOMPurifyModule == null ? void 0 : DOMPurifyModule.default) || null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"letter.vue2.js","sources":["../../../../../../../packages/components/touchchat/component/AiRobot/letter.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'Touchletter' });\n</script>\n<template>\r\n\t<div class=\"typewriter-container\" :class=\"isTyping ? 'loading-container' : ''\">\r\n\t\t<div\r\n\t\t\tclass=\"typewriter-content\"\r\n\t\t\t:class=\"{\r\n\t\t\t\t'markdown-content': currentType === 'markdown',\r\n\t\t\t\t'html-content': currentType === 'html'\r\n\t\t\t}\"\r\n\t\t\tv-html=\"displayContent\"\r\n\t\t/>\r\n\t\t<!-- 条件显示loading,仅在HTML模式且正在打字时显示 -->\r\n\t\t<!-- <div v-if=\"isTyping\" class=\"typewriter-loading\">\r\n\t\t\t<span class=\"loading-dot\" :style=\"{ animationDelay: '0ms' }\"></span>\r\n\t\t\t<span class=\"loading-dot\" :style=\"{ animationDelay: '200ms' }\"></span>\r\n\t\t\t<span class=\"loading-dot\" :style=\"{ animationDelay: '400ms' }\"></span>\r\n\t\t\t<span class=\"loading-text\">{{ loadingText ?? '正在渲染内容' }}</span>\r\n\t\t\t<span class=\"loading-dot\" :style=\"{ animationDelay: '0ms' }\"></span>\r\n\t\t\t<span class=\"loading-dot\" :style=\"{ animationDelay: '200ms' }\"></span>\r\n\t\t\t<span class=\"loading-dot\" :style=\"{ animationDelay: '400ms' }\"></span>\r\n\t\t</div> -->\r\n\t</div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, computed, onMounted, watch, Ref, onUnmounted, inject } from 'vue'\r\n// import { marked } from 'marked';\r\n\r\n// DOMPurify 模块缓存\r\nlet DOMPurifyModule: any = null\r\n\r\n// 动态加载 DOMPurify\r\nconst loadDOMPurify = async () => {\r\n\tif (!DOMPurifyModule) {\r\n\t\tif (typeof window !== 'undefined') {\r\n\t\t\tDOMPurifyModule = await import('dompurify')\r\n\t\t}\r\n\t}\r\n\treturn DOMPurifyModule?.default || null\r\n}\r\n\r\n\r\n\r\ntype ContentType = 'text' | 'markdown' | 'html'\r\n\r\nconst props = defineProps<{\r\n\tdata: any\r\n\tspeed?: number\r\n\tcontentType?: ContentType | 'auto'\r\n\t// onComplete?: () => void\r\n\tsanitizeHtml?: boolean\r\n\tloadingText?: string\r\n}>()\r\n\r\nconst emits = defineEmits<{\r\n\t(e: 'complete'): void\r\n\t(e: 'start'): void\r\n}>()\r\n\r\nconst injectSpeed = inject<number>('speed', 10)\r\n\r\n// 默认值处理\r\nconst speed = computed(() => Math.max(1, props.speed || injectSpeed || 10))\r\nconst sanitizeHtml = computed(() => props.sanitizeHtml !== false)\r\n// const loadingText = computed(() => props.loadingText || '正在渲染内容...')\r\n\r\n// 内部状态\r\nconst currentIndex = ref(0)\r\nconst validContent = ref('')\r\nconst isTyping = ref(false)\r\nconst timer: Ref<number | null> = ref(null)\r\nconst tagStack = ref<string[]>([])\r\n\r\n// 内容类型检测与处理\r\nconst detectContentType = (content: string): ContentType => {\r\n\tif (/<\\/?[a-z][\\s\\S]*>/i.test(content)) {\r\n\t\treturn 'html'\r\n\t}\r\n\tif (/^#{1,6}\\s+/.test(content) || /\\*\\*.*\\*\\*/.test(content) || /```/.test(content)) {\r\n\t\treturn 'markdown'\r\n\t}\r\n\treturn 'text'\r\n}\r\n\r\nconst currentType = computed<ContentType>(() => {\r\n\tif (props.contentType && props.contentType !== 'auto') {\r\n\t\treturn props.contentType\r\n\t}\r\n\treturn detectContentType(props.data)\r\n})\r\n\r\n// 显示内容处理\r\nconst displayContent = computed(() => {\r\n\tlet content = validContent.value\r\n\tswitch (currentType.value) {\r\n\t\tcase 'html':\r\n\t\t\tif (sanitizeHtml.value && typeof window !== 'undefined') {\r\n\t\t\t\t// 动态加载并使用 DOMPurify\r\n\t\t\t\treturn DOMPurifyModule ? DOMPurifyModule.sanitize(content) : content\r\n\t\t\t}\r\n\t\t\treturn content\r\n\t\t// case 'markdown':\r\n\t\t// \treturn marked.parse(content);\r\n\t\tcase 'text':\r\n\t\t\treturn content.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\\n/g, '<br>').replace(/ {2}/g, ' ')\r\n\t\tdefault:\r\n\t\t\treturn content\r\n\t}\r\n})\r\n\r\n// 打字间隔计算\r\nconst getInterval = (isTag: boolean) => {\r\n\tconst baseInterval = 1000 / speed.value\r\n\treturn baseInterval * (isTag ? 1.2 : 0.8 + Math.random() * 0.4)\r\n}\r\n\r\n// 标签处理工具函数\r\nconst isSelfClosingTag = (tag: string) => {\r\n\tconst selfClosingTags = ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr']\r\n\tconst tagNameMatch = tag.match(/<\\/?([a-z0-9]+)/i)\r\n\tif (tagNameMatch && tagNameMatch[1]) {\r\n\t\tconst tagName = tagNameMatch[1].toLowerCase()\r\n\t\treturn selfClosingTags.includes(tagName) || tag.endsWith('/>')\r\n\t}\r\n\treturn false\r\n}\r\n\r\nconst processTag = (tag: string) => {\r\n\tif (tag.startsWith('</')) {\r\n\t\tconst tagName = tag.match(/<\\/([a-z0-9]+)/i)?.[1]?.toLowerCase()\r\n\t\tif (tagName && tagStack.value.at(-1) === tagName) {\r\n\t\t\ttagStack.value.pop()\r\n\t\t}\r\n\t} else if (tag.startsWith('<') && !isSelfClosingTag(tag)) {\r\n\t\tconst tagName = tag.match(/<([a-z0-9]+)/i)?.[1]?.toLowerCase()\r\n\t\tif (tagName) {\r\n\t\t\ttagStack.value.push(tagName)\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// 核心打字逻辑\r\nconst typeNext = () => {\r\n\tif (currentIndex.value >= props.data.length) {\r\n\t\twhile (tagStack.value.length > 0) {\r\n\t\t\tconst tag = tagStack.value.pop()\r\n\t\t\tvalidContent.value += `</${tag}>`\r\n\t\t}\r\n\t\tcompleteTyping()\r\n\t\treturn\r\n\t}\r\n\r\n\tconst currentChar = props.data[currentIndex.value]\r\n\tlet nextIndex = currentIndex.value\r\n\tlet newContent = ''\r\n\tlet isTag = false\r\n\r\n\tif (currentChar === '<') {\r\n\t\tisTag = true\r\n\t\tconst endIndex = props.data.indexOf('>', currentIndex.value)\r\n\t\tif (endIndex === -1) {\r\n\t\t\tnextIndex = currentIndex.value + 1\r\n\t\t\tnewContent = currentChar\r\n\t\t} else {\r\n\t\t\tnextIndex = endIndex + 1\r\n\t\t\tnewContent = props.data.substring(currentIndex.value, nextIndex)\r\n\t\t\tprocessTag(newContent)\r\n\t\t}\r\n\t} else {\r\n\t\tnextIndex = currentIndex.value + 1\r\n\t\tnewContent = currentChar\r\n\t}\r\n\r\n\tcurrentIndex.value = nextIndex\r\n\tvalidContent.value += newContent\r\n\ttimer.value = window.setTimeout(typeNext, getInterval(isTag))\r\n}\r\n\r\n// 控制方法\r\nconst startTyping = () => {\r\n\tif (isTyping.value || currentIndex.value >= props.data.length) return\r\n\tisTyping.value = true\r\n\temits('start')\r\n\ttypeNext()\r\n}\r\n\r\nconst stopTyping = () => {\r\n\tif (timer.value) {\r\n\t\tclearTimeout(timer.value)\r\n\t\ttimer.value = null\r\n\t\tisTyping.value = false\r\n\t}\r\n}\r\n\r\nconst resetTyping = () => {\r\n\tstopTyping()\r\n\tcurrentIndex.value = 0\r\n\tvalidContent.value = ''\r\n\ttagStack.value = []\r\n}\r\n\r\nconst completeTyping = () => {\r\n\tstopTyping()\r\n\t// props.onComplete?.()\r\n\t// complete\r\n\temits('complete')\r\n}\r\n\r\n// 监听内容变化\r\nwatch(\r\n\t() => props.data,\r\n\t() => {\r\n\t\tresetTyping()\r\n\t\tstartTyping()\r\n\t},\r\n\t{ immediate: true }\r\n)\r\n\r\nwatch(\r\n\t() => props.contentType,\r\n\t() => {\r\n\t\tvalidContent.value = props.data.substring(0, currentIndex.value)\r\n\t}\r\n)\r\n\r\nonMounted(async () => {\r\n\tif (currentIndex.value === 0) {\r\n\t\tstartTyping()\r\n\t}\r\n\tawait loadDOMPurify()\r\n})\r\n\r\nonUnmounted(() => stopTyping())\r\n\r\ndefineExpose({ startTyping, stopTyping, resetTyping, currentIndex, isTyping })\r\n</script>\r\n\r\n<style scoped>\r\n.typewriter-container {\r\n\tposition: relative;\r\n}\r\n.loading-container {\r\n\tmin-height: 40px;\r\n}\r\n\r\n/* .typewriter-content {\r\n\twhite-space: pre-wrap;\r\n\tword-break: break-word;\r\n\tline-height: 1.6;\r\n\tfont-family: 'Courier New', Courier, monospace;\r\n} */\r\n\r\n/* loading样式 */\r\n.typewriter-loading {\r\n\tmargin-top: 12px;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tgap: 8px;\r\n\tcolor: #666;\r\n\tfont-size: 14px;\r\n\tline-height: 1;\r\n\tpadding: 8px 0;\r\n}\r\n\r\n.loading-dot {\r\n\tdisplay: inline-block;\r\n\twidth: 8px;\r\n\theight: 8px;\r\n\tborder-radius: 50%;\r\n\tbackground-color: #666;\r\n\tanimation: bounce 1.4s infinite ease-in-out both;\r\n}\r\n\r\n.loading-text {\r\n\tuser-select: none;\r\n}\r\n\r\n@keyframes bounce {\r\n\t0%,\r\n\t80%,\r\n\t100% {\r\n\t\ttransform: scale(0);\r\n\t}\r\n\r\n\t40% {\r\n\t\ttransform: scale(1);\r\n\t}\r\n}\r\n\r\n/* 内容样式 */\r\n.markdown-content {\r\n\tcolor: #333;\r\n}\r\n\r\n.markdown-content h1,\r\n.markdown-content h2 {\r\n\tmargin: 1em 0 0.5em;\r\n}\r\n\r\n.markdown-content p {\r\n\tmargin: 0.5em 0;\r\n}\r\n\r\n.markdown-content code {\r\n\tbackground: #f0f0f0;\r\n\tpadding: 0.2em 0.4em;\r\n\tborder-radius: 4px;\r\n}\r\n\r\n/* .html-content {\r\n\t\r\n} */\r\n</style>\r\n"],"names":["DO_defineComponent","inject","computed","ref","watch","onMounted","onUnmounted","_createElementBlock","_normalizeClass","_createElementVNode","_createCommentVNode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"letter.vue2.js","sources":["../../../../../../../packages/components/touchchat/component/AiRobot/letter.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'Touchletter' });\n</script>\n<template>\r\n\t<div class=\"typewriter-container\" :class=\"isTyping ? 'loading-container' : ''\">\r\n\t\t<div\r\n\t\t\tclass=\"typewriter-content\"\r\n\t\t\t:class=\"{\r\n\t\t\t\t'markdown-content': currentType === 'markdown',\r\n\t\t\t\t'html-content': currentType === 'html'\r\n\t\t\t}\"\r\n\t\t\tv-html=\"displayContent\"\r\n\t\t/>\r\n\t\t<!-- 条件显示loading,仅在HTML模式且正在打字时显示 -->\r\n\t\t<!-- <div v-if=\"isTyping\" class=\"typewriter-loading\">\r\n\t\t\t<span class=\"loading-dot\" :style=\"{ animationDelay: '0ms' }\"></span>\r\n\t\t\t<span class=\"loading-dot\" :style=\"{ animationDelay: '200ms' }\"></span>\r\n\t\t\t<span class=\"loading-dot\" :style=\"{ animationDelay: '400ms' }\"></span>\r\n\t\t\t<span class=\"loading-text\">{{ loadingText ?? '正在渲染内容' }}</span>\r\n\t\t\t<span class=\"loading-dot\" :style=\"{ animationDelay: '0ms' }\"></span>\r\n\t\t\t<span class=\"loading-dot\" :style=\"{ animationDelay: '200ms' }\"></span>\r\n\t\t\t<span class=\"loading-dot\" :style=\"{ animationDelay: '400ms' }\"></span>\r\n\t\t</div> -->\r\n\t</div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, computed, onMounted, watch, Ref, onUnmounted, inject } from 'vue'\r\n// import { marked } from 'marked';\r\n\r\n// DOMPurify 模块缓存\r\nlet DOMPurifyModule: any = null\r\n\r\n// 动态加载 DOMPurify\r\nconst loadDOMPurify = async () => {\r\n\tif (!DOMPurifyModule) {\r\n\t\tif (typeof window !== 'undefined') {\r\n\t\t\tDOMPurifyModule = await import('dompurify')\r\n\t\t}\r\n\t}\r\n\treturn DOMPurifyModule?.default || null\r\n}\r\n\r\n\r\n\r\ntype ContentType = 'text' | 'markdown' | 'html'\r\n\r\nconst props = defineProps<{\r\n\tdata: any\r\n\tspeed?: number\r\n\tcontentType?: ContentType | 'auto'\r\n\t// onComplete?: () => void\r\n\tsanitizeHtml?: boolean\r\n\tloadingText?: string\r\n}>()\r\n\r\nconst emits = defineEmits<{\r\n\t(e: 'complete'): void\r\n\t(e: 'start'): void\r\n}>()\r\n\r\nconst injectSpeed = inject<number>('speed', 10)\r\n\r\n// 默认值处理\r\nconst speed = computed(() => Math.max(1, props.speed || injectSpeed || 10))\r\nconst sanitizeHtml = computed(() => props.sanitizeHtml !== false)\r\n// const loadingText = computed(() => props.loadingText || '正在渲染内容...')\r\n\r\n// 内部状态\r\nconst currentIndex = ref(0)\r\nconst validContent = ref('')\r\nconst isTyping = ref(false)\r\nconst timer: Ref<number | null> = ref(null)\r\nconst tagStack = ref<string[]>([])\r\n\r\n// 内容类型检测与处理\r\nconst detectContentType = (content: string): ContentType => {\r\n\tif (/<\\/?[a-z][\\s\\S]*>/i.test(content)) {\r\n\t\treturn 'html'\r\n\t}\r\n\tif (/^#{1,6}\\s+/.test(content) || /\\*\\*.*\\*\\*/.test(content) || /```/.test(content)) {\r\n\t\treturn 'markdown'\r\n\t}\r\n\treturn 'text'\r\n}\r\n\r\nconst currentType = computed<ContentType>(() => {\r\n\tif (props.contentType && props.contentType !== 'auto') {\r\n\t\treturn props.contentType\r\n\t}\r\n\treturn detectContentType(props.data)\r\n})\r\n\r\n// 显示内容处理\r\nconst displayContent = computed(() => {\r\n\tlet content = validContent.value\r\n\tswitch (currentType.value) {\r\n\t\tcase 'html':\r\n\t\t\tif (sanitizeHtml.value && typeof window !== 'undefined') {\r\n\t\t\t\t// 动态加载并使用 DOMPurify\r\n\t\t\t\treturn DOMPurifyModule ? DOMPurifyModule.sanitize(content) : content\r\n\t\t\t}\r\n\t\t\treturn content\r\n\t\t// case 'markdown':\r\n\t\t// \treturn marked.parse(content);\r\n\t\tcase 'text':\r\n\t\t\treturn content.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\\n/g, '<br>').replace(/ {2}/g, ' ')\r\n\t\tdefault:\r\n\t\t\treturn content\r\n\t}\r\n})\r\n\r\n// 打字间隔计算\r\nconst getInterval = (isTag: boolean) => {\r\n\tconst baseInterval = 1000 / speed.value\r\n\treturn baseInterval * (isTag ? 1.2 : 0.8 + Math.random() * 0.4)\r\n}\r\n\r\n// 标签处理工具函数\r\nconst isSelfClosingTag = (tag: string) => {\r\n\tconst selfClosingTags = ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr']\r\n\tconst tagNameMatch = tag.match(/<\\/?([a-z0-9]+)/i)\r\n\tif (tagNameMatch && tagNameMatch[1]) {\r\n\t\tconst tagName = tagNameMatch[1].toLowerCase()\r\n\t\treturn selfClosingTags.includes(tagName) || tag.endsWith('/>')\r\n\t}\r\n\treturn false\r\n}\r\n\r\nconst processTag = (tag: string) => {\r\n\tif (tag.startsWith('</')) {\r\n\t\tconst tagName = tag.match(/<\\/([a-z0-9]+)/i)?.[1]?.toLowerCase()\r\n\t\tif (tagName && tagStack.value.at(-1) === tagName) {\r\n\t\t\ttagStack.value.pop()\r\n\t\t}\r\n\t} else if (tag.startsWith('<') && !isSelfClosingTag(tag)) {\r\n\t\tconst tagName = tag.match(/<([a-z0-9]+)/i)?.[1]?.toLowerCase()\r\n\t\tif (tagName) {\r\n\t\t\ttagStack.value.push(tagName)\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// 核心打字逻辑\r\nconst typeNext = () => {\r\n\tif (currentIndex.value >= props.data.length) {\r\n\t\twhile (tagStack.value.length > 0) {\r\n\t\t\tconst tag = tagStack.value.pop()\r\n\t\t\tvalidContent.value += `</${tag}>`\r\n\t\t}\r\n\t\tcompleteTyping()\r\n\t\treturn\r\n\t}\r\n\r\n\tconst currentChar = props.data[currentIndex.value]\r\n\tlet nextIndex = currentIndex.value\r\n\tlet newContent = ''\r\n\tlet isTag = false\r\n\r\n\tif (currentChar === '<') {\r\n\t\tisTag = true\r\n\t\tconst endIndex = props.data.indexOf('>', currentIndex.value)\r\n\t\tif (endIndex === -1) {\r\n\t\t\tnextIndex = currentIndex.value + 1\r\n\t\t\tnewContent = currentChar\r\n\t\t} else {\r\n\t\t\tnextIndex = endIndex + 1\r\n\t\t\tnewContent = props.data.substring(currentIndex.value, nextIndex)\r\n\t\t\tprocessTag(newContent)\r\n\t\t}\r\n\t} else {\r\n\t\tnextIndex = currentIndex.value + 1\r\n\t\tnewContent = currentChar\r\n\t}\r\n\r\n\tcurrentIndex.value = nextIndex\r\n\tvalidContent.value += newContent\r\n\ttimer.value = window.setTimeout(typeNext, getInterval(isTag))\r\n}\r\n\r\n// 控制方法\r\nconst startTyping = () => {\r\n\tif (isTyping.value || currentIndex.value >= props.data.length) return\r\n\tisTyping.value = true\r\n\temits('start')\r\n\ttypeNext()\r\n}\r\n\r\nconst stopTyping = () => {\r\n\tif (timer.value) {\r\n\t\tclearTimeout(timer.value)\r\n\t\ttimer.value = null\r\n\t\tisTyping.value = false\r\n\t}\r\n}\r\n\r\nconst resetTyping = () => {\r\n\tstopTyping()\r\n\tcurrentIndex.value = 0\r\n\tvalidContent.value = ''\r\n\ttagStack.value = []\r\n}\r\n\r\nconst completeTyping = () => {\r\n\tstopTyping()\r\n\t// props.onComplete?.()\r\n\t// complete\r\n\temits('complete')\r\n}\r\n\r\n// 监听内容变化\r\nwatch(\r\n\t() => props.data,\r\n\t() => {\r\n\t\tresetTyping()\r\n\t\tstartTyping()\r\n\t},\r\n\t{ immediate: true }\r\n)\r\n\r\nwatch(\r\n\t() => props.contentType,\r\n\t() => {\r\n\t\tvalidContent.value = props.data.substring(0, currentIndex.value)\r\n\t}\r\n)\r\n\r\nonMounted(async () => {\r\n\tif (currentIndex.value === 0) {\r\n\t\tstartTyping()\r\n\t}\r\n\tawait loadDOMPurify()\r\n})\r\n\r\nonUnmounted(() => stopTyping())\r\n\r\ndefineExpose({ startTyping, stopTyping, resetTyping, currentIndex, isTyping })\r\n</script>\r\n\r\n<style scoped>\r\n.typewriter-container {\r\n\tposition: relative;\r\n}\r\n.loading-container {\r\n\tmin-height: 40px;\r\n}\r\n\r\n/* .typewriter-content {\r\n\twhite-space: pre-wrap;\r\n\tword-break: break-word;\r\n\tline-height: 1.6;\r\n\tfont-family: 'Courier New', Courier, monospace;\r\n} */\r\n\r\n/* loading样式 */\r\n.typewriter-loading {\r\n\tmargin-top: 12px;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tgap: 8px;\r\n\tcolor: #666;\r\n\tfont-size: 14px;\r\n\tline-height: 1;\r\n\tpadding: 8px 0;\r\n}\r\n\r\n.loading-dot {\r\n\tdisplay: inline-block;\r\n\twidth: 8px;\r\n\theight: 8px;\r\n\tborder-radius: 50%;\r\n\tbackground-color: #666;\r\n\tanimation: bounce 1.4s infinite ease-in-out both;\r\n}\r\n\r\n.loading-text {\r\n\tuser-select: none;\r\n}\r\n\r\n@keyframes bounce {\r\n\t0%,\r\n\t80%,\r\n\t100% {\r\n\t\ttransform: scale(0);\r\n\t}\r\n\r\n\t40% {\r\n\t\ttransform: scale(1);\r\n\t}\r\n}\r\n\r\n/* 内容样式 */\r\n.markdown-content {\r\n\tcolor: #333;\r\n}\r\n\r\n.markdown-content h1,\r\n.markdown-content h2 {\r\n\tmargin: 1em 0 0.5em;\r\n}\r\n\r\n.markdown-content p {\r\n\tmargin: 0.5em 0;\r\n}\r\n\r\n.markdown-content code {\r\n\tbackground: #f0f0f0;\r\n\tpadding: 0.2em 0.4em;\r\n\tborder-radius: 4px;\r\n}\r\n\r\n/* .html-content {\r\n\t\r\n} */\r\n</style>\r\n"],"names":["DO_defineComponent","inject","computed","ref","watch","onMounted","onUnmounted","_createElementBlock","_normalizeClass","_createElementVNode","_createCommentVNode"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meterialPrepare.vue2.js","sources":["../../../../../../../packages/components/touchchat/component/AiRobot/meterialPrepare.vue"],"sourcesContent":["<template>\n\t<div>\n\t\t<letter data=\"即将进入申请页面,请您先确认是否已备齐以下关键材料:联系人的全名需准确无误,服务地址需详细清晰,有效电话号码便于我们随时与您取得联系。此外,如有任何特殊需求或情况,请在备注中详细说明。为确保申请顺利您还可点击“查看详情”按钮,获取详尽的业务办理指南及完整材料清单。\" @complete=\"complete\"></letter>\n\t\t<button v-show=\"showBtn\" class=\"apply-btn\" @click=\"handleClick\">确定</button>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, inject } from 'vue'\nimport Letter from './letter.vue'\nconst emits = defineEmits<{\n\t(e: 'complete'): void\n}>()\nconst showBtn = ref(false)\nconst complete = () => {\n\tshowBtn.value = true\n\temits('complete')\n}\ninterface Touchchat {\n\tsend: (content?: string, fileList?: any[], auto?: boolean, type?: string) => void\n}\nconst touchchat = inject<Touchchat>('touchchat', { send: () => {} })\nconst handleClick = () => {\n\tconsole.log('handleClick === meterialPrepare')\n\ttouchchat && touchchat.send('[确定]')\n}\n</script>\n\n<!-- <style lang=\"less\" scoped>\n@import '../style/MeterialPrepare.less';\n</style> -->\n"],"names":["ref","inject","_createElementBlock","_createVNode","Letter","_createElementVNode"],"mappings":";;;;;;;;;;;AAUA,IAAA,MAAM,KAAQ,GAAA,MAAA,CAAA;AAGd,IAAM,MAAA,OAAA,GAAUA,QAAI,KAAK,CAAA,CAAA;AACzB,IAAA,MAAM,WAAW,MAAM;AACtB,MAAA,OAAA,CAAQ,KAAQ,GAAA,IAAA,CAAA;AAChB,MAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AAAA,KACjB,CAAA;AAIA,IAAA,MAAM,SAAY,GAAAC,UAAA,CAAkB,WAAa,EAAA,EAAE,MAAM,MAAM;AAAA,OAAI,CAAA,CAAA;AACnE,IAAA,MAAM,cAAc,MAAM;AACzB,MAAA,OAAA,CAAQ,IAAI,iCAAiC,CAAA,CAAA;AAC7C,MAAa,SAAA,IAAA,SAAA,CAAU,KAAK,gBAAM,CAAA,CAAA;AAAA,KACnC,CAAA;;8BAxBCC,sBAGM,CAAA,KAAA,EAAA,IAAA,EAAA;AAAA,QAFLC,gBAAkLC,cAAA,EAAA;AAAA,UAA1K,IAAK,EAAA,0xBAAA;AAAA,UAAwI,UAAU,EAAA,QAAA;AAAA;0BAC/J,CAAAC,sBAAA;AAAA,UAA2E,QAAA;AAAA,UAAA;AAAA,YAAlD,KAAM,EAAA,WAAA;AAAA,YAAa,OAAO,EAAA,WAAA;AAAA;UAAa,cAAA;AAAA,UAAE,GAAA;AAAA;AAAA,SAAA,EAAA;AAAA,oBAAlD,EAAA,OAAA,CAAO,KAAA,CAAA;AAAA;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"meterialPrepare.vue2.js","sources":["../../../../../../../packages/components/touchchat/component/AiRobot/meterialPrepare.vue"],"sourcesContent":["<template>\r\n\t<div>\r\n\t\t<letter data=\"即将进入申请页面,请您先确认是否已备齐以下关键材料:联系人的全名需准确无误,服务地址需详细清晰,有效电话号码便于我们随时与您取得联系。此外,如有任何特殊需求或情况,请在备注中详细说明。为确保申请顺利您还可点击“查看详情”按钮,获取详尽的业务办理指南及完整材料清单。\" @complete=\"complete\"></letter>\r\n\t\t<button v-show=\"showBtn\" class=\"apply-btn\" @click=\"handleClick\">确定</button>\r\n\t</div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, inject } from 'vue'\r\nimport Letter from './letter.vue'\r\nconst emits = defineEmits<{\r\n\t(e: 'complete'): void\r\n}>()\r\nconst showBtn = ref(false)\r\nconst complete = () => {\r\n\tshowBtn.value = true\r\n\temits('complete')\r\n}\r\ninterface Touchchat {\r\n\tsend: (content?: string, fileList?: any[], auto?: boolean, type?: string) => void\r\n}\r\nconst touchchat = inject<Touchchat>('touchchat', { send: () => {} })\r\nconst handleClick = () => {\r\n\tconsole.log('handleClick === meterialPrepare')\r\n\ttouchchat && touchchat.send('[确定]')\r\n}\r\n</script>\r\n\r\n<!-- <style lang=\"less\" scoped>\r\n@import '../style/MeterialPrepare.less';\r\n</style> -->\r\n"],"names":["ref","inject","_createElementBlock","_createVNode","Letter","_createElementVNode"],"mappings":";;;;;;;;;;;AAUA,IAAA,MAAM,KAAQ,GAAA,MAAA,CAAA;AAGd,IAAM,MAAA,OAAA,GAAUA,QAAI,KAAK,CAAA,CAAA;AACzB,IAAA,MAAM,WAAW,MAAM;AACtB,MAAA,OAAA,CAAQ,KAAQ,GAAA,IAAA,CAAA;AAChB,MAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AAAA,KACjB,CAAA;AAIA,IAAA,MAAM,SAAY,GAAAC,UAAA,CAAkB,WAAa,EAAA,EAAE,MAAM,MAAM;AAAA,OAAI,CAAA,CAAA;AACnE,IAAA,MAAM,cAAc,MAAM;AACzB,MAAA,OAAA,CAAQ,IAAI,iCAAiC,CAAA,CAAA;AAC7C,MAAa,SAAA,IAAA,SAAA,CAAU,KAAK,gBAAM,CAAA,CAAA;AAAA,KACnC,CAAA;;8BAxBCC,sBAGM,CAAA,KAAA,EAAA,IAAA,EAAA;AAAA,QAFLC,gBAAkLC,cAAA,EAAA;AAAA,UAA1K,IAAK,EAAA,0xBAAA;AAAA,UAAwI,UAAU,EAAA,QAAA;AAAA;0BAC/J,CAAAC,sBAAA;AAAA,UAA2E,QAAA;AAAA,UAAA;AAAA,YAAlD,KAAM,EAAA,WAAA;AAAA,YAAa,OAAO,EAAA,WAAA;AAAA;UAAa,cAAA;AAAA,UAAE,GAAA;AAAA;AAAA,SAAA,EAAA;AAAA,oBAAlD,EAAA,OAAA,CAAO,KAAA,CAAA;AAAA;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.vue2.js","sources":["../../../../../../../packages/components/touchchat/component/AiRobot/start.vue"],"sourcesContent":["<template>\n\t<div>\n\t\t<letter data=\"欢迎使用 touchvue,我是您的私人助理小启。\" @complete=\"complete\"></letter>\n\t\t<button v-show=\"showBtn\" class=\"apply-btn\" @click=\"handleClick\">申请通气</button>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, inject } from 'vue'\nimport Letter from './letter.vue'\nconst emits = defineEmits<{\n\t(e: 'complete'): void\n}>()\nconst showBtn = ref(false)\nconst complete = () => {\n\tshowBtn.value = true\n\temits('complete')\n}\n\ninterface Touchchat {\n\tsend: (content?: string, fileList?: any[], auto?: boolean, type?: string) => void\n}\nconst touchchat = inject<Touchchat>('touchchat', { send: () => {} })\nconst handleClick = () => {\n\ttouchchat && touchchat.send('我要申请用气')\n}\n</script>\n\n<!-- <style lang=\"less\" scoped>\n@import '../style/Start.less';\n</style> -->\n"],"names":["ref","inject","_createElementBlock","_createVNode","Letter","_createElementVNode"],"mappings":";;;;;;;;;;;AAUA,IAAA,MAAM,KAAQ,GAAA,MAAA,CAAA;AAGd,IAAM,MAAA,OAAA,GAAUA,QAAI,KAAK,CAAA,CAAA;AACzB,IAAA,MAAM,WAAW,MAAM;AACtB,MAAA,OAAA,CAAQ,KAAQ,GAAA,IAAA,CAAA;AAChB,MAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AAAA,KACjB,CAAA;AAKA,IAAA,MAAM,SAAY,GAAAC,UAAA,CAAkB,WAAa,EAAA,EAAE,MAAM,MAAM;AAAA,OAAI,CAAA,CAAA;AACnE,IAAA,MAAM,cAAc,MAAM;AACzB,MAAa,SAAA,IAAA,SAAA,CAAU,KAAK,sCAAQ,CAAA,CAAA;AAAA,KACrC,CAAA;;8BAxBCC,sBAGM,CAAA,KAAA,EAAA,IAAA,EAAA;AAAA,QAFLC,gBAAuEC,cAAA,EAAA;AAAA,UAA/D,IAAK,EAAA,2GAAA;AAAA,UAA6B,UAAU,EAAA,QAAA;AAAA;0BACpD,CAAAC,sBAAA;AAAA,UAA6E,QAAA;AAAA,UAAA;AAAA,YAApD,KAAM,EAAA,WAAA;AAAA,YAAa,OAAO,EAAA,WAAA;AAAA;UAAa,0BAAA;AAAA,UAAI,GAAA;AAAA;AAAA,SAAA,EAAA;AAAA,oBAApD,EAAA,OAAA,CAAO,KAAA,CAAA;AAAA;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"start.vue2.js","sources":["../../../../../../../packages/components/touchchat/component/AiRobot/start.vue"],"sourcesContent":["<template>\r\n\t<div>\r\n\t\t<letter data=\"欢迎使用 touchvue,我是您的私人助理小启。\" @complete=\"complete\"></letter>\r\n\t\t<button v-show=\"showBtn\" class=\"apply-btn\" @click=\"handleClick\">申请通气</button>\r\n\t</div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, inject } from 'vue'\r\nimport Letter from './letter.vue'\r\nconst emits = defineEmits<{\r\n\t(e: 'complete'): void\r\n}>()\r\nconst showBtn = ref(false)\r\nconst complete = () => {\r\n\tshowBtn.value = true\r\n\temits('complete')\r\n}\r\n\r\ninterface Touchchat {\r\n\tsend: (content?: string, fileList?: any[], auto?: boolean, type?: string) => void\r\n}\r\nconst touchchat = inject<Touchchat>('touchchat', { send: () => {} })\r\nconst handleClick = () => {\r\n\ttouchchat && touchchat.send('我要申请用气')\r\n}\r\n</script>\r\n\r\n<!-- <style lang=\"less\" scoped>\r\n@import '../style/Start.less';\r\n</style> -->\r\n"],"names":["ref","inject","_createElementBlock","_createVNode","Letter","_createElementVNode"],"mappings":";;;;;;;;;;;AAUA,IAAA,MAAM,KAAQ,GAAA,MAAA,CAAA;AAGd,IAAM,MAAA,OAAA,GAAUA,QAAI,KAAK,CAAA,CAAA;AACzB,IAAA,MAAM,WAAW,MAAM;AACtB,MAAA,OAAA,CAAQ,KAAQ,GAAA,IAAA,CAAA;AAChB,MAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AAAA,KACjB,CAAA;AAKA,IAAA,MAAM,SAAY,GAAAC,UAAA,CAAkB,WAAa,EAAA,EAAE,MAAM,MAAM;AAAA,OAAI,CAAA,CAAA;AACnE,IAAA,MAAM,cAAc,MAAM;AACzB,MAAa,SAAA,IAAA,SAAA,CAAU,KAAK,sCAAQ,CAAA,CAAA;AAAA,KACrC,CAAA;;8BAxBCC,sBAGM,CAAA,KAAA,EAAA,IAAA,EAAA;AAAA,QAFLC,gBAAuEC,cAAA,EAAA;AAAA,UAA/D,IAAK,EAAA,2GAAA;AAAA,UAA6B,UAAU,EAAA,QAAA;AAAA;0BACpD,CAAAC,sBAAA;AAAA,UAA6E,QAAA;AAAA,UAAA;AAAA,YAApD,KAAM,EAAA,WAAA;AAAA,YAAa,OAAO,EAAA,WAAA;AAAA;UAAa,0BAAA;AAAA,UAAI,GAAA;AAAA;AAAA,SAAA,EAAA;AAAA,oBAApD,EAAA,OAAA,CAAO,KAAA,CAAA;AAAA;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardView.vue2.js","sources":["../../../../../../packages/components/touchchat/component/CardView.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'CardView' });\n</script>\n<template>\n\t<div class=\"card-container\">\n\t\t<div class=\"card-header\">\n\t\t\t<span class=\"header-text\">{{ headerText }}</span>\n\t\t\t<button class=\"switch-btn\" @click=\"handleSwitchClick\">\n\t\t\t\t<span>换一换</span>\n\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n\t\t\t\t\t<path d=\"M9.91781 2.23649C9.12515 1.44124 8.10769 0.90645 7.00219 0.704346L6.79238 1.85199C7.66419 2.01137 8.46656 2.43311 9.09221 3.06081C10.8017 4.77007 10.8017 7.53989 9.09292 9.24845L9.0527 9.28869L8.09804 8.3337V11.1508H10.9141L9.87752 10.1138L9.91799 10.0733C12.0823 7.90928 12.0823 4.40068 9.91781 2.23649Z\" fill=\"#0077FA\" />\n\t\t\t\t\t<path d=\"M2.94725 3.02361L3.9019 3.9786V1.1615H1.0858L2.12244 2.19851L2.08197 2.239C-0.0823662 4.40301 -0.0823662 7.91162 2.08215 10.0758C2.87481 10.8711 3.89227 11.4058 4.99778 11.6079L5.20758 10.4603C4.33578 10.3009 3.5334 9.87919 2.90775 9.25149C1.19822 7.54222 1.19822 4.77241 2.90704 3.06385L2.94725 3.02361Z\" fill=\"#0077FA\" />\n\t\t\t\t</svg>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class=\"cards-wrapper\">\n\t\t\t<div v-for=\"card in cards\" :key=\"card.id\" class=\"card-item\" :class=\"{ selected: card.id === selectedId }\" @click=\"handleCardClick(card.id)\">\n\t\t\t\t<div class=\"card-content\">\n\t\t\t\t\t<h3 class=\"card-title\">{{ card.title }}</h3>\n\t\t\t\t\t<div class=\"card-desc\">{{ card.desc }}</div>\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"card.id === selectedId\" class=\"check-mark\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"45\" viewBox=\"0 0 44 45\" fill=\"none\">\n\t\t\t\t\t\t<g clip-path=\"url(#clip0_2281_1059)\">\n\t\t\t\t\t\t\t<path d=\"M6.62451 0.15625H36.6245C41.0428 0.15625 44.6245 3.73797 44.6245 8.15625V38.1562L6.62451 0.15625Z\" fill=\"#1D77FF\" />\n\t\t\t\t\t\t\t<path d=\"M39.6245 8.7657L38.1025 7.15625L31.6905 14.4087L28.1465 10.6612L26.6245 12.2707L30.9295 16.8229C31.3498 17.2674 32.0312 17.2674 32.4515 16.8229L39.6245 8.7657Z\" fill=\"white\" />\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<defs>\n\t\t\t\t\t\t\t<clipPath id=\"clip0_2281_1059\">\n\t\t\t\t\t\t\t\t<rect width=\"44\" height=\"44\" fill=\"white\" transform=\"translate(0.624512 0.15625)\" />\n\t\t\t\t\t\t\t</clipPath>\n\t\t\t\t\t\t</defs>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref } from 'vue'\n// import type { ChatMessage } from '../src/AiChat/TouchChat.vue';\n\n// 直接在组件内部定义ChatMessage接口\ninterface ChatMessage {\n\tchatId?: string\n\tuser: string\n\ttype: string\n\tcontent: string\n\tisChating?: boolean\n\tthinkContent?: string\n\treasoningContent?: string\n\tisLiked?: boolean\n\tisDisliked?: boolean\n\tisEditing?: boolean\n\teditContent?: string\n\tcomponentName?: string\n\tthinkStatus?: 'thinking' | 'completed' | 'stopped'\n\tthinkStartTime?: number\n\tthinkTime?: number\n\t[key: string]: unknown\n}\n\n\n\nconst props = defineProps<{\n\titem: ChatMessage & {\n\t\theaderText?: string\n\t\tcards?: Array<{\n\t\t\ttitle: string\n\t\t\tdesc: string\n\t\t\tid: number\n\t\t}>\n\t\tinitialSelectedIndex?: number\n\t}\n\tindex: number\n}>()\n\nconst emit = defineEmits<{\n\t(e: 'cardSelected', id: number): void\n\t(e: 'switchCards'): void\n}>()\n\n// 默认数据\nconst defaultCards = [\n\t{ title: '卡片标题1', desc: '内容区域占位文本', id: 1 },\n\t{ title: '卡片标题2', desc: '内容区域占位文本', id: 2 },\n\t{ title: '卡片标题3', desc: '内容区域占位文本', id: 3 }\n]\n\n// 状态管理\nconst selectedId = ref(props.item?.initialSelectedId || 1)\nconst headerText = ref(props.item?.headerText || '对话内容')\nconst cards = ref(props.item?.cards || defaultCards)\n\n// 方法定义\nconst handleCardClick = (id: number) => {\n\tselectedId.value = id\n\tconsole.log(selectedId.value, 'selectedId.value')\n\temit('cardSelected', id)\n}\n\nconst handleSwitchClick = () => {\n\temit('switchCards')\n\t// 此处可添加卡片切换动画或数据更新逻辑\n}\n</script>\n\n<!-- <style scoped lang=\"less\">\n@import './style/CardView.less';\n</style> -->\n"],"names":["DO_defineComponent","ref","_createElementBlock","_createElementVNode","_Fragment","_renderList","_toDisplayString"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CardView.vue2.js","sources":["../../../../../../packages/components/touchchat/component/CardView.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'CardView' });\n</script>\n<template>\r\n\t<div class=\"card-container\">\r\n\t\t<div class=\"card-header\">\r\n\t\t\t<span class=\"header-text\">{{ headerText }}</span>\r\n\t\t\t<button class=\"switch-btn\" @click=\"handleSwitchClick\">\r\n\t\t\t\t<span>换一换</span>\r\n\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n\t\t\t\t\t<path d=\"M9.91781 2.23649C9.12515 1.44124 8.10769 0.90645 7.00219 0.704346L6.79238 1.85199C7.66419 2.01137 8.46656 2.43311 9.09221 3.06081C10.8017 4.77007 10.8017 7.53989 9.09292 9.24845L9.0527 9.28869L8.09804 8.3337V11.1508H10.9141L9.87752 10.1138L9.91799 10.0733C12.0823 7.90928 12.0823 4.40068 9.91781 2.23649Z\" fill=\"#0077FA\" />\r\n\t\t\t\t\t<path d=\"M2.94725 3.02361L3.9019 3.9786V1.1615H1.0858L2.12244 2.19851L2.08197 2.239C-0.0823662 4.40301 -0.0823662 7.91162 2.08215 10.0758C2.87481 10.8711 3.89227 11.4058 4.99778 11.6079L5.20758 10.4603C4.33578 10.3009 3.5334 9.87919 2.90775 9.25149C1.19822 7.54222 1.19822 4.77241 2.90704 3.06385L2.94725 3.02361Z\" fill=\"#0077FA\" />\r\n\t\t\t\t</svg>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<div class=\"cards-wrapper\">\r\n\t\t\t<div v-for=\"card in cards\" :key=\"card.id\" class=\"card-item\" :class=\"{ selected: card.id === selectedId }\" @click=\"handleCardClick(card.id)\">\r\n\t\t\t\t<div class=\"card-content\">\r\n\t\t\t\t\t<h3 class=\"card-title\">{{ card.title }}</h3>\r\n\t\t\t\t\t<div class=\"card-desc\">{{ card.desc }}</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div v-if=\"card.id === selectedId\" class=\"check-mark\">\r\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"45\" viewBox=\"0 0 44 45\" fill=\"none\">\r\n\t\t\t\t\t\t<g clip-path=\"url(#clip0_2281_1059)\">\r\n\t\t\t\t\t\t\t<path d=\"M6.62451 0.15625H36.6245C41.0428 0.15625 44.6245 3.73797 44.6245 8.15625V38.1562L6.62451 0.15625Z\" fill=\"#1D77FF\" />\r\n\t\t\t\t\t\t\t<path d=\"M39.6245 8.7657L38.1025 7.15625L31.6905 14.4087L28.1465 10.6612L26.6245 12.2707L30.9295 16.8229C31.3498 17.2674 32.0312 17.2674 32.4515 16.8229L39.6245 8.7657Z\" fill=\"white\" />\r\n\t\t\t\t\t\t</g>\r\n\t\t\t\t\t\t<defs>\r\n\t\t\t\t\t\t\t<clipPath id=\"clip0_2281_1059\">\r\n\t\t\t\t\t\t\t\t<rect width=\"44\" height=\"44\" fill=\"white\" transform=\"translate(0.624512 0.15625)\" />\r\n\t\t\t\t\t\t\t</clipPath>\r\n\t\t\t\t\t\t</defs>\r\n\t\t\t\t\t</svg>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref } from 'vue'\r\n// import type { ChatMessage } from '../src/AiChat/TouchChat.vue';\r\n\r\n// 直接在组件内部定义ChatMessage接口\r\ninterface ChatMessage {\r\n\tchatId?: string\r\n\tuser: string\r\n\ttype: string\r\n\tcontent: string\r\n\tisChating?: boolean\r\n\tthinkContent?: string\r\n\treasoningContent?: string\r\n\tisLiked?: boolean\r\n\tisDisliked?: boolean\r\n\tisEditing?: boolean\r\n\teditContent?: string\r\n\tcomponentName?: string\r\n\tthinkStatus?: 'thinking' | 'completed' | 'stopped'\r\n\tthinkStartTime?: number\r\n\tthinkTime?: number\r\n\t[key: string]: unknown\r\n}\r\n\r\n\r\n\r\nconst props = defineProps<{\r\n\titem: ChatMessage & {\r\n\t\theaderText?: string\r\n\t\tcards?: Array<{\r\n\t\t\ttitle: string\r\n\t\t\tdesc: string\r\n\t\t\tid: number\r\n\t\t}>\r\n\t\tinitialSelectedIndex?: number\r\n\t}\r\n\tindex: number\r\n}>()\r\n\r\nconst emit = defineEmits<{\r\n\t(e: 'cardSelected', id: number): void\r\n\t(e: 'switchCards'): void\r\n}>()\r\n\r\n// 默认数据\r\nconst defaultCards = [\r\n\t{ title: '卡片标题1', desc: '内容区域占位文本', id: 1 },\r\n\t{ title: '卡片标题2', desc: '内容区域占位文本', id: 2 },\r\n\t{ title: '卡片标题3', desc: '内容区域占位文本', id: 3 }\r\n]\r\n\r\n// 状态管理\r\nconst selectedId = ref(props.item?.initialSelectedId || 1)\r\nconst headerText = ref(props.item?.headerText || '对话内容')\r\nconst cards = ref(props.item?.cards || defaultCards)\r\n\r\n// 方法定义\r\nconst handleCardClick = (id: number) => {\r\n\tselectedId.value = id\r\n\tconsole.log(selectedId.value, 'selectedId.value')\r\n\temit('cardSelected', id)\r\n}\r\n\r\nconst handleSwitchClick = () => {\r\n\temit('switchCards')\r\n\t// 此处可添加卡片切换动画或数据更新逻辑\r\n}\r\n</script>\r\n\r\n<!-- <style scoped lang=\"less\">\r\n@import './style/CardView.less';\r\n</style> -->\r\n"],"names":["DO_defineComponent","ref","_createElementBlock","_createElementVNode","_Fragment","_renderList","_toDisplayString"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageFile.vue2.js","sources":["../../../../../../packages/components/touchchat/component/ImageFile.vue"],"sourcesContent":["<template>\n\t<div class=\"image-file\">\n\t\t<div class=\"image-file-content\">\n\t\t\t<img :src=\"item.base64 ?? '../img/link.png'\" alt=\"图片\" @click=\"showPreview = true\" />\n\t\t\t<div v-if=\"!(showLoading || item.uploadError) && hasColse\" class=\"image-file-colse\" @click=\"emits('colse', item.id)\">\n\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"5\" height=\"6\" viewBox=\"0 0 5 6\" fill=\"none\">\n\t\t\t\t\t<path d=\"M4.42492 5.31718L4.97489 4.76721L3.05002 2.84233L4.97493 0.917422L4.42496 0.36745L2.50005 2.29236L0.575118 0.367432L0.0251465 0.917403L1.95008 2.84233L0.0251875 4.76722L0.575159 5.3172L2.50005 3.39231L4.42492 5.31718Z\" fill=\"white\" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t\t<div v-if=\"showLoading && !item.uploadError\" class=\"img-file-loading\">\n\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\">\n\t\t\t\t\t<g clip-path=\"url(#paint0_angular_2715_440_clip_path)\" data-figma-skip-parse=\"true\">\n\t\t\t\t\t\t<g transform=\"matrix(0.0100142 0.00182077 -0.00182077 0.0100142 12 12.8423)\">\n\t\t\t\t\t\t\t<foreignObject x=\"-1427.97\" y=\"-1427.97\" width=\"2855.94\" height=\"2855.94\">\n\t\t\t\t\t\t\t\t<div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"background: conic-gradient(from 90deg, rgba(255, 255, 255, 1) 0deg, rgba(255, 255, 255, 0) 84.375deg, rgba(255, 255, 255, 1) 360deg); height: 100%; width: 100%; opacity: 1\"></div>\n\t\t\t\t\t\t\t</foreignObject>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t</g>\n\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 5.54499C7.96981 5.54499 4.7027 8.8121 4.7027 12.8423C4.7027 16.8725 7.96981 20.1396 12 20.1396C12.7463 20.1396 13.3514 20.7446 13.3514 21.4909C13.3514 22.2373 12.7463 22.8423 12 22.8423C6.47715 22.8423 2 18.3651 2 12.8423C2 7.31944 6.47715 2.84229 12 2.84229C17.5228 2.84229 22 7.31944 22 12.8423C22 13.5886 21.395 14.1936 20.6486 14.1936C19.9023 14.1936 19.2973 13.5886 19.2973 12.8423C19.2973 8.8121 16.0302 5.54499 12 5.54499Z\" data-figma-gradient-fill='{\"type\":\"GRADIENT_ANGULAR\",\"stops\":[{\"color\":{\"r\":1.0,\"g\":1.0,\"b\":1.0,\"a\":0.0},\"position\":0.2343750},{\"color\":{\"r\":1.0,\"g\":1.0,\"b\":1.0,\"a\":1.0},\"position\":1.0}],\"stopsVar\":[],\"transform\":{\"m00\":20.028446197509766,\"m01\":-3.6415407657623291,\"m02\":3.8065481185913086,\"m10\":3.6415374279022217,\"m11\":20.028463363647461,\"m12\":1.0072842836380005},\"opacity\":1.0,\"blendMode\":\"NORMAL\",\"visible\":true}' />\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t<clipPath id=\"paint0_angular_2715_440_clip_path\">\n\t\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 5.54499C7.96981 5.54499 4.7027 8.8121 4.7027 12.8423C4.7027 16.8725 7.96981 20.1396 12 20.1396C12.7463 20.1396 13.3514 20.7446 13.3514 21.4909C13.3514 22.2373 12.7463 22.8423 12 22.8423C6.47715 22.8423 2 18.3651 2 12.8423C2 7.31944 6.47715 2.84229 12 2.84229C17.5228 2.84229 22 7.31944 22 12.8423C22 13.5886 21.395 14.1936 20.6486 14.1936C19.9023 14.1936 19.2973 13.5886 19.2973 12.8423C19.2973 8.8121 16.0302 5.54499 12 5.54499Z\" />\n\t\t\t\t\t\t</clipPath>\n\t\t\t\t\t</defs>\n\t\t\t\t</svg>\n\t\t\t\t<p class=\"img-file-title\">{{ progress }}%</p>\n\t\t\t</div>\n\t\t\t<div v-if=\"item.uploadError\" class=\"img-file-loading img-error-loading\" @click=\"handleReset\">\n\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"13\" viewBox=\"0 0 14 13\" fill=\"none\">\n\t\t\t\t\t<path d=\"M10.8891 10.7314C9.89379 11.7267 8.51879 12.3423 7 12.3423C3.96244 12.3423 1.5 9.87984 1.5 6.84229C1.5 3.80473 3.96244 1.34229 7 1.34229C8.51879 1.34229 9.89379 1.95789 10.8891 2.9532C11.3957 3.45982 12.5 4.7034 12.5 4.7034\" stroke=\"#F93920\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n\t\t\t\t\t<path d=\"M12.5 1.95374V4.70374H9.75\" stroke=\"#F93920\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n\t\t\t\t</svg>\n\t\t\t\t<p class=\"img-file-error\">错误</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-show=\"showPreview\" class=\"image-preview-modal\" @click=\"showPreview = false\">\n\t\t\t<div class=\"image-preview-content\">\n\t\t\t\t<img :src=\"item.base64 ?? '../img/link.png'\" alt=\"预览图片\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n<script setup lang=\"ts\">\nimport { ref, watch, computed, inject } from 'vue'\nimport type { FileItem } from '../src/AiChat/Chat/types'\n\nconst props = defineProps<{\n\titem: FileItem\n\tindex: number\n\thasColse: boolean\n}>()\nconst emits = defineEmits(['colse'])\nconst showLoading = ref(false)\nconst progress = computed(() => {\n\treturn props.item.uploadProgress ?? 0\n})\nconst showPreview = ref(false)\n\nconst uploadFile = inject<(index: number, type?: string) => void>('uploadFile', () => {\n\tconsole.warn('未提供bottom函数')\n})\n\nconst handleReset = () => {\n\tuploadFile(props.index, 'IMAGE')\n}\n\nwatch(progress, newVal => {\n\tif (newVal === 100 || newVal === 0) {\n\t\tshowLoading.value = false\n\t} else {\n\t\tshowLoading.value = true\n\t}\n})\n</script>\n"],"names":["ref","computed","inject","watch","_createElementBlock","_createElementVNode","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;AA8CA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAKd,IAAA,MAAM,KAAQ,GAAA,MAAA,CAAA;AACd,IAAM,MAAA,WAAA,GAAcA,QAAI,KAAK,CAAA,CAAA;AAC7B,IAAM,MAAA,QAAA,GAAWC,aAAS,MAAM;;AAC/B,MAAO,OAAA,CAAA,EAAA,GAAA,KAAA,CAAM,IAAK,CAAA,cAAA,KAAX,IAA6B,GAAA,EAAA,GAAA,CAAA,CAAA;AAAA,KACpC,CAAA,CAAA;AACD,IAAM,MAAA,WAAA,GAAcD,QAAI,KAAK,CAAA,CAAA;AAE7B,IAAM,MAAA,UAAA,GAAaE,UAA+C,CAAA,YAAA,EAAc,MAAM;AACrF,MAAA,OAAA,CAAQ,KAAK,sCAAa,CAAA,CAAA;AAAA,KAC1B,CAAA,CAAA;AAED,IAAA,MAAM,cAAc,MAAM;AACzB,MAAW,UAAA,CAAA,KAAA,CAAM,OAAO,OAAO,CAAA,CAAA;AAAA,KAChC,CAAA;AAEA,IAAAC,SAAA,CAAM,UAAU,CAAU,MAAA,KAAA;AACzB,MAAI,IAAA,MAAA,KAAW,GAAO,IAAA,MAAA,KAAW,CAAG,EAAA;AACnC,QAAA,WAAA,CAAY,KAAQ,GAAA,KAAA,CAAA;AAAA,OACd,MAAA;AACN,QAAA,WAAA,CAAY,KAAQ,GAAA,IAAA,CAAA;AAAA,OACrB;AAAA,KACA,CAAA,CAAA;;;4BAvEA,EAAAC,sBAAA,CAuCM,OAAA,EAvCD,KAAA,EAAM,cAAY,EAAA;AAAA,QACtBC,sBAgCM,CAAA,KAAA,EAAA,EAhCD,KAAA,EAAM,sBAAoB,EAAA;AAAA,UAC9BA,uBAAoF,KAAA,EAAA;AAAA,YAA9E,GAAK,EAAA,CAAA,EAAA,GAAA,OAAA,CAAI,IAAC,CAAA,MAAA,KAAL,IAAW,GAAA,EAAA,GAAA,iBAAA;AAAA,YAAuB,GAAI,EAAA,cAAA;AAAA,YAAM,gBAAO,KAAA,WAAA,CAAW,KAAA,GAAA,IAAA;AAAA;UAC5D,EAAA,WAAA,CAAA,KAAA,IAAe,OAAA,CAAA,IAAA,CAAK,WAAgB,CAAA,IAAA,OAAA,CAAQ,2BAAzD,EAAAD,sBAAA,CAIM,KAAA,EAAA;AAAA;YAJqD,KAAM,EAAA,kBAAA;AAAA,YAAoB,SAAO,CAAA,MAAA,KAAA,MAAe,OAAA,EAAA,OAAA,CAAA,KAAK,EAAE,CAAA;AAAA;4BACjH,EAAAA,sBAAA,CAEM,KAAA,EAAA;AAAA,cAFD,KAAM,EAAA,4BAAA;AAAA,cAA6B,KAAM,EAAA,GAAA;AAAA,cAAI,MAAO,EAAA,GAAA;AAAA,cAAI,OAAQ,EAAA,SAAA;AAAA,cAAU,IAAK,EAAA,MAAA;AAAA;cACnFC,uBAAmP,MAAA,EAAA;AAAA,gBAA7O,CAAE,EAAA,2NAAA;AAAA,gBAA4N,IAAK,EAAA,OAAA;AAAA;;;UAGhO,WAAA,CAAW,SAAA,CAAK,OAAA,CAAI,KAAC,8BAAhC,EAAAD,sBAAA,CAiBM,KAAA,EAAA;AAAA;YAjBuC,KAAM,EAAA,kBAAA;AAAA;4BAClD,EAAAA,sBAAA,CAcM,KAAA,EAAA;AAAA,cAdD,KAAM,EAAA,4BAAA;AAAA,cAA6B,KAAM,EAAA,IAAA;AAAA,cAAK,MAAO,EAAA,IAAA;AAAA,cAAK,OAAQ,EAAA,WAAA;AAAA,cAAY,IAAK,EAAA,MAAA;AAAA;cACvFC,uBAMI,GAAA,EAAA;AAAA,gBAND,WAAU,EAAA,yCAAA;AAAA,gBAA0C,uBAAsB,EAAA,MAAA;AAAA;gBAC5EA,sBAII,CAAA,GAAA,EAAA,EAJD,SAAA,EAAU,iEAA+D,EAAA;AAAA,kCAC3E,EAAAD,sBAAA,CAEgB,eAAA,EAAA;AAAA,oBAFD,CAAE,EAAA,UAAA;AAAA,oBAAW,CAAE,EAAA,UAAA;AAAA,oBAAW,KAAM,EAAA,SAAA;AAAA,oBAAU,MAAO,EAAA,SAAA;AAAA;oBAC/DC,uBAAoO,KAAA,EAAA;AAAA,sBAA/N,KAAM,EAAA,8BAAA;AAAA,sBAA+B,KAAA,EAAA,EAAmL,YAAA,EAAA,0HAAA,EAAA,UAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,GAAA,EAAA;AAAA;;;;cAIhOA,uBAAw4B,MAAA,EAAA;AAAA,gBAAl4B,WAAU,EAAA,SAAA;AAAA,gBAAU,WAAU,EAAA,SAAA;AAAA,gBAAU,CAAE,EAAA,mbAAA;AAAA,gBAAob,0BAAyB,EAAA,wYAAA;AAAA;cAC7fA,sBAAA,CAIO,QAAA,IAAA,EAAA;AAAA,gBAHNA,sBAEW,CAAA,UAAA,EAAA,EAFD,EAAA,EAAG,qCAAmC,EAAA;AAAA,kBAC/CA,uBAAse,MAAA,EAAA;AAAA,oBAAhe,WAAU,EAAA,SAAA;AAAA,oBAAU,WAAU,EAAA,SAAA;AAAA,oBAAU,CAAE,EAAA,mbAAA;AAAA;;;;YAInDA,sBAAA;AAAA,cAA6C,GAAA;AAAA,gBAA1C,OAAM,gBAAoB,EAAA;AAAA,cAAAC,mBAAA,CAAA,QAAA,CAAA,KAAQ,CAAG,GAAA,GAAA;AAAA,cAAC,CAAA;AAAA;AAAA,aAAA;AAAA;UAE/B,QAAA,IAAK,CAAA,WAAA,qBAAhBF,uBAMM,KAAA,EAAA;AAAA;YANuB,KAAM,EAAA,oCAAA;AAAA,YAAsC,OAAO,EAAA,WAAA;AAAA;4BAC/E,EAAAA,sBAAA,CAGM,KAAA,EAAA;AAAA,cAHD,KAAM,EAAA,4BAAA;AAAA,cAA6B,KAAM,EAAA,IAAA;AAAA,cAAK,MAAO,EAAA,IAAA;AAAA,cAAK,OAAQ,EAAA,WAAA;AAAA,cAAY,IAAK,EAAA,MAAA;AAAA;cACvFC,uBAA+T,MAAA,EAAA;AAAA,gBAAzT,CAAE,EAAA,iOAAA;AAAA,gBAAkO,MAAO,EAAA,SAAA;AAAA,gBAAU,cAAa,EAAA,KAAA;AAAA,gBAAM,gBAAe,EAAA,OAAA;AAAA,gBAAQ,iBAAgB,EAAA,OAAA;AAAA;cACrTA,uBAA0H,MAAA,EAAA;AAAA,gBAApH,CAAE,EAAA,4BAAA;AAAA,gBAA6B,MAAO,EAAA,SAAA;AAAA,gBAAU,cAAa,EAAA,KAAA;AAAA,gBAAM,gBAAe,EAAA,OAAA;AAAA,gBAAQ,iBAAgB,EAAA,OAAA;AAAA;;YAEjHA,uBAAgC,GAA7B,EAAA,EAAA,KAAM,EAAA,gBAAA,IAAiB,cAAE,CAAA;AAAA;;2BAG9BA,uBAIM,KAAA,EAAA;AAAA,UAJoB,KAAM,EAAA,qBAAA;AAAA,UAAuB,gBAAO,KAAA,WAAA,CAAW,KAAA,GAAA,KAAA;AAAA;UACxEA,sBAEM,CAAA,KAAA,EAAA,EAFD,KAAA,EAAM,yBAAuB,EAAA;AAAA,YACjCA,uBAA0D,KAAA,EAAA;AAAA,cAApD,GAAK,EAAA,CAAA,EAAA,GAAA,OAAA,CAAI,IAAC,CAAA,MAAA,KAAL,IAAW,GAAA,EAAA,GAAA,iBAAA;AAAA,cAAuB,GAAI,EAAA,0BAAA;AAAA;;;oBAFtC,EAAA,WAAA,CAAW,KAAA,CAAA;AAAA;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"ImageFile.vue2.js","sources":["../../../../../../packages/components/touchchat/component/ImageFile.vue"],"sourcesContent":["<template>\r\n\t<div class=\"image-file\">\r\n\t\t<div class=\"image-file-content\">\r\n\t\t\t<img :src=\"item.base64 ?? '../img/link.png'\" alt=\"图片\" @click=\"showPreview = true\" />\r\n\t\t\t<div v-if=\"!(showLoading || item.uploadError) && hasColse\" class=\"image-file-colse\" @click=\"emits('colse', item.id)\">\r\n\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"5\" height=\"6\" viewBox=\"0 0 5 6\" fill=\"none\">\r\n\t\t\t\t\t<path d=\"M4.42492 5.31718L4.97489 4.76721L3.05002 2.84233L4.97493 0.917422L4.42496 0.36745L2.50005 2.29236L0.575118 0.367432L0.0251465 0.917403L1.95008 2.84233L0.0251875 4.76722L0.575159 5.3172L2.50005 3.39231L4.42492 5.31718Z\" fill=\"white\" />\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t\t<div v-if=\"showLoading && !item.uploadError\" class=\"img-file-loading\">\r\n\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\">\r\n\t\t\t\t\t<g clip-path=\"url(#paint0_angular_2715_440_clip_path)\" data-figma-skip-parse=\"true\">\r\n\t\t\t\t\t\t<g transform=\"matrix(0.0100142 0.00182077 -0.00182077 0.0100142 12 12.8423)\">\r\n\t\t\t\t\t\t\t<foreignObject x=\"-1427.97\" y=\"-1427.97\" width=\"2855.94\" height=\"2855.94\">\r\n\t\t\t\t\t\t\t\t<div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"background: conic-gradient(from 90deg, rgba(255, 255, 255, 1) 0deg, rgba(255, 255, 255, 0) 84.375deg, rgba(255, 255, 255, 1) 360deg); height: 100%; width: 100%; opacity: 1\"></div>\r\n\t\t\t\t\t\t\t</foreignObject>\r\n\t\t\t\t\t\t</g>\r\n\t\t\t\t\t</g>\r\n\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 5.54499C7.96981 5.54499 4.7027 8.8121 4.7027 12.8423C4.7027 16.8725 7.96981 20.1396 12 20.1396C12.7463 20.1396 13.3514 20.7446 13.3514 21.4909C13.3514 22.2373 12.7463 22.8423 12 22.8423C6.47715 22.8423 2 18.3651 2 12.8423C2 7.31944 6.47715 2.84229 12 2.84229C17.5228 2.84229 22 7.31944 22 12.8423C22 13.5886 21.395 14.1936 20.6486 14.1936C19.9023 14.1936 19.2973 13.5886 19.2973 12.8423C19.2973 8.8121 16.0302 5.54499 12 5.54499Z\" data-figma-gradient-fill='{\"type\":\"GRADIENT_ANGULAR\",\"stops\":[{\"color\":{\"r\":1.0,\"g\":1.0,\"b\":1.0,\"a\":0.0},\"position\":0.2343750},{\"color\":{\"r\":1.0,\"g\":1.0,\"b\":1.0,\"a\":1.0},\"position\":1.0}],\"stopsVar\":[],\"transform\":{\"m00\":20.028446197509766,\"m01\":-3.6415407657623291,\"m02\":3.8065481185913086,\"m10\":3.6415374279022217,\"m11\":20.028463363647461,\"m12\":1.0072842836380005},\"opacity\":1.0,\"blendMode\":\"NORMAL\",\"visible\":true}' />\r\n\t\t\t\t\t<defs>\r\n\t\t\t\t\t\t<clipPath id=\"paint0_angular_2715_440_clip_path\">\r\n\t\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 5.54499C7.96981 5.54499 4.7027 8.8121 4.7027 12.8423C4.7027 16.8725 7.96981 20.1396 12 20.1396C12.7463 20.1396 13.3514 20.7446 13.3514 21.4909C13.3514 22.2373 12.7463 22.8423 12 22.8423C6.47715 22.8423 2 18.3651 2 12.8423C2 7.31944 6.47715 2.84229 12 2.84229C17.5228 2.84229 22 7.31944 22 12.8423C22 13.5886 21.395 14.1936 20.6486 14.1936C19.9023 14.1936 19.2973 13.5886 19.2973 12.8423C19.2973 8.8121 16.0302 5.54499 12 5.54499Z\" />\r\n\t\t\t\t\t\t</clipPath>\r\n\t\t\t\t\t</defs>\r\n\t\t\t\t</svg>\r\n\t\t\t\t<p class=\"img-file-title\">{{ progress }}%</p>\r\n\t\t\t</div>\r\n\t\t\t<div v-if=\"item.uploadError\" class=\"img-file-loading img-error-loading\" @click=\"handleReset\">\r\n\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"13\" viewBox=\"0 0 14 13\" fill=\"none\">\r\n\t\t\t\t\t<path d=\"M10.8891 10.7314C9.89379 11.7267 8.51879 12.3423 7 12.3423C3.96244 12.3423 1.5 9.87984 1.5 6.84229C1.5 3.80473 3.96244 1.34229 7 1.34229C8.51879 1.34229 9.89379 1.95789 10.8891 2.9532C11.3957 3.45982 12.5 4.7034 12.5 4.7034\" stroke=\"#F93920\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n\t\t\t\t\t<path d=\"M12.5 1.95374V4.70374H9.75\" stroke=\"#F93920\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n\t\t\t\t</svg>\r\n\t\t\t\t<p class=\"img-file-error\">错误</p>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div v-show=\"showPreview\" class=\"image-preview-modal\" @click=\"showPreview = false\">\r\n\t\t\t<div class=\"image-preview-content\">\r\n\t\t\t\t<img :src=\"item.base64 ?? '../img/link.png'\" alt=\"预览图片\" />\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n<script setup lang=\"ts\">\r\nimport { ref, watch, computed, inject } from 'vue'\r\nimport type { FileItem } from '../src/AiChat/Chat/types'\r\n\r\nconst props = defineProps<{\r\n\titem: FileItem\r\n\tindex: number\r\n\thasColse: boolean\r\n}>()\r\nconst emits = defineEmits(['colse'])\r\nconst showLoading = ref(false)\r\nconst progress = computed(() => {\r\n\treturn props.item.uploadProgress ?? 0\r\n})\r\nconst showPreview = ref(false)\r\n\r\nconst uploadFile = inject<(index: number, type?: string) => void>('uploadFile', () => {\r\n\tconsole.warn('未提供bottom函数')\r\n})\r\n\r\nconst handleReset = () => {\r\n\tuploadFile(props.index, 'IMAGE')\r\n}\r\n\r\nwatch(progress, newVal => {\r\n\tif (newVal === 100 || newVal === 0) {\r\n\t\tshowLoading.value = false\r\n\t} else {\r\n\t\tshowLoading.value = true\r\n\t}\r\n})\r\n</script>\r\n"],"names":["ref","computed","inject","watch","_createElementBlock","_createElementVNode","_toDisplayString"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageView.vue2.js","sources":["../../../../../../packages/components/touchchat/component/ImageView.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'ImageView' });\n</script>\n<template>\n <div class=\"image-view\">\n <img\n :src=\"aiAvatarPath\"\n alt=\"图片展示\"\n class=\"image-content\"\n :title=\"item.fileName ?? '图片预览'\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n// import type { ChatMessage } from '../src/AiChat/TouchChat.vue';\nimport { ref } from 'vue';\nimport aiAvatarBase from '../img/bgimage.png';\nconst aiAvatarPath = ref(aiAvatarBase);\ninterface ChatMessage {\n chatId?: string;\n user: string;\n type: string;\n content: string;\n isChating?: boolean;\n thinkContent?: string;\n reasoningContent?: string;\n isLiked?: boolean;\n isDisliked?: boolean;\n isEditing?: boolean;\n editContent?: string;\n componentName?: string;\n thinkStatus?: 'thinking' | 'completed' | 'stopped';\n thinkStartTime?: number;\n thinkTime?: number;\n [key: string]: unknown;\n}\n\n;\n\nconst props = defineProps<{\n item: ChatMessage & { imageUrl?: string; fileName?: string };\n index: number;\n}>();\nconsole.log(props);\n</script>\n\n<!-- <style scoped lang=\"less\">\n@import './style/ImageView.less';\n</style> -->\n"],"names":["DO_defineComponent","ref","aiAvatarBase","_createElementBlock","_createElementVNode"],"mappings":";;;;;;;AAEA,MAAA,WAA6B,GAAAA,mBAAA,CAAmB,EAAE,IAAA,EAAM,aAAa,CAAA,CAAA;;;;;;;;AAiBrE,IAAM,MAAA,YAAA,GAAeC,QAAIC,eAAY,CAAA,CAAA;AAsBrC,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAId,IAAA,OAAA,CAAQ,IAAI,KAAK,CAAA,CAAA;;;4BAxCf,EAAAC,sBAAA,CAOM,OAAA,EAPD,KAAA,EAAM,cAAY,EAAA;AAAA,QACrBC,uBAKE,KAAA,EAAA;AAAA,UAJC,KAAK,YAAY,CAAA,KAAA;AAAA,UAClB,GAAI,EAAA,0BAAA;AAAA,UACJ,KAAM,EAAA,eAAA;AAAA,UACL,KAAO,EAAA,CAAA,EAAA,GAAA,OAAA,CAAI,IAAC,CAAA,QAAA,KAAL,IAAa,GAAA,EAAA,GAAA,0BAAA;AAAA;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"ImageView.vue2.js","sources":["../../../../../../packages/components/touchchat/component/ImageView.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'ImageView' });\n</script>\n<template>\r\n <div class=\"image-view\">\r\n <img\r\n :src=\"aiAvatarPath\"\r\n alt=\"图片展示\"\r\n class=\"image-content\"\r\n :title=\"item.fileName ?? '图片预览'\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\n// import type { ChatMessage } from '../src/AiChat/TouchChat.vue';\r\nimport { ref } from 'vue';\r\nimport aiAvatarBase from '../img/bgimage.png';\r\nconst aiAvatarPath = ref(aiAvatarBase);\r\ninterface ChatMessage {\r\n chatId?: string;\r\n user: string;\r\n type: string;\r\n content: string;\r\n isChating?: boolean;\r\n thinkContent?: string;\r\n reasoningContent?: string;\r\n isLiked?: boolean;\r\n isDisliked?: boolean;\r\n isEditing?: boolean;\r\n editContent?: string;\r\n componentName?: string;\r\n thinkStatus?: 'thinking' | 'completed' | 'stopped';\r\n thinkStartTime?: number;\r\n thinkTime?: number;\r\n [key: string]: unknown;\r\n}\r\n\r\n;\r\n\r\nconst props = defineProps<{\r\n item: ChatMessage & { imageUrl?: string; fileName?: string };\r\n index: number;\r\n}>();\r\nconsole.log(props);\r\n</script>\r\n\r\n<!-- <style scoped lang=\"less\">\r\n@import './style/ImageView.less';\r\n</style> -->\r\n"],"names":["DO_defineComponent","ref","aiAvatarBase","_createElementBlock","_createElementVNode"],"mappings":";;;;;;;AAEA,MAAA,WAA6B,GAAAA,mBAAA,CAAmB,EAAE,IAAA,EAAM,aAAa,CAAA,CAAA;;;;;;;;AAiBrE,IAAM,MAAA,YAAA,GAAeC,QAAIC,eAAY,CAAA,CAAA;AAsBrC,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAId,IAAA,OAAA,CAAQ,IAAI,KAAK,CAAA,CAAA;;;4BAxCf,EAAAC,sBAAA,CAOM,OAAA,EAPD,KAAA,EAAM,cAAY,EAAA;AAAA,QACrBC,uBAKE,KAAA,EAAA;AAAA,UAJC,KAAK,YAAY,CAAA,KAAA;AAAA,UAClB,GAAI,EAAA,0BAAA;AAAA,UACJ,KAAM,EAAA,eAAA;AAAA,UACL,KAAO,EAAA,CAAA,EAAA,GAAA,OAAA,CAAI,IAAC,CAAA,QAAA,KAAL,IAAa,GAAA,EAAA,GAAA,0BAAA;AAAA;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkView.vue2.js","sources":["../../../../../../packages/components/touchchat/component/LinkView.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'LinkView' });\n</script>\n<template>\n <div class=\"link-container\">\n <!-- 链接地址 -->\n <div class=\"link-url\">\n <svg\n class=\"link-icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"11\"\n height=\"12\"\n viewBox=\"0 0 11 12\"\n fill=\"none\"\n >\n <path\n d=\"M9.07789 4.32533L7.22254 6.18221L8.04713 7.00749L9.90248 5.1506C10.9271 4.12514 11.1133 2.45825 9.95499 1.35208C8.83011 0.277812 7.22286 0.37915 6.17891 1.42396L4.32357 3.28084L5.14816 4.10612L7.00351 2.24924C7.62938 1.62285 8.51321 1.58839 9.14993 2.19646C9.75325 2.77264 9.72309 3.67959 9.07789 4.32533Z\"\n fill=\"#0077FA\"\n />\n <path\n d=\"M1.92162 7.35876L3.77697 5.50187L2.95238 4.6766L1.09703 6.53348C0.0724121 7.55894 -0.113751 9.22583 1.04452 10.332C2.1694 11.4063 3.77665 11.3049 4.8206 10.2601L6.67595 8.40324L5.85135 7.57797L3.996 9.43485C3.37013 10.0612 2.4863 10.0957 1.84958 9.48762C1.24627 8.91144 1.27642 8.00449 1.92162 7.35876Z\"\n fill=\"#0077FA\"\n />\n <path\n d=\"M3.33825 7.18009L6.83672 3.67873L7.66131 4.50401L4.16285 8.00537L3.33825 7.18009Z\"\n fill=\"#0077FA\"\n />\n </svg>\n <a :href=\"item.url\" target=\"_blank\" class=\"url-text\">{{\n item.url || 'https://mp.weixin.qq.com'\n }}</a>\n </div>\n <!-- 内容区域 -->\n <div class=\"link-content\">\n <img src=\"../img/link.png\" alt=\"链接预览图\" class=\"content-image\" />\n <div class=\"info-content\">\n <h3 class=\"link-title\">\n {{ item.title || '标题文字标题文字标题文字标题文字标题文字标题文字' }}\n </h3>\n <p class=\"link-desc\">{{ item.content || '内容文字内容文字内容文字内容文字' }}</p>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n// import type { ChatMessage } from '../src/AiChat/TouchChat.vue';\ninterface ChatMessage {\n chatId?: string;\n user: string;\n type: string;\n content: string;\n isChating?: boolean;\n thinkContent?: string;\n reasoningContent?: string;\n isLiked?: boolean;\n isDisliked?: boolean;\n isEditing?: boolean;\n editContent?: string;\n componentName?: string;\n thinkStatus?: 'thinking' | 'completed' | 'stopped';\n thinkStartTime?: number;\n thinkTime?: number;\n [key: string]: unknown;\n}\n\n;\n\nconst props = defineProps<{\n item: ChatMessage & { url?: string; title?: string; content?: string };\n index: number;\n}>();\nconsole.log(props);\n</script>\n\n<!-- <style scoped lang=\"less\">\n@import './style/LinkView.less';\n</style> -->\n"],"names":["DO_defineComponent","_createElementBlock","_createCommentVNode","_createElementVNode","_toDisplayString","_imports_0"],"mappings":";;;;;;;AAEA,MAAA,WAA6B,GAAAA,mBAAA,CAAmB,EAAE,IAAA,EAAM,YAAY,CAAA,CAAA;;;;;;;;AAmEpE,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAId,IAAA,OAAA,CAAQ,IAAI,KAAK,CAAA,CAAA;;4BApEf,EAAAC,sBAAA,CAsCM,OAAA,EAtCD,KAAA,EAAM,kBAAgB,EAAA;AAAA,QACzBC,uBAAa,4BAAA,CAAA;AAAA,QACbC,sBAyBM,CAAA,KAAA,EAAA,EAzBD,KAAA,EAAM,YAAU,EAAA;AAAA,0BACnB,EAAAF,sBAAA,CAoBM,KAAA,EAAA;AAAA,YAnBJ,KAAM,EAAA,WAAA;AAAA,YACN,KAAM,EAAA,4BAAA;AAAA,YACN,KAAM,EAAA,IAAA;AAAA,YACN,MAAO,EAAA,IAAA;AAAA,YACP,OAAQ,EAAA,WAAA;AAAA,YACR,IAAK,EAAA,MAAA;AAAA;YAELE,uBAGE,MAAA,EAAA;AAAA,cAFA,CAAE,EAAA,mTAAA;AAAA,cACF,IAAK,EAAA,SAAA;AAAA;YAEPA,uBAGE,MAAA,EAAA;AAAA,cAFA,CAAE,EAAA,gTAAA;AAAA,cACF,IAAK,EAAA,SAAA;AAAA;YAEPA,uBAGE,MAAA,EAAA;AAAA,cAFA,CAAE,EAAA,mFAAA;AAAA,cACF,IAAK,EAAA,SAAA;AAAA;;UAGTA,uBAEM,GAAA,EAAA;AAAA,YAFF,IAAA,EAAM,QAAI,IAAC,CAAA,GAAA;AAAA,YAAK,MAAO,EAAA,QAAA;AAAA,YAAS,KAAM,EAAA,UAAA;AAAA,WACxC,EAAAC,mBAAA,CAAA,OAAA,CAAA,IAAK,CAAA,GAAA,IAAG,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA;AAAA;QAGZF,uBAAa,4BAAA,CAAA;AAAA,QACbC,sBAQM,CAAA,KAAA,EAAA,EARD,KAAA,EAAM,gBAAc,EAAA;AAAA,UACvBA,uBAA+D,KAAA,EAAA;AAAA,YAA1D,GAAA,EAAAE,YAAA;AAAA,YAAsB,GAAI,EAAA,gCAAA;AAAA,YAAQ,KAAM,EAAA,eAAA;AAAA;UAC7CF,sBAKM,CAAA,KAAA,EAAA,EALD,KAAA,EAAM,gBAAc,EAAA;AAAA,YACvBA,sBAAA;AAAA,cAEK,IAAA;AAAA,gBAFD,OAAM,YACL,EAAA;AAAA,cAAAC,mBAAA,CAAA,OAAA,CAAA,IAAK,CAAA,KAAA,IAAK,kJAAA,CAAA;AAAA,cAAA,CAAA;AAAA;AAAA,aAAA;AAAA,YAEfD,sBAAA;AAAA,cAAiE,GAAA;AAAA,gBAA9D,OAAM,WAAe,EAAA;AAAA,cAAAC,mBAAA,CAAA,OAAA,CAAA,IAAK,CAAA,OAAA,IAAO,kGAAA,CAAA;AAAA,cAAA,CAAA;AAAA;AAAA,aAAA;AAAA;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"LinkView.vue2.js","sources":["../../../../../../packages/components/touchchat/component/LinkView.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'LinkView' });\n</script>\n<template>\r\n <div class=\"link-container\">\r\n <!-- 链接地址 -->\r\n <div class=\"link-url\">\r\n <svg\r\n class=\"link-icon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"11\"\r\n height=\"12\"\r\n viewBox=\"0 0 11 12\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M9.07789 4.32533L7.22254 6.18221L8.04713 7.00749L9.90248 5.1506C10.9271 4.12514 11.1133 2.45825 9.95499 1.35208C8.83011 0.277812 7.22286 0.37915 6.17891 1.42396L4.32357 3.28084L5.14816 4.10612L7.00351 2.24924C7.62938 1.62285 8.51321 1.58839 9.14993 2.19646C9.75325 2.77264 9.72309 3.67959 9.07789 4.32533Z\"\r\n fill=\"#0077FA\"\r\n />\r\n <path\r\n d=\"M1.92162 7.35876L3.77697 5.50187L2.95238 4.6766L1.09703 6.53348C0.0724121 7.55894 -0.113751 9.22583 1.04452 10.332C2.1694 11.4063 3.77665 11.3049 4.8206 10.2601L6.67595 8.40324L5.85135 7.57797L3.996 9.43485C3.37013 10.0612 2.4863 10.0957 1.84958 9.48762C1.24627 8.91144 1.27642 8.00449 1.92162 7.35876Z\"\r\n fill=\"#0077FA\"\r\n />\r\n <path\r\n d=\"M3.33825 7.18009L6.83672 3.67873L7.66131 4.50401L4.16285 8.00537L3.33825 7.18009Z\"\r\n fill=\"#0077FA\"\r\n />\r\n </svg>\r\n <a :href=\"item.url\" target=\"_blank\" class=\"url-text\">{{\r\n item.url || 'https://mp.weixin.qq.com'\r\n }}</a>\r\n </div>\r\n <!-- 内容区域 -->\r\n <div class=\"link-content\">\r\n <img src=\"../img/link.png\" alt=\"链接预览图\" class=\"content-image\" />\r\n <div class=\"info-content\">\r\n <h3 class=\"link-title\">\r\n {{ item.title || '标题文字标题文字标题文字标题文字标题文字标题文字' }}\r\n </h3>\r\n <p class=\"link-desc\">{{ item.content || '内容文字内容文字内容文字内容文字' }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\n// import type { ChatMessage } from '../src/AiChat/TouchChat.vue';\r\ninterface ChatMessage {\r\n chatId?: string;\r\n user: string;\r\n type: string;\r\n content: string;\r\n isChating?: boolean;\r\n thinkContent?: string;\r\n reasoningContent?: string;\r\n isLiked?: boolean;\r\n isDisliked?: boolean;\r\n isEditing?: boolean;\r\n editContent?: string;\r\n componentName?: string;\r\n thinkStatus?: 'thinking' | 'completed' | 'stopped';\r\n thinkStartTime?: number;\r\n thinkTime?: number;\r\n [key: string]: unknown;\r\n}\r\n\r\n;\r\n\r\nconst props = defineProps<{\r\n item: ChatMessage & { url?: string; title?: string; content?: string };\r\n index: number;\r\n}>();\r\nconsole.log(props);\r\n</script>\r\n\r\n<!-- <style scoped lang=\"less\">\r\n@import './style/LinkView.less';\r\n</style> -->\r\n"],"names":["DO_defineComponent","_createElementBlock","_createCommentVNode","_createElementVNode","_toDisplayString","_imports_0"],"mappings":";;;;;;;AAEA,MAAA,WAA6B,GAAAA,mBAAA,CAAmB,EAAE,IAAA,EAAM,YAAY,CAAA,CAAA;;;;;;;;AAmEpE,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAId,IAAA,OAAA,CAAQ,IAAI,KAAK,CAAA,CAAA;;4BApEf,EAAAC,sBAAA,CAsCM,OAAA,EAtCD,KAAA,EAAM,kBAAgB,EAAA;AAAA,QACzBC,uBAAa,4BAAA,CAAA;AAAA,QACbC,sBAyBM,CAAA,KAAA,EAAA,EAzBD,KAAA,EAAM,YAAU,EAAA;AAAA,0BACnB,EAAAF,sBAAA,CAoBM,KAAA,EAAA;AAAA,YAnBJ,KAAM,EAAA,WAAA;AAAA,YACN,KAAM,EAAA,4BAAA;AAAA,YACN,KAAM,EAAA,IAAA;AAAA,YACN,MAAO,EAAA,IAAA;AAAA,YACP,OAAQ,EAAA,WAAA;AAAA,YACR,IAAK,EAAA,MAAA;AAAA;YAELE,uBAGE,MAAA,EAAA;AAAA,cAFA,CAAE,EAAA,mTAAA;AAAA,cACF,IAAK,EAAA,SAAA;AAAA;YAEPA,uBAGE,MAAA,EAAA;AAAA,cAFA,CAAE,EAAA,gTAAA;AAAA,cACF,IAAK,EAAA,SAAA;AAAA;YAEPA,uBAGE,MAAA,EAAA;AAAA,cAFA,CAAE,EAAA,mFAAA;AAAA,cACF,IAAK,EAAA,SAAA;AAAA;;UAGTA,uBAEM,GAAA,EAAA;AAAA,YAFF,IAAA,EAAM,QAAI,IAAC,CAAA,GAAA;AAAA,YAAK,MAAO,EAAA,QAAA;AAAA,YAAS,KAAM,EAAA,UAAA;AAAA,WACxC,EAAAC,mBAAA,CAAA,OAAA,CAAA,IAAK,CAAA,GAAA,IAAG,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA;AAAA;QAGZF,uBAAa,4BAAA,CAAA;AAAA,QACbC,sBAQM,CAAA,KAAA,EAAA,EARD,KAAA,EAAM,gBAAc,EAAA;AAAA,UACvBA,uBAA+D,KAAA,EAAA;AAAA,YAA1D,GAAA,EAAAE,YAAA;AAAA,YAAsB,GAAI,EAAA,gCAAA;AAAA,YAAQ,KAAM,EAAA,eAAA;AAAA;UAC7CF,sBAKM,CAAA,KAAA,EAAA,EALD,KAAA,EAAM,gBAAc,EAAA;AAAA,YACvBA,sBAAA;AAAA,cAEK,IAAA;AAAA,gBAFD,OAAM,YACL,EAAA;AAAA,cAAAC,mBAAA,CAAA,OAAA,CAAA,IAAK,CAAA,KAAA,IAAK,kJAAA,CAAA;AAAA,cAAA,CAAA;AAAA;AAAA,aAAA;AAAA,YAEfD,sBAAA;AAAA,cAAiE,GAAA;AAAA,gBAA9D,OAAM,WAAe,EAAA;AAAA,cAAAC,mBAAA,CAAA,OAAA,CAAA,IAAK,CAAA,OAAA,IAAO,kGAAA,CAAA;AAAA,cAAA,CAAA;AAAA;AAAA,aAAA;AAAA;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkLayer.vue2.js","sources":["../../../../../../packages/components/touchchat/component/MarkLayer.vue"],"sourcesContent":["<template>\n\t<div v-show=\"showMarkLaryer\" class=\"touchchat-edit-mark\" @click=\"emit('colseMarkLayer')\">\n\t\t<div>\n\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n\t\t\t\t<path d=\"M12.004 20.5002L11.9998 11.5002\" stroke=\"#1D2129\" stroke-width=\"1.8\" stroke-linecap=\"square\" stroke-linejoin=\"round\" />\n\t\t\t\t<path d=\"M20.2589 17.1583C21.9022 16.0027 22.6068 13.9153 22 12.0002C21.3933 10.0851 19.5352 9.03595 17.5264 9.0375H16.3659C15.6072 6.0809 13.1041 3.89811 10.0717 3.54885C7.03935 3.19959 4.1056 4.75615 2.69465 7.4629C1.2837 10.1696 1.68772 13.4661 3.71057 15.752\" stroke=\"#1D2129\" stroke-width=\"1.8\" stroke-linejoin=\"round\" />\n\t\t\t\t<path d=\"M15.1819 13.8182L11.9999 10.6362L8.81787 13.8182\" stroke=\"#1D2129\" stroke-width=\"1.8\" stroke-linecap=\"square\" stroke-linejoin=\"round\" />\n\t\t\t</svg>\n\t\t\t<p class=\"touchchat-edit-title\">释放鼠标上传</p>\n\t\t\t<p class=\"touchchat-edit-text\">文件数量: 最多 10 个,文件类型: pdf、txt、csv、docx、doc、xlsx、xls、 pptx、 ppt、md、mobi、epub、png、jpeg、jpg</p>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nconst emit = defineEmits(['colseMarkLayer'])\ndefineProps<{\n\tshowMarkLaryer: boolean\n}>()\n</script>\n"],"names":["_createElementBlock","_createElementVNode"],"mappings":";;;;;;;;;;;;;AAeA,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;;gDAdZ,EAAAA,sBAAA,CAUM,KAAA,EAAA;AAAA,QAVuB,KAAM,EAAA,qBAAA;AAAA,QAAuB,gBAAO,KAAA,IAAA,CAAI,gBAAA,CAAA;AAAA;QACpEC,sBAAA,CAQM,OAAA,IAAA,EAAA;AAAA,0BAPL,EAAAD,sBAAA,CAIM,KAAA,EAAA;AAAA,YAJD,KAAM,EAAA,4BAAA;AAAA,YAA6B,KAAM,EAAA,IAAA;AAAA,YAAK,MAAO,EAAA,IAAA;AAAA,YAAK,OAAQ,EAAA,WAAA;AAAA,YAAY,IAAK,EAAA,MAAA;AAAA;YACvFC,uBAAgI,MAAA,EAAA;AAAA,cAA1H,CAAE,EAAA,iCAAA;AAAA,cAAkC,MAAO,EAAA,SAAA;AAAA,cAAU,cAAa,EAAA,KAAA;AAAA,cAAM,gBAAe,EAAA,QAAA;AAAA,cAAS,iBAAgB,EAAA,OAAA;AAAA;YACtHA,uBAAsU,MAAA,EAAA;AAAA,cAAhU,CAAE,EAAA,+PAAA;AAAA,cAAgQ,MAAO,EAAA,SAAA;AAAA,cAAU,cAAa,EAAA,KAAA;AAAA,cAAM,iBAAgB,EAAA,OAAA;AAAA;YAC5TA,uBAAiJ,MAAA,EAAA;AAAA,cAA3I,CAAE,EAAA,kDAAA;AAAA,cAAmD,MAAO,EAAA,SAAA;AAAA,cAAU,cAAa,EAAA,KAAA;AAAA,cAAM,gBAAe,EAAA,QAAA;AAAA,cAAS,iBAAgB,EAAA,OAAA;AAAA;;UAExIA,uBAA0C,GAAvC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,sCAAM,CAAA;AAAA,UACtCA,uBAAyH,GAAtH,EAAA,EAAA,KAAM,EAAA,qBAAA,IAAsB,qNAAsF,CAAA;AAAA;;kBAR1G,EAAA,OAAA,CAAc,cAAA,CAAA;AAAA;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"MarkLayer.vue2.js","sources":["../../../../../../packages/components/touchchat/component/MarkLayer.vue"],"sourcesContent":["<template>\r\n\t<div v-show=\"showMarkLaryer\" class=\"touchchat-edit-mark\" @click=\"emit('colseMarkLayer')\">\r\n\t\t<div>\r\n\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n\t\t\t\t<path d=\"M12.004 20.5002L11.9998 11.5002\" stroke=\"#1D2129\" stroke-width=\"1.8\" stroke-linecap=\"square\" stroke-linejoin=\"round\" />\r\n\t\t\t\t<path d=\"M20.2589 17.1583C21.9022 16.0027 22.6068 13.9153 22 12.0002C21.3933 10.0851 19.5352 9.03595 17.5264 9.0375H16.3659C15.6072 6.0809 13.1041 3.89811 10.0717 3.54885C7.03935 3.19959 4.1056 4.75615 2.69465 7.4629C1.2837 10.1696 1.68772 13.4661 3.71057 15.752\" stroke=\"#1D2129\" stroke-width=\"1.8\" stroke-linejoin=\"round\" />\r\n\t\t\t\t<path d=\"M15.1819 13.8182L11.9999 10.6362L8.81787 13.8182\" stroke=\"#1D2129\" stroke-width=\"1.8\" stroke-linecap=\"square\" stroke-linejoin=\"round\" />\r\n\t\t\t</svg>\r\n\t\t\t<p class=\"touchchat-edit-title\">释放鼠标上传</p>\r\n\t\t\t<p class=\"touchchat-edit-text\">文件数量: 最多 10 个,文件类型: pdf、txt、csv、docx、doc、xlsx、xls、 pptx、 ppt、md、mobi、epub、png、jpeg、jpg</p>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nconst emit = defineEmits(['colseMarkLayer'])\r\ndefineProps<{\r\n\tshowMarkLaryer: boolean\r\n}>()\r\n</script>\r\n"],"names":["_createElementBlock","_createElementVNode"],"mappings":";;;;;;;;;;;;;AAeA,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;;gDAdZ,EAAAA,sBAAA,CAUM,KAAA,EAAA;AAAA,QAVuB,KAAM,EAAA,qBAAA;AAAA,QAAuB,gBAAO,KAAA,IAAA,CAAI,gBAAA,CAAA;AAAA;QACpEC,sBAAA,CAQM,OAAA,IAAA,EAAA;AAAA,0BAPL,EAAAD,sBAAA,CAIM,KAAA,EAAA;AAAA,YAJD,KAAM,EAAA,4BAAA;AAAA,YAA6B,KAAM,EAAA,IAAA;AAAA,YAAK,MAAO,EAAA,IAAA;AAAA,YAAK,OAAQ,EAAA,WAAA;AAAA,YAAY,IAAK,EAAA,MAAA;AAAA;YACvFC,uBAAgI,MAAA,EAAA;AAAA,cAA1H,CAAE,EAAA,iCAAA;AAAA,cAAkC,MAAO,EAAA,SAAA;AAAA,cAAU,cAAa,EAAA,KAAA;AAAA,cAAM,gBAAe,EAAA,QAAA;AAAA,cAAS,iBAAgB,EAAA,OAAA;AAAA;YACtHA,uBAAsU,MAAA,EAAA;AAAA,cAAhU,CAAE,EAAA,+PAAA;AAAA,cAAgQ,MAAO,EAAA,SAAA;AAAA,cAAU,cAAa,EAAA,KAAA;AAAA,cAAM,iBAAgB,EAAA,OAAA;AAAA;YAC5TA,uBAAiJ,MAAA,EAAA;AAAA,cAA3I,CAAE,EAAA,kDAAA;AAAA,cAAmD,MAAO,EAAA,SAAA;AAAA,cAAU,cAAa,EAAA,KAAA;AAAA,cAAM,gBAAe,EAAA,QAAA;AAAA,cAAS,iBAAgB,EAAA,OAAA;AAAA;;UAExIA,uBAA0C,GAAvC,EAAA,EAAA,KAAM,EAAA,sBAAA,IAAuB,sCAAM,CAAA;AAAA,UACtCA,uBAAyH,GAAtH,EAAA,EAAA,KAAM,EAAA,qBAAA,IAAsB,qNAAsF,CAAA;AAAA;;kBAR1G,EAAA,OAAA,CAAc,cAAA,CAAA;AAAA;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModuleSelect.vue2.js","sources":["../../../../../../packages/components/touchchat/component/ModuleSelect.vue"],"sourcesContent":["<template>\n\t<div class=\"touchchat-custom-select\" tabindex=\"0\" :style=\"{ width: selectWidth }\" @blur=\"isSelectOpen = false\">\n\t\t<div class=\"touchchat-select-trigger\" @click=\"toggleSelect\">\n\t\t\t<span class=\"touchchat-select-text\">{{ currentModuleName }}</span>\n\t\t\t<div class=\"touchchat-select-icon\" :class=\"{ 'is-open': isSelectOpen }\"></div>\n\t\t</div>\n\t\t<div v-show=\"isSelectOpen\" ref=\"dropdownRef\" class=\"touchchat-select-dropdown\" :class=\"{ 'is-upward': isUpward }\">\n\t\t\t<div v-for=\"item in modules\" :key=\"item.name\" class=\"touchchat-select-option\" :class=\"{ 'is-selected': item.name === modelValue }\" @click=\"selectOption(item)\">\n\t\t\t\t{{ item.name }}\n\t\t\t</div>\n\t\t</div>\n\t\t<div ref=\"measureRef\" class=\"touchchat-select-measure\">\n\t\t\t<div v-for=\"item in modules\" :key=\"'measure-' + item.name\" class=\"touchchat-select-measure-item\">{{ item.name }}</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, computed, nextTick, onMounted, onUnmounted } from 'vue'\ninterface BodyConfig {\n\tmodel: string\n\tmessages: Array<{\n\t\trole: string\n\t\tcontent: string\n\t}>\n\tstream: boolean\n}\n\n// 定义 respoKey 返回值的类型\ninterface RespoKeyConfig {\n\tcategory: string\n\tcontentCategory: string\n\tcontent: string\n\tall: string\n\tallCategory: string\n}\ninterface ModuleItem {\n\tname: string\n\tconfig: {\n\t\taction: string\n\t\theaders: () => object\n\t\tbody: () => BodyConfig // 修改为具体类型\n\t\trespoKey: () => RespoKeyConfig // 修改为具体类型\n\t}\n}\n\nconst props = defineProps<{\n\tmodules: ModuleItem[]\n\tmodelValue: string\n}>()\n\nconst emit = defineEmits<{\n\t(e: 'update:modelValue', value: string): void\n}>()\n\nconst isSelectOpen = ref(false)\nconst dropdownRef = ref<HTMLElement | null>(null)\nconst measureRef = ref<HTMLElement | null>(null)\nconst isUpward = ref(false)\nconst selectWidth = ref('auto')\n\nconst currentModuleName = computed(() => {\n\tconst selected = props.modules.find(item => item.name === props.modelValue)\n\treturn selected ? selected.name : props.modules[0]?.name || ''\n})\n\nconst toggleSelect = () => {\n\tisSelectOpen.value = !isSelectOpen.value\n\n\tif (isSelectOpen.value) {\n\t\t// 在下一个tick中计算位置\n\t\tnextTick(() => {\n\t\t\tcalculateDropdownPosition()\n\t\t})\n\t}\n}\n\nconst calculateDropdownPosition = () => {\n\tif (!dropdownRef.value) return\n\n\tconst dropdownRect = dropdownRef.value.getBoundingClientRect()\n\tconst viewportHeight = window.innerHeight\n\tconst spaceBelow = viewportHeight - dropdownRect.top - dropdownRect.height\n\tconst spaceAbove = dropdownRect.top\n\n\t// 如果下方空间不足且上方空间足够,则显示在上方\n\tisUpward.value = spaceBelow < 200 && spaceAbove > spaceBelow\n}\n\nconst selectOption = (item: ModuleItem) => {\n\temit('update:modelValue', item.name)\n\tisSelectOpen.value = false\n}\n\nconst handleWindowEvent = () => {\n\tif (isSelectOpen.value) {\n\t\tcalculateDropdownPosition()\n\t}\n}\n\nconst calculateSelectWidth = () => {\n\tif (!measureRef.value) return\n\n\tlet maxWidth = 0\n\tconst items = measureRef.value.children\n\tfor (let i = 0; i < items.length; i++) {\n\t\tconst itemWidth = (items[i] as HTMLElement).offsetWidth\n\t\tif (itemWidth > maxWidth) {\n\t\t\tmaxWidth = itemWidth\n\t\t}\n\t}\n\n\tif (maxWidth > 0) {\n\t\tselectWidth.value = `${maxWidth + 48}px`\n\t}\n}\n\nonMounted(() => {\n\tnextTick(() => {\n\t\tcalculateSelectWidth()\n\t})\n\n\twindow.addEventListener('scroll', handleWindowEvent, true)\n\twindow.addEventListener('resize', handleWindowEvent)\n\n\t// 点击外部关闭下拉菜单\n\tdocument.addEventListener('click', e => {\n\t\tconst selectEl = document.querySelector('.touchchat-custom-select')\n\t\tif (selectEl && !selectEl.contains(e.target as Node)) {\n\t\t\tisSelectOpen.value = false\n\t\t}\n\t})\n})\n\nonUnmounted(() => {\n\twindow.removeEventListener('scroll', handleWindowEvent, true)\n\twindow.removeEventListener('resize', handleWindowEvent)\n})\n</script>\n"],"names":["ref","computed","nextTick","onMounted","onUnmounted","_createElementBlock","_createElementVNode","_normalizeClass","_Fragment","_renderList","_toDisplayString"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ModuleSelect.vue2.js","sources":["../../../../../../packages/components/touchchat/component/ModuleSelect.vue"],"sourcesContent":["<template>\r\n\t<div class=\"touchchat-custom-select\" tabindex=\"0\" :style=\"{ width: selectWidth }\" @blur=\"isSelectOpen = false\">\r\n\t\t<div class=\"touchchat-select-trigger\" @click=\"toggleSelect\">\r\n\t\t\t<span class=\"touchchat-select-text\">{{ currentModuleName }}</span>\r\n\t\t\t<div class=\"touchchat-select-icon\" :class=\"{ 'is-open': isSelectOpen }\"></div>\r\n\t\t</div>\r\n\t\t<div v-show=\"isSelectOpen\" ref=\"dropdownRef\" class=\"touchchat-select-dropdown\" :class=\"{ 'is-upward': isUpward }\">\r\n\t\t\t<div v-for=\"item in modules\" :key=\"item.name\" class=\"touchchat-select-option\" :class=\"{ 'is-selected': item.name === modelValue }\" @click=\"selectOption(item)\">\r\n\t\t\t\t{{ item.name }}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div ref=\"measureRef\" class=\"touchchat-select-measure\">\r\n\t\t\t<div v-for=\"item in modules\" :key=\"'measure-' + item.name\" class=\"touchchat-select-measure-item\">{{ item.name }}</div>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, computed, nextTick, onMounted, onUnmounted } from 'vue'\r\ninterface BodyConfig {\r\n\tmodel: string\r\n\tmessages: Array<{\r\n\t\trole: string\r\n\t\tcontent: string\r\n\t}>\r\n\tstream: boolean\r\n}\r\n\r\n// 定义 respoKey 返回值的类型\r\ninterface RespoKeyConfig {\r\n\tcategory: string\r\n\tcontentCategory: string\r\n\tcontent: string\r\n\tall: string\r\n\tallCategory: string\r\n}\r\ninterface ModuleItem {\r\n\tname: string\r\n\tconfig: {\r\n\t\taction: string\r\n\t\theaders: () => object\r\n\t\tbody: () => BodyConfig // 修改为具体类型\r\n\t\trespoKey: () => RespoKeyConfig // 修改为具体类型\r\n\t}\r\n}\r\n\r\nconst props = defineProps<{\r\n\tmodules: ModuleItem[]\r\n\tmodelValue: string\r\n}>()\r\n\r\nconst emit = defineEmits<{\r\n\t(e: 'update:modelValue', value: string): void\r\n}>()\r\n\r\nconst isSelectOpen = ref(false)\r\nconst dropdownRef = ref<HTMLElement | null>(null)\r\nconst measureRef = ref<HTMLElement | null>(null)\r\nconst isUpward = ref(false)\r\nconst selectWidth = ref('auto')\r\n\r\nconst currentModuleName = computed(() => {\r\n\tconst selected = props.modules.find(item => item.name === props.modelValue)\r\n\treturn selected ? selected.name : props.modules[0]?.name || ''\r\n})\r\n\r\nconst toggleSelect = () => {\r\n\tisSelectOpen.value = !isSelectOpen.value\r\n\r\n\tif (isSelectOpen.value) {\r\n\t\t// 在下一个tick中计算位置\r\n\t\tnextTick(() => {\r\n\t\t\tcalculateDropdownPosition()\r\n\t\t})\r\n\t}\r\n}\r\n\r\nconst calculateDropdownPosition = () => {\r\n\tif (!dropdownRef.value) return\r\n\r\n\tconst dropdownRect = dropdownRef.value.getBoundingClientRect()\r\n\tconst viewportHeight = window.innerHeight\r\n\tconst spaceBelow = viewportHeight - dropdownRect.top - dropdownRect.height\r\n\tconst spaceAbove = dropdownRect.top\r\n\r\n\t// 如果下方空间不足且上方空间足够,则显示在上方\r\n\tisUpward.value = spaceBelow < 200 && spaceAbove > spaceBelow\r\n}\r\n\r\nconst selectOption = (item: ModuleItem) => {\r\n\temit('update:modelValue', item.name)\r\n\tisSelectOpen.value = false\r\n}\r\n\r\nconst handleWindowEvent = () => {\r\n\tif (isSelectOpen.value) {\r\n\t\tcalculateDropdownPosition()\r\n\t}\r\n}\r\n\r\nconst calculateSelectWidth = () => {\r\n\tif (!measureRef.value) return\r\n\r\n\tlet maxWidth = 0\r\n\tconst items = measureRef.value.children\r\n\tfor (let i = 0; i < items.length; i++) {\r\n\t\tconst itemWidth = (items[i] as HTMLElement).offsetWidth\r\n\t\tif (itemWidth > maxWidth) {\r\n\t\t\tmaxWidth = itemWidth\r\n\t\t}\r\n\t}\r\n\r\n\tif (maxWidth > 0) {\r\n\t\tselectWidth.value = `${maxWidth + 48}px`\r\n\t}\r\n}\r\n\r\nonMounted(() => {\r\n\tnextTick(() => {\r\n\t\tcalculateSelectWidth()\r\n\t})\r\n\r\n\twindow.addEventListener('scroll', handleWindowEvent, true)\r\n\twindow.addEventListener('resize', handleWindowEvent)\r\n\r\n\t// 点击外部关闭下拉菜单\r\n\tdocument.addEventListener('click', e => {\r\n\t\tconst selectEl = document.querySelector('.touchchat-custom-select')\r\n\t\tif (selectEl && !selectEl.contains(e.target as Node)) {\r\n\t\t\tisSelectOpen.value = false\r\n\t\t}\r\n\t})\r\n})\r\n\r\nonUnmounted(() => {\r\n\twindow.removeEventListener('scroll', handleWindowEvent, true)\r\n\twindow.removeEventListener('resize', handleWindowEvent)\r\n})\r\n</script>\r\n"],"names":["ref","computed","nextTick","onMounted","onUnmounted","_createElementBlock","_createElementVNode","_normalizeClass","_Fragment","_renderList","_toDisplayString"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Screenshot.vue2.js","sources":["../../../../../../packages/components/touchchat/component/Screenshot.vue"],"sourcesContent":["<template>\n\t<button class=\"touchchat-edit-screenshot touchchat-edit-button\" @click=\"startScreenshot\">\n\t\t<div class=\"touchchat-edit-screenshot-icon\"></div>\n\t\t<div class=\"touchchat-edit-tooltip\">截图</div>\n\t</button>\n\t<!-- 截图遮罩层 -->\n\t<div v-if=\"isScreenshotting\" class=\"screenshot-mask\" @mousedown=\"handleMouseDown\" @mousemove=\"selectArea\" @mouseup=\"endSelect\">\n\t\t<!-- 截图区域 -->\n\t\t<div\n\t\t\tv-if=\"selectionArea\"\n\t\t\tclass=\"selection-area\"\n\t\t\t:style=\"{\n\t\t\t\tleft: selectionArea.x + 'px',\n\t\t\t\ttop: selectionArea.y + 'px',\n\t\t\t\tright: 0,\n\t\t\t\tbottom: 0,\n\t\t\t\twidth: selectionArea.width + 'px',\n\t\t\t\theight: selectionArea.height + 'px',\n\t\t\t\t'--selection-left': selectionArea.x + 'px',\n\t\t\t\t'--selection-top': selectionArea.y + 'px',\n\t\t\t\t'--selection-width': selectionArea.width + 'px',\n\t\t\t\t'--selection-height': selectionArea.height + 'px'\n\t\t\t}\"\n\t\t></div>\n\t\t<!-- 确认和取消按钮 -->\n\t\t<div class=\"screenshot-actions\">\n\t\t\t<button @click.stop=\"confirmScreenshot\">确认</button>\n\t\t\t<button @click.stop=\"cancelScreenshot\">取消</button>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue'\nimport html2canvas from 'html2canvas'\nimport type { FileItem } from '../src/AiChat/Chat/types'\n\n// 是否正在截图\nconst isScreenshotting = ref(false)\n// 截图区域信息\nconst selectionArea = ref<{ x: number; y: number; width: number; height: number } | null>(null)\nconst finallySelectArea = ref<{ x: number; y: number; width: number; height: number } | null>(null)\n// 鼠标按下时的起始坐标\nconst startX = ref(0)\nconst startY = ref(0)\n// 区域是否已固定\nconst isAreaFixed = ref(false)\nconst fileList = ref<FileItem[]>([])\n\nconst emits = defineEmits<{\n\t(e: 'upFileList', list: FileItem[]): void\n}>()\n\nwatch(\n\t() => isScreenshotting.value,\n\t() => {\n\t\tfinallySelectArea.value = null\n\t}\n)\n\n// 生成唯一 ID\nconst generateId = () => Date.now().toString(36) + Math.random().toString(36).substr(2)\n\n// 格式化文件大小\nconst formatFileSize = (bytes: number): string => {\n\tif (bytes === 0) return '0 Bytes'\n\tconst k = 1024\n\tconst sizes = ['Bytes', 'KB', 'MB', 'GB']\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k))\n\treturn parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]\n}\n\n// 开始截图\nconst startScreenshot = () => {\n\tisScreenshotting.value = true\n\t// 隐藏滚动条\n\tdocument.body.style.overflow = 'hidden'\n\tisAreaFixed.value = true\n\t// 获取 body 的宽高\n\tconst bodyWidth = document.body.clientWidth\n\tconst bodyHeight = document.body.clientHeight\n\t// 默认设置 selectionArea 为整个 body 区域\n\tselectionArea.value = { x: 0, y: 0, width: bodyWidth, height: bodyHeight }\n}\n\n// 处理鼠标按下事件\nconst handleMouseDown = (e: MouseEvent) => {\n\te.stopPropagation()\n\tif (isAreaFixed.value) {\n\t\t// 若区域固定,取消固定并开始选择新区域\n\t\tisAreaFixed.value = false\n\t\tstartSelect(e)\n\t\treturn\n\t}\n\tstartSelect(e)\n}\n\n// 结束选择区域\nconst endSelect = (e: MouseEvent) => {\n\te.stopPropagation()\n\tif (!isAreaFixed.value) {\n\t\t// 可添加额外逻辑\n\t\tisAreaFixed.value = true\n\t}\n}\n\n// 开始选择区域\nconst startSelect = (e: MouseEvent) => {\n\tstartX.value = e.clientX\n\tstartY.value = e.clientY\n\tselectionArea.value = { x: startX.value, y: startY.value, width: 0, height: 0 }\n}\n\n// 选择区域\nconst selectArea = (e: MouseEvent) => {\n\tif (isAreaFixed.value || !selectionArea.value) return\n\tconst endX = e.clientX\n\tconst endY = e.clientY\n\tselectionArea.value.x = Math.min(startX.value, endX)\n\tselectionArea.value.y = Math.min(startY.value, endY)\n\tselectionArea.value.width = Math.abs(endX - startX.value)\n\tselectionArea.value.height = Math.abs(endY - startY.value)\n\tfinallySelectArea.value = JSON.parse(JSON.stringify(selectionArea.value))\n}\n\n// 确认截图\nconst confirmScreenshot = async (e: MouseEvent) => {\n\te.stopPropagation()\n\ttry {\n\t\tlet canvas\n\t\tconst commonOptions = {\n\t\t\tuseCORS: true,\n\t\t\tlogging: false,\n\t\t\tscale: window.devicePixelRatio || 1, // 设置缩放比例,解决模糊问题\n\t\t\tbackgroundColor: null, // 不设置背景色,保持原有背景\n\t\t\tignoreElements: (element: any) => {\n\t\t\t\t// 忽略截图遮罩层,避免影响截图效果\n\t\t\t\treturn element.classList.contains('screenshot-mask')\n\t\t\t},\n\t\t\tuseOverflowScrolling: false, // 禁用 overflow-scrolling 以避免样式问题\n\t\t\tremoveContainer: true, // 截图完成后移除临时创建的元素\n\t\t\tallowTaint: false\n\t\t}\n\n\t\t// 获取页面滚动偏移量\n\t\tconst scrollX = window.pageXOffset || document.documentElement.scrollLeft\n\t\tconst scrollY = window.pageYOffset || document.documentElement.scrollTop\n\t\tif (finallySelectArea.value && finallySelectArea.value.width > 0 && finallySelectArea.value.height > 0) {\n\t\t\tconst { x, y, width, height } = finallySelectArea.value\n\t\t\t// 区域截图\n\t\t\tcanvas = await html2canvas(document.body, {\n\t\t\t\t...commonOptions,\n\t\t\t\twidth: width * commonOptions.scale,\n\t\t\t\theight: height * commonOptions.scale,\n\t\t\t\t// 加上滚动偏移量\n\t\t\t\tx: x + scrollX,\n\t\t\t\ty: y + scrollY\n\t\t\t})\n\t\t} else {\n\t\t\t// 全屏截图\n\t\t\tcanvas = await html2canvas(document.body, commonOptions)\n\t\t}\n\n\t\t// 将 canvas 转换为 Blob 对象\n\t\tawait new Promise<void>(resolve => {\n\t\t\tcanvas.toBlob(blob => {\n\t\t\t\tif (blob) {\n\t\t\t\t\tconst file = new File([blob], `screenshot_${generateId()}.png`, { type: 'image/png' })\n\t\t\t\t\tconst base64 = canvas.toDataURL('image/png')\n\t\t\t\t\tconst fileItem: FileItem = {\n\t\t\t\t\t\tfile,\n\t\t\t\t\t\tisUploading: false,\n\t\t\t\t\t\tuploadProgress: 0,\n\t\t\t\t\t\tuploadSuccess: false,\n\t\t\t\t\t\tuploadError: false,\n\t\t\t\t\t\tfileSize: formatFileSize(file.size),\n\t\t\t\t\t\tfileType: file.type,\n\t\t\t\t\t\tname: file.name,\n\t\t\t\t\t\tid: generateId(),\n\t\t\t\t\t\tbase64,\n\t\t\t\t\t\tlastModified: Date.now()\n\t\t\t\t\t}\n\t\t\t\t\tfileList.value = [fileItem]\n\t\t\t\t\temits('upFileList', fileList.value)\n\t\t\t\t}\n\t\t\t\tresolve()\n\t\t\t}, 'image/png')\n\t\t})\n\t} catch (error) {\n\t\tconsole.error('截图失败:', error)\n\t}\n\tcancelScreenshot()\n}\n\n// 取消截图\nconst cancelScreenshot = () => {\n\tisScreenshotting.value = false\n\tselectionArea.value = null\n\tisAreaFixed.value = false\n\t// 恢复滚动条\n\tdocument.body.style.overflow = ''\n}\n</script>\n"],"names":["ref","watch","html2canvas","_createElementVNode","_createCommentVNode","_createElementBlock","_normalizeStyle"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Screenshot.vue2.js","sources":["../../../../../../packages/components/touchchat/component/Screenshot.vue"],"sourcesContent":["<template>\r\n\t<button class=\"touchchat-edit-screenshot touchchat-edit-button\" @click=\"startScreenshot\">\r\n\t\t<div class=\"touchchat-edit-screenshot-icon\"></div>\r\n\t\t<div class=\"touchchat-edit-tooltip\">截图</div>\r\n\t</button>\r\n\t<!-- 截图遮罩层 -->\r\n\t<div v-if=\"isScreenshotting\" class=\"screenshot-mask\" @mousedown=\"handleMouseDown\" @mousemove=\"selectArea\" @mouseup=\"endSelect\">\r\n\t\t<!-- 截图区域 -->\r\n\t\t<div\r\n\t\t\tv-if=\"selectionArea\"\r\n\t\t\tclass=\"selection-area\"\r\n\t\t\t:style=\"{\r\n\t\t\t\tleft: selectionArea.x + 'px',\r\n\t\t\t\ttop: selectionArea.y + 'px',\r\n\t\t\t\tright: 0,\r\n\t\t\t\tbottom: 0,\r\n\t\t\t\twidth: selectionArea.width + 'px',\r\n\t\t\t\theight: selectionArea.height + 'px',\r\n\t\t\t\t'--selection-left': selectionArea.x + 'px',\r\n\t\t\t\t'--selection-top': selectionArea.y + 'px',\r\n\t\t\t\t'--selection-width': selectionArea.width + 'px',\r\n\t\t\t\t'--selection-height': selectionArea.height + 'px'\r\n\t\t\t}\"\r\n\t\t></div>\r\n\t\t<!-- 确认和取消按钮 -->\r\n\t\t<div class=\"screenshot-actions\">\r\n\t\t\t<button @click.stop=\"confirmScreenshot\">确认</button>\r\n\t\t\t<button @click.stop=\"cancelScreenshot\">取消</button>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, watch } from 'vue'\r\nimport html2canvas from 'html2canvas'\r\nimport type { FileItem } from '../src/AiChat/Chat/types'\r\n\r\n// 是否正在截图\r\nconst isScreenshotting = ref(false)\r\n// 截图区域信息\r\nconst selectionArea = ref<{ x: number; y: number; width: number; height: number } | null>(null)\r\nconst finallySelectArea = ref<{ x: number; y: number; width: number; height: number } | null>(null)\r\n// 鼠标按下时的起始坐标\r\nconst startX = ref(0)\r\nconst startY = ref(0)\r\n// 区域是否已固定\r\nconst isAreaFixed = ref(false)\r\nconst fileList = ref<FileItem[]>([])\r\n\r\nconst emits = defineEmits<{\r\n\t(e: 'upFileList', list: FileItem[]): void\r\n}>()\r\n\r\nwatch(\r\n\t() => isScreenshotting.value,\r\n\t() => {\r\n\t\tfinallySelectArea.value = null\r\n\t}\r\n)\r\n\r\n// 生成唯一 ID\r\nconst generateId = () => Date.now().toString(36) + Math.random().toString(36).substr(2)\r\n\r\n// 格式化文件大小\r\nconst formatFileSize = (bytes: number): string => {\r\n\tif (bytes === 0) return '0 Bytes'\r\n\tconst k = 1024\r\n\tconst sizes = ['Bytes', 'KB', 'MB', 'GB']\r\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k))\r\n\treturn parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]\r\n}\r\n\r\n// 开始截图\r\nconst startScreenshot = () => {\r\n\tisScreenshotting.value = true\r\n\t// 隐藏滚动条\r\n\tdocument.body.style.overflow = 'hidden'\r\n\tisAreaFixed.value = true\r\n\t// 获取 body 的宽高\r\n\tconst bodyWidth = document.body.clientWidth\r\n\tconst bodyHeight = document.body.clientHeight\r\n\t// 默认设置 selectionArea 为整个 body 区域\r\n\tselectionArea.value = { x: 0, y: 0, width: bodyWidth, height: bodyHeight }\r\n}\r\n\r\n// 处理鼠标按下事件\r\nconst handleMouseDown = (e: MouseEvent) => {\r\n\te.stopPropagation()\r\n\tif (isAreaFixed.value) {\r\n\t\t// 若区域固定,取消固定并开始选择新区域\r\n\t\tisAreaFixed.value = false\r\n\t\tstartSelect(e)\r\n\t\treturn\r\n\t}\r\n\tstartSelect(e)\r\n}\r\n\r\n// 结束选择区域\r\nconst endSelect = (e: MouseEvent) => {\r\n\te.stopPropagation()\r\n\tif (!isAreaFixed.value) {\r\n\t\t// 可添加额外逻辑\r\n\t\tisAreaFixed.value = true\r\n\t}\r\n}\r\n\r\n// 开始选择区域\r\nconst startSelect = (e: MouseEvent) => {\r\n\tstartX.value = e.clientX\r\n\tstartY.value = e.clientY\r\n\tselectionArea.value = { x: startX.value, y: startY.value, width: 0, height: 0 }\r\n}\r\n\r\n// 选择区域\r\nconst selectArea = (e: MouseEvent) => {\r\n\tif (isAreaFixed.value || !selectionArea.value) return\r\n\tconst endX = e.clientX\r\n\tconst endY = e.clientY\r\n\tselectionArea.value.x = Math.min(startX.value, endX)\r\n\tselectionArea.value.y = Math.min(startY.value, endY)\r\n\tselectionArea.value.width = Math.abs(endX - startX.value)\r\n\tselectionArea.value.height = Math.abs(endY - startY.value)\r\n\tfinallySelectArea.value = JSON.parse(JSON.stringify(selectionArea.value))\r\n}\r\n\r\n// 确认截图\r\nconst confirmScreenshot = async (e: MouseEvent) => {\r\n\te.stopPropagation()\r\n\ttry {\r\n\t\tlet canvas\r\n\t\tconst commonOptions = {\r\n\t\t\tuseCORS: true,\r\n\t\t\tlogging: false,\r\n\t\t\tscale: window.devicePixelRatio || 1, // 设置缩放比例,解决模糊问题\r\n\t\t\tbackgroundColor: null, // 不设置背景色,保持原有背景\r\n\t\t\tignoreElements: (element: any) => {\r\n\t\t\t\t// 忽略截图遮罩层,避免影响截图效果\r\n\t\t\t\treturn element.classList.contains('screenshot-mask')\r\n\t\t\t},\r\n\t\t\tuseOverflowScrolling: false, // 禁用 overflow-scrolling 以避免样式问题\r\n\t\t\tremoveContainer: true, // 截图完成后移除临时创建的元素\r\n\t\t\tallowTaint: false\r\n\t\t}\r\n\r\n\t\t// 获取页面滚动偏移量\r\n\t\tconst scrollX = window.pageXOffset || document.documentElement.scrollLeft\r\n\t\tconst scrollY = window.pageYOffset || document.documentElement.scrollTop\r\n\t\tif (finallySelectArea.value && finallySelectArea.value.width > 0 && finallySelectArea.value.height > 0) {\r\n\t\t\tconst { x, y, width, height } = finallySelectArea.value\r\n\t\t\t// 区域截图\r\n\t\t\tcanvas = await html2canvas(document.body, {\r\n\t\t\t\t...commonOptions,\r\n\t\t\t\twidth: width * commonOptions.scale,\r\n\t\t\t\theight: height * commonOptions.scale,\r\n\t\t\t\t// 加上滚动偏移量\r\n\t\t\t\tx: x + scrollX,\r\n\t\t\t\ty: y + scrollY\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\t// 全屏截图\r\n\t\t\tcanvas = await html2canvas(document.body, commonOptions)\r\n\t\t}\r\n\r\n\t\t// 将 canvas 转换为 Blob 对象\r\n\t\tawait new Promise<void>(resolve => {\r\n\t\t\tcanvas.toBlob(blob => {\r\n\t\t\t\tif (blob) {\r\n\t\t\t\t\tconst file = new File([blob], `screenshot_${generateId()}.png`, { type: 'image/png' })\r\n\t\t\t\t\tconst base64 = canvas.toDataURL('image/png')\r\n\t\t\t\t\tconst fileItem: FileItem = {\r\n\t\t\t\t\t\tfile,\r\n\t\t\t\t\t\tisUploading: false,\r\n\t\t\t\t\t\tuploadProgress: 0,\r\n\t\t\t\t\t\tuploadSuccess: false,\r\n\t\t\t\t\t\tuploadError: false,\r\n\t\t\t\t\t\tfileSize: formatFileSize(file.size),\r\n\t\t\t\t\t\tfileType: file.type,\r\n\t\t\t\t\t\tname: file.name,\r\n\t\t\t\t\t\tid: generateId(),\r\n\t\t\t\t\t\tbase64,\r\n\t\t\t\t\t\tlastModified: Date.now()\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfileList.value = [fileItem]\r\n\t\t\t\t\temits('upFileList', fileList.value)\r\n\t\t\t\t}\r\n\t\t\t\tresolve()\r\n\t\t\t}, 'image/png')\r\n\t\t})\r\n\t} catch (error) {\r\n\t\tconsole.error('截图失败:', error)\r\n\t}\r\n\tcancelScreenshot()\r\n}\r\n\r\n// 取消截图\r\nconst cancelScreenshot = () => {\r\n\tisScreenshotting.value = false\r\n\tselectionArea.value = null\r\n\tisAreaFixed.value = false\r\n\t// 恢复滚动条\r\n\tdocument.body.style.overflow = ''\r\n}\r\n</script>\r\n"],"names":["ref","watch","html2canvas","_createElementVNode","_createCommentVNode","_createElementBlock","_normalizeStyle"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThoughtChain.vue2.js","sources":["../../../../../../packages/components/touchchat/component/ThoughtChain.vue"],"sourcesContent":["<template>\n\t<div class=\"step-container\">\n\t\t<!-- 已完成步骤 -->\n\t\t<div v-for=\"(item, index) in stepItems\" :key=\"item.id\" class=\"step-item\" :class=\"item.status === 'completed' ? 'completed' : 'ongoing'\">\n\t\t\t<div class=\"step-marker\">\n\t\t\t\t<i v-if=\"item.status === 'completed'\" class=\"check-icon\">✓</i>\n\t\t\t\t<span v-else>{{ index + 1 }}</span>\n\t\t\t</div>\n\t\t\t<!-- 添加连接线 -->\n\t\t\t<div class=\"step-connector\"></div>\n\t\t\t<div class=\"step-content\">\n\t\t\t\t<h3>{{ item.content }}</h3>\n\t\t\t\t<p>{{ item.thinkContent }}</p>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nconst stepItems = ref([\n\t{ id: 1, status: 'completed', content: '已完成步骤', thinkContent: '思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字' },\n\t{ id: 2, status: 'completed', content: '已完成步骤', thinkContent: '思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字' },\n\t{ id: 3, status: 'ongoing', content: '进行中的步骤', thinkContent: '思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字' }\n])\n</script>\n"],"names":["ref","_createElementBlock","_createCommentVNode","_openBlock","_Fragment","_renderList","_normalizeClass","_createElementVNode","_toDisplayString"],"mappings":";;;;;;;;;AAoBA,IAAA,MAAM,YAAYA,OAAI,CAAA;AAAA,MACrB,EAAE,IAAI,CAAG,EAAA,MAAA,EAAQ,aAAa,OAAS,EAAA,gCAAA,EAAS,cAAc,4yBAA0I,EAAA;AAAA,MACxM,EAAE,IAAI,CAAG,EAAA,MAAA,EAAQ,aAAa,OAAS,EAAA,gCAAA,EAAS,cAAc,4yBAA0I,EAAA;AAAA,MACxM,EAAE,IAAI,CAAG,EAAA,MAAA,EAAQ,WAAW,OAAS,EAAA,sCAAA,EAAU,cAAc,4yBAA0I,EAAA;AAAA,KACvM,CAAA,CAAA;;4BAvBA,EAAAC,sBAAA,CAcM,OAAA,EAdD,KAAA,EAAM,kBAAgB,EAAA;AAAA,QAC1BC,uBAAc,kCAAA,CAAA;AAAA,SACdC,aAAA,CAAA,IAAA,CAAA,EAAAF,sBAAA;AAAA,UAWMG,YAAA;AAAA,UAXuB,IAAA;AAAA,UAAAC,cAAA,CAAA,SAAA,CAAA,KAAhB,EAAA,CAAA,MAAM,KAAK,KAAA;kCAAxB,EAAAJ,sBAAA;AAAA,cAWM,KAAA;AAAA,cAAA;AAAA,gBAXmC,KAAK,IAAK,CAAA,EAAA;AAAA,gBAAI,KAAA,EAAMK,mBAAA,CAAA,WAAA,EAAoB,KAAK,MAAM,KAAA,WAAA,GAAA,WAAA,GAAA,SAAA,CAAA,CAAA;AAAA;;gBAC3FC,sBAGM,CAAA,KAAA,EAAA,EAHD,KAAA,EAAM,eAAa,EAAA;AAAA,kBACd,KAAK,MAAM,KAAA,WAAA,qBAApBN,uBAA8D,GAAA,EAAA;AAAA;oBAAxB,KAAM,EAAA,YAAA;AAAA,mBAAa,EAAA,QAAC,CAC1D,KAAAE,aAAA,EAAA,EAAAF,sBAAA;AAAA,oBAAmC,MAAA;AAAA;wCAAnB,QAAK,CAAA,CAAA;AAAA,oBAAA,CAAA;AAAA;AAAA,mBAAA,CAAA;AAAA;gBAEtBC,uBAAc,kCAAA,CAAA;AAAA,gBACdK,sBAAkC,CAAA,KAAA,EAAA,EAA7B,KAAA,EAAM,kBAAgB,CAAA;AAAA,gBAC3BA,sBAGM,CAAA,KAAA,EAAA,EAHD,KAAA,EAAM,gBAAc,EAAA;AAAA,kBACxBA,sBAAA;AAAA,oBAA2B,IAAA;AAAA,oBAAA,IAAA;AAAA,oBAAAC,mBAAA,CAApB,KAAK,OAAO,CAAA;AAAA,oBAAA,CAAA;AAAA;AAAA,mBAAA;AAAA,kBACnBD,sBAAA;AAAA,oBAA8B,GAAA;AAAA,oBAAA,IAAA;AAAA,oBAAAC,mBAAA,CAAxB,KAAK,YAAY,CAAA;AAAA,oBAAA,CAAA;AAAA;AAAA,mBAAA;AAAA;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"ThoughtChain.vue2.js","sources":["../../../../../../packages/components/touchchat/component/ThoughtChain.vue"],"sourcesContent":["<template>\r\n\t<div class=\"step-container\">\r\n\t\t<!-- 已完成步骤 -->\r\n\t\t<div v-for=\"(item, index) in stepItems\" :key=\"item.id\" class=\"step-item\" :class=\"item.status === 'completed' ? 'completed' : 'ongoing'\">\r\n\t\t\t<div class=\"step-marker\">\r\n\t\t\t\t<i v-if=\"item.status === 'completed'\" class=\"check-icon\">✓</i>\r\n\t\t\t\t<span v-else>{{ index + 1 }}</span>\r\n\t\t\t</div>\r\n\t\t\t<!-- 添加连接线 -->\r\n\t\t\t<div class=\"step-connector\"></div>\r\n\t\t\t<div class=\"step-content\">\r\n\t\t\t\t<h3>{{ item.content }}</h3>\r\n\t\t\t\t<p>{{ item.thinkContent }}</p>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref } from 'vue'\r\nconst stepItems = ref([\r\n\t{ id: 1, status: 'completed', content: '已完成步骤', thinkContent: '思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字' },\r\n\t{ id: 2, status: 'completed', content: '已完成步骤', thinkContent: '思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字' },\r\n\t{ id: 3, status: 'ongoing', content: '进行中的步骤', thinkContent: '思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字' }\r\n])\r\n</script>\r\n"],"names":["ref","_createElementBlock","_createCommentVNode","_openBlock","_Fragment","_renderList","_normalizeClass","_createElementVNode","_toDisplayString"],"mappings":";;;;;;;;;AAoBA,IAAA,MAAM,YAAYA,OAAI,CAAA;AAAA,MACrB,EAAE,IAAI,CAAG,EAAA,MAAA,EAAQ,aAAa,OAAS,EAAA,gCAAA,EAAS,cAAc,4yBAA0I,EAAA;AAAA,MACxM,EAAE,IAAI,CAAG,EAAA,MAAA,EAAQ,aAAa,OAAS,EAAA,gCAAA,EAAS,cAAc,4yBAA0I,EAAA;AAAA,MACxM,EAAE,IAAI,CAAG,EAAA,MAAA,EAAQ,WAAW,OAAS,EAAA,sCAAA,EAAU,cAAc,4yBAA0I,EAAA;AAAA,KACvM,CAAA,CAAA;;4BAvBA,EAAAC,sBAAA,CAcM,OAAA,EAdD,KAAA,EAAM,kBAAgB,EAAA;AAAA,QAC1BC,uBAAc,kCAAA,CAAA;AAAA,SACdC,aAAA,CAAA,IAAA,CAAA,EAAAF,sBAAA;AAAA,UAWMG,YAAA;AAAA,UAXuB,IAAA;AAAA,UAAAC,cAAA,CAAA,SAAA,CAAA,KAAhB,EAAA,CAAA,MAAM,KAAK,KAAA;kCAAxB,EAAAJ,sBAAA;AAAA,cAWM,KAAA;AAAA,cAAA;AAAA,gBAXmC,KAAK,IAAK,CAAA,EAAA;AAAA,gBAAI,KAAA,EAAMK,mBAAA,CAAA,WAAA,EAAoB,KAAK,MAAM,KAAA,WAAA,GAAA,WAAA,GAAA,SAAA,CAAA,CAAA;AAAA;;gBAC3FC,sBAGM,CAAA,KAAA,EAAA,EAHD,KAAA,EAAM,eAAa,EAAA;AAAA,kBACd,KAAK,MAAM,KAAA,WAAA,qBAApBN,uBAA8D,GAAA,EAAA;AAAA;oBAAxB,KAAM,EAAA,YAAA;AAAA,mBAAa,EAAA,QAAC,CAC1D,KAAAE,aAAA,EAAA,EAAAF,sBAAA;AAAA,oBAAmC,MAAA;AAAA;wCAAnB,QAAK,CAAA,CAAA;AAAA,oBAAA,CAAA;AAAA;AAAA,mBAAA,CAAA;AAAA;gBAEtBC,uBAAc,kCAAA,CAAA;AAAA,gBACdK,sBAAkC,CAAA,KAAA,EAAA,EAA7B,KAAA,EAAM,kBAAgB,CAAA;AAAA,gBAC3BA,sBAGM,CAAA,KAAA,EAAA,EAHD,KAAA,EAAM,gBAAc,EAAA;AAAA,kBACxBA,sBAAA;AAAA,oBAA2B,IAAA;AAAA,oBAAA,IAAA;AAAA,oBAAAC,mBAAA,CAApB,KAAK,OAAO,CAAA;AAAA,oBAAA,CAAA;AAAA;AAAA,mBAAA;AAAA,kBACnBD,sBAAA;AAAA,oBAA8B,GAAA;AAAA,oBAAA,IAAA;AAAA,oBAAAC,mBAAA,CAAxB,KAAK,YAAY,CAAA;AAAA,oBAAA,CAAA;AAAA;AAAA,mBAAA;AAAA;;;;;;;;;;;;;;;;"}
|