Compare commits

...

19 Commits
main ... dev

Author SHA1 Message Date
Phoenix
af2c80f902 Merge branch 'dev' of http://172.16.100.91:3000/scout666/chat-pc into dev 2025-07-03 11:29:30 +08:00
5f94c7d83a Merge branch 'main' into dev 2025-07-03 11:26:27 +08:00
Phoenix
a0b28b19ef fix(editor): 修复编辑器高度问题和移除调试日志
调整Tiptap编辑器高度为100%以正确填充容器
移除消息面板中已读回执的调试日志输出
2025-07-03 10:47:10 +08:00
Phoenix
c64a562913 refactor(db): 重构会话表主键结构并清理旧数据
- 将会话表主键从自增id改为index_name
- 添加数据库版本升级逻辑清理旧数据
- 更新所有相关操作方法使用新主键
- 添加详细的版本变更注释
2025-07-03 10:33:29 +08:00
1956bb05ef Merge pull request '注释无关变量' (#11) from yink into dev
Reviewed-on: https://gitea-inner.fontree.cn/scout666/chat-pc/pulls/11
2025-07-02 09:02:03 +00:00
Phoenix
0b634e8cdd fix(编辑器): 修复清空引用数据时未更新草稿的问题
在清空引用数据时调用clearQuoteData方法,确保同时更新草稿状态。修改了引用卡片关闭按钮的点击事件处理逻辑,使用新方法替代直接赋值null。
2025-07-02 16:22:42 +08:00
Phoenix
a405a3bd90 fix(editor): 切换会话时清空引用数据而非保留
修改编辑器行为,在切换会话时主动清空引用数据而不是保留之前的引用。这避免了不同会话间引用数据的混淆问题。
2025-07-02 16:04:41 +08:00
Phoenix
14d69d40d3 Merge branch 'dev' of http://172.16.100.91:3000/scout666/chat-pc into dev 2025-07-02 15:59:46 +08:00
Phoenix
57551247c0 Merge branch 'xingyy' into dev 2025-07-02 15:59:36 +08:00
Phoenix
0f161de28f feat(editor): 重构引用功能并优化图片上传处理
- 移除旧的Quote节点扩展,改为使用quoteData状态管理引用消息
- 添加图片上传状态跟踪和加载指示器
- 优化提及列表的交互和关闭行为
- 支持粘贴图片自动上传功能
- 完善编辑器草稿保存机制,包含引用数据
2025-07-02 15:57:03 +08:00
Phoenix
8be8afc675 refactor(TiptapEditor): 重构消息转换逻辑以支持多消息分段处理
重构 tiptapToMessage 函数,将单条消息处理改为支持多条消息分段处理
优化消息内容处理流程,添加文本缓冲区和图片单独处理逻辑
简化消息发送逻辑,移除 msgType 判断改为直接处理不同类型消息
清理已注释的导航功能代码
2025-07-02 13:34:23 +08:00
c773711b26 Merge pull request 'fix: 注释添加好友相关功能' (#9) from yink into dev
Reviewed-on: https://gitea-inner.fontree.cn/scout666/chat-pc/pulls/9
2025-07-02 05:20:03 +00:00
Phoenix
dd170cb50d feat(editor): 添加blockquote和emoji扩展并重构引用卡片实现
- 添加@tiptap/extension-blockquote和@tiptap/extension-emoji依赖
- 将自定义Quote扩展从Extension改为Node实现
- 简化引用卡片的HTML渲染逻辑
- 改进引用卡片的键盘删除行为
- 优化引用内容的插入位置和格式
2025-07-02 13:15:16 +08:00
Phoenix
8e2c134c90 feat(editor): 替换自定义编辑器为Tiptap编辑器并添加相关依赖
- 新增Tiptap编辑器组件及所需依赖包
- 移除原有自定义编辑器实现
- 更新编辑器相关配置和样式
- 添加表情、图片上传等功能支持
- 优化编辑器草稿保存和恢复逻辑
2025-07-02 11:31:35 +08:00
478b4bdd57 Merge pull request 'fix: 注释添加好友相关功能' (#7) from yink into dev
Reviewed-on: https://gitea-inner.fontree.cn/scout666/chat-pc/pulls/7
2025-07-02 03:17:57 +00:00
ecb4b64176 Merge branch 'wyfMain-dev' into dev 2025-07-02 10:22:52 +08:00
Phoenix
a8fea9ea32 Merge branch 'dev' of http://172.16.100.91:3000/scout666/chat-pc into dev 2025-07-01 15:37:44 +08:00
Phoenix
62cb9c87c2 fix(editor): 移除调试日志并修复图片表情解析逻辑
移除无用的console.log调试语句
修复parseEditorContent中图片表情解析逻辑,正确处理表情文本占位符
优化insertImageEmoji方法,移除多余的空格节点插入
2025-07-01 15:04:36 +08:00
445f8f2e79 Merge pull request 'fix: 更改接口前缀地址' (#6) from yink into dev
Reviewed-on: https://gitea-inner.fontree.cn/scout666/chat-pc/pulls/6
2025-07-01 06:33:58 +00:00
10 changed files with 1983 additions and 35 deletions

View File

@ -19,6 +19,16 @@
"@iconify-json/ion": "^1.2.3", "@iconify-json/ion": "^1.2.3",
"@kangc/v-md-editor": "^2.3.18", "@kangc/v-md-editor": "^2.3.18",
"@onlyoffice/document-editor-vue": "^1.5.0", "@onlyoffice/document-editor-vue": "^1.5.0",
"@tiptap/core": "^2.23.1",
"@tiptap/extension-blockquote": "^2.23.1",
"@tiptap/extension-emoji": "^2.23.1",
"@tiptap/extension-image": "^2.23.1",
"@tiptap/extension-link": "^2.23.1",
"@tiptap/extension-mention": "^2.23.1",
"@tiptap/extension-placeholder": "^2.23.1",
"@tiptap/pm": "^2.23.1",
"@tiptap/starter-kit": "^2.23.1",
"@tiptap/vue-3": "^2.23.1",
"@vicons/fluent": "^0.13.0", "@vicons/fluent": "^0.13.0",
"@vicons/ionicons4": "^0.13.0", "@vicons/ionicons4": "^0.13.0",
"@vicons/ionicons5": "^0.13.0", "@vicons/ionicons5": "^0.13.0",

View File

@ -23,6 +23,36 @@ importers:
'@onlyoffice/document-editor-vue': '@onlyoffice/document-editor-vue':
specifier: ^1.5.0 specifier: ^1.5.0
version: 1.5.0(vue@3.5.17(typescript@5.2.2)) version: 1.5.0(vue@3.5.17(typescript@5.2.2))
'@tiptap/core':
specifier: ^2.23.1
version: 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/extension-blockquote':
specifier: ^2.23.1
version: 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))
'@tiptap/extension-emoji':
specifier: ^2.23.1
version: 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)(@tiptap/suggestion@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1))(emojibase@16.0.0)
'@tiptap/extension-image':
specifier: ^2.23.1
version: 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))
'@tiptap/extension-link':
specifier: ^2.23.1
version: 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)
'@tiptap/extension-mention':
specifier: ^2.23.1
version: 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)(@tiptap/suggestion@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1))
'@tiptap/extension-placeholder':
specifier: ^2.23.1
version: 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)
'@tiptap/pm':
specifier: ^2.23.1
version: 2.23.1
'@tiptap/starter-kit':
specifier: ^2.23.1
version: 2.23.1
'@tiptap/vue-3':
specifier: ^2.23.1
version: 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)(vue@3.5.17(typescript@5.2.2))
'@vicons/fluent': '@vicons/fluent':
specifier: ^0.13.0 specifier: ^0.13.0
version: 0.13.0 version: 0.13.0
@ -711,6 +741,12 @@ packages:
'@polka/url@1.0.0-next.29': '@polka/url@1.0.0-next.29':
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
'@popperjs/core@2.11.8':
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
'@remirror/core-constants@3.0.0':
resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==}
'@rollup/pluginutils@5.2.0': '@rollup/pluginutils@5.2.0':
resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
@ -850,6 +886,173 @@ packages:
resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
'@tiptap/core@2.23.1':
resolution: {integrity: sha512-EURGKGsEPrwxvOPi9gA+BsczvsECJNV+xgTAGWHmEtU4YJ0AulYrCX3b7FK+aiduVhThIHDoG/Mmvmb/HPLRhQ==}
peerDependencies:
'@tiptap/pm': ^2.7.0
'@tiptap/extension-blockquote@2.23.1':
resolution: {integrity: sha512-GI3s+uFU88LWRaDG20Z9yIu2av3Usn8kw2lkm2ntwX1K6/mQBS/zkGhWr/FSwWOlMtTzYFxF4Ttb0e+hn67A/A==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/extension-bold@2.23.1':
resolution: {integrity: sha512-OM4RxuZeOqpYRN1G/YpXSE8tZ3sVtT2XlO3qKa74qf+htWz8W3x4X0oQCrHrRTDSAA1wbmeZU3QghAIHnbvP/A==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/extension-bubble-menu@2.23.1':
resolution: {integrity: sha512-tupuvrlZMTziVZXJuCVjLwllUnux/an9BtTYHpoRyLX9Hg0v7Kh39k9x58zJaoW8Q/Oc/qxPhbJpyOqhE1rLeg==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/pm': ^2.7.0
'@tiptap/extension-bullet-list@2.23.1':
resolution: {integrity: sha512-0g9U42m+boLJZP3x9KoJHDCp9WD5abaVdqNbTg9sFPDNsepb7Zaeu8AEB+yZLP/fuTI1I4ko6qkdr3UaaIYcmA==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/extension-code-block@2.23.1':
resolution: {integrity: sha512-eYzJVUR13BhSE/TYAMZihGBId+XiwhnTPqGcSFo+zx89It/vxwDLvAUn0PReMNI7ULKPTw8orUt2fVKSarb2DQ==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/pm': ^2.7.0
'@tiptap/extension-code@2.23.1':
resolution: {integrity: sha512-3IOdE40m0UTR2+UXui69o/apLtutAbtzfgmMxD6q0qlRvVqz99QEfk9RPHDNlUqJtYCL4TD+sj7UclBsDdgVXA==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/extension-document@2.23.1':
resolution: {integrity: sha512-2nkIkGVsaMJkpd024E6vXK+5XNz8VOVWp/pM6bbXpuv0HnGPrfLdh4ruuFc+xTQ3WPOmpSu8ygtujt4I1o9/6g==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/extension-dropcursor@2.23.1':
resolution: {integrity: sha512-GyVp+o/RVrKlLdrQvtIpJGphFGogiPjcPCkAFcrfY1vDY1EYxfVZELC96gG1mUT1BO8FUD3hmbpkWi9l8/6O4A==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/pm': ^2.7.0
'@tiptap/extension-emoji@2.23.1':
resolution: {integrity: sha512-bqTn+hbq0bDIcrPIIjVq3GndJ/PYQfReMDlyTv0mUCtRbP7zReJ1oFx02d25RmwgS6XL3U8WW4kEFomhliwWSQ==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/pm': ^2.7.0
'@tiptap/suggestion': ^2.7.0
'@tiptap/extension-floating-menu@2.23.1':
resolution: {integrity: sha512-GMWkpH+p/OUOk1Y5UGOnKuHSDEVBN7DhYIJiWt5g9LK/mpPeuqoCmQg3RQDgjtZXb74SlxLK2pS/3YcAnemdfQ==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/pm': ^2.7.0
'@tiptap/extension-gapcursor@2.23.1':
resolution: {integrity: sha512-iP+TiFIGZEbOvYAs04pI14mLI4xqbt64Da91TgMF1FNZUrG+9eWKjqbcHLQREuK3Qnjn5f0DI4nOBv61FlnPmA==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/pm': ^2.7.0
'@tiptap/extension-hard-break@2.23.1':
resolution: {integrity: sha512-YF66EVxnBxt1bHPx6fUUSSXK1Vg+/9baJ0AfJ12hCSPCgSjUclRuNmWIH5ikVfByOmPV1xlrN9wryLoSEBcNRQ==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/extension-heading@2.23.1':
resolution: {integrity: sha512-5BPoli9wudiAOgSyK8309jyRhFyu5vd02lNChfpHwxUudzIJ/L+0E6FcwrDcw+yXh23cx7F5SSjtFQ7AobxlDQ==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/extension-history@2.23.1':
resolution: {integrity: sha512-1rp2CRjM+P58oGEgeUUDSk0ch67ngIGbGJOOjiBGKU9GIVhI2j4uSwsYTAa9qYMjMUI6IyH1xJpsY2hLKcBOtg==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/pm': ^2.7.0
'@tiptap/extension-horizontal-rule@2.23.1':
resolution: {integrity: sha512-uHEF0jpmhtgAxjKw8/s5ipEeTnu99f9RVMGAlmcthJ5Fx9TzH0MvtH4dtBNEu5MXC7+0bNsnncWo125AAbCohg==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/pm': ^2.7.0
'@tiptap/extension-image@2.23.1':
resolution: {integrity: sha512-8j2FLBWKq6j27aQcOAlmyKixxHflW8j5FhxLgPPS6hithgFQVET4OYH+1c6r7Qd/T4YoAqt/0PmNZ/gYWI9gzg==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/extension-italic@2.23.1':
resolution: {integrity: sha512-a+cPzffaC/1AKMmZ1Ka6l81xmTgcalf8NXfBuFCUTf5r7uI9NIgXnLo9hg+jR9F4K+bwhC4/UbMvQQzAjh0c0A==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/extension-link@2.23.1':
resolution: {integrity: sha512-zMD0V8djkvwRYACzd8EvFXXNLQH5poJt6aHC9/8uest6njRhlrRjSjwG5oa+xHW4A76XfAH0A5BPj6ZxZnAUQg==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/pm': ^2.7.0
'@tiptap/extension-list-item@2.23.1':
resolution: {integrity: sha512-wVrRp6KAiyjFVFGmn+ojisP64Bsd+ZPdqQBYVbebBx1skZeW0uhG60d7vUkWHi0gCgxHZDfvDbXpfnOD0INRWw==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/extension-mention@2.23.1':
resolution: {integrity: sha512-YaHg2ZqNb2Vur5hBoswzu8pJ3kV54PPonR8gHgelD83T1s8vBqdl03WL2NUVciovEbENnirePLDfhKaFjRXSzQ==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/pm': ^2.7.0
'@tiptap/suggestion': ^2.7.0
'@tiptap/extension-ordered-list@2.23.1':
resolution: {integrity: sha512-Zp+qognyNgoaJ9bxkBwIuWJEnQ67RdsHXzv3YOdeGRbkUhd8LT6OL7P0mAuNbMBU8MwHxyJ7C7NsyzwzuVbFzA==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/extension-paragraph@2.23.1':
resolution: {integrity: sha512-LLEPizt1ALE7Ek6prlJ1uhoUCT8C/a3PdZpCh3DshM1L3Kv9TENlaJL2GhFl8SVUCwHmWHvXg30+4tIRFBedaQ==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/extension-placeholder@2.23.1':
resolution: {integrity: sha512-zSkCljVpxJh3GHW7ppFNYhHPjYKmS3Tw0e74BOGzb5TqP57GRvnPgDGg4fr6kDsSWMo9minnNM3PDA7kNT+PRQ==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/pm': ^2.7.0
'@tiptap/extension-strike@2.23.1':
resolution: {integrity: sha512-hAT9peYkKezRGp/EcPQKtyYQT+2XGUbb26toTr9XIBQIeQCuCpT+FirPrDMrMVWPwcJt7Rv+AzoVjDuBs9wE0A==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/extension-text-style@2.23.1':
resolution: {integrity: sha512-fZn1GePlL27pUFfKXKoRZo4L4pZP9dUjNNiS/eltLpbi/SenJ15UKhAoHtN1KQvNGJsWkYN49FjnnltU8qvQ+Q==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/extension-text@2.23.1':
resolution: {integrity: sha512-XK0D/eyS1Vm5yUrCtkS0AfgyKLJqpi8nJivCOux/JLhhC4x87R1+mI8NoFDYZJ5ic/afREPSBB8jORqOi0qIHg==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/pm@2.23.1':
resolution: {integrity: sha512-iAx4rP0k4Xd9Ywh+Gpaz5IWfY2CYRpiwVXWekTHLlNRFtrVIWVpMxaQr2mvRU2g0Ca6rz5w3KzkHBMqrI3dIBA==}
'@tiptap/starter-kit@2.23.1':
resolution: {integrity: sha512-rrImwzJbKSHoFa+WdNU4I0evXcMiQ4yRm737sxvNJwYItT6fXIxrbRT7nJDmtYu2TflcfT1KklEnSrzz1hhYRw==}
'@tiptap/suggestion@2.23.1':
resolution: {integrity: sha512-ryAsYhXmehwQLJnGFw9VHfQMANeWgFzDQUfgg0vcjbHJAa0t3qBsSOUP2RKOuErQmCvlgY/cgxO/6Q0l5IzsIA==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/pm': ^2.7.0
'@tiptap/vue-3@2.23.1':
resolution: {integrity: sha512-wBF9LxI96qMXE0Z+3C8GU4mmDRbCapcnjb/euQ1NeihqBwK6qdd5g8IIgGm+rQCSY8hCJBUTWJtfn7vJAasSDQ==}
peerDependencies:
'@tiptap/core': ^2.7.0
'@tiptap/pm': ^2.7.0
vue: ^3.0.0
'@tsconfig/node18@18.2.4': '@tsconfig/node18@18.2.4':
resolution: {integrity: sha512-5xxU8vVs9/FNcvm3gE07fPbn9tl6tqGGWA9tSlwsUEkBxtRnTsNmwrV8gasZ9F/EobaSv9+nu8AxUKccw77JpQ==} resolution: {integrity: sha512-5xxU8vVs9/FNcvm3gE07fPbn9tl6tqGGWA9tSlwsUEkBxtRnTsNmwrV8gasZ9F/EobaSv9+nu8AxUKccw77JpQ==}
@ -883,15 +1086,24 @@ packages:
'@types/katex@0.16.7': '@types/katex@0.16.7':
resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==}
'@types/linkify-it@5.0.0':
resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
'@types/lodash-es@4.17.12': '@types/lodash-es@4.17.12':
resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
'@types/lodash@4.17.18': '@types/lodash@4.17.18':
resolution: {integrity: sha512-KJ65INaxqxmU6EoCiJmRPZC9H9RVWCRd349tXM2M3O5NA7cY6YL7c0bHAHQ93NOfTObEQ004kd2QVHs/r0+m4g==} resolution: {integrity: sha512-KJ65INaxqxmU6EoCiJmRPZC9H9RVWCRd349tXM2M3O5NA7cY6YL7c0bHAHQ93NOfTObEQ004kd2QVHs/r0+m4g==}
'@types/markdown-it@14.1.2':
resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==}
'@types/mdast@3.0.15': '@types/mdast@3.0.15':
resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==}
'@types/mdurl@2.0.0':
resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
'@types/minimatch@5.1.2': '@types/minimatch@5.1.2':
resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
@ -1485,6 +1697,9 @@ packages:
cose-base@1.0.3: cose-base@1.0.3:
resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==}
crelt@1.0.6:
resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
cross-env@7.0.3: cross-env@7.0.3:
resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
@ -1811,9 +2026,21 @@ packages:
elkjs@0.9.3: elkjs@0.9.3:
resolution: {integrity: sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==} resolution: {integrity: sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==}
emoji-regex@10.4.0:
resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==}
emoji-regex@8.0.0: emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
emojibase-data@15.3.2:
resolution: {integrity: sha512-TpDyTDDTdqWIJixV5sTA6OQ0P0JfIIeK2tFRR3q56G9LK65ylAZ7z3KyBXokpvTTJ+mLUXQXbLNyVkjvnTLE+A==}
peerDependencies:
emojibase: '*'
emojibase@16.0.0:
resolution: {integrity: sha512-Nw2m7JLIO4Ou2X/yZPRNscHQXVbbr6SErjkJ7EooG7MbR3yDZszCv9KTizsXFc7yZl0n3WF+qUKIC/Lw6H9xaQ==}
engines: {node: '>=18.12.0'}
enhanced-resolve@5.18.2: enhanced-resolve@5.18.2:
resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==} resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==}
engines: {node: '>=10.13.0'} engines: {node: '>=10.13.0'}
@ -1881,6 +2108,10 @@ packages:
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
engines: {node: '>=0.8.0'} engines: {node: '>=0.8.0'}
escape-string-regexp@4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
escape-string-regexp@5.0.0: escape-string-regexp@5.0.0:
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
engines: {node: '>=12'} engines: {node: '>=12'}
@ -2248,6 +2479,9 @@ packages:
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
hasBin: true hasBin: true
is-emoji-supported@0.0.5:
resolution: {integrity: sha512-WOlXUhDDHxYqcSmFZis+xWhhqXiK2SU0iYiqmth5Ip0FHLZQAt9rKL5ahnilE8/86WH8tZ3bmNNNC+bTzamqlw==}
is-extendable@0.1.1: is-extendable@0.1.1:
resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
@ -2442,6 +2676,12 @@ packages:
linkify-it@3.0.3: linkify-it@3.0.3:
resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==}
linkify-it@5.0.0:
resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
linkifyjs@4.3.1:
resolution: {integrity: sha512-DRSlB9DKVW04c4SUdGvKK5FR6be45lTU9M76JnngqPeeGDqPwYc0zdUErtsNVMtxPXgUWV4HbXbnC4sNyBxkYg==}
loader-runner@4.3.0: loader-runner@4.3.0:
resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==}
engines: {node: '>=6.11.5'} engines: {node: '>=6.11.5'}
@ -2516,6 +2756,10 @@ packages:
resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==}
hasBin: true hasBin: true
markdown-it@14.1.0:
resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
hasBin: true
markdown-it@8.4.2: markdown-it@8.4.2:
resolution: {integrity: sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==} resolution: {integrity: sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==}
hasBin: true hasBin: true
@ -2536,6 +2780,9 @@ packages:
mdurl@1.0.1: mdurl@1.0.1:
resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==}
mdurl@2.0.0:
resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
memorystream@0.3.1: memorystream@0.3.1:
resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
engines: {node: '>= 0.10.0'} engines: {node: '>= 0.10.0'}
@ -2766,6 +3013,9 @@ packages:
resolution: {integrity: sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==} resolution: {integrity: sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==}
engines: {node: '>=18'} engines: {node: '>=18'}
orderedmap@2.1.1:
resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==}
package-manager-detector@1.3.0: package-manager-detector@1.3.0:
resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==}
@ -2885,12 +3135,74 @@ packages:
resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==}
engines: {node: '>=6'} engines: {node: '>=6'}
prosemirror-changeset@2.3.1:
resolution: {integrity: sha512-j0kORIBm8ayJNl3zQvD1TTPHJX3g042et6y/KQhZhnPrruO8exkTgG8X+NRpj7kIyMMEx74Xb3DyMIBtO0IKkQ==}
prosemirror-collab@1.3.1:
resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==}
prosemirror-commands@1.7.1:
resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==}
prosemirror-dropcursor@1.8.2:
resolution: {integrity: sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==}
prosemirror-gapcursor@1.3.2:
resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==}
prosemirror-history@1.4.1:
resolution: {integrity: sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==}
prosemirror-inputrules@1.5.0:
resolution: {integrity: sha512-K0xJRCmt+uSw7xesnHmcn72yBGTbY45vm8gXI4LZXbx2Z0jwh5aF9xrGQgrVPu0WbyFVFF3E/o9VhJYz6SQWnA==}
prosemirror-keymap@1.2.3:
resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==}
prosemirror-markdown@1.13.2:
resolution: {integrity: sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g==}
prosemirror-menu@1.2.5:
resolution: {integrity: sha512-qwXzynnpBIeg1D7BAtjOusR+81xCp53j7iWu/IargiRZqRjGIlQuu1f3jFi+ehrHhWMLoyOQTSRx/IWZJqOYtQ==}
prosemirror-model@1.25.1:
resolution: {integrity: sha512-AUvbm7qqmpZa5d9fPKMvH1Q5bqYQvAZWOGRvxsB6iFLyycvC9MwNemNVjHVrWgjaoxAfY8XVg7DbvQ/qxvI9Eg==}
prosemirror-schema-basic@1.2.4:
resolution: {integrity: sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==}
prosemirror-schema-list@1.5.1:
resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==}
prosemirror-state@1.4.3:
resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==}
prosemirror-tables@1.7.1:
resolution: {integrity: sha512-eRQ97Bf+i9Eby99QbyAiyov43iOKgWa7QCGly+lrDt7efZ1v8NWolhXiB43hSDGIXT1UXgbs4KJN3a06FGpr1Q==}
prosemirror-trailing-node@3.0.0:
resolution: {integrity: sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==}
peerDependencies:
prosemirror-model: ^1.22.1
prosemirror-state: ^1.4.2
prosemirror-view: ^1.33.8
prosemirror-transform@1.10.4:
resolution: {integrity: sha512-pwDy22nAnGqNR1feOQKHxoFkkUtepoFAd3r2hbEDsnf4wp57kKA36hXsB3njA9FtONBEwSDnDeCiJe+ItD+ykw==}
prosemirror-view@1.40.0:
resolution: {integrity: sha512-2G3svX0Cr1sJjkD/DYWSe3cfV5VPVTBOxI9XQEGWJDFEpsZb/gh4MV29ctv+OJx2RFX4BLt09i+6zaGM/ldkCw==}
proxy-from-env@1.1.0: proxy-from-env@1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
prr@1.0.1: prr@1.0.1:
resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
punycode.js@2.3.1:
resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
engines: {node: '>=6'}
quansync@0.2.10: quansync@0.2.10:
resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==}
@ -2980,6 +3292,9 @@ packages:
engines: {node: '>=18.0.0', npm: '>=8.0.0'} engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true hasBin: true
rope-sequence@1.3.4:
resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==}
run-applescript@7.0.0: run-applescript@7.0.0:
resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==}
engines: {node: '>=18'} engines: {node: '>=18'}
@ -3223,6 +3538,9 @@ packages:
resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
engines: {node: '>=12.0.0'} engines: {node: '>=12.0.0'}
tippy.js@6.3.7:
resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==}
to-object-path@0.3.0: to-object-path@0.3.0:
resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
@ -3274,6 +3592,9 @@ packages:
uc.micro@1.0.6: uc.micro@1.0.6:
resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==}
uc.micro@2.1.0:
resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
ufo@1.6.1: ufo@1.6.1:
resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
@ -3538,6 +3859,9 @@ packages:
peerDependencies: peerDependencies:
vue: ^3.0.11 vue: ^3.0.11
w3c-keyname@2.2.8:
resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
wait-on@6.0.1: wait-on@6.0.1:
resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==}
engines: {node: '>=10.0.0'} engines: {node: '>=10.0.0'}
@ -4123,6 +4447,10 @@ snapshots:
'@polka/url@1.0.0-next.29': {} '@polka/url@1.0.0-next.29': {}
'@popperjs/core@2.11.8': {}
'@remirror/core-constants@3.0.0': {}
'@rollup/pluginutils@5.2.0(rollup@4.44.0)': '@rollup/pluginutils@5.2.0(rollup@4.44.0)':
dependencies: dependencies:
'@types/estree': 1.0.8 '@types/estree': 1.0.8
@ -4208,6 +4536,193 @@ snapshots:
'@sindresorhus/merge-streams@4.0.0': {} '@sindresorhus/merge-streams@4.0.0': {}
'@tiptap/core@2.23.1(@tiptap/pm@2.23.1)':
dependencies:
'@tiptap/pm': 2.23.1
'@tiptap/extension-blockquote@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/extension-bold@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/extension-bubble-menu@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/pm': 2.23.1
tippy.js: 6.3.7
'@tiptap/extension-bullet-list@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/extension-code-block@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/pm': 2.23.1
'@tiptap/extension-code@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/extension-document@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/extension-dropcursor@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/pm': 2.23.1
'@tiptap/extension-emoji@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)(@tiptap/suggestion@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1))(emojibase@16.0.0)':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/pm': 2.23.1
'@tiptap/suggestion': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)
emoji-regex: 10.4.0
emojibase-data: 15.3.2(emojibase@16.0.0)
is-emoji-supported: 0.0.5
transitivePeerDependencies:
- emojibase
'@tiptap/extension-floating-menu@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/pm': 2.23.1
tippy.js: 6.3.7
'@tiptap/extension-gapcursor@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/pm': 2.23.1
'@tiptap/extension-hard-break@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/extension-heading@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/extension-history@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/pm': 2.23.1
'@tiptap/extension-horizontal-rule@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/pm': 2.23.1
'@tiptap/extension-image@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/extension-italic@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/extension-link@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/pm': 2.23.1
linkifyjs: 4.3.1
'@tiptap/extension-list-item@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/extension-mention@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)(@tiptap/suggestion@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1))':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/pm': 2.23.1
'@tiptap/suggestion': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)
'@tiptap/extension-ordered-list@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/extension-paragraph@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/extension-placeholder@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/pm': 2.23.1
'@tiptap/extension-strike@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/extension-text-style@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/extension-text@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/pm@2.23.1':
dependencies:
prosemirror-changeset: 2.3.1
prosemirror-collab: 1.3.1
prosemirror-commands: 1.7.1
prosemirror-dropcursor: 1.8.2
prosemirror-gapcursor: 1.3.2
prosemirror-history: 1.4.1
prosemirror-inputrules: 1.5.0
prosemirror-keymap: 1.2.3
prosemirror-markdown: 1.13.2
prosemirror-menu: 1.2.5
prosemirror-model: 1.25.1
prosemirror-schema-basic: 1.2.4
prosemirror-schema-list: 1.5.1
prosemirror-state: 1.4.3
prosemirror-tables: 1.7.1
prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)
prosemirror-transform: 1.10.4
prosemirror-view: 1.40.0
'@tiptap/starter-kit@2.23.1':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/extension-blockquote': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))
'@tiptap/extension-bold': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))
'@tiptap/extension-bullet-list': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))
'@tiptap/extension-code': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))
'@tiptap/extension-code-block': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)
'@tiptap/extension-document': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))
'@tiptap/extension-dropcursor': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)
'@tiptap/extension-gapcursor': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)
'@tiptap/extension-hard-break': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))
'@tiptap/extension-heading': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))
'@tiptap/extension-history': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)
'@tiptap/extension-horizontal-rule': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)
'@tiptap/extension-italic': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))
'@tiptap/extension-list-item': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))
'@tiptap/extension-ordered-list': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))
'@tiptap/extension-paragraph': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))
'@tiptap/extension-strike': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))
'@tiptap/extension-text': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))
'@tiptap/extension-text-style': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))
'@tiptap/pm': 2.23.1
'@tiptap/suggestion@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/pm': 2.23.1
'@tiptap/vue-3@2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)(vue@3.5.17(typescript@5.2.2))':
dependencies:
'@tiptap/core': 2.23.1(@tiptap/pm@2.23.1)
'@tiptap/extension-bubble-menu': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)
'@tiptap/extension-floating-menu': 2.23.1(@tiptap/core@2.23.1(@tiptap/pm@2.23.1))(@tiptap/pm@2.23.1)
'@tiptap/pm': 2.23.1
vue: 3.5.17(typescript@5.2.2)
'@tsconfig/node18@18.2.4': {} '@tsconfig/node18@18.2.4': {}
'@types/d3-scale-chromatic@3.1.0': {} '@types/d3-scale-chromatic@3.1.0': {}
@ -4243,16 +4758,25 @@ snapshots:
'@types/katex@0.16.7': {} '@types/katex@0.16.7': {}
'@types/linkify-it@5.0.0': {}
'@types/lodash-es@4.17.12': '@types/lodash-es@4.17.12':
dependencies: dependencies:
'@types/lodash': 4.17.18 '@types/lodash': 4.17.18
'@types/lodash@4.17.18': {} '@types/lodash@4.17.18': {}
'@types/markdown-it@14.1.2':
dependencies:
'@types/linkify-it': 5.0.0
'@types/mdurl': 2.0.0
'@types/mdast@3.0.15': '@types/mdast@3.0.15':
dependencies: dependencies:
'@types/unist': 2.0.11 '@types/unist': 2.0.11
'@types/mdurl@2.0.0': {}
'@types/minimatch@5.1.2': {} '@types/minimatch@5.1.2': {}
'@types/ms@2.1.0': {} '@types/ms@2.1.0': {}
@ -5058,6 +5582,8 @@ snapshots:
dependencies: dependencies:
layout-base: 1.0.2 layout-base: 1.0.2
crelt@1.0.6: {}
cross-env@7.0.3: cross-env@7.0.3:
dependencies: dependencies:
cross-spawn: 7.0.6 cross-spawn: 7.0.6
@ -5390,8 +5916,16 @@ snapshots:
elkjs@0.9.3: {} elkjs@0.9.3: {}
emoji-regex@10.4.0: {}
emoji-regex@8.0.0: {} emoji-regex@8.0.0: {}
emojibase-data@15.3.2(emojibase@16.0.0):
dependencies:
emojibase: 16.0.0
emojibase@16.0.0: {}
enhanced-resolve@5.18.2: enhanced-resolve@5.18.2:
dependencies: dependencies:
graceful-fs: 4.2.11 graceful-fs: 4.2.11
@ -5479,6 +6013,8 @@ snapshots:
escape-string-regexp@1.0.5: {} escape-string-regexp@1.0.5: {}
escape-string-regexp@4.0.0: {}
escape-string-regexp@5.0.0: {} escape-string-regexp@5.0.0: {}
eslint-scope@5.1.1: eslint-scope@5.1.1:
@ -5864,6 +6400,8 @@ snapshots:
is-docker@3.0.0: {} is-docker@3.0.0: {}
is-emoji-supported@0.0.5: {}
is-extendable@0.1.1: {} is-extendable@0.1.1: {}
is-extendable@1.0.1: is-extendable@1.0.1:
@ -6033,6 +6571,12 @@ snapshots:
dependencies: dependencies:
uc.micro: 1.0.6 uc.micro: 1.0.6
linkify-it@5.0.0:
dependencies:
uc.micro: 2.1.0
linkifyjs@4.3.1: {}
loader-runner@4.3.0: {} loader-runner@4.3.0: {}
local-pkg@1.1.1: local-pkg@1.1.1:
@ -6100,6 +6644,15 @@ snapshots:
mdurl: 1.0.1 mdurl: 1.0.1
uc.micro: 1.0.6 uc.micro: 1.0.6
markdown-it@14.1.0:
dependencies:
argparse: 2.0.1
entities: 4.5.0
linkify-it: 5.0.0
mdurl: 2.0.0
punycode.js: 2.3.1
uc.micro: 2.1.0
markdown-it@8.4.2: markdown-it@8.4.2:
dependencies: dependencies:
argparse: 1.0.10 argparse: 1.0.10
@ -6135,6 +6688,8 @@ snapshots:
mdurl@1.0.1: {} mdurl@1.0.1: {}
mdurl@2.0.0: {}
memorystream@0.3.1: {} memorystream@0.3.1: {}
merge-stream@2.0.0: {} merge-stream@2.0.0: {}
@ -6489,6 +7044,8 @@ snapshots:
is-inside-container: 1.0.0 is-inside-container: 1.0.0
is-wsl: 3.1.0 is-wsl: 3.1.0
orderedmap@2.1.1: {}
package-manager-detector@1.3.0: {} package-manager-detector@1.3.0: {}
parchment@1.1.4: {} parchment@1.1.4: {}
@ -6575,11 +7132,116 @@ snapshots:
prismjs@1.30.0: {} prismjs@1.30.0: {}
prosemirror-changeset@2.3.1:
dependencies:
prosemirror-transform: 1.10.4
prosemirror-collab@1.3.1:
dependencies:
prosemirror-state: 1.4.3
prosemirror-commands@1.7.1:
dependencies:
prosemirror-model: 1.25.1
prosemirror-state: 1.4.3
prosemirror-transform: 1.10.4
prosemirror-dropcursor@1.8.2:
dependencies:
prosemirror-state: 1.4.3
prosemirror-transform: 1.10.4
prosemirror-view: 1.40.0
prosemirror-gapcursor@1.3.2:
dependencies:
prosemirror-keymap: 1.2.3
prosemirror-model: 1.25.1
prosemirror-state: 1.4.3
prosemirror-view: 1.40.0
prosemirror-history@1.4.1:
dependencies:
prosemirror-state: 1.4.3
prosemirror-transform: 1.10.4
prosemirror-view: 1.40.0
rope-sequence: 1.3.4
prosemirror-inputrules@1.5.0:
dependencies:
prosemirror-state: 1.4.3
prosemirror-transform: 1.10.4
prosemirror-keymap@1.2.3:
dependencies:
prosemirror-state: 1.4.3
w3c-keyname: 2.2.8
prosemirror-markdown@1.13.2:
dependencies:
'@types/markdown-it': 14.1.2
markdown-it: 14.1.0
prosemirror-model: 1.25.1
prosemirror-menu@1.2.5:
dependencies:
crelt: 1.0.6
prosemirror-commands: 1.7.1
prosemirror-history: 1.4.1
prosemirror-state: 1.4.3
prosemirror-model@1.25.1:
dependencies:
orderedmap: 2.1.1
prosemirror-schema-basic@1.2.4:
dependencies:
prosemirror-model: 1.25.1
prosemirror-schema-list@1.5.1:
dependencies:
prosemirror-model: 1.25.1
prosemirror-state: 1.4.3
prosemirror-transform: 1.10.4
prosemirror-state@1.4.3:
dependencies:
prosemirror-model: 1.25.1
prosemirror-transform: 1.10.4
prosemirror-view: 1.40.0
prosemirror-tables@1.7.1:
dependencies:
prosemirror-keymap: 1.2.3
prosemirror-model: 1.25.1
prosemirror-state: 1.4.3
prosemirror-transform: 1.10.4
prosemirror-view: 1.40.0
prosemirror-trailing-node@3.0.0(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0):
dependencies:
'@remirror/core-constants': 3.0.0
escape-string-regexp: 4.0.0
prosemirror-model: 1.25.1
prosemirror-state: 1.4.3
prosemirror-view: 1.40.0
prosemirror-transform@1.10.4:
dependencies:
prosemirror-model: 1.25.1
prosemirror-view@1.40.0:
dependencies:
prosemirror-model: 1.25.1
prosemirror-state: 1.4.3
prosemirror-transform: 1.10.4
proxy-from-env@1.1.0: {} proxy-from-env@1.1.0: {}
prr@1.0.1: prr@1.0.1:
optional: true optional: true
punycode.js@2.3.1: {}
quansync@0.2.10: {} quansync@0.2.10: {}
queue-microtask@1.2.3: {} queue-microtask@1.2.3: {}
@ -6688,6 +7350,8 @@ snapshots:
'@rollup/rollup-win32-x64-msvc': 4.44.0 '@rollup/rollup-win32-x64-msvc': 4.44.0
fsevents: 2.3.3 fsevents: 2.3.3
rope-sequence@1.3.4: {}
run-applescript@7.0.0: {} run-applescript@7.0.0: {}
run-parallel@1.2.0: run-parallel@1.2.0:
@ -6929,6 +7593,10 @@ snapshots:
fdir: 6.4.6(picomatch@4.0.2) fdir: 6.4.6(picomatch@4.0.2)
picomatch: 4.0.2 picomatch: 4.0.2
tippy.js@6.3.7:
dependencies:
'@popperjs/core': 2.11.8
to-object-path@0.3.0: to-object-path@0.3.0:
dependencies: dependencies:
kind-of: 3.2.2 kind-of: 3.2.2
@ -6969,6 +7637,8 @@ snapshots:
uc.micro@1.0.6: {} uc.micro@1.0.6: {}
uc.micro@2.1.0: {}
ufo@1.6.1: {} ufo@1.6.1: {}
unconfig@0.3.13: unconfig@0.3.13:
@ -7270,6 +7940,8 @@ snapshots:
vooks: 0.2.12(vue@3.5.17(typescript@5.2.2)) vooks: 0.2.12(vue@3.5.17(typescript@5.2.2))
vue: 3.5.17(typescript@5.2.2) vue: 3.5.17(typescript@5.2.2)
w3c-keyname@2.2.8: {}
wait-on@6.0.1: wait-on@6.0.1:
dependencies: dependencies:
axios: 0.25.0 axios: 0.25.0

View File

@ -33,7 +33,6 @@ const props = defineProps({
const emit = defineEmits(['editor-event']) const emit = defineEmits(['editor-event'])
const userStore = useUserStore() const userStore = useUserStore()
const dialogueStore = useDialogueStore() const dialogueStore = useDialogueStore()
console.log('dialogueStore', dialogueStore.talk.talk_type)
const editorDraftStore = useEditorDraftStore() const editorDraftStore = useEditorDraftStore()
const editorRef = ref(null) const editorRef = ref(null)
const content = ref('') const content = ref('')
@ -172,7 +171,6 @@ const updateMentionPosition = (range) => {
} }
} }
const insertMention = (member, clonedRange) => { const insertMention = (member, clonedRange) => {
console.log('插入mention', member);
const selection = window.getSelection(); const selection = window.getSelection();
if (!clonedRange || !selection || !editorRef.value) return; if (!clonedRange || !selection || !editorRef.value) return;
const range = clonedRange; const range = clonedRange;
@ -565,20 +563,20 @@ const parseEditorContent = () => {
currentTextBuffer += '\n'; currentTextBuffer += '\n';
break; break;
case 'IMG': case 'IMG':
flushTextBufferIfNeeded();
const src = node.getAttribute('src'); const src = node.getAttribute('src');
const alt = node.getAttribute('alt'); const alt = node.getAttribute('alt');
const isEmojiPic = node.classList.contains('editor-emoji'); const isEmojiPic = node.classList.contains('editor-emoji');
const isTextEmojiPlaceholder = node.classList.contains('emoji'); const isTextEmojiPlaceholder = node.classList.contains('emoji');
if (isTextEmojiPlaceholder && alt) { if ((isEmojiPic || isTextEmojiPlaceholder) && alt) {
currentTextBuffer += alt; currentTextBuffer += alt;
} else if (src) { } else if (src) {
flushTextBufferIfNeeded();
items.push({ items.push({
type: 3, type: 3,
content: src, content: src,
isEmoji: isEmojiPic, isEmoji: false,
width: node.getAttribute('data-original-width') || node.width || null, width: node.getAttribute('data-original-width') || node.width,
height: node.getAttribute('data-original-height') || node.height || null, height: node.getAttribute('data-original-height') || node.height
}); });
} }
break; break;
@ -887,12 +885,8 @@ const insertImageEmoji = (imgSrc, altText) => {
img.className = 'editor-emoji'; img.className = 'editor-emoji';
img.setAttribute('data-role', 'emoji'); img.setAttribute('data-role', 'emoji');
range.insertNode(img); range.insertNode(img);
const spaceNode = document.createTextNode('\u00A0');
range.setStartAfter(img); range.setStartAfter(img);
range.collapse(true); range.collapse(true);
range.insertNode(spaceNode);
range.setStartAfter(spaceNode);
range.collapse(true);
if (selection) { if (selection) {
selection.removeAllRanges(); selection.removeAllRanges();
selection.addRange(range); selection.addRange(range);

File diff suppressed because it is too large Load Diff

View File

@ -181,7 +181,7 @@ export const useTalkStore = defineStore('talk', {
// 更新状态和本地数据库 // 更新状态和本地数据库
this.items = serverItems this.items = serverItems
console.log('serverItems',serverItems)
// 将最新的会话列表保存到本地数据库 // 将最新的会话列表保存到本地数据库
for (const item of serverItems) { for (const item of serverItems) {
await addOrUpdateConversation(item) await addOrUpdateConversation(item)

View File

@ -18,7 +18,7 @@ export function isLoggedIn() {
*/ */
export function getAccessToken() { export function getAccessToken() {
// return storage.get(AccessToken) || '' // return storage.get(AccessToken) || ''
return JSON.parse(localStorage.getItem('token'))||'79b5c732d96d2b27a48a99dfd4a5566c43aaa5796242e854ebe3ffc198d6876b9628e7b764d9af65ab5dbb2d517ced88170491b74b048c0ba827c0d3741462cb89dc59ed46653a449af837a8262941caaef1334d640773710f8cd96473bacfb190cba595a5d6a9c87d70f0999a3ebb41147213b31b4bdccffca66a56acf3baab5af0154f0dce360079f37709f78e13711036899344bddb0fb4cf0f2890287cb62c3fcbe33368caa5e213624577be8b8420ab75b1f50775ee16142a4321c5d56995f37354a66a969da98d95ba6e65d142ed097e04b411c1ebad2f62866d0ec7e1838420530a9941dbbcd00490199f8b897a4f2416a772eacd03215226020e2e551cdac98368e42541ee3082dc07317d4ecc6a5dfbbe2a28f8c48ccfae7bc6046c3b9b79c0eb3a1ec4c25f5d766a2f8f01f64da8f70f7dbf63e124ffcf72398d86' return JSON.parse(localStorage.getItem('token'))||'46d71a72d8d845ad7ed23eba9bdde260e635407190c2ce1bf7fd22088e41682ea07773ec65cae8946d2003f264d55961f96e0fc5da10eb96d3a348c1664e9644ce2108c311309f398ae8ea1b8200bfd490e5cb6e8c52c9e5d493cbabb163368f8351420451a631dbfa749829ee4cda49b77b5ed2d3dced5d0f2b7dd9ee76ba5465c84a17c23af040cd92b6b2a4ea48befbb5c729dcdad0a9c9668befe84074cc24f78899c1d947f8e7f94c7eda5325b8ed698df729e76febb98549ef3482ae942fb4f4a1c92d21836fa784728f0c5483aab2760a991b6b36e6b10c84f840a6433a6ecc31dee36e8f1c6158818bc89d22eec7a138bb20774ef183e109945229d43e1f63fb01cdee46f5f663037f4ed946a0c04441b1f642c945d218180e84e91d272dc621be157602785ef226dd21b9b6c92c292bc73be90fad0320bad0812e11'
} }
/** /**

View File

@ -1,11 +1,30 @@
import Dexie from 'dexie'; import Dexie from 'dexie';
/**
* 聊天历史数据库
* 版本5-6: 修复会话表主键问题
* - 版本5: 删除旧的会话表结构
* - 版本6: 使用index_name作为主键重新创建会话表
*
* 注意: Dexie不支持直接更改主键必须通过删除并重建表的方式实现
*/
export const db = new Dexie('chatHistory'); export const db = new Dexie('chatHistory');
// 定义数据库表结构和索引 // 定义数据库表结构和索引
// 版本3优化了索引提高了查询和排序性能 // 版本6修复主键更改问题
db.version(4).stores({ // 版本5删除旧的会话表
db.version(5).stores({
conversations: null
}).upgrade(function(trans) {
// 确保物理删除表
if (trans.idbtrans.db.objectStoreNames.contains('conversations')) {
trans.idbtrans.db.deleteObjectStore('conversations');
}
});
// 版本6使用新的主键结构重新创建会话表
db.version(6).stores({
/** /**
* 聊天记录表 * 聊天记录表
* - msg_id: 消息唯一ID (主键) * - msg_id: 消息唯一ID (主键)
@ -18,12 +37,20 @@ db.version(4).stores({
/** /**
* 会话表 * 会话表
* - ++id: 自增主键 * - index_name: 主键 (talk_type + '_' + receiver_id)
* - &index_name: 唯一索引 (talk_type + '_' + receiver_id)
* - updated_at: 索引用于排序 * - updated_at: 索引用于排序
* - is_top: 索引用于置顶排序 * - is_top: 索引用于置顶排序
*/ */
conversations: 'id, &index_name, talk_type, receiver_id, updated_at, unread_num, is_top', conversations: 'index_name, talk_type, receiver_id, updated_at, unread_num, is_top',
});
// 清理旧版本数据
db.on('versionchange', function(event) {
if (event.oldVersion < 6 && event.newVersion >= 6) {
console.log('数据库版本升级到6清理旧数据');
db.conversations.clear();
console.log('会话表数据已清理,主键结构已更新');
}
}); });
db.on('ready', () => { db.on('ready', () => {
@ -219,14 +246,24 @@ export async function deleteMessage(msgId) {
/** /**
* 添加或更新会话 * 添加或更新会话
* @param {object} conversation - 会话对象 * @param {object} conversation - 会话对象
* @returns {Promise<number>} 会话ID * @returns {Promise<string>} 会话索引名称
*/ */
export async function addOrUpdateConversation(conversation) { export async function addOrUpdateConversation(conversation) {
try { try {
// put 方法会根据唯一索引 index_name 自动判断是添加还是更新 // 确保 index_name 存在,这是会话表的主键
if (!conversation.index_name && conversation.talk_type && conversation.receiver_id) {
conversation.index_name = `${conversation.talk_type}_${conversation.receiver_id}`;
}
if (!conversation.index_name) {
throw new Error('无法添加会话缺少必要的index_name或无法生成');
}
// 使用 put 方法,如果主键已存在则更新,否则添加
return await db.conversations.put(conversation); return await db.conversations.put(conversation);
} catch (error) { } catch (error) {
console.error('添加或更新会话失败:', error); console.error('添加或更新会话失败:', error);
console.error('错误详情:', error.message, error.stack);
throw error; throw error;
} }
} }
@ -274,7 +311,7 @@ export async function getConversations(includeEmpty = false) {
export async function getConversation(talkType, receiverId) { export async function getConversation(talkType, receiverId) {
try { try {
const indexName = `${talkType}_${receiverId}`; const indexName = `${talkType}_${receiverId}`;
return await db.conversations.get({ index_name: indexName }); return await db.conversations.get(indexName);
} catch (error) { } catch (error) {
console.error('获取会话失败:', error); console.error('获取会话失败:', error);
throw error; throw error;
@ -291,11 +328,11 @@ export async function getConversation(talkType, receiverId) {
export async function updateConversationUnreadNum(talkType, receiverId, unreadNum = null) { export async function updateConversationUnreadNum(talkType, receiverId, unreadNum = null) {
try { try {
const indexName = `${talkType}_${receiverId}`; const indexName = `${talkType}_${receiverId}`;
const conversation = await db.conversations.get({ index_name: indexName }); const conversation = await db.conversations.get(indexName);
if (conversation) { if (conversation) {
const newUnreadNum = unreadNum === null ? (conversation.unread_num || 0) + 1 : unreadNum; const newUnreadNum = unreadNum === null ? (conversation.unread_num || 0) + 1 : unreadNum;
return await db.conversations.update(conversation.id, { unread_num: newUnreadNum }); return await db.conversations.update(indexName, { unread_num: newUnreadNum });
} }
return 0; return 0;
} catch (error) { } catch (error) {
@ -316,18 +353,18 @@ export function clearConversationUnreadNum(talkType, receiverId) {
/** /**
* 删除会话及其相关的消息 * 删除会话及其相关的消息
* @param {number} conversationId - 会话ID * @param {string} indexName - 会话索引名称
* @param {boolean} [deleteMessages=false] - 是否同时删除相关的消息记录 * @param {boolean} [deleteMessages=false] - 是否同时删除相关的消息记录
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
export async function deleteConversation(conversationId, deleteMessages = false) { export async function deleteConversation(indexName, deleteMessages = false) {
try { try {
await db.transaction('rw', db.conversations, db.messages, async () => { await db.transaction('rw', db.conversations, db.messages, async () => {
const conversation = await db.conversations.get(conversationId); const conversation = await db.conversations.get(indexName);
if (!conversation) return; if (!conversation) return;
// 删除会话 // 删除会话
await db.conversations.delete(conversationId); await db.conversations.delete(indexName);
// 如果需要,删除关联的消息 // 如果需要,删除关联的消息
if (deleteMessages) { if (deleteMessages) {
@ -352,7 +389,7 @@ export async function updateConversationLastMessage(message) {
const targetReceiverId = talk_type === TalkType.PRIVATE ? (user_id === receiver_id ? user_id : receiver_id) : receiver_id; const targetReceiverId = talk_type === TalkType.PRIVATE ? (user_id === receiver_id ? user_id : receiver_id) : receiver_id;
const indexName = `${talk_type}_${targetReceiverId}`; const indexName = `${talk_type}_${targetReceiverId}`;
const conversation = await db.conversations.get({ index_name: indexName }); const conversation = await db.conversations.get(indexName);
if (!conversation) return 0; if (!conversation) return 0;
let msgText = ''; let msgText = '';
@ -367,7 +404,7 @@ export async function updateConversationLastMessage(message) {
default: msgText = '[未知消息]'; default: msgText = '[未知消息]';
} }
return await db.conversations.update(conversation.id, { return await db.conversations.update(indexName, {
msg_text: msgText, msg_text: msgText,
content: message.content || '', content: message.content || '',
updated_at: message.created_at, updated_at: message.created_at,

View File

@ -511,7 +511,7 @@ const checkVisibleElements = () => {
prev.talk_type === doReadItem.talk_type && prev.receiver_id === doReadItem.receiver_id prev.talk_type === doReadItem.talk_type && prev.receiver_id === doReadItem.receiver_id
) )
if (!prevItem || !doReadItem.msg_ids.every((id) => prevItem.msg_ids.includes(id))) { if (!prevItem || !doReadItem.msg_ids.every((id) => prevItem.msg_ids.includes(id))) {
console.error('====发送了新版已读回执=====', doReadItem) // console.error('=========', doReadItem)
ws.emit('im.message.new.read', doReadItem) ws.emit('im.message.new.read', doReadItem)
} }
}) })

View File

@ -13,6 +13,7 @@ import { ServePublishMessage, ServeSendVote } from '@/api/chat'
import { throttle, getVideoImage } from '@/utils/common' import { throttle, getVideoImage } from '@/utils/common'
import { parseTime } from '@/utils/datetime' import { parseTime } from '@/utils/datetime'
import Editor from '@/components/editor/Editor.vue' import Editor from '@/components/editor/Editor.vue'
import TiptapEditor from '@/components/editor/TiptapEditor.vue'
import MultiSelectFooter from './MultiSelectFooter.vue' import MultiSelectFooter from './MultiSelectFooter.vue'
import HistoryRecord from '@/components/talk/HistoryRecord.vue' import HistoryRecord from '@/components/talk/HistoryRecord.vue'
import {scrollToBottom} from '@/utils/dom.ts' import {scrollToBottom} from '@/utils/dom.ts'
@ -294,9 +295,9 @@ onMounted(() => {
<template> <template>
<footer class="el-footer"> <footer class="el-footer">
<MultiSelectFooter v-if="dialogueStore.isOpenMultiSelect" /> <MultiSelectFooter v-if="dialogueStore.isOpenMultiSelect" />
<!-- <Editor v-else @editor-event="onEditorEvent" :vote="talk_type == 2" :members="members" /> --> <!-- <Editor v-else @editor-event="onEditorEvent" :vote="talk_type == 2" :members="members" /> -->
<CustomEditor v-else @editor-event="onEditorEvent" :vote="talk_type == 2" :members="members" /> <!-- <CustomEditor v-else @editor-event="onEditorEvent" :vote="talk_type == 2" :members="members" /> -->
<TiptapEditor v-else @editor-event="onEditorEvent" :vote="talk_type == 2" :members="members" />
</footer> </footer>
<HistoryRecord <HistoryRecord

View File

@ -46,9 +46,9 @@ export default defineConfig(({ mode }) => {
vueJsx({}), vueJsx({}),
compressPlugin(), compressPlugin(),
UnoCSS(), UnoCSS(),
vueDevTools({ // vueDevTools({
launchEditor: 'trae', // launchEditor: 'trae',
}) // })
], ],
define: { define: {
__APP_ENV__: env.APP_ENV __APP_ENV__: env.APP_ENV