koishi-plugin-chat-patch 3.0.2 → 5.0.1

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.
Files changed (237) hide show
  1. package/client/vue/index.vue +60 -634
  2. package/client/web/dist/assets/AppIcon-DIku6-h0.png +0 -0
  3. package/client/web/dist/assets/AppIconDark-BYymN71t.png +0 -0
  4. package/client/web/dist/assets/CapacitorAppIcon-CSZwNhvi.png +0 -0
  5. package/client/web/dist/assets/CapacitorAppIconDark-BMvMOzsg.png +0 -0
  6. package/client/web/dist/assets/Chat-CTdyeaX2.css +1 -0
  7. package/client/web/dist/assets/Chat-DkZvD7d8.js +28 -0
  8. package/client/web/dist/assets/MealHungryPan-Beos3lRI.js +1 -0
  9. package/client/web/dist/assets/MsgBody-aZ4_aija.js +1 -0
  10. package/client/web/dist/assets/MsgBody.vue_vue_type_script_setup_true_lang-CPZjRLp6.js +67 -0
  11. package/client/web/dist/assets/NapcatAppIcon-C7VOAkW9.png +0 -0
  12. package/client/web/dist/assets/Vue-lEhHouxB.png +0 -0
  13. package/client/web/dist/assets/append_darwin-CqBNU62J.css +1 -0
  14. package/client/web/dist/assets/append_full_vibrancy-j0D2LM9m.css +1 -0
  15. package/client/web/dist/assets/append_linux-uhxeBqeC.css +1 -0
  16. package/client/web/dist/assets/append_linux_vibrancy-COiZq8MS.css +1 -0
  17. package/client/web/dist/assets/append_napcat-DV8CAyAd.css +1 -0
  18. package/client/web/dist/assets/append_new-407Lo5_V.css +1 -0
  19. package/client/web/dist/assets/append_vibrancy-6FHctkOY.css +1 -0
  20. package/client/web/dist/assets/append_win32-srmD-78y.css +1 -0
  21. package/client/web/dist/assets/cakes-CxTVKdnK.svg +189 -0
  22. package/client/web/dist/assets/core-DhEqZVGG.js +1 -0
  23. package/client/web/dist/assets/event-Cadp6m6J.js +1 -0
  24. package/client/web/dist/assets/index-CPTXiemn.js +4045 -0
  25. package/client/web/dist/assets/index-Cg_esKB0.js +1 -0
  26. package/client/web/dist/assets/index-Cln012sP.css +1 -0
  27. package/client/web/dist/assets//346/226/271/346/255/243/345/226/265/345/221/234/344/275/223-CJKIKBn3.ttf +0 -0
  28. package/client/web/dist/assets//346/234/237/345/276/205-C90_OY60.png +0 -0
  29. package/client/web/dist/bcui/css/color-dark.css +35 -0
  30. package/client/web/dist/bcui/css/color-light.css +35 -0
  31. package/client/web/dist/bcui/css/style.css +468 -0
  32. package/client/web/dist/bcui/js/main.js +193 -0
  33. package/client/web/dist/css/append-dark.css +13 -0
  34. package/client/web/dist/css/append-light.css +13 -0
  35. package/client/web/dist/css/append-napcat-dark.css +14 -0
  36. package/client/web/dist/css/append-napcat-light.css +14 -0
  37. package/client/web/dist/favicon.ico +0 -0
  38. package/client/web/dist/img/icons/icon-for-fuck-apple.png +0 -0
  39. package/client/web/dist/img/icons/icon-maskable.png +0 -0
  40. package/client/web/dist/img/icons/icon.png +0 -0
  41. package/client/web/dist/img/icons/icon.svg +10 -0
  42. package/client/web/dist/index.html +22 -0
  43. package/client/web/dist/robots.txt +2 -0
  44. package/client/web/dist/sw.js +58 -0
  45. package/client/web/env.d.ts +56 -0
  46. package/client/web/index.html +21 -0
  47. package/client/web/package-lock.json +3419 -0
  48. package/client/web/package.json +62 -0
  49. package/client/web/public/bcui/css/color-dark.css +35 -0
  50. package/client/web/public/bcui/css/color-light.css +35 -0
  51. package/client/web/public/bcui/css/style.css +468 -0
  52. package/client/web/public/bcui/js/main.js +193 -0
  53. package/client/web/public/css/append-dark.css +13 -0
  54. package/client/web/public/css/append-light.css +13 -0
  55. package/client/web/public/css/append-napcat-dark.css +14 -0
  56. package/client/web/public/css/append-napcat-light.css +14 -0
  57. package/client/web/public/favicon.ico +0 -0
  58. package/client/web/public/img/icons/icon-for-fuck-apple.png +0 -0
  59. package/client/web/public/img/icons/icon-maskable.png +0 -0
  60. package/client/web/public/img/icons/icon.png +0 -0
  61. package/client/web/public/img/icons/icon.svg +10 -0
  62. package/client/web/public/robots.txt +2 -0
  63. package/client/web/public/sw.js +58 -0
  64. package/client/web/scripts/copy-bcui.mjs +17 -0
  65. package/client/web/src/App.vue +1127 -0
  66. package/client/web/src/assets/css/append/append_darwin.css +68 -0
  67. package/client/web/src/assets/css/append/append_full_vibrancy.css +290 -0
  68. package/client/web/src/assets/css/append/append_linux.css +125 -0
  69. package/client/web/src/assets/css/append/append_linux_vibrancy.css +22 -0
  70. package/client/web/src/assets/css/append/append_napcat.css +35 -0
  71. package/client/web/src/assets/css/append/append_new.css +843 -0
  72. package/client/web/src/assets/css/append/append_vibrancy.css +113 -0
  73. package/client/web/src/assets/css/append/append_win32.css +109 -0
  74. package/client/web/src/assets/css/append/mobile/append_mobile_horizontal.css +349 -0
  75. package/client/web/src/assets/css/append/mobile/append_mobile_vertical.css +96 -0
  76. package/client/web/src/assets/css/chat.css +2104 -0
  77. package/client/web/src/assets/css/msg.css +941 -0
  78. package/client/web/src/assets/css/options.css +811 -0
  79. package/client/web/src/assets/css/sys_notice.css +62 -0
  80. package/client/web/src/assets/css/view.css +2105 -0
  81. package/client/web/src/assets/font//346/226/271/346/255/243/345/226/265/345/221/234/344/275/223.ttf +0 -0
  82. package/client/web/src/assets/img/Vue.png +0 -0
  83. package/client/web/src/assets/img/cakes.svg +189 -0
  84. package/client/web/src/assets/img/icons/AppIcon.png +0 -0
  85. package/client/web/src/assets/img/icons/AppIconDark.png +0 -0
  86. package/client/web/src/assets/img/icons/CapacitorAppIcon.png +0 -0
  87. package/client/web/src/assets/img/icons/CapacitorAppIconDark.png +0 -0
  88. package/client/web/src/assets/img/icons/NapcatAppIcon.png +0 -0
  89. package/client/web/src/assets/img/icons/NapcatAppIconDark.png +0 -0
  90. package/client/web/src/assets/img/icons/exit.png +0 -0
  91. package/client/web/src/assets/img/icons/pen.png +0 -0
  92. package/client/web/src/assets/img/stars.svg +89 -0
  93. package/client/web/src/assets/img//346/234/237/345/276/205.png +0 -0
  94. package/client/web/src/assets/l10n/_About I10n.md +35 -0
  95. package/client/web/src/assets/l10n/_l10nconfig.json +7 -0
  96. package/client/web/src/assets/l10n/zh-CN.po +1941 -0
  97. package/client/web/src/assets/logo.png +0 -0
  98. package/client/web/src/assets/pathMap/LLOneBot.yaml +2 -0
  99. package/client/web/src/assets/pathMap/Lagrange.OneBot.yaml +180 -0
  100. package/client/web/src/assets/pathMap/NapCat.Onebot.yaml +224 -0
  101. package/client/web/src/assets/pathMap/SnowLuma.yaml +80 -0
  102. package/client/web/src/assets/qed.txt +1 -0
  103. package/client/web/src/components/AboutPan.vue +197 -0
  104. package/client/web/src/components/BulletinBody.vue +129 -0
  105. package/client/web/src/components/DepPan.vue +310 -0
  106. package/client/web/src/components/EmojiFace.vue +32 -0
  107. package/client/web/src/components/FacePan.vue +461 -0
  108. package/client/web/src/components/FileBody.vue +129 -0
  109. package/client/web/src/components/FileManager.vue +532 -0
  110. package/client/web/src/components/FriendBody.vue +54 -0
  111. package/client/web/src/components/GlobalSessionSearchBar.vue +301 -0
  112. package/client/web/src/components/History.vue +49 -0
  113. package/client/web/src/components/LazyLottie.vue +82 -0
  114. package/client/web/src/components/MergePan.vue +127 -0
  115. package/client/web/src/components/MsgBody.vue +1478 -0
  116. package/client/web/src/components/MusicPlayer.vue +549 -0
  117. package/client/web/src/components/NoticeBody.vue +168 -0
  118. package/client/web/src/components/QzonePermissionPan.vue +150 -0
  119. package/client/web/src/components/RawMsgRenderPreviewPan.vue +190 -0
  120. package/client/web/src/components/ThemeColorPickerPan.vue +420 -0
  121. package/client/web/src/components/TinySessionBody.vue +51 -0
  122. package/client/web/src/components/UmamiInfoPan.vue +1549 -0
  123. package/client/web/src/components/UpdatePan.vue +263 -0
  124. package/client/web/src/components/ViewerCom.vue +1360 -0
  125. package/client/web/src/components/VoiceMsg.vue +626 -0
  126. package/client/web/src/components/WelPan.vue +894 -0
  127. package/client/web/src/components/msg-body/.gitkeep +0 -0
  128. package/client/web/src/components/msg-component/JsonSegComp.vue +138 -0
  129. package/client/web/src/components/msg-component/XmlSegComp.vue +132 -0
  130. package/client/web/src/components/msg-component/jsonComp/AutoReply.vue +97 -0
  131. package/client/web/src/components/msg-component/jsonComp/Contact.lua.vue +129 -0
  132. package/client/web/src/components/msg-component/jsonComp/Feed.lua.vue +94 -0
  133. package/client/web/src/components/msg-component/jsonComp/Forum.vue +84 -0
  134. package/client/web/src/components/msg-component/jsonComp/Mannounce.vue +111 -0
  135. package/client/web/src/components/msg-component/jsonComp/Map.vue +52 -0
  136. package/client/web/src/components/msg-component/jsonComp/Miniapp.lua.vue +53 -0
  137. package/client/web/src/components/msg-component/jsonComp/Miniapp.vue +69 -0
  138. package/client/web/src/components/msg-component/jsonComp/Music.lua.vue +135 -0
  139. package/client/web/src/components/msg-component/jsonComp/Tuwen.lua.vue +56 -0
  140. package/client/web/src/components/notice-component/.gitkeep +0 -0
  141. package/client/web/src/components/notice-component/MealHungryPan.vue +119 -0
  142. package/client/web/src/components/tooltip/CustomFaceTooltip.vue +22 -0
  143. package/client/web/src/components/tooltip/Tooltip.vue +50 -0
  144. package/client/web/src/components/tooltip/Tooltips.vue +14 -0
  145. package/client/web/src/components/tooltip/UserInfoTooltip.vue +69 -0
  146. package/client/web/src/function/base.ts +238 -0
  147. package/client/web/src/function/connect.ts +2042 -0
  148. package/client/web/src/function/debug.ts +10 -0
  149. package/client/web/src/function/elements/information.ts +141 -0
  150. package/client/web/src/function/elements/system.ts +101 -0
  151. package/client/web/src/function/elements/vueComp.ts +62 -0
  152. package/client/web/src/function/favicon.ts +76 -0
  153. package/client/web/src/function/input.ts +69 -0
  154. package/client/web/src/function/model/emoji.ts +127 -0
  155. package/client/web/src/function/model/img.ts +150 -0
  156. package/client/web/src/function/model/msg-body.ts +51 -0
  157. package/client/web/src/function/msg.ts +2674 -0
  158. package/client/web/src/function/notify.ts +225 -0
  159. package/client/web/src/function/option.ts +749 -0
  160. package/client/web/src/function/satori-model.ts +818 -0
  161. package/client/web/src/function/satori.ts +325 -0
  162. package/client/web/src/function/sender.ts +178 -0
  163. package/client/web/src/function/tooltip.ts +49 -0
  164. package/client/web/src/function/utils/appUtil.ts +2288 -0
  165. package/client/web/src/function/utils/avatarUtil.ts +31 -0
  166. package/client/web/src/function/utils/backgroundUtil.ts +110 -0
  167. package/client/web/src/function/utils/linkViewUtil.ts +101 -0
  168. package/client/web/src/function/utils/localHistoryUtil.ts +517 -0
  169. package/client/web/src/function/utils/msgUtil.ts +1242 -0
  170. package/client/web/src/function/utils/pinyin.ts +141 -0
  171. package/client/web/src/function/utils/recordUtil.ts +187 -0
  172. package/client/web/src/function/utils/sessionUtil.ts +114 -0
  173. package/client/web/src/function/utils/systemUtil.ts +664 -0
  174. package/client/web/src/main.ts +91 -0
  175. package/client/web/src/pages/Chat.vue +3453 -0
  176. package/client/web/src/pages/Friends.vue +636 -0
  177. package/client/web/src/pages/Info.vue +717 -0
  178. package/client/web/src/pages/Messages.vue +875 -0
  179. package/client/web/src/pages/Options.vue +82 -0
  180. package/client/web/src/pages/Qzone.vue +1178 -0
  181. package/client/web/src/pages/chat-view/ChatDanmaku.vue +759 -0
  182. package/client/web/src/pages/chat-view/ChatGlagame.vue +642 -0
  183. package/client/web/src/pages/chat-view/ChatTerminal.vue +1044 -0
  184. package/client/web/src/pages/chat-view/SystemNotice.vue +171 -0
  185. package/client/web/src/pages/options/OptAccount.vue +107 -0
  186. package/client/web/src/pages/options/OptAddon.vue +185 -0
  187. package/client/web/src/pages/options/OptDev.vue +704 -0
  188. package/client/web/src/pages/options/OptFunction.vue +403 -0
  189. package/client/web/src/pages/options/OptInfo.vue +165 -0
  190. package/client/web/src/pages/options/OptView.vue +846 -0
  191. package/client/web/src/runtime/backend.ts +310 -0
  192. package/client/web/src/state/auth.ts +14 -0
  193. package/client/web/src/state/chat.ts +36 -0
  194. package/client/web/src/state/connection.ts +20 -0
  195. package/client/web/src/state/contact.ts +37 -0
  196. package/client/web/src/state/qzone.ts +18 -0
  197. package/client/web/src/state/sessionHistory.ts +25 -0
  198. package/client/web/src/state/settings.ts +18 -0
  199. package/client/web/src/state/sticker.ts +10 -0
  200. package/client/web/src/state/ui.ts +56 -0
  201. package/client/web/tsconfig.json +27 -0
  202. package/client/web/tsconfig.tsbuildinfo +1 -0
  203. package/client/web/vite.config.ts +33 -0
  204. package/dist/index.js +1 -12
  205. package/dist/style.css +1 -1
  206. package/lib/index.js +2070 -2077
  207. package/package.json +15 -2
  208. package/readme.md +0 -22
  209. package/src/bootstrap.ts +71 -0
  210. package/src/cache.ts +319 -0
  211. package/src/config.ts +23 -35
  212. package/src/database.ts +650 -0
  213. package/src/index.ts +27 -59
  214. package/src/media.ts +302 -0
  215. package/src/recorder.ts +175 -0
  216. package/src/self-message.ts +456 -0
  217. package/src/server.d.ts +26 -0
  218. package/src/types.ts +108 -48
  219. package/src/web.ts +712 -0
  220. package/client/vue/chat-logic.ts +0 -683
  221. package/client/vue/composables/useChatActions.ts +0 -61
  222. package/client/vue/composables/useChatData.ts +0 -185
  223. package/client/vue/composables/useImageCache.ts +0 -281
  224. package/client/vue/composables/useVideoCache.ts +0 -125
  225. package/client/vue/types.ts +0 -72
  226. package/lib/api-handlers.d.ts +0 -25
  227. package/lib/config.d.ts +0 -14
  228. package/lib/file-manager.d.ts +0 -124
  229. package/lib/index.d.ts +0 -17
  230. package/lib/logger.d.ts +0 -9
  231. package/lib/message-handler.d.ts +0 -35
  232. package/lib/types.d.ts +0 -57
  233. package/lib/utils.d.ts +0 -18
  234. package/src/api-handlers.ts +0 -646
  235. package/src/file-manager.ts +0 -1436
  236. package/src/message-handler.ts +0 -507
  237. package/src/utils.ts +0 -189
@@ -0,0 +1,941 @@
1
+ /*
2
+ msg.css - 消息的样式
3
+ 2022/04/03 - Stapx Steve [林槐]
4
+ */
5
+
6
+ .message {
7
+ user-select: none;
8
+ transition: background 0.3s, opacity 0.3s;
9
+ display: flex;
10
+ padding: 5px 10px 10px 10px;
11
+ width: calc(100% - 30px);
12
+ border-radius: 7px;
13
+ margin: 5px 0;
14
+ font-size: 1rem;
15
+ flex-wrap: wrap;
16
+ }
17
+ .message.me {
18
+ flex-direction: row-reverse;
19
+ }
20
+ .message.me.right {
21
+ flex-direction: row-reverse !important;
22
+ }
23
+ .message.me.left {
24
+ flex-direction: row;
25
+ }
26
+ .message.me.left > img {
27
+ margin: 10px 15px 0 0;
28
+ }
29
+ .message-body.me.left {
30
+ align-items: start;
31
+ }
32
+ .message.selected {
33
+ background: #0000001d;
34
+ }
35
+ /* 多选模式:未选中消息弱化,选中消息显示描边和勾选 */
36
+ .message.selecting {
37
+ position: relative;
38
+ padding-left: 36px;
39
+ opacity: 0.55;
40
+ cursor: pointer;
41
+ }
42
+ .message.selecting.selected {
43
+ opacity: 1;
44
+ background: rgba(var(--color-card-rgb), 0.78);
45
+ outline: 2px solid var(--color-main);
46
+ outline-offset: -2px;
47
+ }
48
+ .message.selecting::after {
49
+ content: '';
50
+ position: absolute;
51
+ top: 8px;
52
+ left: 10px;
53
+ right: auto;
54
+ width: 18px;
55
+ height: 18px;
56
+ box-sizing: border-box;
57
+ border: 2px solid var(--color-font-2);
58
+ border-radius: 50%;
59
+ background: rgba(var(--color-bg-rgb), 0.6);
60
+ pointer-events: none;
61
+ z-index: 2;
62
+ }
63
+ .message.selecting.selected::after {
64
+ content: '';
65
+ background: var(--color-main);
66
+ border-color: var(--color-main);
67
+ }
68
+ .message.forward {
69
+ border: 2px solid var(--color-card-2);
70
+ width: calc(100% - 45px);
71
+ margin-bottom: 20px;
72
+ overflow-y: scroll;
73
+ max-height: 40vh;
74
+ }
75
+ .message.body-only {
76
+ width: 100%;
77
+ padding: 0;
78
+ margin: 0;
79
+ }
80
+ .message > img {
81
+ width: 35px;
82
+ height: 35px;
83
+ border-radius: 7px;
84
+ margin: 10px 15px 0 0;
85
+ }
86
+ .message.me > img {
87
+ margin: 10px 0 0 15px;
88
+ }
89
+ .message.me.right > img {
90
+ margin: 10px 0 0 15px !important;
91
+ }
92
+ .message > div.sending {
93
+ width: 13px;
94
+ height: auto;
95
+ display: none;
96
+ align-items: flex-end;
97
+ margin-left: 10px;
98
+ margin-right: 10px;
99
+ margin-bottom: 3px;
100
+ }
101
+ .message > div.sending.me {
102
+ display: flex;
103
+ }
104
+ .message > div.sending.right.me {
105
+ display: none;
106
+ }
107
+ .message > div.sending.left.me > svg {
108
+ animation: rotate 1.5s linear infinite;
109
+ color: var(--color-font-2);
110
+ width: 0.8rem;
111
+ }
112
+
113
+ .message-body {
114
+ color: var(--color-font);
115
+ display: flex;
116
+ flex-direction: column;
117
+ max-width: 60%;
118
+ }
119
+ .message-body.me {
120
+ color: var(--color-font-r);
121
+ }
122
+ .message.merge > div.message-body {
123
+ max-width: calc(100% - 50px);
124
+ }
125
+ .message.revoke {
126
+ display: none;
127
+ }
128
+ .message.revoke.me {
129
+ display: flex;
130
+ opacity: 0.4;
131
+ }
132
+ .message.body-only > div.message-body {
133
+ max-width: 100%;
134
+ width: 100%;
135
+ }
136
+ .message-body a {
137
+ color: var(--color-font);
138
+ }
139
+ .message-body.me,
140
+ .message-body.me.right {
141
+ align-items: end;
142
+ }
143
+ .message-body.me a {
144
+ color: var(--color-font-r);
145
+ }
146
+ .message-body.me > header > a {
147
+ color: var(--color-font);
148
+ }
149
+ .message-body a:link {
150
+ text-decoration: underline;
151
+ display: inline-block;
152
+ padding: 0 5px;
153
+ opacity: 0.8;
154
+ }
155
+ .message-body a:link:before {
156
+ text-align: center;
157
+ content: '🔗';
158
+ color: transparent;
159
+ text-shadow: 0 0 0 var(--color-font-1);
160
+ }
161
+ .message-body.me a:link::before {
162
+ text-shadow: 0 0 0 var(--color-font-1-r);
163
+ }
164
+ .message-body > header {
165
+ flex-wrap: wrap;
166
+ display: flex;
167
+ }
168
+ .message-body > header > span {
169
+ margin-right: 3px;
170
+ font-size: 0.7rem;
171
+ background: var(--color-font);
172
+ color: var(--color-font-r);
173
+ border-radius: 10px;
174
+ padding: 1px 4px;
175
+ }
176
+ .message-body > header > span.owner {
177
+ background: var(--color-yellow);
178
+ }
179
+ .message-body > header > span.admin {
180
+ background: var(--color-green);
181
+ }
182
+ .message-body > header > span.robot {
183
+ background: var(--color-blue);
184
+ }
185
+ .message-body > header > a {
186
+ color: var(--color-font-1);
187
+ display: inline-block;
188
+ font-size: 0.8rem;
189
+ margin: 0 5px;
190
+ }
191
+ .message-body > header > a.time {
192
+ color: var(--color-font-2);
193
+ font-size: 0.75rem;
194
+ opacity: 0.7;
195
+ }
196
+ .message-body > div {
197
+ background: var(--color-card-1);
198
+ border-radius: 7px;
199
+ width: fit-content;
200
+ margin-top: 5px;
201
+ padding: 10px;
202
+ }
203
+ /* 限制消息内图片/视频高度,避免长图或大图撑爆聊天区 */
204
+ #msgPan .message-body img,
205
+ .merge-pan .message-body img,
206
+ #msgPan .message-body video,
207
+ .merge-pan .message-body video,
208
+ #msgPan .message-body iframe,
209
+ .merge-pan .message-body iframe {
210
+ max-height: min(18rem, 40vh) !important;
211
+ }
212
+ .message-body.me > div {
213
+ background: var(--color-main);
214
+ }
215
+ .message.body-only > div.message-body > div {
216
+ background: transparent;
217
+ backdrop-filter: unset;
218
+ padding: 0;
219
+ }
220
+ .message-body.super-face > div {
221
+ backdrop-filter: unset;
222
+ background: transparent;
223
+ }
224
+ .message-body.super-face > div > div {
225
+ padding: 20px 10px;
226
+ border: 0;
227
+ }
228
+
229
+ .message-mine {
230
+ background: var(--color-main) !important;
231
+ color: var(--color-font-r) !important;
232
+ }
233
+ .message-mine a {
234
+ color: var(--color-font-r) !important;
235
+ }
236
+ .message-mine a:link {
237
+ opacity: 0.8;
238
+ }
239
+
240
+ .message-mine a:link:before {
241
+ text-align: center;
242
+ content: '🔗';
243
+ color: transparent;
244
+ text-shadow: 0 0 0 var(--color-font-1-r);
245
+ }
246
+ .message-mine svg {
247
+ color: var(--color-font-r) !important;
248
+ }
249
+
250
+ .msg-inline {
251
+ display: inline-block;
252
+ }
253
+
254
+ .msg-text {
255
+ overflow-wrap: anywhere;
256
+ white-space: pre-wrap;
257
+ }
258
+
259
+ .msg-md h1,
260
+ .msg-md h2,
261
+ .msg-md h3,
262
+ .msg-md h4 {
263
+ align-items: flex-end;
264
+ flex-direction: row;
265
+ display: flex;
266
+ margin: 0;
267
+ }
268
+ .msg-md img {
269
+ border-radius: 7px;
270
+ max-width: 100%;
271
+ max-height: min(18rem, 40vh) !important;
272
+ width: auto !important;
273
+ height: auto !important;
274
+ object-fit: contain;
275
+ }
276
+ .msg-md blockquote {
277
+ border-left: 3px solid var(--color-font-2);
278
+ color: var(--color-font-2);
279
+ border-radius: 3px;
280
+ font-size: 0.8rem;
281
+ padding: 0 10px;
282
+ margin: 0;
283
+ }
284
+
285
+ .msg-unknown {
286
+ overflow-wrap: anywhere;
287
+ white-space: pre-wrap;
288
+ font-style: italic;
289
+ opacity: 0.5;
290
+ }
291
+
292
+ .msg-img {
293
+ margin: 5px 0;
294
+ border-radius: 7px;
295
+ max-height: 35vh;
296
+ cursor: pointer;
297
+ display: block;
298
+ max-width: 100%;
299
+ }
300
+ .msg-img.top {
301
+ margin: 0 0 5px 0;
302
+ }
303
+ .msg-img.bottom {
304
+ margin: 5px 0 0 5px;
305
+ }
306
+ .msg-img.alone {
307
+ border: 1px solid var(--color-main);
308
+ max-width: calc(100% + 20px);
309
+ margin: -10px;
310
+ }
311
+ .msg-img.face {
312
+ max-width: calc(var(--width) / 2 + 20px);
313
+ }
314
+ .msg-img.face.lottie-face {
315
+ max-width: 30vh
316
+ }
317
+ .msg-img-placeholder {
318
+ border: 1px dashed var(--color-card-2) !important;
319
+ min-width: 180px;
320
+ min-height: 110px;
321
+ padding: 16px;
322
+ box-sizing: border-box;
323
+ display: flex;
324
+ align-items: center;
325
+ justify-content: center;
326
+ flex-direction: column;
327
+ gap: 10px;
328
+ color: var(--color-font-2);
329
+ cursor: pointer;
330
+ }
331
+ .msg-img-placeholder.alone {
332
+ margin: 0 !important;
333
+ }
334
+ .msg-img-placeholder svg {
335
+ width: 1.25rem;
336
+ height: 1.25rem;
337
+ }
338
+ .msg-img-placeholder span {
339
+ font-size: 0.8rem;
340
+ height: unset !important;
341
+ white-space: nowrap;
342
+ }
343
+ .message-body.me .msg-img-placeholder {
344
+ border-color: rgba(var(--color-font-r-rgb), 0.35);
345
+ color: var(--color-font-1-r);
346
+ }
347
+ /* 长图优化样式 */
348
+ div:has(> .msg-img.long-img)::after {
349
+ content: '长图';
350
+ color: #434343;
351
+ background: rgba(var(--color-card-2-rgb), 0.5);
352
+ width: calc(100% - 10px);
353
+ display: block;
354
+ position: sticky;
355
+ margin-bottom: -20px;
356
+ transform: translateY(-100%);
357
+ text-align: center;
358
+ padding: 5px;
359
+ border-radius: 7px;
360
+ font-size: 0.65rem;
361
+ backdrop-filter: blur(20px);
362
+ }
363
+ div:has(> .msg-img.long-img.light)::after {
364
+ color: #dbdbdb;
365
+ }
366
+ .msg-img.long-img {
367
+ max-height: 40vh;
368
+ width: 20vw;
369
+ height: 40vh;
370
+ object-fit: cover;
371
+ object-position: top center;
372
+ }
373
+ .msg-img.long-img.alone {
374
+ max-width: calc(100% + 20px);
375
+ margin: -10px;
376
+ }
377
+
378
+ .msg-face {
379
+ width: 1.5rem;
380
+ height: 1.5rem;
381
+ margin: 0 2px -5px 2px;
382
+ /* image-rendering: pixelated; */
383
+ }
384
+ .msg-face-svg {
385
+ color: var(--color-font-1);
386
+ margin: -5px 2px -3px 2px;
387
+ height: 1.2rem;
388
+ width: 1.2rem;
389
+ opacity: 0.7;
390
+ }
391
+ .msg-face-svg.me {
392
+ color: var(--color-font-1-r);
393
+ }
394
+ .msg-face-long > span {
395
+ display: inline-block;
396
+ margin: 5px 0;
397
+ }
398
+ .msg-face-long > span:nth-child(odd) {
399
+ transform: translateY(5px);
400
+ }
401
+ .msg-face-long > span:nth-child(even) {
402
+ transform: translateY(-5px);
403
+ }
404
+ .msg-face-long > span:nth-child(3n) {
405
+ opacity: 0;
406
+ width: 8px;
407
+ }
408
+
409
+ .msg-mface {
410
+ outline: 1px dashed var(--color-main);
411
+ }
412
+
413
+ .msg-at {
414
+ display: inline-block;
415
+ }
416
+ .msg-at > a {
417
+ color: var(--color-main) !important;
418
+ /* text-decoration: underline; */
419
+ cursor: pointer;
420
+ padding: 3px;
421
+ }
422
+ .msg-at.me > a {
423
+ color: var(--color-font-r) !important;
424
+ }
425
+ .msg-at.atme > a {
426
+ color: var(--color-font-r) !important;
427
+ background: var(--color-main);
428
+ border-radius: 4px;
429
+ }
430
+
431
+ .msg-replay {
432
+ background: #00000017;
433
+ margin-bottom: 10px;
434
+ border-radius: 7px;
435
+ overflow: hidden;
436
+ cursor: pointer;
437
+ display: flex;
438
+ flex-direction: column;
439
+ padding: 10px;
440
+ }
441
+ .msg-replay > div:first-child {
442
+ display: flex;
443
+ }
444
+ .msg-replay > div:first-child span {
445
+ margin-right: 25px;
446
+ font-size: 0.75rem;
447
+ opacity: 0.7;
448
+ flex: 1;
449
+ }
450
+ .msg-replay > div:first-child svg {
451
+ height: 0.7rem;
452
+ opacity: 0.7;
453
+ }
454
+ .msg-replay > div:last-child span,
455
+ .msg-replay > div:last-child a,
456
+ .msg-replay > a:last-child {
457
+ font-size: 0.8rem !important;
458
+ }
459
+ .msg-replay.me svg {
460
+ color: var(--color-font-1-r);
461
+ }
462
+ .msg-replay.me,
463
+ .msg-replay.me .message-body,
464
+ .msg-replay.me .msg-text,
465
+ .msg-replay.me span,
466
+ .msg-replay.me a {
467
+ color: var(--color-font-r);
468
+ }
469
+
470
+ .msg-xml {
471
+ padding: 5px 15px;
472
+ }
473
+ .msg-xml p {
474
+ margin-bottom: 2px;
475
+ }
476
+ .msg-xml hr {
477
+ display: none;
478
+ }
479
+ .msg-xml-summary {
480
+ display: block;
481
+ font-size: 0.9rem;
482
+ background: #00000017;
483
+ margin: 0 -25px -15px -25px;
484
+ padding: 5px 5px 5px 10px;
485
+ border-radius: 0 0 7px 7px;
486
+ }
487
+ .msg-xml-img {
488
+ width: 3rem;
489
+ float: right;
490
+ margin-left: 15px;
491
+ }
492
+
493
+ .msg-record {
494
+ display: flex;
495
+ margin: 0 5px;
496
+ }
497
+ .msg-record > i {
498
+ display: inline-block;
499
+ font-size: 2rem;
500
+ }
501
+ .msg-record > div {
502
+ margin-left: 10px;
503
+ }
504
+ .msg-record > div a {
505
+ line-height: 2rem;
506
+ }
507
+
508
+ .msg-video {
509
+ margin: -9px;
510
+ border-radius: 7px;
511
+ overflow: hidden;
512
+ }
513
+ .msg-video video {
514
+ width: 100%;
515
+ max-height: 50vh;
516
+ margin-bottom: -7px;
517
+ }
518
+
519
+ .msg-file {
520
+ display: flex;
521
+ flex-direction: row;
522
+ align-items: center;
523
+ flex-wrap: wrap;
524
+ }
525
+ .msg-file svg {
526
+ color: var(--color-font-1);
527
+ }
528
+ .msg-file.me svg {
529
+ color: var(--color-font-1-r);
530
+ }
531
+ .msg-file > div:nth-child(1) {
532
+ display: flex;
533
+ flex-direction: column;
534
+ flex: 1;
535
+ }
536
+ .msg-file > div:nth-child(1) a {
537
+ font-size: 0.75rem;
538
+ display: block;
539
+ opacity: 0.7;
540
+ }
541
+ .msg-file > div:nth-child(1) i {
542
+ font-size: 0.8rem;
543
+ font-style: normal;
544
+ overflow-wrap: anywhere;
545
+ }
546
+ .msg-file > div:nth-child(1) p {
547
+ display: inline-block;
548
+ font-size: 1rem;
549
+ margin: 5px 0 0 0;
550
+ }
551
+ .msg-file > div:nth-child(2) {
552
+ background: #0000002e;
553
+ border-radius: 100%;
554
+ margin-left: 40px;
555
+ margin-right: 5px;
556
+ cursor: pointer;
557
+ }
558
+ .msg-file > div:nth-child(2) svg {
559
+ margin: 15px 10px 10px 10px;
560
+ height: 20px;
561
+ width: 27px;
562
+ }
563
+
564
+ .msg-link-view {
565
+ display: flex;
566
+ flex-direction: row;
567
+ background: #00000017;
568
+ border-radius: 7px;
569
+ margin-top: 7px;
570
+ padding: 10px;
571
+ }
572
+ .msg-link-view > div.bar {
573
+ width: 5px;
574
+ min-width: 5px;
575
+ background: #00000030;
576
+ border-radius: 5px;
577
+ margin-right: 7px;
578
+ }
579
+ .msg-link-view > div.bar.me {
580
+ background: var(--color-font-r);
581
+ opacity: 0.6;
582
+ }
583
+ .msg-link-view > div {
584
+ display: flex;
585
+ }
586
+ .msg-link-view > div > img {
587
+ border-radius: 7px;
588
+ margin-right: 7px;
589
+ min-height: 5rem;
590
+ max-height: 7rem;
591
+ max-width: 50%;
592
+ }
593
+ .msg-link-view > div > div.body {
594
+ flex-direction: column;
595
+ display: flex;
596
+ }
597
+ .msg-link-view > div > div.body p {
598
+ font-weight: bold;
599
+ margin-bottom: 0;
600
+ }
601
+ .msg-link-view > div > div.body span {
602
+ font-size: 0.9rem;
603
+ }
604
+ .msg-link-view > div > div.body span:nth-child(3) {
605
+ font-size: 0.8rem;
606
+ opacity: 0.7;
607
+ }
608
+ .msg-link-view.large > div {
609
+ flex-direction: column-reverse;
610
+ align-items: center;
611
+ display: flex;
612
+ }
613
+ .msg-link-view.large > div > img {
614
+ margin-bottom: 5px;
615
+ border-radius: 7px;
616
+ max-width: 100%;
617
+ max-height: unset;
618
+ margin-top: 15px;
619
+ }
620
+
621
+ .msg-json {
622
+ cursor: pointer;
623
+ width: min-content;
624
+ min-width: 35vw;
625
+ }
626
+
627
+ /* QQ 小程序卡片固定为方形卡片,不随屏幕宽度继续拉伸 */
628
+ .msg-json.miniapp-card {
629
+ width: 18rem;
630
+ min-width: 0;
631
+ max-width: min(18rem, 80vw);
632
+ max-height: 18rem;
633
+ aspect-ratio: 1 / 1;
634
+ display: flex;
635
+ flex-direction: column;
636
+ overflow: hidden;
637
+ box-sizing: border-box;
638
+ border: 1px solid rgba(var(--color-card-2-rgb), 0.5);
639
+ border-radius: 7px;
640
+ background: rgba(var(--color-card-rgb), 0.35);
641
+ }
642
+ .msg-json.miniapp-card > p {
643
+ flex: none;
644
+ overflow: hidden;
645
+ white-space: nowrap;
646
+ text-overflow: ellipsis;
647
+ }
648
+ .msg-json.miniapp-card > img {
649
+ width: 100%;
650
+ max-width: 100%;
651
+ flex: 1;
652
+ min-height: 0;
653
+ object-fit: cover;
654
+ border-radius: 7px;
655
+ margin: 7px 0 0;
656
+ transform: none;
657
+ }
658
+ .msg-json.miniapp-card > div.bottom-bar {
659
+ margin: 0;
660
+ padding: 8px;
661
+ }
662
+
663
+ .msg-json > p {
664
+ font-weight: bold;
665
+ margin: 0;
666
+ }
667
+
668
+ .msg-json > span {
669
+ opacity: 0.7;
670
+ font-size: 0.9rem;
671
+ white-space: pre-wrap;
672
+ }
673
+
674
+ .msg-json > img {
675
+ max-width: 30vw;
676
+ height: 25vh;
677
+ border-radius: 7px;
678
+ margin-top: 7px;
679
+ display: block;
680
+ margin-left: 50%;
681
+ transform: translate(-50%);
682
+ }
683
+
684
+ .msg-json > div.bottom-bar {
685
+ display: flex;
686
+ flex-direction: row;
687
+ align-items: center;
688
+ background: #00000017;
689
+ margin: 10px -10px -10px -10px;
690
+ border-radius: 0 0 7px 7px;
691
+ padding: 5px;
692
+ }
693
+
694
+ .msg-json > div.bottom-bar > svg,
695
+ .msg-json > div.bottom-bar > img {
696
+ height: 1.1rem;
697
+ border-radius: 5px;
698
+ margin-left: 7px;
699
+ margin-right: 5px;
700
+ }
701
+
702
+ .msg-json > div.bottom-bar > svg {
703
+ opacity: 0.8;
704
+ }
705
+
706
+ .msg-json > div.bottom-bar > span {
707
+ display: inline-block;
708
+ font-size: 0.9rem;
709
+ opacity: 0.7;
710
+ margin-left: 7px;
711
+ white-space: nowrap;
712
+ overflow: hidden;
713
+ text-overflow: ellipsis;
714
+ }
715
+
716
+ .msg-json > div.el-vue-amap-container {
717
+ width: 37.5vh;
718
+ height: 25vh;
719
+ max-width: 30vw;
720
+ border-radius: 7px;
721
+ overflow: hidden;
722
+ margin-top: 10px;
723
+ }
724
+
725
+ span.user-title {
726
+ margin-right: 3px;
727
+ font-size: 0.9rem;
728
+ height: 1rem;
729
+ display: inline-block;
730
+ background: var(--color-main);
731
+ color: var(--color-font-r);
732
+ border-radius: 0.5rem;
733
+ padding: 1px 4px;
734
+ }
735
+ span.user-title.owner {
736
+ background: var(--color-yellow);
737
+ }
738
+ span.user-title.admin {
739
+ background: var(--color-green);
740
+ }
741
+ span.user-title.robot {
742
+ background: var(--color-blue);
743
+ }
744
+
745
+ .loading {
746
+ opacity: 0.0;
747
+ }
748
+ .loading > svg {
749
+ animation: rotate 1.5s linear infinite;
750
+ }
751
+ .loading > .show{
752
+ opacity: 1.0;
753
+ }
754
+
755
+ .msg-raw-forward {
756
+ cursor: pointer;
757
+ width: 17rem;
758
+ }
759
+ .msg-raw-forward > span {
760
+ font-weight: bold;
761
+ }
762
+ .msg-raw-forward > div.forward-msg {
763
+ display: block;
764
+ margin: 15px 15px 5px 15px;
765
+ }
766
+ .msg-raw-forward > div.forward-msg > div {
767
+ font-size: 0.9rem;
768
+ opacity: 0.7;
769
+ white-space: nowrap;
770
+ overflow: hidden;
771
+ text-overflow: ellipsis;
772
+ }
773
+ .msg-raw-forward > div:last-child {
774
+ display: flex;
775
+ flex-direction: row;
776
+ align-items: center;
777
+ background: #00000017;
778
+ margin: 10px -10px -10px -10px;
779
+ border-radius: 0 0 7px 7px;
780
+ padding: 5px;
781
+ font-size: 0.9rem;
782
+ }
783
+ .msg-raw-forward > div:last-child > span {
784
+ opacity: 0.7;
785
+ margin-left: 7px;
786
+ }
787
+
788
+ .note {
789
+ justify-content: center;
790
+ margin: 10px 0;
791
+ display: flex;
792
+ }
793
+ .note-base {
794
+ border-radius: calc(3rem + 30px);
795
+ background: var(--color-card-1);
796
+ align-items: center;
797
+ padding: 7px 30px;
798
+ font-size: 0.8rem;
799
+ display: flex;
800
+ }
801
+ .note-base > a {
802
+ color: var(--color-font);
803
+ }
804
+ .note-ban > a {
805
+ color: var(--color-main);
806
+ font-weight: bold;
807
+ }
808
+ .note-time {
809
+ color: var(--color-font-2) !important;
810
+ display: block;
811
+ }
812
+ .note-nomsg {
813
+ color: var(--color-font-2);
814
+ text-align: center;
815
+ margin: 40px auto;
816
+ display: block;
817
+ opacity: 0.5;
818
+ width: 80%;
819
+ }
820
+ .note-nomsg > a {
821
+ background: var(--color-card);
822
+ color: var(--color-font);
823
+ border-radius: 1rem;
824
+ position: relative;
825
+ font-size: 0.8rem;
826
+ padding: 0 20px;
827
+ z-index: 1;
828
+ }
829
+ .note-nomsg > hr {
830
+ border-bottom: 1px solid var(--color-main) !important;
831
+ margin-bottom: -0.7rem;
832
+ border: 0 !important;
833
+ opacity: 0.5;
834
+ }
835
+ .note-recall > a {
836
+ color: var(--color-main);
837
+ font-weight: bold;
838
+ max-width: 19vw;
839
+ display: inline-block;
840
+ overflow: hidden;
841
+ white-space: nowrap;
842
+ text-overflow: ellipsis;
843
+ margin: 0 5px;
844
+ }
845
+
846
+ .note-notify {
847
+ transition: border 0.5s;
848
+ border: 1px solid transparent;
849
+ }
850
+ .note-notify img {
851
+ display: inline-block;
852
+ width: 1rem;
853
+ margin: 0 3px;
854
+ }
855
+ .note-notify span {
856
+ margin: 0 3px;
857
+ color: var(--color-main);
858
+ font-weight: bold;
859
+ }
860
+ .note.poking > div.note-notify {
861
+ border: 1px solid var(--color-main);
862
+ }
863
+
864
+ .file-view {
865
+ background: rgba(var(--color-card-rgb), 0.2);
866
+ justify-content: center;
867
+ border-radius: 7px;
868
+ margin-top: 10px;
869
+ display: flex;
870
+ padding: 10px;
871
+ width: 100%;
872
+ }
873
+
874
+ .file-view > img,
875
+ .file-view > video {
876
+ border-radius: 7px;
877
+ max-height: 30vh;
878
+ max-width: 100%;
879
+ }
880
+ .file-view > video {
881
+ margin: -10px;
882
+ width: 100%;
883
+ }
884
+ .file-view > span.txt {
885
+ font-family: monospace;
886
+ white-space: pre-wrap;
887
+ font-size: 0.9rem;
888
+ opacity: 0.6;
889
+ width: 100%;
890
+ }
891
+ .file-view > span.txt > a {
892
+ display: block;
893
+ width: 100%;
894
+ }
895
+
896
+ @media (max-width: 992px) {
897
+ /* 消息体 */
898
+ .message-body.me {
899
+ align-items: start;
900
+ }
901
+ .message.me {
902
+ flex-direction: row;
903
+ }
904
+ .message > img {
905
+ display: unset !important;
906
+ }
907
+ .message.me > img {
908
+ margin: 10px 15px 0 0;
909
+ }
910
+ .message-body {
911
+ max-width: calc(100% - 50px);
912
+ }
913
+ .message-body > a:first-child {
914
+ color: var(--color-font-1) !important;
915
+ display: unset !important;
916
+ }
917
+
918
+ .message > div.sending.right.me {
919
+ display: flex;
920
+ }
921
+ .message > div.sending.left.me {
922
+ display: none;
923
+ }
924
+ .message > div.sending.right.me > svg {
925
+ animation: rotate 1.5s linear infinite;
926
+ color: var(--color-font-2);
927
+ width: 0.75rem;
928
+ }
929
+ }
930
+
931
+ @media (max-width: 500px) {
932
+ .msg-img.face.lottie-face {
933
+ max-width: 40vw;
934
+ }
935
+
936
+ .msg-json {
937
+ cursor: pointer;
938
+ width: min-content;
939
+ min-width: 50vw;
940
+ }
941
+ }