koishi-plugin-chat-patch 5.5.0 → 5.6.0

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 (44) hide show
  1. package/client/vue/index.vue +8 -1
  2. package/client/web/dist/assets/{Chat-DTEsebnY.css → Chat-BXVWj5Bd.css} +1 -1
  3. package/client/web/dist/assets/{Chat-Clqxn7CB.js → Chat-m4-U5uHa.js} +4 -4
  4. package/client/web/dist/assets/{MsgBody-C0TKsXhC.js → MsgBody-CzrxyiFO.js} +1 -1
  5. package/client/web/dist/assets/MsgBody.vue_vue_type_script_setup_true_lang-BBF1uxm6.js +67 -0
  6. package/client/web/dist/assets/{index-BA37EQGa.js → index-EJ2CcODr.js} +72 -78
  7. package/client/web/dist/assets/index-X9hFOAza.css +1 -0
  8. package/client/web/dist/index.html +2 -2
  9. package/client/web/src/App.vue +7 -0
  10. package/client/web/src/assets/css/chat.css +6 -4
  11. package/client/web/src/assets/l10n/zh-CN.po +0 -6
  12. package/client/web/src/components/History.vue +27 -0
  13. package/client/web/src/components/MsgBody.vue +18 -9
  14. package/client/web/src/function/connect.ts +208 -46
  15. package/client/web/src/function/msg.ts +8 -6
  16. package/client/web/src/function/option.ts +1 -1
  17. package/client/web/src/function/satori-model.ts +20 -2
  18. package/client/web/src/function/satori.ts +64 -0
  19. package/client/web/src/pages/Chat.vue +0 -4
  20. package/client/web/src/pages/Friends.vue +7 -9
  21. package/client/web/src/pages/Messages.vue +6 -7
  22. package/client/web/src/pages/options/OptDev.vue +1 -25
  23. package/client/web/src/pages/options/OptFunction.vue +23 -0
  24. package/client/web/tsconfig.tsbuildinfo +1 -1
  25. package/dist/index.js +1 -1
  26. package/dist/style.css +1 -1
  27. package/lib/bootstrap.d.ts +6 -0
  28. package/lib/database.d.ts +5 -2
  29. package/lib/gateway.d.ts +46 -0
  30. package/lib/index.js +1468 -131
  31. package/lib/recorder.d.ts +3 -5
  32. package/lib/satori.d.ts +3 -0
  33. package/lib/types.d.ts +17 -0
  34. package/package.json +4 -1
  35. package/src/bootstrap.ts +5 -10
  36. package/src/database.ts +745 -662
  37. package/src/gateway.ts +259 -0
  38. package/src/index.ts +63 -53
  39. package/src/recorder.ts +97 -77
  40. package/src/satori.ts +19 -0
  41. package/src/server.d.ts +26 -26
  42. package/src/types.ts +19 -0
  43. package/client/web/dist/assets/MsgBody.vue_vue_type_script_setup_true_lang-CCdBwlN_.js +0 -67
  44. package/client/web/dist/assets/index-B71pPwae.css +0 -1
@@ -6,10 +6,12 @@
6
6
 
7
7
  <script setup lang="ts">
8
8
  import { onMounted, onUnmounted, ref } from 'vue'
9
- import { send } from '@koishijs/client'
9
+ import { send, useContext } from '@koishijs/client'
10
10
 
11
11
  const frameRef = ref<HTMLIFrameElement | null>(null)
12
12
  const frameSrc = ref('')
13
+ const ctx = useContext()
14
+ let disposeBackendEvent: (() => void) | undefined
13
15
 
14
16
  function getObject(value: unknown): Record<string, unknown> {
15
17
  return typeof value === 'object' && value !== null ? value as Record<string, unknown> : {}
@@ -57,11 +59,16 @@ async function handleMessage(event: MessageEvent) {
57
59
 
58
60
  onMounted(() => {
59
61
  window.addEventListener('message', handleMessage)
62
+ disposeBackendEvent = ctx.on('chat-patch/event', (payload) => {
63
+ post({ source: 'chat-patch-event', payload: getObject(payload) })
64
+ })
60
65
  // 开发与生产都走 Koishi 服务端;开发时该路由由 Koishi 自己的 Vite 转换源码
61
66
  frameSrc.value = '/chat-patch/web/'
62
67
  })
63
68
 
64
69
  onUnmounted(() => {
70
+ disposeBackendEvent?.()
71
+ disposeBackendEvent = undefined
65
72
  window.removeEventListener('message', handleMessage)
66
73
  })
67
74
  </script>
@@ -1 +1 @@
1
- .vue-recycle-scroller__resize-observer[data-v-08cc04ab]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;pointer-events:none;z-index:-1}.vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.grid-mode:not(.page-mode){overflow:auto}.vue-recycle-scroller.direction-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}.vue-recycle-scroller__slot{-webkit-box-flex:1;-ms-flex:auto 0 0px;flex:auto 0 0}.vue-recycle-scroller__item-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.search-view[data-v-317c0ff8]{background:transparent!important;padding:0 20px;margin-bottom:10px}.search-view>input[data-v-317c0ff8]{background:var(--color-card-1);border-radius:7px;padding:0 10px;height:35px;width:100%;border:0}div[name=成员][data-v-317c0ff8]{overflow:hidden}.member-scroller[data-v-317c0ff8]{flex:1;height:calc(100vh - 330px);min-height:210px}.member-item[data-v-317c0ff8]{transition:background .3s;margin:0 20px -10px;align-items:center;border-radius:7px;cursor:pointer;display:flex;padding:10px}.member-item[data-v-317c0ff8]:hover{background:var(--color-card-1)}.member-item>img[data-v-317c0ff8]{border-radius:100%;margin-right:10px;height:30px;width:30px}.member-item>div[data-v-317c0ff8]{overflow:hidden;align-items:center;display:flex;flex:1}.member-item>div>a[data-v-317c0ff8]{color:var(--color-font);white-space:nowrap;text-overflow:ellipsis;max-width:80%;overflow:hidden;cursor:pointer}.member-item>div>svg[data-v-317c0ff8]{color:var(--color-main);margin-left:5px;height:.8rem}.member-item>span[data-v-317c0ff8]{color:var(--color-font-2);transition:all .2s;opacity:1}.member-item.edit:hover>span[data-v-317c0ff8]{transform:translate(-10px);opacity:0}.member-item>svg[data-v-317c0ff8]{color:var(--color-font-2);transition:all .2s;margin-right:-25px;margin-left:10px;width:15px;opacity:0}.member-item>svg[data-v-317c0ff8]:hover{color:var(--color-main)}.member-item.edit:hover>svg[data-v-317c0ff8]{margin-right:5px;display:block;opacity:1}.info-copy[data-v-317c0ff8]{display:flex;align-items:center;gap:8px}.info-copy>span[data-v-317c0ff8]{flex:1;min-width:0}.info-copy>svg[data-v-317c0ff8]{color:var(--color-font-2);cursor:pointer}.info-copy>svg[data-v-317c0ff8]:hover{color:var(--color-main)}.tab-body{overflow:hidden!important;flex-direction:column;display:flex}.tab-body>div{overflow:scroll;flex:1}.tooltip-enter-active[data-v-28512f0d],.tooltip-leave-active[data-v-28512f0d]{transition:opacity .2s,transform .2s;transform-origin:bottom}.tooltip-enter-from[data-v-28512f0d],.tooltip-leave-to[data-v-28512f0d]{opacity:0;transform:translate(-50%,calc(-100% - .8rem)) scale(.5) scaleY(0)}.tooltip-enter-to[data-v-28512f0d],.tooltip-leave-from[data-v-28512f0d]{opacity:1;transform:translate(-50%,calc(-100% - .8rem)) scale(.5) scaleY(1)}.msglist-move[data-v-5a030688]{transition:all .3s}.msglist-enter-active[data-v-5a030688]{transition:all .4s}.msglist-leave-active[data-v-5a030688]{transition:all .2s}.msglist-enter-from[data-v-5a030688]{transform:translate(-50px);opacity:0}.msglist-leave-to[data-v-5a030688]{opacity:0}.msglist-move[data-v-8f8b9b74]{transition:all .3s}.msglist-enter-active[data-v-8f8b9b74]{transition:all .4s}.msglist-leave-active[data-v-8f8b9b74]{transition:all .2s}.msglist-enter-from[data-v-8f8b9b74]{transform:translate(-20px);opacity:0}.msglist-leave-to[data-v-8f8b9b74]{opacity:0}.pan-enter-active[data-v-8f8b9b74],.pan-leave-active[data-v-8f8b9b74]{transition:opacity .3s}.pan-enter-from[data-v-8f8b9b74]{transform:translate(20px);opacity:0}.pan-leave-to[data-v-8f8b9b74]{opacity:0}.more-detail[data-v-8f8b9b74]{position:relative}.more-detail.voice-menu-open[data-v-8f8b9b74]{overflow:visible}.voice-menu-wrap[data-v-8f8b9b74]{position:relative;width:50px;height:50px;margin:0 10px;cursor:pointer;border-radius:7px;background:var(--color-card-1)}.voice-menu-wrap>div[data-v-8f8b9b74]:first-child{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.voice-menu-wrap>div:first-child>svg[data-v-8f8b9b74]{color:var(--color-font-1);margin:15px;height:20px;width:20px}.voice-menu-wrap>div:first-child.active[data-v-8f8b9b74]{background:#f443361f}.voice-menu-wrap>div:first-child.active>svg[data-v-8f8b9b74]{color:#f44336}.voice-menu[data-v-8f8b9b74]{position:absolute;right:0;bottom:56px;z-index:20;min-width:120px;overflow:hidden;border-radius:8px;box-shadow:0 8px 24px #0000002e;background:var(--color-card, #fff)}.voice-menu>div[data-v-8f8b9b74]{padding:8px 14px;cursor:pointer;white-space:nowrap}.voice-menu>div[data-v-8f8b9b74]:hover{background:var(--color-hover-bg, rgba(0, 0, 0, .06))}.voice-pending[data-v-8f8b9b74]{display:flex;align-items:center;justify-content:space-between;height:36px;padding:0 12px;cursor:pointer;border-radius:6px;color:var(--color-main, #3b82f6);background:var(--color-active-bg, rgba(59, 130, 246, .08))}
1
+ .vue-recycle-scroller__resize-observer[data-v-08cc04ab]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;pointer-events:none;z-index:-1}.vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.grid-mode:not(.page-mode){overflow:auto}.vue-recycle-scroller.direction-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}.vue-recycle-scroller__slot{-webkit-box-flex:1;-ms-flex:auto 0 0px;flex:auto 0 0}.vue-recycle-scroller__item-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.search-view[data-v-317c0ff8]{background:transparent!important;padding:0 20px;margin-bottom:10px}.search-view>input[data-v-317c0ff8]{background:var(--color-card-1);border-radius:7px;padding:0 10px;height:35px;width:100%;border:0}div[name=成员][data-v-317c0ff8]{overflow:hidden}.member-scroller[data-v-317c0ff8]{flex:1;height:calc(100vh - 330px);min-height:210px}.member-item[data-v-317c0ff8]{transition:background .3s;margin:0 20px -10px;align-items:center;border-radius:7px;cursor:pointer;display:flex;padding:10px}.member-item[data-v-317c0ff8]:hover{background:var(--color-card-1)}.member-item>img[data-v-317c0ff8]{border-radius:100%;margin-right:10px;height:30px;width:30px}.member-item>div[data-v-317c0ff8]{overflow:hidden;align-items:center;display:flex;flex:1}.member-item>div>a[data-v-317c0ff8]{color:var(--color-font);white-space:nowrap;text-overflow:ellipsis;max-width:80%;overflow:hidden;cursor:pointer}.member-item>div>svg[data-v-317c0ff8]{color:var(--color-main);margin-left:5px;height:.8rem}.member-item>span[data-v-317c0ff8]{color:var(--color-font-2);transition:all .2s;opacity:1}.member-item.edit:hover>span[data-v-317c0ff8]{transform:translate(-10px);opacity:0}.member-item>svg[data-v-317c0ff8]{color:var(--color-font-2);transition:all .2s;margin-right:-25px;margin-left:10px;width:15px;opacity:0}.member-item>svg[data-v-317c0ff8]:hover{color:var(--color-main)}.member-item.edit:hover>svg[data-v-317c0ff8]{margin-right:5px;display:block;opacity:1}.info-copy[data-v-317c0ff8]{display:flex;align-items:center;gap:8px}.info-copy>span[data-v-317c0ff8]{flex:1;min-width:0}.info-copy>svg[data-v-317c0ff8]{color:var(--color-font-2);cursor:pointer}.info-copy>svg[data-v-317c0ff8]:hover{color:var(--color-main)}.tab-body{overflow:hidden!important;flex-direction:column;display:flex}.tab-body>div{overflow:scroll;flex:1}.tooltip-enter-active[data-v-28512f0d],.tooltip-leave-active[data-v-28512f0d]{transition:opacity .2s,transform .2s;transform-origin:bottom}.tooltip-enter-from[data-v-28512f0d],.tooltip-leave-to[data-v-28512f0d]{opacity:0;transform:translate(-50%,calc(-100% - .8rem)) scale(.5) scaleY(0)}.tooltip-enter-to[data-v-28512f0d],.tooltip-leave-from[data-v-28512f0d]{opacity:1;transform:translate(-50%,calc(-100% - .8rem)) scale(.5) scaleY(1)}.msglist-move[data-v-5a030688]{transition:all .3s}.msglist-enter-active[data-v-5a030688]{transition:all .4s}.msglist-leave-active[data-v-5a030688]{transition:all .2s}.msglist-enter-from[data-v-5a030688]{transform:translate(-50px);opacity:0}.msglist-leave-to[data-v-5a030688]{opacity:0}.msglist-move[data-v-4d48a31a]{transition:all .3s}.msglist-enter-active[data-v-4d48a31a]{transition:all .4s}.msglist-leave-active[data-v-4d48a31a]{transition:all .2s}.msglist-enter-from[data-v-4d48a31a]{transform:translate(-20px);opacity:0}.msglist-leave-to[data-v-4d48a31a]{opacity:0}.pan-enter-active[data-v-4d48a31a],.pan-leave-active[data-v-4d48a31a]{transition:opacity .3s}.pan-enter-from[data-v-4d48a31a]{transform:translate(20px);opacity:0}.pan-leave-to[data-v-4d48a31a]{opacity:0}.more-detail[data-v-4d48a31a]{position:relative}.more-detail.voice-menu-open[data-v-4d48a31a]{overflow:visible}.voice-menu-wrap[data-v-4d48a31a]{position:relative;width:50px;height:50px;margin:0 10px;cursor:pointer;border-radius:7px;background:var(--color-card-1)}.voice-menu-wrap>div[data-v-4d48a31a]:first-child{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.voice-menu-wrap>div:first-child>svg[data-v-4d48a31a]{color:var(--color-font-1);margin:15px;height:20px;width:20px}.voice-menu-wrap>div:first-child.active[data-v-4d48a31a]{background:#f443361f}.voice-menu-wrap>div:first-child.active>svg[data-v-4d48a31a]{color:#f44336}.voice-menu[data-v-4d48a31a]{position:absolute;right:0;bottom:56px;z-index:20;min-width:120px;overflow:hidden;border-radius:8px;box-shadow:0 8px 24px #0000002e;background:var(--color-card, #fff)}.voice-menu>div[data-v-4d48a31a]{padding:8px 14px;cursor:pointer;white-space:nowrap}.voice-menu>div[data-v-4d48a31a]:hover{background:var(--color-hover-bg, rgba(0, 0, 0, .06))}.voice-pending[data-v-4d48a31a]{display:flex;align-items:center;justify-content:space-between;height:36px;padding:0 12px;cursor:pointer;border-radius:6px;color:var(--color-main, #3b82f6);background:var(--color-active-bg, rgba(59, 130, 246, .08))}