@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hight-it.mjs","sources":["../../../../../../packages/components/touchchat/utils/hight-it.ts"],"sourcesContent":["import 'highlight.js/styles/atom-one-light.css';\nimport hljs, { LanguageFn } from 'highlight.js/lib/core';\nimport Htmlbars from 'highlight.js/lib/languages/htmlbars';\nimport Handlebars from 'highlight.js/lib/languages/handlebars';\nimport Css from 'highlight.js/lib/languages/css';\nimport Shell from 'highlight.js/lib/languages/shell';\nimport Bash from 'highlight.js/lib/languages/bash';\nimport C from 'highlight.js/lib/languages/c';\nimport Clike from 'highlight.js/lib/languages/c-like';\nimport Java from 'highlight.js/lib/languages/java';\nimport Python from 'highlight.js/lib/languages/python';\nimport Cpp from 'highlight.js/lib/languages/cpp';\nimport Csharp from 'highlight.js/lib/languages/csharp';\nimport Php from 'highlight.js/lib/languages/php';\nimport Sql from 'highlight.js/lib/languages/sql';\nimport R from 'highlight.js/lib/languages/r';\nimport Swift from 'highlight.js/lib/languages/swift';\nimport Go from 'highlight.js/lib/languages/go';\nimport Matlab from 'highlight.js/lib/languages/matlab';\nimport Ruby from 'highlight.js/lib/languages/ruby';\nimport Perl from 'highlight.js/lib/languages/perl';\nimport Objectivec from 'highlight.js/lib/languages/objectivec';\nimport Rust from 'highlight.js/lib/languages/rust';\nimport Dart from 'highlight.js/lib/languages/dart';\nimport Delphi from 'highlight.js/lib/languages/delphi';\nimport D from 'highlight.js/lib/languages/d';\nimport Kotlin from 'highlight.js/lib/languages/kotlin';\nimport Scala from 'highlight.js/lib/languages/scala';\nimport Sas from 'highlight.js/lib/languages/sas';\nimport Lisp from 'highlight.js/lib/languages/lisp';\nimport Lua from 'highlight.js/lib/languages/lua';\nimport Ada from 'highlight.js/lib/languages/ada';\nimport Fortran from 'highlight.js/lib/languages/fortran';\nimport Powershell from 'highlight.js/lib/languages/powershell';\nimport Vbscript from 'highlight.js/lib/languages/vbscript';\nimport VbscriptHtml from 'highlight.js/lib/languages/vbscript-html';\nimport Groovy from 'highlight.js/lib/languages/groovy';\nimport Julia from 'highlight.js/lib/languages/julia';\nimport JuliaRepl from 'highlight.js/lib/languages/julia-repl';\nimport Haskell from 'highlight.js/lib/languages/haskell';\nimport Actionscript from 'highlight.js/lib/languages/actionscript';\nimport Scheme from 'highlight.js/lib/languages/scheme';\nimport Typescript from 'highlight.js/lib/languages/typescript';\nimport Fsharp from 'highlight.js/lib/languages/fsharp';\nimport Prolog from 'highlight.js/lib/languages/prolog';\nimport Erlang from 'highlight.js/lib/languages/erlang';\nimport ErlangRepl from 'highlight.js/lib/languages/erlang-repl';\nimport Json from 'highlight.js/lib/languages/json';\nimport Ini from 'highlight.js/lib/languages/ini';\n\nhljs.registerLanguage('json', Json);\nhljs.registerLanguage('ini', Ini);\nhljs.registerLanguage('handlebars', Handlebars);\nhljs.registerLanguage('htmlbars', Htmlbars);\nhljs.registerLanguage('css', Css);\nhljs.registerLanguage('shell', Shell);\nhljs.registerLanguage('bash', Bash);\nhljs.registerLanguage('c-like', Clike);\nhljs.registerLanguage('c', C);\nhljs.registerLanguage('cpp', Cpp);\nhljs.registerLanguage('java', Java);\nhljs.registerLanguage('python', Python);\nhljs.registerLanguage('csharp', Csharp);\nhljs.registerLanguage('php', Php);\nhljs.registerLanguage('sql', Sql);\nhljs.registerLanguage('r', R);\nhljs.registerLanguage('swift', Swift);\nhljs.registerLanguage('go', Go);\nhljs.registerLanguage('matlab', Matlab);\nhljs.registerLanguage('ruby', Ruby);\nhljs.registerLanguage('perl', Perl);\nhljs.registerLanguage('objectivec', Objectivec);\nhljs.registerLanguage('rust', Rust);\nhljs.registerLanguage('dart', Dart);\nhljs.registerLanguage('delphi', Delphi);\nhljs.registerLanguage('d', D);\nhljs.registerLanguage('kotlin', Kotlin);\nhljs.registerLanguage('scala', Scala);\nhljs.registerLanguage('sas', Sas);\nhljs.registerLanguage('lisp', Lisp);\nhljs.registerLanguage('lua', Lua);\nhljs.registerLanguage('ada', Ada);\nhljs.registerLanguage('fortran', Fortran);\nhljs.registerLanguage('powershell', Powershell);\nhljs.registerLanguage('vbscript', Vbscript);\nhljs.registerLanguage('vbscript-html', VbscriptHtml);\nhljs.registerLanguage('groovy', Groovy);\nhljs.registerLanguage('julia', Julia);\nhljs.registerLanguage('julia-repl', JuliaRepl);\nhljs.registerLanguage('haskell', Haskell);\nhljs.registerLanguage('actionscript', Actionscript);\nhljs.registerLanguage('scheme', Scheme);\nhljs.registerLanguage('typescript', Typescript);\nhljs.registerLanguage('fsharp', Fsharp);\nhljs.registerLanguage('prolog', Prolog);\nhljs.registerLanguage('erlang', Erlang);\nhljs.registerLanguage('erlang-repl', ErlangRepl);\n\ninterface MarkdownIt {\n renderer: {\n rules: Record<string, (tokens: any[], idx: number, ...args: any[]) => string>;\n };\n}\n\nconst highlightPlugin = (md: MarkdownIt) => {\n md.renderer.rules.fence = (tokens: any[], idx: number) => {\n const token = tokens[idx];\n const code: string = token.content;\n const lang: string = token.info;\n const langObj: LanguageFn | false = hljs.getLanguage(lang);\n let cnt: string;\n if (langObj) {\n cnt = hljs.highlight(code, { language: lang }).value;\n } else {\n cnt = hljs.highlightAuto(code).value;\n }\n\n return `<pre class=\"hljs\"><code>${cnt}</code></pre>`;\n };\n};\n\nexport default highlightPlugin;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hight-it.mjs","sources":["../../../../../../packages/components/touchchat/utils/hight-it.ts"],"sourcesContent":["import 'highlight.js/styles/atom-one-light.css';\r\nimport hljs, { LanguageFn } from 'highlight.js/lib/core';\r\nimport Htmlbars from 'highlight.js/lib/languages/htmlbars';\r\nimport Handlebars from 'highlight.js/lib/languages/handlebars';\r\nimport Css from 'highlight.js/lib/languages/css';\r\nimport Shell from 'highlight.js/lib/languages/shell';\r\nimport Bash from 'highlight.js/lib/languages/bash';\r\nimport C from 'highlight.js/lib/languages/c';\r\nimport Clike from 'highlight.js/lib/languages/c-like';\r\nimport Java from 'highlight.js/lib/languages/java';\r\nimport Python from 'highlight.js/lib/languages/python';\r\nimport Cpp from 'highlight.js/lib/languages/cpp';\r\nimport Csharp from 'highlight.js/lib/languages/csharp';\r\nimport Php from 'highlight.js/lib/languages/php';\r\nimport Sql from 'highlight.js/lib/languages/sql';\r\nimport R from 'highlight.js/lib/languages/r';\r\nimport Swift from 'highlight.js/lib/languages/swift';\r\nimport Go from 'highlight.js/lib/languages/go';\r\nimport Matlab from 'highlight.js/lib/languages/matlab';\r\nimport Ruby from 'highlight.js/lib/languages/ruby';\r\nimport Perl from 'highlight.js/lib/languages/perl';\r\nimport Objectivec from 'highlight.js/lib/languages/objectivec';\r\nimport Rust from 'highlight.js/lib/languages/rust';\r\nimport Dart from 'highlight.js/lib/languages/dart';\r\nimport Delphi from 'highlight.js/lib/languages/delphi';\r\nimport D from 'highlight.js/lib/languages/d';\r\nimport Kotlin from 'highlight.js/lib/languages/kotlin';\r\nimport Scala from 'highlight.js/lib/languages/scala';\r\nimport Sas from 'highlight.js/lib/languages/sas';\r\nimport Lisp from 'highlight.js/lib/languages/lisp';\r\nimport Lua from 'highlight.js/lib/languages/lua';\r\nimport Ada from 'highlight.js/lib/languages/ada';\r\nimport Fortran from 'highlight.js/lib/languages/fortran';\r\nimport Powershell from 'highlight.js/lib/languages/powershell';\r\nimport Vbscript from 'highlight.js/lib/languages/vbscript';\r\nimport VbscriptHtml from 'highlight.js/lib/languages/vbscript-html';\r\nimport Groovy from 'highlight.js/lib/languages/groovy';\r\nimport Julia from 'highlight.js/lib/languages/julia';\r\nimport JuliaRepl from 'highlight.js/lib/languages/julia-repl';\r\nimport Haskell from 'highlight.js/lib/languages/haskell';\r\nimport Actionscript from 'highlight.js/lib/languages/actionscript';\r\nimport Scheme from 'highlight.js/lib/languages/scheme';\r\nimport Typescript from 'highlight.js/lib/languages/typescript';\r\nimport Fsharp from 'highlight.js/lib/languages/fsharp';\r\nimport Prolog from 'highlight.js/lib/languages/prolog';\r\nimport Erlang from 'highlight.js/lib/languages/erlang';\r\nimport ErlangRepl from 'highlight.js/lib/languages/erlang-repl';\r\nimport Json from 'highlight.js/lib/languages/json';\r\nimport Ini from 'highlight.js/lib/languages/ini';\r\n\r\nhljs.registerLanguage('json', Json);\r\nhljs.registerLanguage('ini', Ini);\r\nhljs.registerLanguage('handlebars', Handlebars);\r\nhljs.registerLanguage('htmlbars', Htmlbars);\r\nhljs.registerLanguage('css', Css);\r\nhljs.registerLanguage('shell', Shell);\r\nhljs.registerLanguage('bash', Bash);\r\nhljs.registerLanguage('c-like', Clike);\r\nhljs.registerLanguage('c', C);\r\nhljs.registerLanguage('cpp', Cpp);\r\nhljs.registerLanguage('java', Java);\r\nhljs.registerLanguage('python', Python);\r\nhljs.registerLanguage('csharp', Csharp);\r\nhljs.registerLanguage('php', Php);\r\nhljs.registerLanguage('sql', Sql);\r\nhljs.registerLanguage('r', R);\r\nhljs.registerLanguage('swift', Swift);\r\nhljs.registerLanguage('go', Go);\r\nhljs.registerLanguage('matlab', Matlab);\r\nhljs.registerLanguage('ruby', Ruby);\r\nhljs.registerLanguage('perl', Perl);\r\nhljs.registerLanguage('objectivec', Objectivec);\r\nhljs.registerLanguage('rust', Rust);\r\nhljs.registerLanguage('dart', Dart);\r\nhljs.registerLanguage('delphi', Delphi);\r\nhljs.registerLanguage('d', D);\r\nhljs.registerLanguage('kotlin', Kotlin);\r\nhljs.registerLanguage('scala', Scala);\r\nhljs.registerLanguage('sas', Sas);\r\nhljs.registerLanguage('lisp', Lisp);\r\nhljs.registerLanguage('lua', Lua);\r\nhljs.registerLanguage('ada', Ada);\r\nhljs.registerLanguage('fortran', Fortran);\r\nhljs.registerLanguage('powershell', Powershell);\r\nhljs.registerLanguage('vbscript', Vbscript);\r\nhljs.registerLanguage('vbscript-html', VbscriptHtml);\r\nhljs.registerLanguage('groovy', Groovy);\r\nhljs.registerLanguage('julia', Julia);\r\nhljs.registerLanguage('julia-repl', JuliaRepl);\r\nhljs.registerLanguage('haskell', Haskell);\r\nhljs.registerLanguage('actionscript', Actionscript);\r\nhljs.registerLanguage('scheme', Scheme);\r\nhljs.registerLanguage('typescript', Typescript);\r\nhljs.registerLanguage('fsharp', Fsharp);\r\nhljs.registerLanguage('prolog', Prolog);\r\nhljs.registerLanguage('erlang', Erlang);\r\nhljs.registerLanguage('erlang-repl', ErlangRepl);\r\n\r\ninterface MarkdownIt {\r\n renderer: {\r\n rules: Record<string, (tokens: any[], idx: number, ...args: any[]) => string>;\r\n };\r\n}\r\n\r\nconst highlightPlugin = (md: MarkdownIt) => {\r\n md.renderer.rules.fence = (tokens: any[], idx: number) => {\r\n const token = tokens[idx];\r\n const code: string = token.content;\r\n const lang: string = token.info;\r\n const langObj: LanguageFn | false = hljs.getLanguage(lang);\r\n let cnt: string;\r\n if (langObj) {\r\n cnt = hljs.highlight(code, { language: lang }).value;\r\n } else {\r\n cnt = hljs.highlightAuto(code).value;\r\n }\r\n\r\n return `<pre class=\"hljs\"><code>${cnt}</code></pre>`;\r\n };\r\n};\r\n\r\nexport default highlightPlugin;\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import abbr_plugin from '../../../../node_modules/.pnpm/markdown-it-abbr@2.0.0/node_modules/markdown-it-abbr/index.mjs';
|
|
2
2
|
import container_plugin from '../../../../node_modules/.pnpm/markdown-it-container@4.0.0/node_modules/markdown-it-container/index.mjs';
|
|
3
|
-
import deflist_plugin from '../../../../node_modules/.pnpm/markdown-it-deflist@3.0.
|
|
3
|
+
import deflist_plugin from '../../../../node_modules/.pnpm/markdown-it-deflist@3.0.1/node_modules/markdown-it-deflist/index.mjs';
|
|
4
4
|
import footnote_plugin from '../../../../node_modules/.pnpm/markdown-it-footnote@4.0.0/node_modules/markdown-it-footnote/index.mjs';
|
|
5
5
|
import ins_plugin from '../../../../node_modules/.pnpm/markdown-it-ins@4.0.0/node_modules/markdown-it-ins/index.mjs';
|
|
6
6
|
import ins_plugin$1 from '../../../../node_modules/.pnpm/markdown-it-mark@4.0.0/node_modules/markdown-it-mark/index.mjs';
|
|
7
7
|
import sub_plugin from '../../../../node_modules/.pnpm/markdown-it-sub@2.0.0/node_modules/markdown-it-sub/index.mjs';
|
|
8
8
|
import sup_plugin from '../../../../node_modules/.pnpm/markdown-it-sup@2.0.0/node_modules/markdown-it-sup/index.mjs';
|
|
9
|
-
import purify from '../../../../node_modules/.pnpm/dompurify@3.4.
|
|
9
|
+
import purify from '../../../../node_modules/.pnpm/dompurify@3.4.11/node_modules/dompurify/dist/purify.es.mjs';
|
|
10
10
|
import highlightPlugin from './hight-it.mjs';
|
|
11
11
|
import MarkdownIt from '../../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/lib/index.mjs';
|
|
12
12
|
import emoji_plugin from '../../../../node_modules/.pnpm/markdown-it-emoji@3.0.0/node_modules/markdown-it-emoji/lib/full.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.mjs","sources":["../../../../../../packages/components/touchchat/utils/markdown.ts"],"sourcesContent":["import Markdown from 'markdown-it'\nimport mdAbbr from 'markdown-it-abbr'\nimport mdContainer from 'markdown-it-container'\nimport mdDeflist from 'markdown-it-deflist'\nimport { full as mdEmoji } from 'markdown-it-emoji'\nimport mdFootnote from 'markdown-it-footnote'\nimport mdIns from 'markdown-it-ins'\nimport mdMark from 'markdown-it-mark'\nimport mdSub from 'markdown-it-sub'\nimport mdSup from 'markdown-it-sup'\nimport DOMPurify from 'dompurify'\nimport highlightPlugin from './hight-it.ts'\n\n// 确保 DOMPurify 在浏览器环境中正确初始化\nconst getDOMPurify = () => {\n\tif (typeof window !== 'undefined') {\n\t\treturn DOMPurify\n\t}\n\treturn null\n}\n\ninterface RenderOptions {\n\tisReasoning?: boolean\n}\n\n// 创建原始 markdown-it 实例\nconst mdInstance = new Markdown({\n\thtml: true,\n\txhtmlOut: false,\n\tbreaks: true,\n\tlangPrefix: 'language-',\n\tlinkify: false,\n\ttypographer: true\n})\n\t.use(mdAbbr)\n\t.use(mdContainer, 'warning')\n\t.use(mdDeflist)\n\t.use(mdEmoji)\n\t.use(mdFootnote)\n\t.use(mdIns)\n\t.use(mdMark)\n\t.use(mdSub)\n\t.use(mdSup)\n\t.use(highlightPlugin)\n\n// 自定义渲染规则\nmdInstance.renderer.rules.table_open = function () {\n\treturn '<table class=\"table touchchat-table\">\\n'\n}\n\n// 自定义链接渲染规则,添加 target=\"_blank\" 在新窗口打开\nmdInstance.renderer.rules.link_open = function (tokens: any[], idx: number, options: any, env: any, slf: any) {\n\tconst token = tokens[idx]\n\t// 添加 target=\"_blank\" 属性\n\ttoken.attrSet('target', '_blank')\n\t// 添加 rel=\"noopener noreferrer\" 安全属性\n\ttoken.attrSet('rel', 'noopener noreferrer')\n\treturn slf.renderToken(tokens, idx, options, env, slf)\n}\n\nmdInstance.renderer.rules.paragraph_open = mdInstance.renderer.rules.heading_open = (tokens: any[], idx: number, options: any, env: any, slf: any) => {\n\tlet line: number | undefined\n\tif (tokens[idx].map && tokens[idx].level === 0) {\n\t\tline = tokens[idx].map[0]\n\t\ttokens[idx].attrJoin('class', 'line')\n\t\ttokens[idx].attrSet('data-line', String(line))\n\t}\n\treturn slf.renderToken(tokens, idx, options, env, slf)\n}\n\n// 为所有 <a> 标签添加 target=\"_blank\" 属性\nconst addTargetBlank = (html: string): string => {\n\t// 匹配 <a> 标签,确保没有已存在的 target 属性\n\treturn html.replace(/<a([^>]*)>/gi, (match, attrs) => {\n\t\t// 检查是否已有 target 属性\n\t\tif (!/target\\s*=\\s*[\"']/i.test(attrs)) {\n\t\t\treturn `<a${attrs} target=\"_blank\" rel=\"noopener noreferrer\">`\n\t\t}\n\t\treturn match\n\t})\n}\n\n// 创建包装对象,支持带参数的 render 方法\nconst markdown = {\n\trender: (content: string, options?: RenderOptions): string => {\n\t\tif (!content) return ''\n\n\t\t// 根据 isReasoning 参数添加不同的 CSS 类\n\t\tlet processedContent = content\n\t\tif (options?.isReasoning) {\n\t\t\t// 对于推理内容,可以添加特定的标记或处理\n\t\t\t// 这里可以根据需要添加特殊的渲染逻辑\n\t\t\t// 例如,可以添加一个包装 div 来标识这是推理内容\n\t\t\tprocessedContent = processedContent.trim()\n\t\t}\n\n\t\tlet html = mdInstance.render(processedContent)\n\n\t\t// 安全地使用 DOMPurify\n\t\tconst purify = getDOMPurify()\n\t\tif (purify) {\n\t\t\thtml = purify.sanitize(html)\n\t\t}\n\n\t\t// 在 sanitize 之后,手动为所有 <a> 标签添加 target=\"_blank\"\n\t\thtml = addTargetBlank(html)\n\n\t\t// 如果是推理内容,可以添加额外的包装\n\t\tif (options?.isReasoning) {\n\t\t\t// 可以在这里添加特殊的 CSS 类或包装\n\t\t\t// 例如:return `<div class=\"reasoning-content\">${sanitizedHtml}</div>`\n\t\t\treturn html\n\t\t}\n\n\t\treturn html\n\t}\n}\n\nconsole.log('markdown', markdown)\n\nexport default markdown\n"],"names":["DOMPurify","Markdown","mdAbbr","mdContainer","mdDeflist","mdEmoji","mdFootnote","mdIns","mdMark","mdSub","mdSup"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"markdown.mjs","sources":["../../../../../../packages/components/touchchat/utils/markdown.ts"],"sourcesContent":["import Markdown from 'markdown-it'\r\nimport mdAbbr from 'markdown-it-abbr'\r\nimport mdContainer from 'markdown-it-container'\r\nimport mdDeflist from 'markdown-it-deflist'\r\nimport { full as mdEmoji } from 'markdown-it-emoji'\r\nimport mdFootnote from 'markdown-it-footnote'\r\nimport mdIns from 'markdown-it-ins'\r\nimport mdMark from 'markdown-it-mark'\r\nimport mdSub from 'markdown-it-sub'\r\nimport mdSup from 'markdown-it-sup'\r\nimport DOMPurify from 'dompurify'\r\nimport highlightPlugin from './hight-it.ts'\r\n\r\n// 确保 DOMPurify 在浏览器环境中正确初始化\r\nconst getDOMPurify = () => {\r\n\tif (typeof window !== 'undefined') {\r\n\t\treturn DOMPurify\r\n\t}\r\n\treturn null\r\n}\r\n\r\ninterface RenderOptions {\r\n\tisReasoning?: boolean\r\n}\r\n\r\n// 创建原始 markdown-it 实例\r\nconst mdInstance = new Markdown({\r\n\thtml: true,\r\n\txhtmlOut: false,\r\n\tbreaks: true,\r\n\tlangPrefix: 'language-',\r\n\tlinkify: false,\r\n\ttypographer: true\r\n})\r\n\t.use(mdAbbr)\r\n\t.use(mdContainer, 'warning')\r\n\t.use(mdDeflist)\r\n\t.use(mdEmoji)\r\n\t.use(mdFootnote)\r\n\t.use(mdIns)\r\n\t.use(mdMark)\r\n\t.use(mdSub)\r\n\t.use(mdSup)\r\n\t.use(highlightPlugin)\r\n\r\n// 自定义渲染规则\r\nmdInstance.renderer.rules.table_open = function () {\r\n\treturn '<table class=\"table touchchat-table\">\\n'\r\n}\r\n\r\n// 自定义链接渲染规则,添加 target=\"_blank\" 在新窗口打开\r\nmdInstance.renderer.rules.link_open = function (tokens: any[], idx: number, options: any, env: any, slf: any) {\r\n\tconst token = tokens[idx]\r\n\t// 添加 target=\"_blank\" 属性\r\n\ttoken.attrSet('target', '_blank')\r\n\t// 添加 rel=\"noopener noreferrer\" 安全属性\r\n\ttoken.attrSet('rel', 'noopener noreferrer')\r\n\treturn slf.renderToken(tokens, idx, options, env, slf)\r\n}\r\n\r\nmdInstance.renderer.rules.paragraph_open = mdInstance.renderer.rules.heading_open = (tokens: any[], idx: number, options: any, env: any, slf: any) => {\r\n\tlet line: number | undefined\r\n\tif (tokens[idx].map && tokens[idx].level === 0) {\r\n\t\tline = tokens[idx].map[0]\r\n\t\ttokens[idx].attrJoin('class', 'line')\r\n\t\ttokens[idx].attrSet('data-line', String(line))\r\n\t}\r\n\treturn slf.renderToken(tokens, idx, options, env, slf)\r\n}\r\n\r\n// 为所有 <a> 标签添加 target=\"_blank\" 属性\r\nconst addTargetBlank = (html: string): string => {\r\n\t// 匹配 <a> 标签,确保没有已存在的 target 属性\r\n\treturn html.replace(/<a([^>]*)>/gi, (match, attrs) => {\r\n\t\t// 检查是否已有 target 属性\r\n\t\tif (!/target\\s*=\\s*[\"']/i.test(attrs)) {\r\n\t\t\treturn `<a${attrs} target=\"_blank\" rel=\"noopener noreferrer\">`\r\n\t\t}\r\n\t\treturn match\r\n\t})\r\n}\r\n\r\n// 创建包装对象,支持带参数的 render 方法\r\nconst markdown = {\r\n\trender: (content: string, options?: RenderOptions): string => {\r\n\t\tif (!content) return ''\r\n\r\n\t\t// 根据 isReasoning 参数添加不同的 CSS 类\r\n\t\tlet processedContent = content\r\n\t\tif (options?.isReasoning) {\r\n\t\t\t// 对于推理内容,可以添加特定的标记或处理\r\n\t\t\t// 这里可以根据需要添加特殊的渲染逻辑\r\n\t\t\t// 例如,可以添加一个包装 div 来标识这是推理内容\r\n\t\t\tprocessedContent = processedContent.trim()\r\n\t\t}\r\n\r\n\t\tlet html = mdInstance.render(processedContent)\r\n\r\n\t\t// 安全地使用 DOMPurify\r\n\t\tconst purify = getDOMPurify()\r\n\t\tif (purify) {\r\n\t\t\thtml = purify.sanitize(html)\r\n\t\t}\r\n\r\n\t\t// 在 sanitize 之后,手动为所有 <a> 标签添加 target=\"_blank\"\r\n\t\thtml = addTargetBlank(html)\r\n\r\n\t\t// 如果是推理内容,可以添加额外的包装\r\n\t\tif (options?.isReasoning) {\r\n\t\t\t// 可以在这里添加特殊的 CSS 类或包装\r\n\t\t\t// 例如:return `<div class=\"reasoning-content\">${sanitizedHtml}</div>`\r\n\t\t\treturn html\r\n\t\t}\r\n\r\n\t\treturn html\r\n\t}\r\n}\r\n\r\nconsole.log('markdown', markdown)\r\n\r\nexport default markdown\r\n"],"names":["DOMPurify","Markdown","mdAbbr","mdContainer","mdDeflist","mdEmoji","mdFootnote","mdIns","mdMark","mdSub","mdSup"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.mjs","sources":["../../../../../../packages/components/touchchat/utils/socket.ts"],"sourcesContent":["export const SOCKET_STATUS = {\n WAITING: 'waiting', // 等待连接,初始状态\n CONNECTING: 'connecting', // 连接中\n RECONNECTING: 'reconnecting', // 重新连接中\n CONNECTED: 'connected', // 已经连接成功\n CLOSING: 'closing', // 关闭连接中\n} as const;\n\ntype SocketStatus = (typeof SOCKET_STATUS)[keyof typeof SOCKET_STATUS];\n\ntype MessageCallback = (data: any) => void;\ntype StatusCallback = (status: SocketStatus) => void;\n\nexport class Socket {\n #socket: WebSocket | undefined;\n #url: string;\n #onMsgCallback: MessageCallback | undefined;\n #statusCallback: StatusCallback | undefined;\n #autoReconnect: boolean | undefined;\n #timeTask: ReturnType<typeof setTimeout> | undefined;\n #directivity: any;\n status: SocketStatus;\n\n constructor(\n url: string,\n onMsgCallback?: MessageCallback,\n statusCallback?: StatusCallback,\n directivity?: any\n ) {\n this.#url = url;\n this.#onMsgCallback = onMsgCallback;\n this.#statusCallback = statusCallback;\n this.status = SOCKET_STATUS.WAITING;\n this.#directivity = directivity; // 用于修改 this 指向\n }\n\n // 使用箭头函数确保 this 指向正确\n connect = (autoReconnect: boolean = true): Promise<boolean> => {\n if (!this.#url) throw new Error('url is not initialized');\n if (this.#socket) throw new Error('socket is already initialized');\n this.#autoReconnect = autoReconnect;\n return new Promise((resolve, reject) => this.#connect(resolve, reject));\n };\n\n #notifyStatus(): void {\n if (this.#statusCallback) {\n this.#statusCallback.call(this.#directivity, this.status);\n }\n }\n\n // eslint-disable-next-line no-dupe-class-members\n #connect(resolve?: (value: boolean) => void, reject?: (reason?: any) => void): void {\n if (this.status === SOCKET_STATUS.CLOSING) return;\n console.log('socket connect');\n clearTimeout(this.#timeTask);\n console.log('this.#url ========= ', this.#url);\n this.#socket = new WebSocket(this.#url);\n this.status = SOCKET_STATUS.WAITING;\n this.#socket.onopen = () => {\n console.log('socket onopen');\n if (this.status === SOCKET_STATUS.CLOSING) {\n this.close();\n return;\n }\n this.status = SOCKET_STATUS.CONNECTED;\n this.#notifyStatus();\n if (resolve) {\n resolve(true);\n }\n };\n this.#socket.onerror = (event: Event) => {\n console.log('socket onerror');\n this.#socket?.close();\n this.#socket = undefined;\n if (\n this.#autoReconnect === true &&\n this.status !== SOCKET_STATUS.RECONNECTING &&\n this.status !== SOCKET_STATUS.CONNECTED &&\n this.status !== SOCKET_STATUS.CLOSING\n ) {\n this.status = SOCKET_STATUS.RECONNECTING;\n this.#notifyStatus();\n this.#timeTask = setTimeout(() => {\n this.#connect(resolve, reject);\n }, 3000);\n return;\n } else if (reject) {\n reject(event);\n }\n this.status = SOCKET_STATUS.WAITING;\n this.#notifyStatus();\n };\n this.#socket.onclose = (event: CloseEvent) => {\n console.log('socket onclose', event);\n this.#socket = undefined;\n\n // 先保存当前状态,然后再进行判断\n const currentStatus = this.status;\n this.status = SOCKET_STATUS.CLOSING;\n\n if (event.code === 1000) {\n this.#notifyStatus();\n return;\n }\n\n if (\n this.#autoReconnect === true &&\n currentStatus !== SOCKET_STATUS.RECONNECTING &&\n currentStatus !== SOCKET_STATUS.CONNECTED &&\n currentStatus !== SOCKET_STATUS.CLOSING\n ) {\n this.status = SOCKET_STATUS.RECONNECTING;\n this.#notifyStatus();\n this.#timeTask = setTimeout(() => {\n this.#connect();\n }, 3000);\n } else {\n this.status = SOCKET_STATUS.CLOSING;\n this.#notifyStatus();\n }\n };\n this.#socket.onmessage = (event: MessageEvent) => {\n if (this.#onMsgCallback && typeof this.#onMsgCallback === 'function') {\n if (typeof event.data === 'string') {\n try {\n const data = JSON.parse(event.data);\n this.#onMsgCallback.call(this.#directivity, data); // 使得 onMsgCallback 方法的 this 能指向 globalWebSocket\n data.type === 'chatCrmSuccess' && console.log('Socket message chatCrmSuccess', data);\n } catch (e) {\n this.#onMsgCallback.call(this.#directivity, event.data);\n console.log('Socket message received', event.data);\n }\n } else {\n this.#onMsgCallback.call(this.#directivity, event.data);\n }\n }\n };\n }\n\n /**\n * 发送数据\n * @param data 发送的数据,可以是字符串、对象或 Blob\n * @param sendType 发送类型,可选值:binary、text\n */\n async send(\n data: string | object | Blob | ArrayBuffer,\n sendType: 'text' | 'binary' = 'text'\n ): Promise<void> {\n if (this.#socket && this.status === SOCKET_STATUS.CONNECTED) {\n let finalData: string | Blob | ArrayBuffer;\n if (data instanceof Blob || data instanceof ArrayBuffer) {\n finalData = data;\n } else if (sendType === 'text') {\n if (typeof data === 'string') {\n finalData = data;\n } else {\n finalData = JSON.stringify(data);\n }\n } else {\n if (typeof data === 'string') {\n finalData = new Blob([data]);\n } else {\n finalData = new Blob([JSON.stringify(data)]);\n }\n }\n this.#socket.send(finalData);\n }\n }\n\n close(): void {\n if (this.status === SOCKET_STATUS.CLOSING || this.status === SOCKET_STATUS.WAITING) return;\n console.log('socket close');\n if (this.#socket && this.status === SOCKET_STATUS.CONNECTED) {\n this.#socket.close();\n }\n if (this.#timeTask) {\n clearTimeout(this.#timeTask);\n this.#timeTask = undefined;\n }\n this.status = SOCKET_STATUS.CLOSING;\n this.#autoReconnect = false;\n this.#notifyStatus();\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"socket.mjs","sources":["../../../../../../packages/components/touchchat/utils/socket.ts"],"sourcesContent":["export const SOCKET_STATUS = {\r\n WAITING: 'waiting', // 等待连接,初始状态\r\n CONNECTING: 'connecting', // 连接中\r\n RECONNECTING: 'reconnecting', // 重新连接中\r\n CONNECTED: 'connected', // 已经连接成功\r\n CLOSING: 'closing', // 关闭连接中\r\n} as const;\r\n\r\ntype SocketStatus = (typeof SOCKET_STATUS)[keyof typeof SOCKET_STATUS];\r\n\r\ntype MessageCallback = (data: any) => void;\r\ntype StatusCallback = (status: SocketStatus) => void;\r\n\r\nexport class Socket {\r\n #socket: WebSocket | undefined;\r\n #url: string;\r\n #onMsgCallback: MessageCallback | undefined;\r\n #statusCallback: StatusCallback | undefined;\r\n #autoReconnect: boolean | undefined;\r\n #timeTask: ReturnType<typeof setTimeout> | undefined;\r\n #directivity: any;\r\n status: SocketStatus;\r\n\r\n constructor(\r\n url: string,\r\n onMsgCallback?: MessageCallback,\r\n statusCallback?: StatusCallback,\r\n directivity?: any\r\n ) {\r\n this.#url = url;\r\n this.#onMsgCallback = onMsgCallback;\r\n this.#statusCallback = statusCallback;\r\n this.status = SOCKET_STATUS.WAITING;\r\n this.#directivity = directivity; // 用于修改 this 指向\r\n }\r\n\r\n // 使用箭头函数确保 this 指向正确\r\n connect = (autoReconnect: boolean = true): Promise<boolean> => {\r\n if (!this.#url) throw new Error('url is not initialized');\r\n if (this.#socket) throw new Error('socket is already initialized');\r\n this.#autoReconnect = autoReconnect;\r\n return new Promise((resolve, reject) => this.#connect(resolve, reject));\r\n };\r\n\r\n #notifyStatus(): void {\r\n if (this.#statusCallback) {\r\n this.#statusCallback.call(this.#directivity, this.status);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line no-dupe-class-members\r\n #connect(resolve?: (value: boolean) => void, reject?: (reason?: any) => void): void {\r\n if (this.status === SOCKET_STATUS.CLOSING) return;\r\n console.log('socket connect');\r\n clearTimeout(this.#timeTask);\r\n console.log('this.#url ========= ', this.#url);\r\n this.#socket = new WebSocket(this.#url);\r\n this.status = SOCKET_STATUS.WAITING;\r\n this.#socket.onopen = () => {\r\n console.log('socket onopen');\r\n if (this.status === SOCKET_STATUS.CLOSING) {\r\n this.close();\r\n return;\r\n }\r\n this.status = SOCKET_STATUS.CONNECTED;\r\n this.#notifyStatus();\r\n if (resolve) {\r\n resolve(true);\r\n }\r\n };\r\n this.#socket.onerror = (event: Event) => {\r\n console.log('socket onerror');\r\n this.#socket?.close();\r\n this.#socket = undefined;\r\n if (\r\n this.#autoReconnect === true &&\r\n this.status !== SOCKET_STATUS.RECONNECTING &&\r\n this.status !== SOCKET_STATUS.CONNECTED &&\r\n this.status !== SOCKET_STATUS.CLOSING\r\n ) {\r\n this.status = SOCKET_STATUS.RECONNECTING;\r\n this.#notifyStatus();\r\n this.#timeTask = setTimeout(() => {\r\n this.#connect(resolve, reject);\r\n }, 3000);\r\n return;\r\n } else if (reject) {\r\n reject(event);\r\n }\r\n this.status = SOCKET_STATUS.WAITING;\r\n this.#notifyStatus();\r\n };\r\n this.#socket.onclose = (event: CloseEvent) => {\r\n console.log('socket onclose', event);\r\n this.#socket = undefined;\r\n\r\n // 先保存当前状态,然后再进行判断\r\n const currentStatus = this.status;\r\n this.status = SOCKET_STATUS.CLOSING;\r\n\r\n if (event.code === 1000) {\r\n this.#notifyStatus();\r\n return;\r\n }\r\n\r\n if (\r\n this.#autoReconnect === true &&\r\n currentStatus !== SOCKET_STATUS.RECONNECTING &&\r\n currentStatus !== SOCKET_STATUS.CONNECTED &&\r\n currentStatus !== SOCKET_STATUS.CLOSING\r\n ) {\r\n this.status = SOCKET_STATUS.RECONNECTING;\r\n this.#notifyStatus();\r\n this.#timeTask = setTimeout(() => {\r\n this.#connect();\r\n }, 3000);\r\n } else {\r\n this.status = SOCKET_STATUS.CLOSING;\r\n this.#notifyStatus();\r\n }\r\n };\r\n this.#socket.onmessage = (event: MessageEvent) => {\r\n if (this.#onMsgCallback && typeof this.#onMsgCallback === 'function') {\r\n if (typeof event.data === 'string') {\r\n try {\r\n const data = JSON.parse(event.data);\r\n this.#onMsgCallback.call(this.#directivity, data); // 使得 onMsgCallback 方法的 this 能指向 globalWebSocket\r\n data.type === 'chatCrmSuccess' && console.log('Socket message chatCrmSuccess', data);\r\n } catch (e) {\r\n this.#onMsgCallback.call(this.#directivity, event.data);\r\n console.log('Socket message received', event.data);\r\n }\r\n } else {\r\n this.#onMsgCallback.call(this.#directivity, event.data);\r\n }\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * 发送数据\r\n * @param data 发送的数据,可以是字符串、对象或 Blob\r\n * @param sendType 发送类型,可选值:binary、text\r\n */\r\n async send(\r\n data: string | object | Blob | ArrayBuffer,\r\n sendType: 'text' | 'binary' = 'text'\r\n ): Promise<void> {\r\n if (this.#socket && this.status === SOCKET_STATUS.CONNECTED) {\r\n let finalData: string | Blob | ArrayBuffer;\r\n if (data instanceof Blob || data instanceof ArrayBuffer) {\r\n finalData = data;\r\n } else if (sendType === 'text') {\r\n if (typeof data === 'string') {\r\n finalData = data;\r\n } else {\r\n finalData = JSON.stringify(data);\r\n }\r\n } else {\r\n if (typeof data === 'string') {\r\n finalData = new Blob([data]);\r\n } else {\r\n finalData = new Blob([JSON.stringify(data)]);\r\n }\r\n }\r\n this.#socket.send(finalData);\r\n }\r\n }\r\n\r\n close(): void {\r\n if (this.status === SOCKET_STATUS.CLOSING || this.status === SOCKET_STATUS.WAITING) return;\r\n console.log('socket close');\r\n if (this.#socket && this.status === SOCKET_STATUS.CONNECTED) {\r\n this.#socket.close();\r\n }\r\n if (this.#timeTask) {\r\n clearTimeout(this.#timeTask);\r\n this.#timeTask = undefined;\r\n }\r\n this.status = SOCKET_STATUS.CLOSING;\r\n this.#autoReconnect = false;\r\n this.#notifyStatus();\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.mjs","sources":["../../../../../../packages/components/touchchat/utils/tools.ts"],"sourcesContent":["/**\n * 生成唯一聊天ID\n * @returns 唯一ID字符串\n */\nexport function generateChatId(): string {\n\tconst timestamp = Date.now().toString(36)\n\tconst randomStr = Math.random().toString(36).substring(2, 10)\n\treturn `${timestamp}${randomStr}`\n}\n\n/**\n * 格式化日期\n * @param date 日期对象或时间戳\n * @param format 日期格式字符串,默认为'YYYY-MM-DD HH:mm:ss'\n * @returns 格式化后的日期字符串\n */\nexport function formatDate(date: Date | number, format: string = 'YYYY-MM-DD HH:mm:ss'): string {\n\tif (typeof date === 'number') {\n\t\tdate = new Date(date)\n\t}\n\n\tconst year = date.getFullYear()\n\tconst month = String(date.getMonth() + 1).padStart(2, '0')\n\tconst day = String(date.getDate()).padStart(2, '0')\n\tconst hours = String(date.getHours()).padStart(2, '0')\n\tconst minutes = String(date.getMinutes()).padStart(2, '0')\n\tconst seconds = String(date.getSeconds()).padStart(2, '0')\n\n\treturn format.replace('YYYY', year.toString()).replace('MM', month).replace('DD', day).replace('HH', hours).replace('mm', minutes).replace('ss', seconds)\n}\n\n/**\n * 节流函数\n * @param func 需要节流的函数\n * @param wait 等待时间(毫秒)\n * @returns 节流后的函数\n */\n// 定义一个通用的函数类型\ntype AnyFunction = (...args: any[]) => any\n\nexport function throttle(func: AnyFunction, wait: number): AnyFunction {\n\tlet lastTime = 0\n\treturn function (this: any, ...args: any[]) {\n\t\tconst now = Date.now()\n\t\tif (now - lastTime >= wait) {\n\t\t\tlastTime = now\n\t\t\treturn func.apply(this, args)\n\t\t}\n\t}\n}\n\n/**\n * 显示提示框\n * @param message 提示消息\n * @param type 提示类型,可选值:'success', 'error', 'warning', 'info'\n * @param duration 提示框显示时间(毫秒),默认为2000\n */\nexport function showToast(message: string, type: 'success' | 'error' | 'warning' | 'info' = 'info', duration: number = 2000): void {\n\t// 创建toast元素\n\tconst toast = document.createElement('div')\n\ttoast.className = `touch-toast touch-toast-${type}`\n\ttoast.textContent = message\n\n\t// 添加样式\n\tconst style = document.createElement('style')\n\tstyle.textContent = `\n .touch-toast {\n position: fixed;\n top: 4%;\n left: 50%;\n transform: translate(-50%, -50%);\n padding: 0.75em 1.25em;\n border-radius: 0.5em;\n color: #fff;\n font-size: 0.875em;\n z-index: 9999;\n transition: opacity 0.3s ease;\n }\n .touch-toast-success {\n background-color: rgba(103, 194, 58, 0.95);\n }\n .touch-toast-error {\n background-color: rgba(245, 108, 108, 0.95);\n }\n .touch-toast-warning {\n background-color: rgba(230, 162, 60, 0.95);\n }\n .touch-toast-info {\n background-color: rgba(144, 147, 153, 0.95);\n }\n .touch-toast-fadeout {\n opacity: 0;\n }\n `\n\tdocument.head.appendChild(style)\n\n\t// 添加到文档\n\tdocument.body.appendChild(toast)\n\n\t// 设置自动移除\n\tsetTimeout(() => {\n\t\ttoast.classList.add('touch-toast-fadeout')\n\t\tsetTimeout(() => {\n\t\t\tdocument.body.removeChild(toast)\n\t\t\tdocument.head.removeChild(style)\n\t\t}, 300)\n\t}, duration)\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.mjs","sources":["../../../../../../packages/components/touchchat/utils/tools.ts"],"sourcesContent":["/**\r\n * 生成唯一聊天ID\r\n * @returns 唯一ID字符串\r\n */\r\nexport function generateChatId(): string {\r\n\tconst timestamp = Date.now().toString(36)\r\n\tconst randomStr = Math.random().toString(36).substring(2, 10)\r\n\treturn `${timestamp}${randomStr}`\r\n}\r\n\r\n/**\r\n * 格式化日期\r\n * @param date 日期对象或时间戳\r\n * @param format 日期格式字符串,默认为'YYYY-MM-DD HH:mm:ss'\r\n * @returns 格式化后的日期字符串\r\n */\r\nexport function formatDate(date: Date | number, format: string = 'YYYY-MM-DD HH:mm:ss'): string {\r\n\tif (typeof date === 'number') {\r\n\t\tdate = new Date(date)\r\n\t}\r\n\r\n\tconst year = date.getFullYear()\r\n\tconst month = String(date.getMonth() + 1).padStart(2, '0')\r\n\tconst day = String(date.getDate()).padStart(2, '0')\r\n\tconst hours = String(date.getHours()).padStart(2, '0')\r\n\tconst minutes = String(date.getMinutes()).padStart(2, '0')\r\n\tconst seconds = String(date.getSeconds()).padStart(2, '0')\r\n\r\n\treturn format.replace('YYYY', year.toString()).replace('MM', month).replace('DD', day).replace('HH', hours).replace('mm', minutes).replace('ss', seconds)\r\n}\r\n\r\n/**\r\n * 节流函数\r\n * @param func 需要节流的函数\r\n * @param wait 等待时间(毫秒)\r\n * @returns 节流后的函数\r\n */\r\n// 定义一个通用的函数类型\r\ntype AnyFunction = (...args: any[]) => any\r\n\r\nexport function throttle(func: AnyFunction, wait: number): AnyFunction {\r\n\tlet lastTime = 0\r\n\treturn function (this: any, ...args: any[]) {\r\n\t\tconst now = Date.now()\r\n\t\tif (now - lastTime >= wait) {\r\n\t\t\tlastTime = now\r\n\t\t\treturn func.apply(this, args)\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * 显示提示框\r\n * @param message 提示消息\r\n * @param type 提示类型,可选值:'success', 'error', 'warning', 'info'\r\n * @param duration 提示框显示时间(毫秒),默认为2000\r\n */\r\nexport function showToast(message: string, type: 'success' | 'error' | 'warning' | 'info' = 'info', duration: number = 2000): void {\r\n\t// 创建toast元素\r\n\tconst toast = document.createElement('div')\r\n\ttoast.className = `touch-toast touch-toast-${type}`\r\n\ttoast.textContent = message\r\n\r\n\t// 添加样式\r\n\tconst style = document.createElement('style')\r\n\tstyle.textContent = `\r\n .touch-toast {\r\n position: fixed;\r\n top: 4%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n padding: 0.75em 1.25em;\r\n border-radius: 0.5em;\r\n color: #fff;\r\n font-size: 0.875em;\r\n z-index: 9999;\r\n transition: opacity 0.3s ease;\r\n }\r\n .touch-toast-success {\r\n background-color: rgba(103, 194, 58, 0.95);\r\n }\r\n .touch-toast-error {\r\n background-color: rgba(245, 108, 108, 0.95);\r\n }\r\n .touch-toast-warning {\r\n background-color: rgba(230, 162, 60, 0.95);\r\n }\r\n .touch-toast-info {\r\n background-color: rgba(144, 147, 153, 0.95);\r\n }\r\n .touch-toast-fadeout {\r\n opacity: 0;\r\n }\r\n `\r\n\tdocument.head.appendChild(style)\r\n\r\n\t// 添加到文档\r\n\tdocument.body.appendChild(toast)\r\n\r\n\t// 设置自动移除\r\n\tsetTimeout(() => {\r\n\t\ttoast.classList.add('touch-toast-fadeout')\r\n\t\tsetTimeout(() => {\r\n\t\t\tdocument.body.removeChild(toast)\r\n\t\t\tdocument.head.removeChild(style)\r\n\t\t}, 300)\r\n\t}, duration)\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uuid.mjs","sources":["../../../../../../packages/components/touchchat/utils/uuid.ts"],"sourcesContent":["export default function generateUUID(): string {\n const s: string[] = [];\n const hexDigits: string = '0123456789abcdef';\n for (let i = 0; i < 36; i++) {\n s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);\n }\n s[14] = '4'; // bits 12-15 of the time_hi_and_version field to 0010\n s[19] = hexDigits.substr((parseInt(s[19], 16) & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01\n s[8] = s[13] = s[18] = s[23] = '-';\n const uuid: string = s.join('');\n return uuid;\n}\n"],"names":[],"mappings":"AAAA,SAAwB,YAAuB,GAAA;AAC7C,EAAA,MAAM,IAAc,EAAC,CAAA;AACrB,EAAA,MAAM,SAAoB,GAAA,kBAAA,CAAA;AAC1B,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,EAAA,EAAI,CAAK,EAAA,EAAA;AAC3B,IAAE,CAAA,CAAA,CAAC,CAAI,GAAA,SAAA,CAAU,MAAO,CAAA,IAAA,CAAK,KAAM,CAAA,IAAA,CAAK,MAAO,EAAA,GAAI,EAAI,CAAA,EAAG,CAAC,CAAA,CAAA;AAAA,GAC7D;AACA,EAAA,CAAA,CAAE,EAAE,CAAI,GAAA,GAAA,CAAA;AACR,EAAA,CAAA,CAAE,EAAE,CAAA,GAAI,SAAU,CAAA,MAAA,CAAQ,QAAS,CAAA,CAAA,CAAE,EAAE,CAAA,EAAG,EAAE,CAAA,GAAI,CAAO,GAAA,CAAA,EAAK,CAAC,CAAA,CAAA;AAC7D,EAAE,CAAA,CAAA,CAAC,CAAI,GAAA,CAAA,CAAE,EAAE,CAAA,GAAI,EAAE,EAAE,CAAA,GAAI,CAAE,CAAA,EAAE,CAAI,GAAA,GAAA,CAAA;AAC/B,EAAM,MAAA,IAAA,GAAe,CAAE,CAAA,IAAA,CAAK,EAAE,CAAA,CAAA;AAC9B,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}
|
|
1
|
+
{"version":3,"file":"uuid.mjs","sources":["../../../../../../packages/components/touchchat/utils/uuid.ts"],"sourcesContent":["export default function generateUUID(): string {\r\n const s: string[] = [];\r\n const hexDigits: string = '0123456789abcdef';\r\n for (let i = 0; i < 36; i++) {\r\n s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);\r\n }\r\n s[14] = '4'; // bits 12-15 of the time_hi_and_version field to 0010\r\n s[19] = hexDigits.substr((parseInt(s[19], 16) & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01\r\n s[8] = s[13] = s[18] = s[23] = '-';\r\n const uuid: string = s.join('');\r\n return uuid;\r\n}\r\n"],"names":[],"mappings":"AAAA,SAAwB,YAAuB,GAAA;AAC7C,EAAA,MAAM,IAAc,EAAC,CAAA;AACrB,EAAA,MAAM,SAAoB,GAAA,kBAAA,CAAA;AAC1B,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,EAAA,EAAI,CAAK,EAAA,EAAA;AAC3B,IAAE,CAAA,CAAA,CAAC,CAAI,GAAA,SAAA,CAAU,MAAO,CAAA,IAAA,CAAK,KAAM,CAAA,IAAA,CAAK,MAAO,EAAA,GAAI,EAAI,CAAA,EAAG,CAAC,CAAA,CAAA;AAAA,GAC7D;AACA,EAAA,CAAA,CAAE,EAAE,CAAI,GAAA,GAAA,CAAA;AACR,EAAA,CAAA,CAAE,EAAE,CAAA,GAAI,SAAU,CAAA,MAAA,CAAQ,QAAS,CAAA,CAAA,CAAE,EAAE,CAAA,EAAG,EAAE,CAAA,GAAI,CAAO,GAAA,CAAA,EAAK,CAAC,CAAA,CAAA;AAC7D,EAAE,CAAA,CAAA,CAAC,CAAI,GAAA,CAAA,CAAE,EAAE,CAAA,GAAI,EAAE,EAAE,CAAA,GAAI,CAAE,CAAA,EAAE,CAAI,GAAA,GAAA,CAAA;AAC/B,EAAM,MAAA,IAAA,GAAe,CAAE,CAAA,IAAA,CAAK,EAAE,CAAA,CAAA;AAC9B,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.mjs","sources":["../../../../packages/utils/config.ts"],"sourcesContent":["import { getCurrentInstance } from 'vue';\n\n// 定义全局配置选项类型\nexport interface TouchVueUIOptions {\n size?: 'small' | 'medium' | 'large';\n zIndex?: number;\n // 其他可能的配置项...\n}\n\n/**\n * 获取组件库全局配置\n * 可以在组件内部使用此函数获取全局配置\n * @returns 全局配置对象\n */\nexport const useGlobalConfig = (): TouchVueUIOptions => {\n const instance = getCurrentInstance();\n if (!instance) {\n console.warn('useGlobalConfig() 只能在setup()或生命周期钩子中调用');\n return {} as TouchVueUIOptions;\n }\n\n // 从应用实例中获取全局配置\n return instance.appContext.config.globalProperties.$TOUCHVUE_CONFIG || {};\n};\n\n/**\n * 获取组件配置\n * 合并全局配置和组件自身的props配置\n * @param props 组件props\n * @param key 配置键名(必须是TouchVueUIOptions中存在的属性)\n * @returns 合并后的配置值\n */\nexport const getComponentConfig = <T extends keyof TouchVueUIOptions>(\n props: Record<string, any>,\n key: T\n): TouchVueUIOptions[T] => {\n const globalConfig = useGlobalConfig();\n\n // 优先使用组件自身的props配置,如果没有则使用全局配置\n return (props[key] ?? globalConfig[key]) as TouchVueUIOptions[T];\n};\n"],"names":[],"mappings":";;AAcO,MAAM,kBAAkB,MAAyB;AACtD,EAAA,MAAM,WAAW,kBAAmB,EAAA,CAAA;AACpC,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAA,OAAA,CAAQ,KAAK,yGAAwC,CAAA,CAAA;AACrD,IAAA,OAAO,EAAC,CAAA;AAAA,GACV;AAGA,EAAA,OAAO,QAAS,CAAA,UAAA,CAAW,MAAO,CAAA,gBAAA,CAAiB,oBAAoB,EAAC,CAAA;AAC1E,EAAA;AASa,MAAA,kBAAA,GAAqB,CAChC,KAAA,EACA,GACyB,KAAA;AAnC3B,EAAA,IAAA,EAAA,CAAA;AAoCE,EAAA,MAAM,eAAe,eAAgB,EAAA,CAAA;AAGrC,EAAA,OAAA,CAAQ,EAAM,GAAA,KAAA,CAAA,GAAG,CAAT,KAAA,IAAA,GAAA,EAAA,GAAc,aAAa,GAAG,CAAA,CAAA;AACxC;;;;"}
|
|
1
|
+
{"version":3,"file":"config.mjs","sources":["../../../../packages/utils/config.ts"],"sourcesContent":["import { getCurrentInstance } from 'vue';\r\n\r\n// 定义全局配置选项类型\r\nexport interface TouchVueUIOptions {\r\n size?: 'small' | 'medium' | 'large';\r\n zIndex?: number;\r\n // 其他可能的配置项...\r\n}\r\n\r\n/**\r\n * 获取组件库全局配置\r\n * 可以在组件内部使用此函数获取全局配置\r\n * @returns 全局配置对象\r\n */\r\nexport const useGlobalConfig = (): TouchVueUIOptions => {\r\n const instance = getCurrentInstance();\r\n if (!instance) {\r\n console.warn('useGlobalConfig() 只能在setup()或生命周期钩子中调用');\r\n return {} as TouchVueUIOptions;\r\n }\r\n\r\n // 从应用实例中获取全局配置\r\n return instance.appContext.config.globalProperties.$TOUCHVUE_CONFIG || {};\r\n};\r\n\r\n/**\r\n * 获取组件配置\r\n * 合并全局配置和组件自身的props配置\r\n * @param props 组件props\r\n * @param key 配置键名(必须是TouchVueUIOptions中存在的属性)\r\n * @returns 合并后的配置值\r\n */\r\nexport const getComponentConfig = <T extends keyof TouchVueUIOptions>(\r\n props: Record<string, any>,\r\n key: T\r\n): TouchVueUIOptions[T] => {\r\n const globalConfig = useGlobalConfig();\r\n\r\n // 优先使用组件自身的props配置,如果没有则使用全局配置\r\n return (props[key] ?? globalConfig[key]) as TouchVueUIOptions[T];\r\n};\r\n"],"names":[],"mappings":";;AAcO,MAAM,kBAAkB,MAAyB;AACtD,EAAA,MAAM,WAAW,kBAAmB,EAAA,CAAA;AACpC,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAA,OAAA,CAAQ,KAAK,yGAAwC,CAAA,CAAA;AACrD,IAAA,OAAO,EAAC,CAAA;AAAA,GACV;AAGA,EAAA,OAAO,QAAS,CAAA,UAAA,CAAW,MAAO,CAAA,gBAAA,CAAiB,oBAAoB,EAAC,CAAA;AAC1E,EAAA;AASa,MAAA,kBAAA,GAAqB,CAChC,KAAA,EACA,GACyB,KAAA;AAnC3B,EAAA,IAAA,EAAA,CAAA;AAoCE,EAAA,MAAM,eAAe,eAAgB,EAAA,CAAA;AAGrC,EAAA,OAAA,CAAQ,EAAM,GAAA,KAAA,CAAA,GAAG,CAAT,KAAA,IAAA,GAAA,EAAA,GAAc,aAAa,GAAG,CAAA,CAAA;AACxC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.mjs","sources":["../../../../packages/utils/types.ts"],"sourcesContent":["import type { App, Plugin } from 'vue';\n\n/* 生成install函数 */\n\nexport type SFCWithInstall<T> = T & Plugin;\n\nexport type SFCInstallWithContext<T> = SFCWithInstall<T> & {\n _context: App | null;\n};\n\nexport const withInstall = <T, E extends Record<string, any>>(main: T, extra?: E) => {\n (main as SFCWithInstall<T>).install = (app: App): void => {\n for (const comp of [main, ...Object.values(extra ?? {})]) {\n app.component(comp.name, comp);\n }\n };\n\n if (extra) {\n for (const [key, comp] of Object.entries(extra)) {\n (main as any)[key] = comp;\n }\n }\n return main as SFCWithInstall<T> & E;\n};\n\nexport const withInstallFunction = <T>(fn: T, name: string) => {\n (fn as SFCWithInstall<T>).install = (app: App) => {\n (fn as SFCInstallWithContext<T>)._context = app;\n app.config.globalProperties[name] = fn;\n };\n\n return fn as SFCInstallWithContext<T>;\n};\n"],"names":[],"mappings":"AAUa,MAAA,WAAA,GAAc,CAAmC,IAAA,EAAS,KAAc,KAAA;AACnF,EAAC,IAAA,CAA2B,OAAU,GAAA,CAAC,GAAmB,KAAA;AACxD,IAAW,KAAA,MAAA,IAAA,IAAQ,CAAC,IAAA,EAAM,GAAG,MAAA,CAAO,OAAO,KAAS,IAAA,IAAA,GAAA,KAAA,GAAA,EAAE,CAAC,CAAG,EAAA;AACxD,MAAI,GAAA,CAAA,SAAA,CAAU,IAAK,CAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,KAC/B;AAAA,GACF,CAAA;AAEA,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,KAAA,MAAW,CAAC,GAAK,EAAA,IAAI,KAAK,MAAO,CAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AAC/C,MAAC,IAAA,CAAa,GAAG,CAAI,GAAA,IAAA,CAAA;AAAA,KACvB;AAAA,GACF;AACA,EAAO,OAAA,IAAA,CAAA;AACT,EAAA;AAEa,MAAA,mBAAA,GAAsB,CAAI,EAAA,EAAO,IAAiB,KAAA;AAC7D,EAAC,EAAA,CAAyB,OAAU,GAAA,CAAC,GAAa,KAAA;AAChD,IAAC,GAAgC,QAAW,GAAA,GAAA,CAAA;AAC5C,IAAI,GAAA,CAAA,MAAA,CAAO,gBAAiB,CAAA,IAAI,CAAI,GAAA,EAAA,CAAA;AAAA,GACtC,CAAA;AAEA,EAAO,OAAA,EAAA,CAAA;AACT;;;;"}
|
|
1
|
+
{"version":3,"file":"types.mjs","sources":["../../../../packages/utils/types.ts"],"sourcesContent":["import type { App, Plugin } from 'vue';\r\n\r\n/* 生成install函数 */\r\n\r\nexport type SFCWithInstall<T> = T & Plugin;\r\n\r\nexport type SFCInstallWithContext<T> = SFCWithInstall<T> & {\r\n _context: App | null;\r\n};\r\n\r\nexport const withInstall = <T, E extends Record<string, any>>(main: T, extra?: E) => {\r\n (main as SFCWithInstall<T>).install = (app: App): void => {\r\n for (const comp of [main, ...Object.values(extra ?? {})]) {\r\n app.component(comp.name, comp);\r\n }\r\n };\r\n\r\n if (extra) {\r\n for (const [key, comp] of Object.entries(extra)) {\r\n (main as any)[key] = comp;\r\n }\r\n }\r\n return main as SFCWithInstall<T> & E;\r\n};\r\n\r\nexport const withInstallFunction = <T>(fn: T, name: string) => {\r\n (fn as SFCWithInstall<T>).install = (app: App) => {\r\n (fn as SFCInstallWithContext<T>)._context = app;\r\n app.config.globalProperties[name] = fn;\r\n };\r\n\r\n return fn as SFCInstallWithContext<T>;\r\n};\r\n"],"names":[],"mappings":"AAUa,MAAA,WAAA,GAAc,CAAmC,IAAA,EAAS,KAAc,KAAA;AACnF,EAAC,IAAA,CAA2B,OAAU,GAAA,CAAC,GAAmB,KAAA;AACxD,IAAW,KAAA,MAAA,IAAA,IAAQ,CAAC,IAAA,EAAM,GAAG,MAAA,CAAO,OAAO,KAAS,IAAA,IAAA,GAAA,KAAA,GAAA,EAAE,CAAC,CAAG,EAAA;AACxD,MAAI,GAAA,CAAA,SAAA,CAAU,IAAK,CAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,KAC/B;AAAA,GACF,CAAA;AAEA,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,KAAA,MAAW,CAAC,GAAK,EAAA,IAAI,KAAK,MAAO,CAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AAC/C,MAAC,IAAA,CAAa,GAAG,CAAI,GAAA,IAAA,CAAA;AAAA,KACvB;AAAA,GACF;AACA,EAAO,OAAA,IAAA,CAAA;AACT,EAAA;AAEa,MAAA,mBAAA,GAAsB,CAAI,EAAA,EAAO,IAAiB,KAAA;AAC7D,EAAC,EAAA,CAAyB,OAAU,GAAA,CAAC,GAAa,KAAA;AAChD,IAAC,GAAgC,QAAW,GAAA,GAAA,CAAA;AAC5C,IAAI,GAAA,CAAA,MAAA,CAAO,gBAAiB,CAAA,IAAI,CAAI,GAAA,EAAA,CAAA;AAAA,GACtC,CAAA;AAEA,EAAO,OAAA,EAAA,CAAA;AACT;;;;"}
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../packages/chat/index.ts"],"sourcesContent":["import type { App } from 'vue';\nimport * as TouchVueComponents from '@touchvue/components';\n\n// 重新定义Vue组件插件类型,不使用extends避免TS错误\ntype VueComponentPlugin = {\n install: (app: App, ...options: any[]) => void;\n [key: string]: any;\n};\n\n// 定义配置项接口\nexport interface TouchVueUIOptions {\n // 主题配置\n theme?: string;\n // 尺寸配置\n size?: 'small' | 'default' | 'large';\n // 国际化配置\n locale?: string;\n // 其他自定义配置\n [key: string]: any;\n}\n\n// 全局默认配置\nexport const defaultOptions: TouchVueUIOptions = {\n theme: 'default',\n size: 'default',\n locale: 'zh-CN',\n};\n\n// 全局配置\nexport let globalOptions = { ...defaultOptions };\n\n// 获取全局配置\nexport const getGlobalOptions = (): TouchVueUIOptions => {\n return globalOptions;\n};\n\nconst install = (app: App, options: TouchVueUIOptions = {}) => {\n // 合并配置项\n globalOptions = {\n ...defaultOptions,\n ...options,\n };\n\n // 将配置注入到应用实例中\n app.config.globalProperties.$TOUCHVUE_CONFIG = globalOptions;\n\n // 注册所有组件,使用正确的类型断言\n const components = Object.values(TouchVueComponents) as unknown as VueComponentPlugin[];\n\n components.forEach(component => {\n // 确保是有效的Vue组件插件\n if (\n component &&\n typeof component === 'object' &&\n 'install' in component &&\n typeof component.install === 'function'\n ) {\n app.use(component);\n }\n });\n};\n\nexport default {\n install,\n};\n"],"names":["globalOptions","TouchVueComponents"],"mappings":";;;;;;AAsBO,MAAM,cAAoC,GAAA;AAAA,EAC/C,KAAO,EAAA,SAAA;AAAA,EACP,IAAM,EAAA,SAAA;AAAA,EACN,MAAQ,EAAA,OAAA;AACV,EAAA;AAGWA,qBAAA,GAAgB,EAAE,GAAG,cAAe,GAAA;AAGxC,MAAM,mBAAmB,MAAyB;AACvD,EAAO,OAAAA,qBAAA,CAAA;AACT,EAAA;AAEA,MAAM,OAAU,GAAA,CAAC,GAAU,EAAA,OAAA,GAA6B,EAAO,KAAA;AAE7D,EAAgBA,qBAAA,GAAA;AAAA,IACd,GAAG,cAAA;AAAA,IACH,GAAG,OAAA;AAAA,GACL,CAAA;AAGA,EAAI,GAAA,CAAA,MAAA,CAAO,iBAAiB,gBAAmB,GAAAA,qBAAA,CAAA;AAG/C,EAAM,MAAA,UAAA,GAAa,MAAO,CAAA,MAAA,CAAOC,OAAkB,CAAA,CAAA;AAEnD,EAAA,UAAA,CAAW,QAAQ,CAAa,SAAA,KAAA;AAE9B,IACE,IAAA,SAAA,IACA,OAAO,SAAc,KAAA,QAAA,IACrB,aAAa,SACb,IAAA,OAAO,SAAU,CAAA,OAAA,KAAY,UAC7B,EAAA;AACA,MAAA,GAAA,CAAI,IAAI,SAAS,CAAA,CAAA;AAAA,KACnB;AAAA,GACD,CAAA,CAAA;AACH,CAAA,CAAA;AAEA,YAAe;AAAA,EACb,OAAA;AACF,CAAA;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../packages/chat/index.ts"],"sourcesContent":["import type { App } from 'vue';\r\nimport * as TouchVueComponents from '@touchvue/components';\r\n\r\n// 重新定义Vue组件插件类型,不使用extends避免TS错误\r\ntype VueComponentPlugin = {\r\n install: (app: App, ...options: any[]) => void;\r\n [key: string]: any;\r\n};\r\n\r\n// 定义配置项接口\r\nexport interface TouchVueUIOptions {\r\n // 主题配置\r\n theme?: string;\r\n // 尺寸配置\r\n size?: 'small' | 'default' | 'large';\r\n // 国际化配置\r\n locale?: string;\r\n // 其他自定义配置\r\n [key: string]: any;\r\n}\r\n\r\n// 全局默认配置\r\nexport const defaultOptions: TouchVueUIOptions = {\r\n theme: 'default',\r\n size: 'default',\r\n locale: 'zh-CN',\r\n};\r\n\r\n// 全局配置\r\nexport let globalOptions = { ...defaultOptions };\r\n\r\n// 获取全局配置\r\nexport const getGlobalOptions = (): TouchVueUIOptions => {\r\n return globalOptions;\r\n};\r\n\r\nconst install = (app: App, options: TouchVueUIOptions = {}) => {\r\n // 合并配置项\r\n globalOptions = {\r\n ...defaultOptions,\r\n ...options,\r\n };\r\n\r\n // 将配置注入到应用实例中\r\n app.config.globalProperties.$TOUCHVUE_CONFIG = globalOptions;\r\n\r\n // 注册所有组件,使用正确的类型断言\r\n const components = Object.values(TouchVueComponents) as unknown as VueComponentPlugin[];\r\n\r\n components.forEach(component => {\r\n // 确保是有效的Vue组件插件\r\n if (\r\n component &&\r\n typeof component === 'object' &&\r\n 'install' in component &&\r\n typeof component.install === 'function'\r\n ) {\r\n app.use(component);\r\n }\r\n });\r\n};\r\n\r\nexport default {\r\n install,\r\n};\r\n"],"names":["globalOptions","TouchVueComponents"],"mappings":";;;;;;AAsBO,MAAM,cAAoC,GAAA;AAAA,EAC/C,KAAO,EAAA,SAAA;AAAA,EACP,IAAM,EAAA,SAAA;AAAA,EACN,MAAQ,EAAA,OAAA;AACV,EAAA;AAGWA,qBAAA,GAAgB,EAAE,GAAG,cAAe,GAAA;AAGxC,MAAM,mBAAmB,MAAyB;AACvD,EAAO,OAAAA,qBAAA,CAAA;AACT,EAAA;AAEA,MAAM,OAAU,GAAA,CAAC,GAAU,EAAA,OAAA,GAA6B,EAAO,KAAA;AAE7D,EAAgBA,qBAAA,GAAA;AAAA,IACd,GAAG,cAAA;AAAA,IACH,GAAG,OAAA;AAAA,GACL,CAAA;AAGA,EAAI,GAAA,CAAA,MAAA,CAAO,iBAAiB,gBAAmB,GAAAA,qBAAA,CAAA;AAG/C,EAAM,MAAA,UAAA,GAAa,MAAO,CAAA,MAAA,CAAOC,OAAkB,CAAA,CAAA;AAEnD,EAAA,UAAA,CAAW,QAAQ,CAAa,SAAA,KAAA;AAE9B,IACE,IAAA,SAAA,IACA,OAAO,SAAc,KAAA,QAAA,IACrB,aAAa,SACb,IAAA,OAAO,SAAU,CAAA,OAAA,KAAY,UAC7B,EAAA;AACA,MAAA,GAAA,CAAI,IAAI,SAAS,CAAA,CAAA;AAAA,KACnB;AAAA,GACD,CAAA,CAAA;AACH,CAAA,CAAA;AAEA,YAAe;AAAA,EACb,OAAA;AACF,CAAA;;;;;;"}
|