koishi-plugin-chat-patch 1.1.0 → 1.2.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.
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .message-quote[data-v-f8e0fc57]{margin:8px 0;padding:8px 12px;background-color:#bebebe1a;border-left:4px solid rgba(151,152,152,.45);border-radius:6px;font-size:.9em;position:relative}.quote-indicator[data-v-f8e0fc57]{font-size:.75em;color:#007bff;font-weight:600;margin-bottom:4px;text-transform:uppercase}.quote-header[data-v-f8e0fc57]{display:flex;align-items:center;margin-bottom:4px;gap:6px}.quote-avatar[data-v-f8e0fc57]{width:20px;height:20px;border-radius:50%;overflow:hidden;flex-shrink:0}.quote-avatar img[data-v-f8e0fc57]{width:100%;height:100%;object-fit:cover}.quote-avatar .avatar-placeholder[data-v-f8e0fc57]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#6c757d;color:#fff;font-size:10px;font-weight:700}.quote-username[data-v-f8e0fc57]{font-weight:600;color:#007bff;font-size:.85em}.quote-time[data-v-f8e0fc57]{color:#6c757d;font-size:.75em;margin-left:auto}.quote-content[data-v-f8e0fc57]{color:#7276b7;line-height:1.3;word-wrap:break-word;word-break:break-all;overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto}.quote-content .message-image[data-v-f8e0fc57]{max-width:min(200px,50vw);max-height:100px}.quote-content .message-image-container[data-v-f8e0fc57]{margin:2px 0}@media (prefers-color-scheme:dark){.message-quote[data-v-f8e0fc57]{background-color:#ffffff14;border-left-color:#0d6efd}.quote-content[data-v-f8e0fc57]{color:#adb5bd}.quote-username[data-v-f8e0fc57]{color:#0d6efd}}.chat-container[data-v-f8e0fc57]{display:flex;height:100vh;background:0 0;margin-left:0;width:100%;overflow:hidden;color:inherit;position:relative}.bot-list[data-v-f8e0fc57],.channel-list[data-v-f8e0fc57],.message-area[data-v-f8e0fc57]{display:flex;flex-direction:column;background:0 0;border-right:1px solid rgba(128,128,128,.2)}.bot-list[data-v-f8e0fc57]{width:250px;min-width:250px;max-width:250px;flex-shrink:0}.channel-list[data-v-f8e0fc57]{width:300px;min-width:300px;max-width:300px;flex-shrink:0}.message-area[data-v-f8e0fc57]{flex:1;border-right:none}.panel-header[data-v-f8e0fc57]{padding:16px;border-bottom:1px solid rgba(128,128,128,.2);background:0 0;display:flex;align-items:center;justify-content:space-between}.panel-header h3[data-v-f8e0fc57]{margin:0;font-size:16px;font-weight:600;color:currentColor}.back-button[data-v-f8e0fc57]{display:none;background:0 0;border:none;color:currentColor;font-size:18px;cursor:pointer;padding:4px 8px;border-radius:4px;transition:background-color .2s}.back-button[data-v-f8e0fc57]:hover{background:#8080801a}.bot-items[data-v-f8e0fc57],.channel-items[data-v-f8e0fc57]{flex:1;overflow-y:auto;overflow-x:hidden;max-height:calc(100vh - 140px);-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(144,147,153,.4) rgba(0,0,0,.05);scroll-behavior:smooth;overscroll-behavior:contain;padding-bottom:8px}.bot-item[data-v-f8e0fc57],.channel-item[data-v-f8e0fc57]{display:flex;align-items:center;padding:12px 16px;cursor:pointer;border-bottom:1px solid rgba(128,128,128,.1);transition:background-color .2s}.bot-item[data-v-f8e0fc57]:hover,.channel-item[data-v-f8e0fc57]:hover{background:#8080801a}.bot-item.active[data-v-f8e0fc57],.channel-item.active[data-v-f8e0fc57]{background:#2196f31a;border-right:3px solid #2196f3}.bot-avatar[data-v-f8e0fc57]{width:40px;height:40px;margin-right:12px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#e0e0e0}.bot-avatar img[data-v-f8e0fc57]{width:100%;height:100%;object-fit:cover}.avatar-placeholder[data-v-f8e0fc57]{font-size:16px;font-weight:700;color:currentColor;opacity:.7}.bot-info[data-v-f8e0fc57]{flex:1}.bot-name[data-v-f8e0fc57]{font-weight:500;color:currentColor;margin-bottom:2px}.bot-platform[data-v-f8e0fc57]{font-size:12px;color:currentColor;opacity:.7}.bot-status[data-v-f8e0fc57]{width:8px;height:8px;border-radius:50%;margin-left:8px}.bot-status.online[data-v-f8e0fc57]{background:#4caf50}.bot-status.offline[data-v-f8e0fc57]{background:#f44336}.channel-info[data-v-f8e0fc57]{flex:1}.channel-name[data-v-f8e0fc57]{font-weight:500;color:currentColor;margin-bottom:2px}.channel-type[data-v-f8e0fc57]{font-size:12px;color:currentColor;opacity:.7}.channel-message-count[data-v-f8e0fc57]{background:#2196f3;color:#fff;font-size:12px;padding:2px 6px;border-radius:10px;min-width:18px;text-align:center;position:relative;transition:all .2s ease}.channel-message-count.draggable-bubble[data-v-f8e0fc57]{cursor:grab;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.channel-message-count.draggable-bubble[data-v-f8e0fc57]:hover{background:#1976d2;transform:scale(1.1);box-shadow:0 2px 8px #2196f34d}.channel-message-count.draggable-bubble.dragging[data-v-f8e0fc57],.channel-message-count.draggable-bubble[data-v-f8e0fc57]:active{cursor:grabbing;background:#1565c0;box-shadow:0 4px 12px #2196f366}.dragging-clone[data-v-f8e0fc57]{position:fixed;z-index:1000;pointer-events:none;transition:none;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background:#2196f3;color:#fff;font-size:12px;padding:2px 6px;border-radius:10px;min-width:18px;text-align:center;box-shadow:0 4px 12px #2196f366}.dragging-clone.will-delete[data-v-f8e0fc57]{background:#f44336!important;animation:shake-f8e0fc57 .3s ease-in-out infinite}@keyframes pulseThreshold-f8e0fc57{0%,to{opacity:.4;transform:scale(.9);border-color:#f4433699;box-shadow:0 0 15px #f4433633}50%{opacity:.8;transform:scale(1.1);border-color:#f44336;box-shadow:0 0 25px #f4433666}}@keyframes menuSlideIn-f8e0fc57{0%{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}.message-content[data-v-f8e0fc57]{display:flex;flex-direction:column;height:calc(100vh - 60px);overflow:hidden;position:relative}.message-history[data-v-f8e0fc57]{flex:1;overflow-y:auto;padding:16px 16px 8px;max-height:calc(100vh - 200px)}.message-item[data-v-f8e0fc57]{display:flex;margin-bottom:16px;padding:8px;border-radius:8px;transition:background-color .3s ease}.message-item[data-v-f8e0fc57]:hover{background-color:#8080801a}.message-item.new-message[data-v-f8e0fc57]{background-color:#4caf5033;animation:highlight-f8e0fc57 2s ease-out}.message-item.bot-message[data-v-f8e0fc57]{flex-direction:row-reverse;justify-content:flex-start}.message-item.bot-message .message-avatar[data-v-f8e0fc57]{margin-right:0;margin-left:12px}.message-item.bot-message .message-content-wrapper[data-v-f8e0fc57]{display:flex;flex-direction:column;align-items:flex-end}.message-item.bot-message .message-header[data-v-f8e0fc57]{display:flex;align-items:center;justify-content:flex-end;margin-bottom:4px}.message-item.bot-message .message-username[data-v-f8e0fc57]{margin-right:0;margin-left:8px;order:2}.message-item.bot-message .message-time[data-v-f8e0fc57]{order:1}.message-item.bot-message .message-text[data-v-f8e0fc57]{background-color:#2196f31a;padding:8px 12px;border-radius:12px 12px 4px;display:inline-block;max-width:80%;text-align:left;word-wrap:break-word;word-break:break-all;overflow-wrap:anywhere}@keyframes highlight-f8e0fc57{0%{background-color:#4caf504d}to{background-color:transparent}}.message-avatar[data-v-f8e0fc57]{width:32px;height:32px;margin-right:12px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#e0e0e0;flex-shrink:0}.message-avatar img[data-v-f8e0fc57]{width:100%;height:100%;object-fit:cover}.message-avatar .avatar-placeholder[data-v-f8e0fc57]{font-size:12px;font-weight:700;color:currentColor;opacity:.7}.message-content-wrapper[data-v-f8e0fc57]{flex:1}.message-header[data-v-f8e0fc57]{display:flex;align-items:center;margin-bottom:4px}.message-username[data-v-f8e0fc57]{font-weight:500;color:currentColor;margin-right:8px}.message-time[data-v-f8e0fc57]{font-size:12px;color:currentColor;opacity:.5}.message-text[data-v-f8e0fc57]{color:currentColor;line-height:1.4;word-wrap:break-word;word-break:break-all;white-space:pre-wrap;max-width:100%;overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto}.message-item:not(.bot-message) .message-text[data-v-f8e0fc57]{background-color:#8080801a;padding:8px 12px;border-radius:12px 12px 12px 4px;display:inline-block;max-width:80%;word-wrap:break-word;word-break:break-all;overflow-wrap:anywhere}.message-input[data-v-f8e0fc57]{display:flex;flex-direction:column;padding:12px 16px 16px;border-top:1px solid rgba(128,128,128,.2);background:0 0;flex-shrink:0;position:sticky;bottom:0;margin-top:-10px}.input-row[data-v-f8e0fc57]{display:flex;gap:8px;align-items:center}.floating-scroll-button[data-v-f8e0fc57]{position:absolute;right:24px;bottom:18%;width:48px;height:48px;background:#2196f3;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px #2196f34d;color:#fff;transition:all .3s ease;z-index:100;border:2px solid rgba(255,255,255,.2)}.floating-scroll-button[data-v-f8e0fc57]:hover{background:#1976d2;transform:scale(1.1);box-shadow:0 6px 16px #2196f366}.floating-scroll-button[data-v-f8e0fc57]:active{transform:scale(.95)}.input-row button[data-v-f8e0fc57]{padding:8px 16px;background:#2196f3;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s}.message-image-container[data-v-f8e0fc57]{margin:8px 0;max-width:100%;display:block}.message-image[data-v-f8e0fc57]{border-radius:8px;object-fit:contain;display:block;cursor:pointer;transition:transform .2s ease;max-width:min(400px,66.67vw);max-height:200px;width:auto;height:auto;image-rendering:auto;-webkit-image-rendering:auto;-moz-image-rendering:auto;-o-image-rendering:auto}.message-image[src*=".gif"][data-v-f8e0fc57],.message-image[src*="image/gif"][data-v-f8e0fc57]{image-rendering:auto!important;-webkit-image-rendering:auto!important;animation-play-state:running!important}.message-image-loading[data-v-f8e0fc57]{display:inline-block;padding:8px 12px;background:#8080801a;border-radius:4px;color:currentColor;opacity:.7;font-size:12px}.message-image-error[data-v-f8e0fc57]{display:inline-block;padding:8px 12px;background:#f443361a;border:1px solid rgba(244,67,54,.3);border-radius:4px;color:#f44336;font-size:12px;max-width:300px;word-break:break-word}.message-paragraph[data-v-f8e0fc57]{display:block;margin-bottom:4px}.message-paragraph[data-v-f8e0fc57]:last-child{margin-bottom:0}.forward-message-container[data-v-f8e0fc57]{border:1px solid #fff;border-radius:8px;margin:4px 0;overflow:hidden;background:#f9f9f900}.forward-message-preview[data-v-f8e0fc57]{padding:12px;cursor:pointer;transition:background-color .2s}.forward-message-preview[data-v-f8e0fc57]:hover{background:#f0f0f0}.forward-message-title[data-v-f8e0fc57]{font-weight:600;color:#333;margin-bottom:8px;font-size:14px}.forward-message-preview-item[data-v-f8e0fc57]{color:#666;font-size:13px;margin:2px 0;line-height:1.4;word-wrap:break-word;word-break:break-all;overflow-wrap:anywhere}.forward-message-footer[data-v-f8e0fc57]{display:flex;justify-content:space-between;align-items:center;margin-top:8px;padding-top:8px;border-top:1px solid #e8e8e8}.forward-message-count[data-v-f8e0fc57]{color:#2196f3;font-size:12px}.forward-message-toggle[data-v-f8e0fc57]{color:#666;font-size:12px}.forward-message-expanded[data-v-f8e0fc57]{border-top:1px solid #e0e0e0;background:#fff;max-height:400px;overflow-y:auto}.forwarded-message-item[data-v-f8e0fc57]{padding:12px;border-bottom:1px solid #f0f0f0}.forwarded-message-item[data-v-f8e0fc57]:last-child{border-bottom:none}.forwarded-message-header[data-v-f8e0fc57]{display:flex;align-items:center;margin-bottom:6px}.forwarded-message-nickname[data-v-f8e0fc57]{font-weight:600;color:#333;font-size:13px}.forwarded-message-userid[data-v-f8e0fc57]{color:#999;font-size:11px;margin-left:6px}.forwarded-message-content[data-v-f8e0fc57]{color:#555;font-size:13px;line-height:1.4;word-wrap:break-word;word-break:break-all;overflow-wrap:anywhere}.message-at[data-v-f8e0fc57]{background:#2196f31a;color:#2196f3;padding:2px 4px;border-radius:3px;font-weight:500;cursor:pointer}.message-unknown[data-v-f8e0fc57]{background:#ff98001a;color:#ff9800;padding:2px 4px;border-radius:3px;font-style:italic;cursor:help}.input-row input[data-v-f8e0fc57]{flex:1;min-width:0;padding:8px 12px;border:1px solid rgba(128,128,128,.3);border-radius:4px;outline:0;background:0 0;color:currentColor}.input-row input[data-v-f8e0fc57]:focus{border-color:#2196f3;box-shadow:0 0 0 2px #2196f333}.input-row input[data-v-f8e0fc57]::placeholder{color:currentColor;opacity:.5}.input-row button[data-v-f8e0fc57]{padding:8px 16px;background:#2196f3;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s;flex-shrink:0;white-space:nowrap}.input-row button[data-v-f8e0fc57]:hover:not(:disabled){background:#1976d2}.input-row button[data-v-f8e0fc57]:disabled{background:#8080804d;cursor:not-allowed}.input-row button.is-sending[data-v-f8e0fc57]{background:#ffc107!important;color:#333!important;cursor:default!important}.message-input .input-row button.is-sending[data-v-f8e0fc57]{background:#ffc107!important;color:#333!important;cursor:default!important;border-color:#ffc107!important}.empty-state[data-v-f8e0fc57]{display:flex;align-items:center;justify-content:center;height:100%;color:currentColor;opacity:.5;font-size:14px}.message-text-content[data-v-f8e0fc57]{display:inline;word-wrap:break-word;word-break:break-all;overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto}.message-image-container[data-v-f8e0fc57]{display:block;margin:4px 0}.message-image[data-v-f8e0fc57]{border-radius:8px;margin:4px 0;display:block;cursor:pointer;transition:transform .2s ease;object-fit:contain;background:#8080801a}.message-image[data-v-f8e0fc57]:hover{transform:scale(1.02)}.message-image-loading[data-v-f8e0fc57]{height:60px;width:200px;border-radius:8px;margin:4px 0;display:flex;align-items:center;justify-content:center;background:#8080801a;color:currentColor;opacity:.7;font-size:14px;border:1px dashed rgba(128,128,128,.3)}.message-image-error[data-v-f8e0fc57]{min-height:60px;width:200px;border-radius:8px;margin:4px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#8080801a;color:currentColor;opacity:.7;font-size:14px;border:1px dashed rgba(128,128,128,.3);padding:8px;text-align:center}.message-at[data-v-f8e0fc57]{background:#2196f31a;color:#2196f3;padding:2px 6px;border-radius:4px;font-weight:500;cursor:pointer;display:inline-block;margin:0 2px}.message-at[data-v-f8e0fc57]:hover{background:#2196f333}.message-unknown[data-v-f8e0fc57]{background:#ff98001a;color:#ff9800;padding:2px 6px;border-radius:4px;font-size:12px;display:inline-block;margin:0 2px;cursor:help}@keyframes pulse-f8e0fc57{0%,to{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.1)}}.channel-message-count.will-delete[data-v-f8e0fc57]{background:#f44336!important;animation:shake-f8e0fc57 .3s ease-in-out infinite}@keyframes shake-f8e0fc57{0%,to{transform:translate(0)}25%{transform:translate(-2px)}75%{transform:translate(2px)}}body.dragging-bubble-global[data-v-f8e0fc57]{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;cursor:grabbing}.drag-threshold-circle[data-v-f8e0fc57]{position:fixed;pointer-events:none;border:3px dashed rgba(244,67,54,.8);border-radius:50%;z-index:999;background:#f443361a;box-shadow:0 0 20px #f443364d;animation:pulseThreshold-f8e0fc57 1.5s ease-in-out infinite}.context-menu[data-v-f8e0fc57]{position:fixed;background:#ffffffa6;border:1px solid rgba(0,0,0,.1);border-radius:8px;box-shadow:0 8px 32px #00000026;z-index:10000;min-width:180px;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);overflow:hidden}.context-menu-item[data-v-f8e0fc57]{padding:12px 16px;cursor:pointer;color:#333;font-size:14px;font-weight:500;transition:all .2s ease;border-bottom:1px solid rgba(0,0,0,.08);position:relative}.context-menu-item[data-v-f8e0fc57]:last-child{border-bottom:none}.context-menu-item[data-v-f8e0fc57]:hover{background:#2196f31a;color:#1976d2;transform:translate(2px)}.context-menu-item.danger[data-v-f8e0fc57]{color:#d32f2f}.context-menu-item.danger[data-v-f8e0fc57]:hover{background:#f443361a;color:#c62828}.bot-item.pinned[data-v-f8e0fc57],.channel-item.pinned[data-v-f8e0fc57]{background:#ffc1071a;border-left:3px solid #ffc107}.bot-item.pinned[data-v-f8e0fc57]:before,.channel-item.pinned[data-v-f8e0fc57]:before{content:"📌";position:absolute;left:4px;top:50%;transform:translateY(-50%);font-size:12px;opacity:.7}.bot-item.pinned[data-v-f8e0fc57],.channel-item.pinned[data-v-f8e0fc57]{position:relative;padding-left:24px}@media (prefers-color-scheme:dark){.context-menu[data-v-f8e0fc57]{background:#ffffff26;border-color:#fff3;box-shadow:0 8px 32px #0006}.context-menu-item[data-v-f8e0fc57]{color:#fff;border-bottom-color:#ffffff1a}.context-menu-item[data-v-f8e0fc57]:hover{background:#2196f333;color:#64b5f6}.context-menu-item.danger[data-v-f8e0fc57]{color:#ff8a80}.context-menu-item.danger[data-v-f8e0fc57]:hover{background:#f4433633;color:#ffab91}.bot-item.pinned[data-v-f8e0fc57],.channel-item.pinned[data-v-f8e0fc57]{background:#ffc10726}}.message-share-card[data-v-f8e0fc57]{display:inline-block;width:75px;margin:8px 0;border:1px solid rgba(128,128,128,.2);border-radius:12px;background:#ffffff0d;transition:all .3s ease;cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.message-share-card[data-v-f8e0fc57]:hover{transform:translateY(-2px);box-shadow:0 8px 24px #00000026;border-color:#2196f34d}.share-card-preview[data-v-f8e0fc57]{width:100%;position:relative;display:flex;align-items:center;justify-content:center;padding:4px;border-radius:12px 12px 0 0}.share-card-image[data-v-f8e0fc57]{max-width:calc(100% - 8px);width:auto;height:auto;object-fit:contain;transition:transform .3s ease;display:block;border-radius:4px}.message-share-card:hover .share-card-image[data-v-f8e0fc57]{transform:scale(1.05)}.share-card-content[data-v-f8e0fc57]{padding:8px}.share-card-header[data-v-f8e0fc57]{display:flex;align-items:center;margin-bottom:12px;gap:12px}.share-card-icon[data-v-f8e0fc57]{width:32px;height:32px;border-radius:8px;object-fit:cover;flex-shrink:0}.share-card-app-info[data-v-f8e0fc57]{flex:1;min-width:0}.share-card-app-name[data-v-f8e0fc57]{font-size:12px;color:currentColor;opacity:.7;margin-bottom:2px;font-weight:500}.share-card-title[data-v-f8e0fc57]{font-size:10px;font-weight:600;color:currentColor;line-height:1.2;word-wrap:break-word;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.share-card-desc[data-v-f8e0fc57]{font-size:14px;color:currentColor;opacity:.8;line-height:1.4;margin-bottom:12px;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;word-wrap:break-word}.share-card-link-hint[data-v-f8e0fc57]{font-size:12px;color:#2196f3;font-weight:500;display:flex;align-items:center;gap:4px}.share-card-link-hint[data-v-f8e0fc57]:after{content:"→";transition:transform .2s ease}.message-share-card:hover .share-card-link-hint[data-v-f8e0fc57]:after{transform:translate(2px)}.message-json-error[data-v-f8e0fc57],.message-json-raw[data-v-f8e0fc57]{display:inline-block;margin:8px 0;max-width:400px}.json-error-text[data-v-f8e0fc57]{color:#f44336;font-size:14px;font-weight:500}.json-label[data-v-f8e0fc57]{color:currentColor;opacity:.7;font-size:12px;font-weight:500;margin-bottom:8px}.json-raw-data[data-v-f8e0fc57]{margin-top:8px}.json-raw-data summary[data-v-f8e0fc57]{cursor:pointer;font-size:12px;color:#2196f3;font-weight:500;padding:4px 8px;border-radius:4px;background:#2196f31a;display:inline-block;transition:background-color .2s ease}.json-raw-data summary[data-v-f8e0fc57]:hover{background:#2196f333}.json-raw-content[data-v-f8e0fc57]{margin-top:8px;padding:12px;background:#8080801a;border-radius:8px;font-family:Courier New,monospace;font-size:12px;color:currentColor;opacity:.8;white-space:pre-wrap;word-wrap:break-word;word-break:break-all;overflow-wrap:anywhere;max-height:200px;overflow-y:auto;border:1px solid rgba(128,128,128,.2)}@media (prefers-color-scheme:dark){.message-share-card[data-v-f8e0fc57]{background:#ffffff14;border-color:#ffffff26}.message-share-card[data-v-f8e0fc57]:hover{border-color:#2196f380;box-shadow:0 8px 24px #0000004d}.json-raw-content[data-v-f8e0fc57]{background:#ffffff0d;border-color:#ffffff1a}}@media (max-width:768px){.chat-container[data-v-f8e0fc57]{position:relative;height:100vh;height:100dvh}.bot-list[data-v-f8e0fc57],.channel-list[data-v-f8e0fc57],.message-area[data-v-f8e0fc57]{position:absolute;top:0;left:0;width:100%;height:100%;transition:transform .3s ease;z-index:1}.bot-list[data-v-f8e0fc57]{transform:translate(0);z-index:3}.channel-list[data-v-f8e0fc57]{transform:translate(100%);z-index:2}.message-area[data-v-f8e0fc57]{transform:translate(200%);z-index:1}.chat-container.show-channels .bot-list[data-v-f8e0fc57]{transform:translate(-100%)}.chat-container.show-channels .channel-list[data-v-f8e0fc57]{transform:translate(0);z-index:3}.chat-container.show-channels .message-area[data-v-f8e0fc57]{transform:translate(100%)}.chat-container.show-messages .bot-list[data-v-f8e0fc57]{transform:translate(-200%)}.chat-container.show-messages .channel-list[data-v-f8e0fc57]{transform:translate(-100%)}.chat-container.show-messages .message-area[data-v-f8e0fc57]{transform:translate(0);z-index:3}.back-button[data-v-f8e0fc57]{display:none!important}.panel-header[data-v-f8e0fc57]{flex-direction:row-reverse;position:sticky;top:0;z-index:5;background:inherit}.panel-header h3[data-v-f8e0fc57]{text-align:right}.floating-scroll-button[data-v-f8e0fc57]{right:16px;bottom:calc(90px + env(safe-area-inset-bottom,0px));width:40px;height:40px;transition:bottom .3s ease}.message-input[data-v-f8e0fc57]{padding:8px 12px calc(12px + env(safe-area-inset-bottom,0px)) 12px;position:fixed;bottom:20px;left:0;right:0;background:inherit;border-top:1px solid rgba(128,128,128,.2);z-index:10;min-height:calc(60px + env(safe-area-inset-bottom,0px));transition:transform .3s ease;transform:translateZ(0)}.input-row input[data-v-f8e0fc57]{font-size:16px;padding:10px 12px}.input-row button[data-v-f8e0fc57]{padding:10px 16px;font-size:16px}.message-history[data-v-f8e0fc57]{padding:12px;max-height:calc(100vh - 140px - env(safe-area-inset-bottom,0px));max-height:calc(100dvh - 140px - env(safe-area-inset-bottom,0px));padding-bottom:calc(80px + env(safe-area-inset-bottom,0px));overflow-y:auto;-webkit-overflow-scrolling:touch;transition:max-height .3s ease}.message-item[data-v-f8e0fc57]{margin-bottom:12px;padding:6px}.message-text[data-v-f8e0fc57]{max-width:90%!important}.message-avatar[data-v-f8e0fc57]{width:28px;height:28px;margin-right:8px}.message-item.bot-message .message-avatar[data-v-f8e0fc57]{margin-left:8px}.message-image[data-v-f8e0fc57]{max-width:min(280px,66.67vw);max-height:160px}.quote-content .message-image[data-v-f8e0fc57]{max-width:min(150px,50vw);max-height:80px}.context-menu[data-v-f8e0fc57]{min-width:160px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.context-menu-item[data-v-f8e0fc57]{padding:14px 16px;font-size:16px}.bot-item[data-v-f8e0fc57],.channel-item[data-v-f8e0fc57]{padding:14px 16px}.bot-avatar[data-v-f8e0fc57]{width:36px;height:36px;margin-right:10px}.bot-name[data-v-f8e0fc57],.channel-name[data-v-f8e0fc57]{font-size:15px}.bot-platform[data-v-f8e0fc57],.channel-type[data-v-f8e0fc57]{font-size:13px}.bot-items[data-v-f8e0fc57],.channel-items[data-v-f8e0fc57]{flex:1;overflow-y:auto;overflow-x:hidden;max-height:calc(100vh - 140px);max-height:calc(100dvh - 140px);-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(144,147,153,.4) rgba(0,0,0,.05);scroll-behavior:smooth;overscroll-behavior:contain;padding-bottom:8px}}@media (min-width:769px) and (max-width:1024px){.bot-list[data-v-f8e0fc57]{width:220px;min-width:220px;max-width:220px}.channel-list[data-v-f8e0fc57]{width:280px;min-width:280px;max-width:280px}.message-image[data-v-f8e0fc57]{max-width:min(350px,66.67vw);max-height:180px}}.chat-container.swiping[data-v-f8e0fc57]{overflow:hidden}.bot-list.swiping[data-v-f8e0fc57],.channel-list.swiping[data-v-f8e0fc57],.message-area.swiping[data-v-f8e0fc57]{transition:none!important}.swipe-indicator[data-v-f8e0fc57]{position:fixed;top:50%;left:20px;transform:translateY(-50%);background:#2196f3cc;color:#fff;padding:8px 12px;border-radius:20px;font-size:14px;z-index:1000;opacity:0;transition:opacity .2s ease;pointer-events:none;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.swipe-indicator.show[data-v-f8e0fc57]{opacity:1}.message-area .message-content[data-v-f8e0fc57]{padding-bottom:80px}.image-preview-container[data-v-f8e0fc57]{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0;margin-bottom:8px;border-bottom:1px solid rgba(128,128,128,.1)}.image-preview-item[data-v-f8e0fc57]{position:relative;width:60px;height:60px;border-radius:8px;overflow:hidden;border:2px solid rgba(33,150,243,.3);background:#8080801a}.preview-image[data-v-f8e0fc57]{width:100%;height:100%;object-fit:cover;display:block}.remove-image-btn[data-v-f8e0fc57]{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;background:#f44336;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;transition:all .2s ease;box-shadow:0 2px 4px #0003}.remove-image-btn[data-v-f8e0fc57]:hover{background:#d32f2f;transform:scale(1.1)}.input-actions[data-v-f8e0fc57]{position:relative;margin-right:8px}.add-button[data-v-f8e0fc57]{width:36px;height:36px;border-radius:12px;background:linear-gradient(135deg,#667eea 0,#764ba2);border:none;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s cubic-bezier(.4,0,.2,1);flex-shrink:0;box-shadow:0 2px 8px #667eea4d;position:relative;overflow:hidden}.add-button[data-v-f8e0fc57]:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg,#fff3 0,#ffffff1a);border-radius:12px;opacity:0;transition:opacity .3s ease}.add-button[data-v-f8e0fc57]:hover{transform:translateY(-2px) scale(1.05);box-shadow:0 4px 16px #667eea66}.add-button[data-v-f8e0fc57]:hover:before{opacity:1}.add-button.active[data-v-f8e0fc57]{background:linear-gradient(135deg,#f093fb 0,#f5576c);transform:translateY(-2px) scale(1.05) rotate(45deg);box-shadow:0 4px 16px #f5576c66}.add-button[data-v-f8e0fc57]:active{transform:translateY(0) scale(.98);transition:all .1s ease}.action-menu[data-v-f8e0fc57]{position:absolute;bottom:100%;left:0;margin-bottom:12px;background:#fffffffa;border:none;border-radius:16px;box-shadow:0 8px 32px #0000001f,0 2px 8px #00000014;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);overflow:hidden;z-index:1000;min-width:140px;transform:translateY(8px);opacity:0;animation:menuSlideIn-f8e0fc57 .3s cubic-bezier(.4,0,.2,1) forwards}.action-menu-item[data-v-f8e0fc57]{display:flex;align-items:center;gap:12px;padding:14px 18px;background:0 0;border:none;color:#333;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);width:100%;text-align:left;position:relative}.action-menu-item[data-v-f8e0fc57]:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(135deg,#667eea 0,#764ba2);transform:scaleY(0);transition:transform .2s cubic-bezier(.4,0,.2,1)}.action-menu-item[data-v-f8e0fc57]:hover{background:linear-gradient(90deg,#667eea14 0,#764ba214);color:#667eea;transform:translate(4px)}.action-menu-item[data-v-f8e0fc57]:hover:before{transform:scaleY(1)}.action-menu-item svg[data-v-f8e0fc57]{flex-shrink:0}@media (prefers-color-scheme:dark){.action-menu[data-v-f8e0fc57]{background:#1e1e1efa;box-shadow:0 8px 32px #0000004d,0 2px 8px #0003}.action-menu-item[data-v-f8e0fc57]{color:#fff}.action-menu-item[data-v-f8e0fc57]:before{background:linear-gradient(135deg,#4facfe 0,#00f2fe)}.action-menu-item[data-v-f8e0fc57]:hover{background:linear-gradient(90deg,#4facfe1f 0,#00f2fe1f);color:#4facfe}.add-button[data-v-f8e0fc57]{background:linear-gradient(135deg,#4facfe 0,#00f2fe);box-shadow:0 2px 8px #4facfe4d}.add-button[data-v-f8e0fc57]:hover{box-shadow:0 4px 16px #4facfe66}.add-button.active[data-v-f8e0fc57]{background:linear-gradient(135deg,#fa709a 0,#fee140);box-shadow:0 4px 16px #fa709a66}.image-preview-item[data-v-f8e0fc57]{border-color:#64b5f680;background:#ffffff0d}}@media (max-width:768px){.image-preview-container[data-v-f8e0fc57]{padding:6px 0;margin-bottom:6px}.image-preview-item[data-v-f8e0fc57]{width:50px;height:50px}.add-button[data-v-f8e0fc57]{width:32px;height:32px;border-radius:10px}.action-menu[data-v-f8e0fc57]{min-width:100px}.action-menu-item[data-v-f8e0fc57]{padding:10px 12px;font-size:13px}.remove-image-btn[data-v-f8e0fc57]{width:18px;height:18px;top:-5px;right:-5px}}.message-history[data-v-f8e0fc57]::-webkit-scrollbar{width:6px}.message-history[data-v-f8e0fc57]::-webkit-scrollbar-track{background:0 0}.message-history[data-v-f8e0fc57]::-webkit-scrollbar-thumb{background-color:#9093994d;border-radius:4px;transition:background-color .3s}.message-history[data-v-f8e0fc57]::-webkit-scrollbar-thumb:hover{background-color:#90939980}.bot-items[data-v-f8e0fc57]::-webkit-scrollbar,.channel-items[data-v-f8e0fc57]::-webkit-scrollbar{width:8px}.bot-items[data-v-f8e0fc57]::-webkit-scrollbar-track,.channel-items[data-v-f8e0fc57]::-webkit-scrollbar-track{background:#0000000d;border-radius:4px}.bot-items[data-v-f8e0fc57]::-webkit-scrollbar-thumb,.channel-items[data-v-f8e0fc57]::-webkit-scrollbar-thumb{background-color:#90939966;border-radius:4px;transition:all .3s ease;border:1px solid rgba(255,255,255,.1);background-clip:padding-box}.bot-items[data-v-f8e0fc57]::-webkit-scrollbar-thumb:hover,.channel-items[data-v-f8e0fc57]::-webkit-scrollbar-thumb:hover{background-color:#90939999;transform:scaleX(1.2)}.bot-items[data-v-f8e0fc57]::-webkit-scrollbar-thumb:active,.channel-items[data-v-f8e0fc57]::-webkit-scrollbar-thumb:active{background-color:#909399cc}.forward-message-expanded[data-v-f8e0fc57]::-webkit-scrollbar{width:6px}.forward-message-expanded[data-v-f8e0fc57]::-webkit-scrollbar-track{background:0 0}.forward-message-expanded[data-v-f8e0fc57]::-webkit-scrollbar-thumb{background-color:#9093994d;border-radius:4px;transition:background-color .3s}.forward-message-expanded[data-v-f8e0fc57]::-webkit-scrollbar-thumb:hover{background-color:#90939980}.json-raw-content[data-v-f8e0fc57]::-webkit-scrollbar{width:6px}.json-raw-content[data-v-f8e0fc57]::-webkit-scrollbar-track{background:0 0}.json-raw-content[data-v-f8e0fc57]::-webkit-scrollbar-thumb{background-color:#9093994d;border-radius:4px;transition:background-color .3s}.json-raw-content[data-v-f8e0fc57]::-webkit-scrollbar-thumb:hover{background-color:#90939980}@media (prefers-color-scheme:dark){.bot-items[data-v-f8e0fc57]::-webkit-scrollbar-track,.channel-items[data-v-f8e0fc57]::-webkit-scrollbar-track{background:#ffffff0d}.bot-items[data-v-f8e0fc57]::-webkit-scrollbar-thumb,.channel-items[data-v-f8e0fc57]::-webkit-scrollbar-thumb,.forward-message-expanded[data-v-f8e0fc57]::-webkit-scrollbar-thumb,.json-raw-content[data-v-f8e0fc57]::-webkit-scrollbar-thumb,.message-history[data-v-f8e0fc57]::-webkit-scrollbar-thumb{background-color:#ffffff4d;border-color:#0000001a}.bot-items[data-v-f8e0fc57]::-webkit-scrollbar-thumb:hover,.channel-items[data-v-f8e0fc57]::-webkit-scrollbar-thumb:hover,.forward-message-expanded[data-v-f8e0fc57]::-webkit-scrollbar-thumb:hover,.json-raw-content[data-v-f8e0fc57]::-webkit-scrollbar-thumb:hover,.message-history[data-v-f8e0fc57]::-webkit-scrollbar-thumb:hover{background-color:#ffffff80}.bot-items[data-v-f8e0fc57]::-webkit-scrollbar-thumb:active,.channel-items[data-v-f8e0fc57]::-webkit-scrollbar-thumb:active{background-color:#ffffffb3}}.loading-more-indicator[data-v-f8e0fc57]{display:flex;align-items:center;justify-content:center;padding:12px;color:#6c757d;font-size:14px}.loading-spinner[data-v-f8e0fc57]{width:20px;height:20px;border:2px solid #f3f3f3;border-top:2px solid #2196f3;border-radius:50%;animation:spin-f8e0fc57 1s linear infinite;margin-right:8px}@keyframes spin-f8e0fc57{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.layout-iframe{width:100%;height:100%;border:none}
1
+ .message-quote[data-v-bda63c05]{margin:8px 0;padding:8px 12px;background-color:#bebebe1a;border-left:4px solid rgba(151,152,152,.45);border-radius:6px;font-size:.9em;position:relative}.quote-indicator[data-v-bda63c05]{font-size:.75em;color:#007bff;font-weight:600;margin-bottom:4px;text-transform:uppercase}.quote-header[data-v-bda63c05]{display:flex;align-items:center;margin-bottom:4px;gap:6px}.quote-avatar[data-v-bda63c05]{width:20px;height:20px;border-radius:50%;overflow:hidden;flex-shrink:0}.quote-avatar img[data-v-bda63c05]{width:100%;height:100%;object-fit:cover}.quote-avatar .avatar-placeholder[data-v-bda63c05]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#6c757d;color:#fff;font-size:10px;font-weight:700}.quote-username[data-v-bda63c05]{font-weight:600;color:#007bff;font-size:.85em}.quote-time[data-v-bda63c05]{color:#6c757d;font-size:.75em;margin-left:auto}.quote-content[data-v-bda63c05]{color:#7276b7;line-height:1.3;word-wrap:break-word;word-break:break-all;overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto}.quote-content .message-image[data-v-bda63c05]{max-width:min(200px,50vw);max-height:100px}.quote-content .message-image-container[data-v-bda63c05]{margin:2px 0}@media (prefers-color-scheme:dark){.message-quote[data-v-bda63c05]{background-color:#ffffff14;border-left-color:#0d6efd}.quote-content[data-v-bda63c05]{color:#adb5bd}.quote-username[data-v-bda63c05]{color:#0d6efd}}.chat-container[data-v-bda63c05]{display:flex;height:100vh;background:0 0;margin-left:0;width:100%;overflow:hidden;color:inherit;position:relative}.bot-list[data-v-bda63c05],.channel-list[data-v-bda63c05],.message-area[data-v-bda63c05]{display:flex;flex-direction:column;background:0 0;border-right:1px solid rgba(128,128,128,.2)}.bot-list[data-v-bda63c05]{width:250px;min-width:250px;max-width:250px;flex-shrink:0}.channel-list[data-v-bda63c05]{width:300px;min-width:300px;max-width:300px;flex-shrink:0}.message-area[data-v-bda63c05]{flex:1;border-right:none}.panel-header[data-v-bda63c05]{padding:16px;border-bottom:1px solid rgba(128,128,128,.2);background:0 0;display:flex;align-items:center;justify-content:space-between}.panel-header h3[data-v-bda63c05]{margin:0;font-size:16px;font-weight:600;color:currentColor}.back-button[data-v-bda63c05]{display:none;background:0 0;border:none;color:currentColor;font-size:18px;cursor:pointer;padding:4px 8px;border-radius:4px;transition:background-color .2s}.back-button[data-v-bda63c05]:hover{background:#8080801a}.bot-items[data-v-bda63c05],.channel-items[data-v-bda63c05]{flex:1;overflow-y:auto;overflow-x:hidden;max-height:calc(100vh - 140px);-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(144,147,153,.4) rgba(0,0,0,.05);scroll-behavior:smooth;overscroll-behavior:contain;padding-bottom:8px}.bot-item[data-v-bda63c05],.channel-item[data-v-bda63c05]{display:flex;align-items:center;padding:12px 16px;cursor:pointer;border-bottom:1px solid rgba(128,128,128,.1);transition:background-color .2s}.bot-item[data-v-bda63c05]:hover,.channel-item[data-v-bda63c05]:hover{background:#8080801a}.bot-item.active[data-v-bda63c05],.channel-item.active[data-v-bda63c05]{background:#2196f31a;border-right:3px solid #2196f3}.bot-avatar[data-v-bda63c05]{width:40px;height:40px;margin-right:12px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#e0e0e0}.bot-avatar img[data-v-bda63c05]{width:100%;height:100%;object-fit:cover}.avatar-placeholder[data-v-bda63c05]{font-size:16px;font-weight:700;color:currentColor;opacity:.7}.bot-info[data-v-bda63c05]{flex:1}.bot-name[data-v-bda63c05]{font-weight:500;color:currentColor;margin-bottom:2px}.bot-platform[data-v-bda63c05]{font-size:12px;color:currentColor;opacity:.7}.bot-status[data-v-bda63c05]{width:8px;height:8px;border-radius:50%;margin-left:8px}.bot-status.online[data-v-bda63c05]{background:#4caf50}.bot-status.offline[data-v-bda63c05]{background:#f44336}.channel-info[data-v-bda63c05]{flex:1}.channel-name[data-v-bda63c05]{font-weight:500;color:currentColor;margin-bottom:2px}.channel-type[data-v-bda63c05]{font-size:12px;color:currentColor;opacity:.7}.channel-message-count[data-v-bda63c05]{background:#2196f3;color:#fff;font-size:12px;padding:2px 6px;border-radius:10px;min-width:18px;text-align:center;position:relative;transition:all .2s ease}.channel-message-count.draggable-bubble[data-v-bda63c05]{cursor:grab;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.channel-message-count.draggable-bubble[data-v-bda63c05]:hover{background:#1976d2;transform:scale(1.1);box-shadow:0 2px 8px #2196f34d}.channel-message-count.draggable-bubble.dragging[data-v-bda63c05],.channel-message-count.draggable-bubble[data-v-bda63c05]:active{cursor:grabbing;background:#1565c0;box-shadow:0 4px 12px #2196f366}.dragging-clone[data-v-bda63c05]{position:fixed;z-index:1000;pointer-events:none;transition:none;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background:#2196f3;color:#fff;font-size:12px;padding:2px 6px;border-radius:10px;min-width:18px;text-align:center;box-shadow:0 4px 12px #2196f366}.dragging-clone.will-delete[data-v-bda63c05]{background:#f44336!important;animation:shake-bda63c05 .3s ease-in-out infinite}@keyframes pulseThreshold-bda63c05{0%,to{opacity:.4;transform:scale(.9);border-color:#f4433699;box-shadow:0 0 15px #f4433633}50%{opacity:.8;transform:scale(1.1);border-color:#f44336;box-shadow:0 0 25px #f4433666}}@keyframes menuSlideIn-bda63c05{0%{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}.message-content[data-v-bda63c05]{display:flex;flex-direction:column;height:calc(100vh - 60px);overflow:hidden;position:relative}.message-history[data-v-bda63c05]{flex:1;overflow-y:auto;padding:16px 16px 8px;max-height:calc(100vh - 200px)}.message-item[data-v-bda63c05]{display:flex;margin-bottom:16px;padding:8px;border-radius:8px;transition:background-color .3s ease}.message-item[data-v-bda63c05]:hover{background-color:#8080801a}.message-item.new-message[data-v-bda63c05]{background-color:#4caf5033;animation:highlight-bda63c05 2s ease-out}.message-item.bot-message[data-v-bda63c05]{flex-direction:row-reverse;justify-content:flex-start}.message-item.bot-message .message-avatar[data-v-bda63c05]{margin-right:0;margin-left:12px}.message-item.bot-message .message-content-wrapper[data-v-bda63c05]{display:flex;flex-direction:column;align-items:flex-end}.message-item.bot-message .message-header[data-v-bda63c05]{display:flex;align-items:center;justify-content:flex-end;margin-bottom:4px}.message-item.bot-message .message-username[data-v-bda63c05]{margin-right:0;margin-left:8px;order:2}.message-item.bot-message .message-time[data-v-bda63c05]{order:1}.message-item.bot-message .message-text[data-v-bda63c05]{background-color:#2196f31a;padding:8px 12px;border-radius:12px 12px 4px;display:inline-block;max-width:80%;text-align:left;word-wrap:break-word;word-break:break-all;overflow-wrap:anywhere}@keyframes highlight-bda63c05{0%{background-color:#4caf504d}to{background-color:transparent}}.message-avatar[data-v-bda63c05]{width:32px;height:32px;margin-right:12px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#e0e0e0;flex-shrink:0}.message-avatar img[data-v-bda63c05]{width:100%;height:100%;object-fit:cover}.message-avatar .avatar-placeholder[data-v-bda63c05]{font-size:12px;font-weight:700;color:currentColor;opacity:.7}.message-content-wrapper[data-v-bda63c05]{flex:1}.message-header[data-v-bda63c05]{display:flex;align-items:center;margin-bottom:4px}.message-username[data-v-bda63c05]{font-weight:500;color:currentColor;margin-right:8px}.message-time[data-v-bda63c05]{font-size:12px;color:currentColor;opacity:.5}.message-text[data-v-bda63c05]{color:currentColor;line-height:1.4;word-wrap:break-word;word-break:break-all;white-space:pre-wrap;max-width:100%;overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto}.message-item:not(.bot-message) .message-text[data-v-bda63c05]{background-color:#8080801a;padding:8px 12px;border-radius:12px 12px 12px 4px;display:inline-block;max-width:80%;word-wrap:break-word;word-break:break-all;overflow-wrap:anywhere}.message-input[data-v-bda63c05]{display:flex;flex-direction:column;padding:12px 16px 16px;border-top:1px solid rgba(128,128,128,.2);background:0 0;flex-shrink:0;position:sticky;bottom:0;margin-top:-10px}.input-row[data-v-bda63c05]{display:flex;gap:8px;align-items:center}.floating-scroll-button[data-v-bda63c05]{position:absolute;right:24px;bottom:18%;width:48px;height:48px;background:#2196f3;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px #2196f34d;color:#fff;transition:all .3s ease;z-index:100;border:2px solid rgba(255,255,255,.2)}.floating-scroll-button[data-v-bda63c05]:hover{background:#1976d2;transform:scale(1.1);box-shadow:0 6px 16px #2196f366}.floating-scroll-button[data-v-bda63c05]:active{transform:scale(.95)}.input-row button[data-v-bda63c05]{padding:8px 16px;background:#2196f3;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s}.message-image-container[data-v-bda63c05]{margin:8px 0;max-width:100%;display:block}.message-image[data-v-bda63c05]{border-radius:8px;object-fit:contain;display:block;cursor:pointer;transition:transform .2s ease;max-width:min(400px,66.67vw);max-height:200px;width:auto;height:auto;image-rendering:auto;-webkit-image-rendering:auto;-moz-image-rendering:auto;-o-image-rendering:auto}.message-image[src*=".gif"][data-v-bda63c05],.message-image[src*="image/gif"][data-v-bda63c05]{image-rendering:auto!important;-webkit-image-rendering:auto!important;animation-play-state:running!important}.message-image-loading[data-v-bda63c05]{display:inline-block;padding:8px 12px;background:#8080801a;border-radius:4px;color:currentColor;opacity:.7;font-size:12px}.message-image-error[data-v-bda63c05]{display:inline-block;padding:8px 12px;background:#f443361a;border:1px solid rgba(244,67,54,.3);border-radius:4px;color:#f44336;font-size:12px;max-width:300px;word-break:break-word}.message-paragraph[data-v-bda63c05]{display:block;margin-bottom:4px}.message-paragraph[data-v-bda63c05]:last-child{margin-bottom:0}.forward-message-container[data-v-bda63c05]{border:1px solid #fff;border-radius:8px;margin:4px 0;overflow:hidden;background:#f9f9f900}.forward-message-preview[data-v-bda63c05]{padding:12px;cursor:pointer;transition:background-color .2s}.forward-message-preview[data-v-bda63c05]:hover{background:#f0f0f0}.forward-message-title[data-v-bda63c05]{font-weight:600;color:#333;margin-bottom:8px;font-size:14px}.forward-message-preview-item[data-v-bda63c05]{color:#666;font-size:13px;margin:2px 0;line-height:1.4;word-wrap:break-word;word-break:break-all;overflow-wrap:anywhere}.forward-message-footer[data-v-bda63c05]{display:flex;justify-content:space-between;align-items:center;margin-top:8px;padding-top:8px;border-top:1px solid #e8e8e8}.forward-message-count[data-v-bda63c05]{color:#2196f3;font-size:12px}.forward-message-toggle[data-v-bda63c05]{color:#666;font-size:12px}.forward-message-expanded[data-v-bda63c05]{border-top:1px solid #e0e0e0;background:#fff;max-height:400px;overflow-y:auto}.forwarded-message-item[data-v-bda63c05]{padding:12px;border-bottom:1px solid #f0f0f0}.forwarded-message-item[data-v-bda63c05]:last-child{border-bottom:none}.forwarded-message-header[data-v-bda63c05]{display:flex;align-items:center;margin-bottom:6px}.forwarded-message-nickname[data-v-bda63c05]{font-weight:600;color:#333;font-size:13px}.forwarded-message-userid[data-v-bda63c05]{color:#999;font-size:11px;margin-left:6px}.forwarded-message-content[data-v-bda63c05]{color:#555;font-size:13px;line-height:1.4;word-wrap:break-word;word-break:break-all;overflow-wrap:anywhere}.message-at[data-v-bda63c05]{background:#2196f31a;color:#2196f3;padding:2px 4px;border-radius:3px;font-weight:500;cursor:pointer}.message-unknown[data-v-bda63c05]{background:#ff98001a;color:#ff9800;padding:2px 4px;border-radius:3px;font-style:italic;cursor:help}.input-row input[data-v-bda63c05]{flex:1;min-width:0;padding:8px 12px;border:1px solid rgba(128,128,128,.3);border-radius:4px;outline:0;background:0 0;color:currentColor}.input-row input[data-v-bda63c05]:focus{border-color:#2196f3;box-shadow:0 0 0 2px #2196f333}.input-row input[data-v-bda63c05]::placeholder{color:currentColor;opacity:.5}.input-row button[data-v-bda63c05]{padding:8px 16px;background:#2196f3;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s;flex-shrink:0;white-space:nowrap}.input-row button[data-v-bda63c05]:hover:not(:disabled){background:#1976d2}.input-row button[data-v-bda63c05]:disabled{background:#8080804d;cursor:not-allowed}.input-row button.is-sending[data-v-bda63c05]{background:#ffc107!important;color:#333!important;cursor:default!important}.message-input .input-row button.is-sending[data-v-bda63c05]{background:#ffc107!important;color:#333!important;cursor:default!important;border-color:#ffc107!important}.empty-state[data-v-bda63c05]{display:flex;align-items:center;justify-content:center;height:100%;color:currentColor;opacity:.5;font-size:14px}.message-text-content[data-v-bda63c05]{display:inline;word-wrap:break-word;word-break:break-all;overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto}.message-image-container[data-v-bda63c05]{display:block;margin:4px 0}.message-image[data-v-bda63c05]{border-radius:8px;margin:4px 0;display:block;cursor:pointer;transition:transform .2s ease;object-fit:contain;background:#8080801a}.message-image[data-v-bda63c05]:hover{transform:scale(1.02)}.message-image-loading[data-v-bda63c05]{height:60px;width:200px;border-radius:8px;margin:4px 0;display:flex;align-items:center;justify-content:center;background:#8080801a;color:currentColor;opacity:.7;font-size:14px;border:1px dashed rgba(128,128,128,.3)}.message-image-error[data-v-bda63c05]{min-height:60px;width:200px;border-radius:8px;margin:4px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#8080801a;color:currentColor;opacity:.7;font-size:14px;border:1px dashed rgba(128,128,128,.3);padding:8px;text-align:center}.message-at[data-v-bda63c05]{background:#2196f31a;color:#2196f3;padding:2px 6px;border-radius:4px;font-weight:500;cursor:pointer;display:inline-block;margin:0 2px}.message-at[data-v-bda63c05]:hover{background:#2196f333}.message-unknown[data-v-bda63c05]{background:#ff98001a;color:#ff9800;padding:2px 6px;border-radius:4px;font-size:12px;display:inline-block;margin:0 2px;cursor:help}@keyframes pulse-bda63c05{0%,to{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.1)}}.channel-message-count.will-delete[data-v-bda63c05]{background:#f44336!important;animation:shake-bda63c05 .3s ease-in-out infinite}@keyframes shake-bda63c05{0%,to{transform:translate(0)}25%{transform:translate(-2px)}75%{transform:translate(2px)}}body.dragging-bubble-global[data-v-bda63c05]{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;cursor:grabbing}.drag-threshold-circle[data-v-bda63c05]{position:fixed;pointer-events:none;border:3px dashed rgba(244,67,54,.8);border-radius:50%;z-index:999;background:#f443361a;box-shadow:0 0 20px #f443364d;animation:pulseThreshold-bda63c05 1.5s ease-in-out infinite}.context-menu[data-v-bda63c05]{position:fixed;background:#fffffffa;border:none;border-radius:16px;box-shadow:0 8px 32px #0000001f,0 2px 8px #00000014;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);overflow:hidden;z-index:10000;min-width:180px}.context-menu-item[data-v-bda63c05]{display:flex;align-items:center;gap:12px;padding:14px 18px;background:0 0;border:none;color:#333;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);width:100%;text-align:left;position:relative;border-bottom:1px solid rgba(0,0,0,.08);min-width:140px}.context-menu-item[data-v-bda63c05]:last-child{border-bottom:none}.context-menu-item[data-v-bda63c05]:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(135deg,#667eea 0,#764ba2);transform:scaleY(0);transition:transform .2s cubic-bezier(.4,0,.2,1)}.context-menu-item[data-v-bda63c05]:hover{background:linear-gradient(90deg,#667eea14 0,#764ba214);color:#667eea;transform:translate(4px)}.context-menu-item[data-v-bda63c05]:hover:before{transform:scaleY(1)}.context-menu-item.danger[data-v-bda63c05]{color:#d32f2f}.context-menu-item.danger[data-v-bda63c05]:hover{background:linear-gradient(90deg,#f4433614 0,#d32f2f14);color:#d32f2f}.bot-item.pinned[data-v-bda63c05],.channel-item.pinned[data-v-bda63c05]{background:#ffc1071a;border-left:3px solid #ffc107}.bot-item.pinned[data-v-bda63c05]:before,.channel-item.pinned[data-v-bda63c05]:before{content:"📌";position:absolute;left:4px;top:50%;transform:translateY(-50%);font-size:12px;opacity:.7}.bot-item.pinned[data-v-bda63c05],.channel-item.pinned[data-v-bda63c05]{position:relative;padding-left:24px}@media (prefers-color-scheme:dark){.context-menu[data-v-bda63c05]{background:#1e1e1efa;box-shadow:0 8px 32px #0000004d,0 2px 8px #0003}.context-menu-item[data-v-bda63c05]{color:#fff;border-bottom-color:#ffffff1a}.context-menu-item[data-v-bda63c05]:before{background:linear-gradient(135deg,#4facfe 0,#00f2fe)}.context-menu-item[data-v-bda63c05]:hover{background:linear-gradient(90deg,#4facfe1f 0,#00f2fe1f);color:#4facfe}.context-menu-item.danger[data-v-bda63c05]:hover{background:linear-gradient(90deg,#f443361f 0,#ff8a801f);color:#ff8a80}.bot-item.pinned[data-v-bda63c05],.channel-item.pinned[data-v-bda63c05]{background:#ffc10726}}.message-share-card[data-v-bda63c05]{display:inline-block;width:75px;margin:8px 0;border:1px solid rgba(128,128,128,.2);border-radius:12px;background:#ffffff0d;transition:all .3s ease;cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.message-share-card[data-v-bda63c05]:hover{transform:translateY(-2px);box-shadow:0 8px 24px #00000026;border-color:#2196f34d}.share-card-preview[data-v-bda63c05]{width:100%;position:relative;display:flex;align-items:center;justify-content:center;padding:4px;border-radius:12px 12px 0 0}.share-card-image[data-v-bda63c05]{max-width:calc(100% - 8px);width:auto;height:auto;object-fit:contain;transition:transform .3s ease;display:block;border-radius:4px}.message-share-card:hover .share-card-image[data-v-bda63c05]{transform:scale(1.05)}.share-card-content[data-v-bda63c05]{padding:8px}.share-card-header[data-v-bda63c05]{display:flex;align-items:center;margin-bottom:12px;gap:12px}.share-card-icon[data-v-bda63c05]{width:32px;height:32px;border-radius:8px;object-fit:cover;flex-shrink:0}.share-card-app-info[data-v-bda63c05]{flex:1;min-width:0}.share-card-app-name[data-v-bda63c05]{font-size:12px;color:currentColor;opacity:.7;margin-bottom:2px;font-weight:500}.share-card-title[data-v-bda63c05]{font-size:10px;font-weight:600;color:currentColor;line-height:1.2;word-wrap:break-word;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.share-card-desc[data-v-bda63c05]{font-size:14px;color:currentColor;opacity:.8;line-height:1.4;margin-bottom:12px;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;word-wrap:break-word}.share-card-link-hint[data-v-bda63c05]{font-size:12px;color:#2196f3;font-weight:500;display:flex;align-items:center;gap:4px}.share-card-link-hint[data-v-bda63c05]:after{content:"→";transition:transform .2s ease}.message-share-card:hover .share-card-link-hint[data-v-bda63c05]:after{transform:translate(2px)}.message-json-error[data-v-bda63c05],.message-json-raw[data-v-bda63c05]{display:inline-block;margin:8px 0;max-width:400px}.json-error-text[data-v-bda63c05]{color:#f44336;font-size:14px;font-weight:500}.json-label[data-v-bda63c05]{color:currentColor;opacity:.7;font-size:12px;font-weight:500;margin-bottom:8px}.json-raw-data[data-v-bda63c05]{margin-top:8px}.json-raw-data summary[data-v-bda63c05]{cursor:pointer;font-size:12px;color:#2196f3;font-weight:500;padding:4px 8px;border-radius:4px;background:#2196f31a;display:inline-block;transition:background-color .2s ease}.json-raw-data summary[data-v-bda63c05]:hover{background:#2196f333}.json-raw-content[data-v-bda63c05]{margin-top:8px;padding:12px;background:#8080801a;border-radius:8px;font-family:Courier New,monospace;font-size:12px;color:currentColor;opacity:.8;white-space:pre-wrap;word-wrap:break-word;word-break:break-all;overflow-wrap:anywhere;max-height:200px;overflow-y:auto;border:1px solid rgba(128,128,128,.2)}@media (prefers-color-scheme:dark){.message-share-card[data-v-bda63c05]{background:#ffffff14;border-color:#ffffff26}.message-share-card[data-v-bda63c05]:hover{border-color:#2196f380;box-shadow:0 8px 24px #0000004d}.json-raw-content[data-v-bda63c05]{background:#ffffff0d;border-color:#ffffff1a}}@media (max-width:768px){.chat-container[data-v-bda63c05]{position:relative;height:100vh;height:100dvh}.bot-list[data-v-bda63c05],.channel-list[data-v-bda63c05],.message-area[data-v-bda63c05]{position:absolute;top:0;left:0;width:100%;height:100%;transition:transform .3s ease;z-index:1}.bot-list[data-v-bda63c05]{transform:translate(0);z-index:3}.channel-list[data-v-bda63c05]{transform:translate(100%);z-index:2}.message-area[data-v-bda63c05]{transform:translate(200%);z-index:1}.chat-container.show-channels .bot-list[data-v-bda63c05]{transform:translate(-100%)}.chat-container.show-channels .channel-list[data-v-bda63c05]{transform:translate(0);z-index:3}.chat-container.show-channels .message-area[data-v-bda63c05]{transform:translate(100%)}.chat-container.show-messages .bot-list[data-v-bda63c05]{transform:translate(-200%)}.chat-container.show-messages .channel-list[data-v-bda63c05]{transform:translate(-100%)}.chat-container.show-messages .message-area[data-v-bda63c05]{transform:translate(0);z-index:3}.back-button[data-v-bda63c05]{display:none!important}.panel-header[data-v-bda63c05]{flex-direction:row-reverse;position:sticky;top:0;z-index:5;background:inherit}.panel-header h3[data-v-bda63c05]{text-align:right}.floating-scroll-button[data-v-bda63c05]{right:16px;bottom:calc(90px + env(safe-area-inset-bottom,0px));width:40px;height:40px;transition:bottom .3s ease}.message-input[data-v-bda63c05]{padding:8px 12px calc(12px + env(safe-area-inset-bottom,0px)) 12px;position:fixed;bottom:20px;left:0;right:0;background:inherit;border-top:1px solid rgba(128,128,128,.2);z-index:10;min-height:calc(60px + env(safe-area-inset-bottom,0px));transition:transform .3s ease;transform:translateZ(0)}.input-row input[data-v-bda63c05]{font-size:16px;padding:10px 12px}.input-row button[data-v-bda63c05]{padding:10px 16px;font-size:16px}.message-history[data-v-bda63c05]{padding:12px;max-height:calc(100vh - 140px - env(safe-area-inset-bottom,0px));max-height:calc(100dvh - 140px - env(safe-area-inset-bottom,0px));padding-bottom:calc(80px + env(safe-area-inset-bottom,0px));overflow-y:auto;-webkit-overflow-scrolling:touch;transition:max-height .3s ease}.message-item[data-v-bda63c05]{margin-bottom:12px;padding:6px}.message-text[data-v-bda63c05]{max-width:90%!important}.message-avatar[data-v-bda63c05]{width:28px;height:28px;margin-right:8px}.message-item.bot-message .message-avatar[data-v-bda63c05]{margin-left:8px}.message-image[data-v-bda63c05]{max-width:min(280px,66.67vw);max-height:160px}.quote-content .message-image[data-v-bda63c05]{max-width:min(150px,50vw);max-height:80px}.context-menu[data-v-bda63c05]{min-width:160px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.context-menu-item[data-v-bda63c05]{padding:10px 12px;font-size:13px;min-width:100px}.bot-item[data-v-bda63c05],.channel-item[data-v-bda63c05]{padding:14px 16px}.bot-avatar[data-v-bda63c05]{width:36px;height:36px;margin-right:10px}.bot-name[data-v-bda63c05],.channel-name[data-v-bda63c05]{font-size:15px}.bot-platform[data-v-bda63c05],.channel-type[data-v-bda63c05]{font-size:13px}.bot-items[data-v-bda63c05],.channel-items[data-v-bda63c05]{flex:1;overflow-y:auto;overflow-x:hidden;max-height:calc(100vh - 140px);max-height:calc(100dvh - 140px);-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(144,147,153,.4) rgba(0,0,0,.05);scroll-behavior:smooth;overscroll-behavior:contain;padding-bottom:8px}}@media (min-width:769px) and (max-width:1024px){.bot-list[data-v-bda63c05]{width:220px;min-width:220px;max-width:220px}.channel-list[data-v-bda63c05]{width:280px;min-width:280px;max-width:280px}.message-image[data-v-bda63c05]{max-width:min(350px,66.67vw);max-height:180px}}.chat-container.swiping[data-v-bda63c05]{overflow:hidden}.bot-list.swiping[data-v-bda63c05],.channel-list.swiping[data-v-bda63c05],.message-area.swiping[data-v-bda63c05]{transition:none!important}.swipe-indicator[data-v-bda63c05]{position:fixed;top:50%;left:20px;transform:translateY(-50%);background:#2196f3cc;color:#fff;padding:8px 12px;border-radius:20px;font-size:14px;z-index:1000;opacity:0;transition:opacity .2s ease;pointer-events:none;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.swipe-indicator.show[data-v-bda63c05]{opacity:1}.message-area .message-content[data-v-bda63c05]{padding-bottom:80px}.image-preview-container[data-v-bda63c05]{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0;margin-bottom:8px;border-bottom:1px solid rgba(128,128,128,.1)}.image-preview-item[data-v-bda63c05]{position:relative;width:60px;height:60px;border-radius:8px;overflow:hidden;border:2px solid rgba(33,150,243,.3);background:#8080801a}.preview-image[data-v-bda63c05]{width:100%;height:100%;object-fit:cover;display:block}.remove-image-btn[data-v-bda63c05]{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;background:#f44336;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;transition:all .2s ease;box-shadow:0 2px 4px #0003}.remove-image-btn[data-v-bda63c05]:hover{background:#d32f2f;transform:scale(1.1)}.input-actions[data-v-bda63c05]{position:relative;margin-right:8px}.add-button[data-v-bda63c05]{width:36px;height:36px;border-radius:12px;background:linear-gradient(135deg,#667eea 0,#764ba2);border:none;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s cubic-bezier(.4,0,.2,1);flex-shrink:0;box-shadow:0 2px 8px #667eea4d;position:relative;overflow:hidden}.add-button[data-v-bda63c05]:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg,#fff3 0,#ffffff1a);border-radius:12px;opacity:0;transition:opacity .3s ease}.add-button[data-v-bda63c05]:hover{transform:translateY(-2px) scale(1.05);box-shadow:0 4px 16px #667eea66}.add-button[data-v-bda63c05]:hover:before{opacity:1}.add-button.active[data-v-bda63c05]{background:linear-gradient(135deg,#f093fb 0,#f5576c);transform:translateY(-2px) scale(1.05) rotate(45deg);box-shadow:0 4px 16px #f5576c66}.add-button[data-v-bda63c05]:active{transform:translateY(0) scale(.98);transition:all .1s ease}.action-menu[data-v-bda63c05]{position:absolute;bottom:100%;left:0;margin-bottom:12px;background:#fffffffa;border:none;border-radius:16px;box-shadow:0 8px 32px #0000001f,0 2px 8px #00000014;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);overflow:hidden;z-index:1000;min-width:140px;transform:translateY(8px);opacity:0;animation:menuSlideIn-bda63c05 .3s cubic-bezier(.4,0,.2,1) forwards}.action-menu-item[data-v-bda63c05]{display:flex;align-items:center;gap:12px;padding:14px 18px;background:0 0;border:none;color:#333;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);width:100%;text-align:left;position:relative}.action-menu-item[data-v-bda63c05]:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(135deg,#667eea 0,#764ba2);transform:scaleY(0);transition:transform .2s cubic-bezier(.4,0,.2,1)}.action-menu-item[data-v-bda63c05]:hover{background:linear-gradient(90deg,#667eea14 0,#764ba214);color:#667eea;transform:translate(4px)}.action-menu-item[data-v-bda63c05]:hover:before{transform:scaleY(1)}.action-menu-item svg[data-v-bda63c05]{flex-shrink:0}@media (prefers-color-scheme:dark){.action-menu[data-v-bda63c05]{background:#1e1e1efa;box-shadow:0 8px 32px #0000004d,0 2px 8px #0003}.action-menu-item[data-v-bda63c05]{color:#fff}.action-menu-item[data-v-bda63c05]:before{background:linear-gradient(135deg,#4facfe 0,#00f2fe)}.action-menu-item[data-v-bda63c05]:hover{background:linear-gradient(90deg,#4facfe1f 0,#00f2fe1f);color:#4facfe}.add-button[data-v-bda63c05]{background:linear-gradient(135deg,#4facfe 0,#00f2fe);box-shadow:0 2px 8px #4facfe4d}.add-button[data-v-bda63c05]:hover{box-shadow:0 4px 16px #4facfe66}.add-button.active[data-v-bda63c05]{background:linear-gradient(135deg,#fa709a 0,#fee140);box-shadow:0 4px 16px #fa709a66}.image-preview-item[data-v-bda63c05]{border-color:#64b5f680;background:#ffffff0d}}@media (max-width:768px){.image-preview-container[data-v-bda63c05]{padding:6px 0;margin-bottom:6px}.image-preview-item[data-v-bda63c05]{width:50px;height:50px}.add-button[data-v-bda63c05]{width:32px;height:32px;border-radius:10px}.action-menu[data-v-bda63c05]{min-width:100px}.action-menu-item[data-v-bda63c05]{padding:10px 12px;font-size:13px}.remove-image-btn[data-v-bda63c05]{width:18px;height:18px;top:-5px;right:-5px}}.message-history[data-v-bda63c05]::-webkit-scrollbar{width:6px}.message-history[data-v-bda63c05]::-webkit-scrollbar-track{background:0 0}.message-history[data-v-bda63c05]::-webkit-scrollbar-thumb{background-color:#9093994d;border-radius:4px;transition:background-color .3s}.message-history[data-v-bda63c05]::-webkit-scrollbar-thumb:hover{background-color:#90939980}.bot-items[data-v-bda63c05]::-webkit-scrollbar,.channel-items[data-v-bda63c05]::-webkit-scrollbar{width:8px}.bot-items[data-v-bda63c05]::-webkit-scrollbar-track,.channel-items[data-v-bda63c05]::-webkit-scrollbar-track{background:#0000000d;border-radius:4px}.bot-items[data-v-bda63c05]::-webkit-scrollbar-thumb,.channel-items[data-v-bda63c05]::-webkit-scrollbar-thumb{background-color:#90939966;border-radius:4px;transition:all .3s ease;border:1px solid rgba(255,255,255,.1);background-clip:padding-box}.bot-items[data-v-bda63c05]::-webkit-scrollbar-thumb:hover,.channel-items[data-v-bda63c05]::-webkit-scrollbar-thumb:hover{background-color:#90939999;transform:scaleX(1.2)}.bot-items[data-v-bda63c05]::-webkit-scrollbar-thumb:active,.channel-items[data-v-bda63c05]::-webkit-scrollbar-thumb:active{background-color:#909399cc}.forward-message-expanded[data-v-bda63c05]::-webkit-scrollbar{width:6px}.forward-message-expanded[data-v-bda63c05]::-webkit-scrollbar-track{background:0 0}.forward-message-expanded[data-v-bda63c05]::-webkit-scrollbar-thumb{background-color:#9093994d;border-radius:4px;transition:background-color .3s}.forward-message-expanded[data-v-bda63c05]::-webkit-scrollbar-thumb:hover{background-color:#90939980}.json-raw-content[data-v-bda63c05]::-webkit-scrollbar{width:6px}.json-raw-content[data-v-bda63c05]::-webkit-scrollbar-track{background:0 0}.json-raw-content[data-v-bda63c05]::-webkit-scrollbar-thumb{background-color:#9093994d;border-radius:4px;transition:background-color .3s}.json-raw-content[data-v-bda63c05]::-webkit-scrollbar-thumb:hover{background-color:#90939980}@media (prefers-color-scheme:dark){.bot-items[data-v-bda63c05]::-webkit-scrollbar-track,.channel-items[data-v-bda63c05]::-webkit-scrollbar-track{background:#ffffff0d}.bot-items[data-v-bda63c05]::-webkit-scrollbar-thumb,.channel-items[data-v-bda63c05]::-webkit-scrollbar-thumb,.forward-message-expanded[data-v-bda63c05]::-webkit-scrollbar-thumb,.json-raw-content[data-v-bda63c05]::-webkit-scrollbar-thumb,.message-history[data-v-bda63c05]::-webkit-scrollbar-thumb{background-color:#ffffff4d;border-color:#0000001a}.bot-items[data-v-bda63c05]::-webkit-scrollbar-thumb:hover,.channel-items[data-v-bda63c05]::-webkit-scrollbar-thumb:hover,.forward-message-expanded[data-v-bda63c05]::-webkit-scrollbar-thumb:hover,.json-raw-content[data-v-bda63c05]::-webkit-scrollbar-thumb:hover,.message-history[data-v-bda63c05]::-webkit-scrollbar-thumb:hover{background-color:#ffffff80}.bot-items[data-v-bda63c05]::-webkit-scrollbar-thumb:active,.channel-items[data-v-bda63c05]::-webkit-scrollbar-thumb:active{background-color:#ffffffb3}}.loading-more-indicator[data-v-bda63c05]{display:flex;align-items:center;justify-content:center;padding:12px;color:#6c757d;font-size:14px}.loading-spinner[data-v-bda63c05]{width:20px;height:20px;border:2px solid #f3f3f3;border-top:2px solid #2196f3;border-radius:50%;animation:spin-bda63c05 1s linear infinite;margin-right:8px}@keyframes spin-bda63c05{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.layout-iframe{width:100%;height:100%;border:none}
@@ -0,0 +1,14 @@
1
+ import { Schema } from 'koishi';
2
+ export interface Config {
3
+ loggerinfo: boolean;
4
+ clearIndexedDBOnStart: boolean;
5
+ maxMessagesPerChannel: number;
6
+ keepMessagesOnClear: number;
7
+ keepTempImages: number;
8
+ blockedPlatforms: Array<{
9
+ platformName: string;
10
+ exactMatch: boolean;
11
+ }>;
12
+ chatContainerHeight: number;
13
+ }
14
+ export declare const Config: Schema<Config>;
package/lib/index.js CHANGED
@@ -511,6 +511,15 @@ var ApiHandlers = class {
511
511
  }
512
512
  logger;
513
513
  registerApiHandlers() {
514
+ this.ctx.console.addListener("clear-all-indexeddb-data", async () => {
515
+ try {
516
+ this.logInfo("收到清空 IndexedDB 数据请求");
517
+ return { success: true, message: "可以清空 IndexedDB" };
518
+ } catch (error) {
519
+ this.logger.error("清空 IndexedDB 数据失败:", error);
520
+ return { success: false, error: error?.message || String(error) };
521
+ }
522
+ });
514
523
  this.ctx.console.addListener("get-chat-data", async () => {
515
524
  try {
516
525
  const data = this.fileManager.readChatDataFromFile();
@@ -665,12 +674,38 @@ var ApiHandlers = class {
665
674
  }
666
675
  }
667
676
  }
677
+ const parsedContent = import_koishi.h.parse(messageContent);
668
678
  this.messageHandler.setCorrectChannelId(data.selfId, data.channelId);
669
- const result = await bot.sendMessage(data.channelId, messageContent);
679
+ const result = await bot.sendMessage(data.channelId, parsedContent);
670
680
  this.logInfo("消息发送成功:", result);
681
+ const messageId = Array.isArray(result) ? result[0] : result;
682
+ if (messageId) {
683
+ const bot2 = this.ctx.bots.find((b) => b.selfId === data.selfId);
684
+ const botMessageEvent = {
685
+ type: "bot-message-sent",
686
+ selfId: data.selfId,
687
+ platform: bot2?.platform || "unknown",
688
+ channelId: data.channelId,
689
+ messageId,
690
+ content: messageContent,
691
+ userId: data.selfId,
692
+ botUsername: bot2?.user?.name || `Bot-${data.selfId}`,
693
+ botAvatar: bot2?.user?.avatar,
694
+ timestamp: Date.now(),
695
+ guildName: "",
696
+ // 这个信息在前端会补充
697
+ channelType: 0,
698
+ // 这个信息在前端会补充
699
+ elements: [],
700
+ // 这个信息在前端会补充
701
+ isDirect: false
702
+ // 这个信息在前端会补充
703
+ };
704
+ this.ctx.console.broadcast("bot-message-sent-event", botMessageEvent);
705
+ }
671
706
  return {
672
707
  success: true,
673
- messageId: Array.isArray(result) ? result[0] : result,
708
+ messageId,
674
709
  tempImageIds: data.images?.map((img) => img.tempId) || []
675
710
  };
676
711
  } catch (error) {
@@ -829,7 +864,8 @@ var ApiHandlers = class {
829
864
  keepTempImages: this.config.keepTempImages,
830
865
  loggerinfo: this.config.loggerinfo,
831
866
  blockedPlatforms: this.config.blockedPlatforms || [],
832
- chatContainerHeight: this.config.chatContainerHeight
867
+ chatContainerHeight: this.config.chatContainerHeight,
868
+ clearIndexedDBOnStart: this.config.clearIndexedDBOnStart
833
869
  }
834
870
  };
835
871
  } catch (error) {
@@ -983,9 +1019,12 @@ var Config = import_koishi2.Schema.intersect([
983
1019
  )
984
1020
  }).description("基础设置"),
985
1021
  import_koishi2.Schema.object({
986
- chatContainerHeight: import_koishi2.Schema.number().default(80).description("手机端使用的视口高度(防止文本输入框被挡住)").min(50).max(100),
1022
+ chatContainerHeight: import_koishi2.Schema.number().default(80).description("手机端使用的视口高度(防止文本输入框被挡住)").min(50).max(100)
1023
+ }).description("进阶设置"),
1024
+ import_koishi2.Schema.object({
1025
+ clearIndexedDBOnStart: import_koishi2.Schema.boolean().default(true).description("启动时强制清空IndexedDB缓存(适用于紧急情况,防止浏览器卡死)"),
987
1026
  loggerinfo: import_koishi2.Schema.boolean().default(false).description("日志调试模式").experimental()
988
- }).description("进阶设置")
1027
+ }).description("开发者选项")
989
1028
  ]);
990
1029
 
991
1030
  // src/index.ts
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-chat-patch",
3
3
  "description": "[<ruby>chat-patch<rp>(</rp><rt>点我预览效果</rt><rp>)</rp></ruby>](https://i0.hdslb.com/bfs/openplatform/71074dfc9e5256fc3333d8bd8478bec1af874046.png) 视奸小插件((bushi( (低性能警告)。手机端适配。灵感来自 chat 插件。",
4
- "version": "1.1.0",
4
+ "version": "1.2.0",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [
@@ -18,6 +18,17 @@ export class ApiHandlers {
18
18
  }
19
19
 
20
20
  registerApiHandlers() {
21
+ this.ctx.console.addListener('clear-all-indexeddb-data' as any, async () => {
22
+ try {
23
+ this.logInfo('收到清空 IndexedDB 数据请求')
24
+ // 这个 API 主要用于前端调用,后端不直接操作 IndexedDB
25
+ return { success: true, message: '可以清空 IndexedDB' }
26
+ } catch (error: any) {
27
+ this.logger.error('清空 IndexedDB 数据失败:', error)
28
+ return { success: false, error: error?.message || String(error) }
29
+ }
30
+ })
31
+
21
32
  // 获取所有聊天数据的 API
22
33
  this.ctx.console.addListener('get-chat-data' as any, async () => {
23
34
  try {
@@ -236,15 +247,41 @@ export class ApiHandlers {
236
247
  }
237
248
  }
238
249
 
250
+ const parsedContent = h.parse(messageContent)
251
+
239
252
  // 在发送消息前,通知 MessageHandler 正确的 channelId
240
253
  this.messageHandler.setCorrectChannelId(data.selfId, data.channelId)
241
254
 
242
- const result = await bot.sendMessage(data.channelId, messageContent)
255
+ const result = await bot.sendMessage(data.channelId, parsedContent)
243
256
  this.logInfo('消息发送成功:', result)
244
257
 
258
+ // 广播机器人消息发送成功事件,包含真实的 messageId
259
+ const messageId = Array.isArray(result) ? result[0] : result;
260
+ if (messageId) {
261
+ const bot = this.ctx.bots.find((b: any) => b.selfId === data.selfId);
262
+ const botMessageEvent = {
263
+ type: 'bot-message-sent',
264
+ selfId: data.selfId,
265
+ platform: bot?.platform || 'unknown',
266
+ channelId: data.channelId,
267
+ messageId: messageId,
268
+ content: messageContent,
269
+ userId: data.selfId,
270
+ botUsername: bot?.user?.name || `Bot-${data.selfId}`,
271
+ botAvatar: bot?.user?.avatar,
272
+ timestamp: Date.now(),
273
+ guildName: '', // 这个信息在前端会补充
274
+ channelType: 0, // 这个信息在前端会补充
275
+ elements: [], // 这个信息在前端会补充
276
+ isDirect: false // 这个信息在前端会补充
277
+ };
278
+
279
+ this.ctx.console.broadcast('bot-message-sent-event', botMessageEvent);
280
+ }
281
+
245
282
  return {
246
283
  success: true,
247
- messageId: Array.isArray(result) ? result[0] : result,
284
+ messageId: messageId,
248
285
  tempImageIds: data.images?.map(img => img.tempId) || []
249
286
  }
250
287
  } catch (error: any) {
@@ -467,7 +504,8 @@ export class ApiHandlers {
467
504
  keepTempImages: this.config.keepTempImages,
468
505
  loggerinfo: this.config.loggerinfo,
469
506
  blockedPlatforms: this.config.blockedPlatforms || [],
470
- chatContainerHeight: this.config.chatContainerHeight
507
+ chatContainerHeight: this.config.chatContainerHeight,
508
+ clearIndexedDBOnStart: this.config.clearIndexedDBOnStart
471
509
  }
472
510
  }
473
511
  } catch (error: any) {
@@ -616,4 +654,4 @@ export class ApiHandlers {
616
654
  (this.logger.info as (...args: any[]) => void)(...args)
617
655
  }
618
656
  }
619
- }
657
+ }
package/src/config.ts CHANGED
@@ -2,6 +2,7 @@ import { Schema } from 'koishi'
2
2
 
3
3
  export interface Config {
4
4
  loggerinfo: boolean
5
+ clearIndexedDBOnStart: boolean
5
6
  maxMessagesPerChannel: number
6
7
  keepMessagesOnClear: number
7
8
  keepTempImages: number
@@ -40,6 +41,10 @@ export const Config: Schema<Config> = Schema.intersect([
40
41
 
41
42
  Schema.object({
42
43
  chatContainerHeight: Schema.number().default(80).description('手机端使用的视口高度(防止文本输入框被挡住)').min(50).max(100),
43
- loggerinfo: Schema.boolean().default(false).description('日志调试模式').experimental(),
44
44
  }).description('进阶设置'),
45
+
46
+ Schema.object({
47
+ clearIndexedDBOnStart: Schema.boolean().default(true).description('启动时强制清空IndexedDB缓存(适用于紧急情况,防止浏览器卡死)'),
48
+ loggerinfo: Schema.boolean().default(false).description('日志调试模式').experimental(),
49
+ }).description('开发者选项'),
45
50
  ])
package/src/index.ts CHANGED
@@ -1,6 +1,6 @@
1
1
 
2
2
  import { Console } from '@koishijs/console'
3
- import { Context } from 'koishi'
3
+ import { Context, h } from 'koishi'
4
4
  import path from 'node:path'
5
5
 
6
6
  import { MessageHandler } from './message-handler'
@@ -78,7 +78,7 @@ export async function apply(ctx: Context, config: Config) {
78
78
  logInfo(`忽略来自被屏蔽平台的消息: ${session.platform}`)
79
79
  return
80
80
  }
81
-
81
+ // logInfo(session)
82
82
  // 广播消息事件给前端处理
83
83
  await messageHandler.broadcastMessageEvent(session)
84
84
  })
package/lib/index.d.ts DELETED
@@ -1,17 +0,0 @@
1
- import { Console } from '@koishijs/console';
2
- import { Context } from 'koishi';
3
- import { Config } from './config';
4
- export declare const name = "chat-patch";
5
- export declare const reusable = false;
6
- export declare const filter = true;
7
- export declare const inject: {
8
- required: string[];
9
- };
10
- declare module 'koishi' {
11
- interface Context {
12
- console: Console;
13
- }
14
- }
15
- export declare const usage = "\n\n---\n\n\u5F00\u542F\u540E\uFF0C\u5373\u53EF\u5728koishi\u63A7\u5236\u53F0\u64CD\u4F5C\u673A\u5668\u4EBA\u6536\u53D1\u6D88\u606F\u5566\n\n\u6682\u65F6\u53EA\u652F\u6301\u63A5\u53D7\u56FE\u6587\u6D88\u606F / \u53D1\u9001\u6587\u5B57\u6D88\u606F\n\n---\n";
16
- export { Config } from './config';
17
- export declare function apply(ctx: Context, config: Config): Promise<void>;