@zhin.js/adapter-sandbox 2.0.12 → 2.0.14
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/CHANGELOG.md +20 -0
- package/client/index.tsx +9 -9
- package/dist/index.js +45 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +6 -5
- package/lib/index.js.map +1 -1
- package/package.json +12 -11
- package/src/index.ts +7 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @zhin.js/adapter-process
|
|
2
2
|
|
|
3
|
+
## 2.0.14
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- abc75a4: fix: 优化,客户端构建优化
|
|
8
|
+
- Updated dependencies [abc75a4]
|
|
9
|
+
- @zhin.js/console@2.0.14
|
|
10
|
+
|
|
11
|
+
## 2.0.13
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- e28fd7c: fix: 重新发版
|
|
16
|
+
- Updated dependencies [e28fd7c]
|
|
17
|
+
- @zhin.js/client@1.0.18
|
|
18
|
+
- @zhin.js/core@1.1.14
|
|
19
|
+
- zhin.js@1.0.72
|
|
20
|
+
- @zhin.js/console@2.0.13
|
|
21
|
+
- @zhin.js/http@1.0.65
|
|
22
|
+
|
|
3
23
|
## 2.0.12
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
package/client/index.tsx
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Terminal } from 'lucide-react'
|
|
1
|
+
import type { PluginRegisterHostApi } from '@zhin.js/console-types'
|
|
3
2
|
import Sandbox from './Sandbox'
|
|
4
|
-
addPage({
|
|
5
|
-
key: 'process-sandbox',
|
|
6
|
-
path: '/sandbox',
|
|
7
|
-
title: '沙盒',
|
|
8
|
-
icon: <Terminal className="w-5 h-5" />,
|
|
9
|
-
element: <Sandbox/>
|
|
10
|
-
})
|
|
11
3
|
|
|
4
|
+
export function register(api: PluginRegisterHostApi) {
|
|
5
|
+
api.addRoute({
|
|
6
|
+
path: '/console/sandbox',
|
|
7
|
+
name: '沙盒',
|
|
8
|
+
element: api.React.createElement(Sandbox, { hostReact: api.React }),
|
|
9
|
+
})
|
|
10
|
+
api.addTool({ id: 'sandbox', name: '沙盒', path: '/console/sandbox' })
|
|
11
|
+
}
|
package/dist/index.js
CHANGED
|
@@ -1 +1,45 @@
|
|
|
1
|
-
import{addPage as e,cn as t,pickMediaRawUrl as n,resolveMediaSrc as r}from"@zhin.js/client";import{Bell as i,Bot as a,Check as o,Hash as s,Image as c,Info as l,MessageSquare as u,Music as d,Search as f,Send as ee,Smile as p,Terminal as m,Trash2 as h,User as g,UserPlus as _,Users as v,Video as y,Wifi as b,WifiOff as te,X as ne}from"lucide-react";import re,{forwardRef as x,useEffect as S,useImperativeHandle as C,useRef as w,useState as T}from"react";import{Fragment as ie,jsx as E,jsxs as D}from"react/jsx-runtime";var ae=x(({placeholder:e2="输入消息...",onSend:t2,onChange:n2,onAtTrigger:r2,minHeight:i2="44px",maxHeight:a2="200px"},o2)=>{let s2=w(null),c2=w(null),l2=()=>{if(!s2.current)return{text:"",segments:[]};let e3="",t3=[],n3=Array.from(s2.current.childNodes);for(let r3 of n3)if(r3.nodeType===Node.TEXT_NODE){let n4=r3.textContent||"";n4&&(e3+=n4,t3.push({type:"text",data:{text:n4}}))}else if(r3.nodeType===Node.ELEMENT_NODE){let n4=r3;if(n4.classList.contains("editor-face")){let r4=n4.dataset.id;e3+=`[face:${r4}]`,t3.push({type:"face",data:{id:Number(r4)}})}else if(n4.classList.contains("editor-image")){let r4=n4.dataset.url;e3+=`[image:${r4}]`,t3.push({type:"image",data:{url:r4}})}else if(n4.classList.contains("editor-video")){let r4=n4.dataset.url||"";e3+=`[video:${r4}]`,t3.push({type:"video",data:{url:r4}})}else if(n4.classList.contains("editor-audio")){let r4=n4.dataset.url||"";e3+=`[audio:${r4}]`,t3.push({type:"audio",data:{url:r4}})}else if(n4.classList.contains("editor-at")){let r4=n4.dataset.name,i3=n4.dataset.id;e3+=`[@${r4}]`,t3.push({type:"at",data:{name:r4,qq:i3}})}else n4.tagName==="BR"&&(e3+="\n")}return{text:e3,segments:t3}},u2=e3=>{if(!s2.current)return;let t3=document.createElement("img");t3.src=`https://face.viki.moe/apng/${e3}.png`,t3.alt=`[face:${e3}]`,t3.dataset.type="face",t3.dataset.id=String(e3),t3.className="editor-face",m2(t3),y2()},d2=e3=>{if(!s2.current||!e3.trim())return;let t3=document.createElement("img");t3.src=e3.trim(),t3.alt=`[image:${e3.trim()}]`,t3.dataset.type="image",t3.dataset.url=e3.trim(),t3.className="editor-image",m2(t3),y2()},f2=e3=>{if(!s2.current||!e3.trim())return;let t3=e3.trim(),n3=document.createElement("span");n3.className="editor-video",n3.dataset.url=t3,n3.contentEditable="false",n3.textContent="📹 视频",m2(n3),y2()},ee2=e3=>{if(!s2.current||!e3.trim())return;let t3=e3.trim(),n3=document.createElement("span");n3.className="editor-audio",n3.dataset.url=t3,n3.contentEditable="false",n3.textContent="🎵 音频",m2(n3),y2()},p2=(e3,t3)=>{if(!s2.current||!e3.trim())return;let n3=document.createElement("span");n3.dataset.type="at",n3.dataset.name=e3,t3&&(n3.dataset.id=t3),n3.className="editor-at",n3.contentEditable="false";let r3=document.createElement("span");r3.textContent="@",r3.className="editor-at-symbol";let i3=document.createElement("span");i3.textContent=e3,i3.className="editor-at-name",n3.appendChild(r3),n3.appendChild(i3),m2(n3),y2()},m2=e3=>{if(!s2.current)return;s2.current.focus();let t3=window.getSelection();if(t3&&t3.rangeCount>0){let n3=t3.getRangeAt(0);if(s2.current.contains(n3.commonAncestorContainer))n3.deleteContents(),n3.insertNode(e3),n3.collapse(false),t3.removeAllRanges(),t3.addRange(n3);else{s2.current.appendChild(e3);let n4=document.createRange();n4.setStartAfter(e3),n4.collapse(true),t3.removeAllRanges(),t3.addRange(n4)}}else{s2.current.appendChild(e3);let t4=window.getSelection();if(t4){let n3=document.createRange();n3.setStartAfter(e3),n3.collapse(true),t4.removeAllRanges(),t4.addRange(n3)}}},h2=()=>{s2.current&&(s2.current.innerHTML="",y2())},g2=()=>{s2.current?.focus()},_2=()=>l2(),v2=()=>{if(!s2.current||!r2)return;let e3=window.getSelection();if(!e3||e3.rangeCount===0){r2(false,""),c2.current=null;return}let t3=e3.getRangeAt(0);if(!s2.current.contains(t3.commonAncestorContainer)){r2(false,""),c2.current=null;return}let n3=t3.startContainer;if(n3.nodeType!==Node.TEXT_NODE){r2(false,""),c2.current=null;return}let i3=n3,a3=i3.textContent?.substring(0,t3.startOffset)||"",o3=a3.lastIndexOf("@");if(o3!==-1){let e4=a3.substring(o3+1);if(e4.includes(" ")||e4.includes("\n")){r2(false,""),c2.current=null;return}c2.current=i3;let t4=document.createRange();t4.setStart(i3,o3),t4.setEnd(i3,o3+1);let n4=t4.getBoundingClientRect(),l3=s2.current.getBoundingClientRect();r2(true,e4,{top:n4.bottom-l3.top,left:n4.left-l3.left})}else r2(false,""),c2.current=null},y2=()=>{if(v2(),n2){let{text:e3,segments:t3}=l2();n2(e3,t3)}},b2=(e3,t3)=>{if(!c2.current)return;let n3=c2.current,r3=n3.textContent||"",i3=r3.lastIndexOf("@");if(i3!==-1){let e4=r3.substring(i3+1),t4=i3+1+e4.split(/[\s\n]/)[0].length;n3.textContent=r3.substring(0,i3)+r3.substring(t4);let a3=window.getSelection();if(a3){let e5=document.createRange();e5.setStart(n3,i3),e5.collapse(true),a3.removeAllRanges(),a3.addRange(e5)}}c2.current=null,p2(e3,t3)};return C(o2,()=>({focus:g2,clear:h2,insertFace:u2,insertImage:d2,insertVideo:f2,insertAudio:ee2,insertAt:p2,replaceAtTrigger:b2,getContent:_2})),E("div",{ref:s2,contentEditable:true,suppressContentEditableWarning:true,onInput:y2,onKeyDown:e3=>{if(e3.key==="Enter"&&!e3.shiftKey&&(e3.preventDefault(),t2)){let{text:e4,segments:n3}=l2();t2(e4,n3)}},onPaste:e3=>{e3.preventDefault();let t3=e3.clipboardData,n3=Array.from(t3.items).find(e4=>e4.type.startsWith("image/"));if(n3){let e4=n3.getAsFile();if(e4){let t4=new FileReader;t4.onload=()=>{typeof t4.result=="string"&&d2(t4.result)},t4.readAsDataURL(e4)}return}let r3=t3.getData("text/plain");r3&&(document.execCommand("insertText",false,r3),y2())},"data-placeholder":e2,className:"rich-text-editor",style:{width:"100%",minHeight:i2,maxHeight:a2,padding:"0.5rem 0.75rem",border:"1px solid var(--gray-6)",borderRadius:"6px",backgroundColor:"var(--gray-1)",fontSize:"var(--font-size-2)",outline:"none",overflowY:"auto",lineHeight:"1.5",wordWrap:"break-word",color:"var(--gray-12)"}})});ae.displayName="RichTextEditor";function oe(){let[e2,m2]=T([]),[x2,C2]=T([{id:"user_1001",name:"测试用户",type:"private",unread:0},{id:"group_2001",name:"测试群组",type:"group",unread:0},{id:"channel_3001",name:"测试频道",type:"channel",unread:0}]),[oe2,se]=T([]),[O,k]=T(x2[0]),[A,j]=T(""),[M,ce]=T("ProcessBot"),[N,P]=T(false),[F,I]=T(false),[L,R]=T(null),[z,B]=T(""),[le,ue]=T(false),[V,H]=T(null),[de,U]=T(""),[W,fe]=T(""),[pe,me]=T(""),[he]=T([{id:"10001",name:"张三"},{id:"10002",name:"李四"},{id:"10003",name:"王五"},{id:"10004",name:"赵六"},{id:"10005",name:"测试用户"},{id:"10086",name:"Admin"},{id:"10010",name:"Test User"}]),[ge,G]=T([]),[K,q]=T(false),[J,Y]=T("chat"),_e=w(null),X=w(null),Z=w(null),ve=async()=>{try{se(await(await fetch("https://face.viki.moe/metadata.json")).json())}catch(e3){console.error("[Sandbox] Failed to fetch face list:",e3)}};S(()=>{ve()},[]),S(()=>{let e3=window.location.protocol==="https:"?"wss:":"ws:";return X.current=new WebSocket(`${e3}//${window.location.host}/sandbox`),X.current.onopen=()=>P(true),X.current.onmessage=e4=>{try{let t2=JSON.parse(e4.data),n2=typeof t2.content=="string"?Q(t2.content):Array.isArray(t2.content)?t2.content:Q(String(t2.content)),r2=x2.find(e5=>e5.id===t2.id);if(!r2){let e5=t2.type==="private"?`私聊-${t2.bot||M}`:t2.type==="group"?`群组-${t2.id}`:`频道-${t2.id}`;r2={id:t2.id,name:e5,type:t2.type,unread:0},C2(e6=>[...e6,r2]),k(r2)}let i2={id:`bot_${t2.timestamp}`,type:"received",channelType:t2.type,channelId:t2.id,channelName:r2.name,senderId:"bot",senderName:t2.bot||M,content:n2,timestamp:t2.timestamp};m2(e5=>[...e5,i2])}catch(e5){console.error("[Sandbox] Failed to parse message:",e5)}},X.current.onclose=()=>P(false),()=>{X.current?.close()}},[M,x2]),S(()=>{_e.current?.scrollIntoView({behavior:"smooth"})},[e2]),S(()=>{G(A.trim()?Q(A):[])},[A]);let Q=e3=>{let t2=[],n2=/\[@([^\]]+)\]|\[face:(\d+)\]|\[image:([^\]]+)\]|\[video:([^\]]+)\]|\[audio:([^\]]+)\]/g,r2=0,i2;for(;(i2=n2.exec(e3))!==null;){if(i2.index>r2){let n3=e3.substring(r2,i2.index);n3&&t2.push({type:"text",data:{text:n3}})}i2[1]?t2.push({type:"at",data:{qq:i2[1],name:i2[1]}}):i2[2]?t2.push({type:"face",data:{id:parseInt(i2[2],10)}}):i2[3]?t2.push({type:"image",data:{url:i2[3]}}):i2[4]?t2.push({type:"video",data:{url:i2[4]}}):i2[5]&&t2.push({type:"audio",data:{url:i2[5]}}),r2=n2.lastIndex}if(r2<e3.length){let n3=e3.substring(r2);n3&&t2.push({type:"text",data:{text:n3}})}return t2.length>0?t2:[{type:"text",data:{text:e3}}]},ye=e3=>e3.length===0?false:e3.some(e4=>e4.type==="text"?!!String(e4.data?.text??"").trim():true),be=(e3,i2)=>{let a2=i2?"ring-1 ring-primary-foreground/25":"ring-1 ring-border/60";return e3.map((e4,o2)=>{if(typeof e4=="string")return E("span",{children:e4.split("\n").map((t2,n2)=>D(re.Fragment,{children:[t2,n2<e4.split("\n").length-1&&E("br",{})]},n2))},o2);let s2=e4.data;switch(e4.type){case"text":return E("span",{children:String(s2.text??"").split("\n").map((e5,t2)=>D(re.Fragment,{children:[e5,t2<String(s2.text??"").split("\n").length-1&&E("br",{})]},t2))},o2);case"at":return D("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded bg-accent text-accent-foreground text-xs mx-0.5",children:["@",String(s2.name??s2.qq??"")]},o2);case"face":return E("img",{src:`https://face.viki.moe/apng/${s2.id}.png`,alt:"",className:"w-6 h-6 inline-block align-middle mx-0.5"},o2);case"image":{let e5=r(n(s2),"image");return e5?E("a",{href:e5,target:"_blank",rel:"noreferrer",className:"block my-1",children:E("img",{src:e5,alt:"",className:t("max-w-[min(320px,88vw)] rounded-lg block",a2,"ring-offset-0"),onError:e6=>{e6.target.style.display="none"}})},o2):E("span",{className:"text-xs opacity-70",children:"[图片]"},o2)}case"video":{let e5=r(n(s2),"video");return e5?E("video",{src:e5,controls:true,playsInline:true,preload:"metadata",className:t("max-w-[min(360px,92vw)] max-h-72 rounded-lg my-1 bg-black/10",a2)},o2):E("span",{className:"text-xs opacity-70",children:"[视频无地址]"},o2)}case"audio":case"record":{let e5=r(n(s2),"audio");return e5?E("audio",{src:e5,controls:true,preload:"metadata",className:t("w-full max-w-sm my-2 h-10",i2&&"opacity-95")},o2):E("span",{className:"text-xs opacity-70",children:"[音频无地址]"},o2)}case"file":return D("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded border text-xs mx-0.5",children:["📎 ",String(s2.name||"文件")]},o2);default:return D("span",{className:"text-xs opacity-70",children:["[",e4.type,"]"]},o2)}})},xe=(e3,t2)=>{if(!ye(t2))return;let n2={id:`msg_${Date.now()}`,type:"sent",channelType:O.type,channelId:O.id,channelName:O.name,senderId:"test_user",senderName:"测试用户",content:t2,timestamp:Date.now()};m2(e4=>[...e4,n2]),j(""),G([]),Z.current?.clear(),X.current?.send(JSON.stringify({type:O.type,id:O.id,content:t2,timestamp:Date.now()}))},Se=()=>{confirm("确定清空所有消息记录?")&&m2([])},Ce=e3=>{Y("chat"),k(e3),C2(t2=>t2.map(t3=>t3.id===e3.id?{...t3,unread:0}:t3)),window.innerWidth<768&&q(false)},we=()=>{let e3=["private","group","channel"],t2=e3[Math.floor(Math.random()*e3.length)],n2=prompt("请输入频道名称:");if(n2){let e4={id:`${t2}_${Date.now()}`,name:n2,type:t2,unread:0};C2(t3=>[...t3,e4]),k(e4)}},Te=e3=>{switch(e3){case"private":return E(g,{size:16});case"group":return E(v,{size:16});case"channel":return E(s,{size:16});default:return E(u,{size:16})}},Ee=e3=>{Z.current?.insertFace(e3),I(false)},De=()=>{let e3=z.trim();!e3||!L||(L==="image"?Z.current?.insertImage(e3):L==="video"?Z.current?.insertVideo(e3):Z.current?.insertAudio(e3),B(""),R(null))},Oe=e3=>{Z.current?.replaceAtTrigger(e3.name,e3.id),H(null),U("")},ke=(e3,t2,n2)=>{if(O.type==="private"){H(null),U("");return}e3&&n2?(H(n2),U(t2)):(H(null),U(""))},Ae=he.filter(e3=>{if(!de.trim())return true;let t2=de.toLowerCase();return e3.name.toLowerCase().includes(t2)||e3.id.toLowerCase().includes(t2)}),je=(e3,t2)=>{j(e3),G(t2)},Me=oe2.filter(e3=>e3.name.toLowerCase().includes(W.toLowerCase())||e3.describe.toLowerCase().includes(W.toLowerCase())),$=e2.filter(e3=>e3.channelId===O.id);return D("div",{className:"sandbox-container rounded-xl border border-border/70 bg-card/30 shadow-sm",children:[D("button",{className:"mobile-channel-toggle md:hidden",onClick:()=>q(!K),children:[E(u,{size:20})," 频道列表"]}),D("div",{className:t("channel-sidebar rounded-lg border bg-card",K&&"show"),children:[E("div",{className:"p-3 border-b",children:D("div",{className:"flex justify-between items-center",children:[D("div",{className:"flex items-center gap-2",children:[E("div",{className:"p-1 rounded-md bg-secondary",children:E(u,{size:16,className:"text-muted-foreground"})}),E("h3",{className:"font-semibold",children:"频道列表"})]}),D("span",{className:t("inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium border",N?"bg-emerald-100 text-emerald-800 border-emerald-200 dark:bg-emerald-900/30 dark:text-emerald-400 dark:border-emerald-800":"bg-muted text-muted-foreground"),children:[E(N?b:te,{size:12}),N?"已连接":"未连接"]})]})}),D("div",{className:"flex-1 overflow-y-auto p-2 space-y-1",children:[x2.map(e3=>D("div",{className:t("menu-item",J==="chat"&&O.id===e3.id&&"active"),onClick:()=>Ce(e3),children:[E("span",{className:"shrink-0",children:Te(e3.type)}),D("div",{className:"flex-1 min-w-0",children:[E("div",{className:"text-sm font-medium truncate",children:e3.name}),E("div",{className:"text-xs text-muted-foreground",children:e3.type==="private"?"私聊":e3.type==="group"?"群聊":"频道"})]}),e3.unread>0&&E("span",{className:"inline-flex items-center justify-center h-5 min-w-5 rounded-full bg-destructive text-destructive-foreground text-[10px] font-medium px-1",children:e3.unread})]},e3.id)),D("div",{className:"pt-2 mt-2 border-t space-y-1",children:[D("div",{className:t("menu-item",J==="requests"&&"active"),onClick:()=>{Y("requests"),window.innerWidth<768&&q(false)},children:[E(_,{size:16,className:"shrink-0"}),D("div",{className:"flex-1 min-w-0",children:[E("div",{className:"text-sm font-medium",children:"请求"}),E("div",{className:"text-xs text-muted-foreground",children:"好友/群邀请等"})]})]}),D("div",{className:t("menu-item",J==="notices"&&"active"),onClick:()=>{Y("notices"),window.innerWidth<768&&q(false)},children:[E(i,{size:16,className:"shrink-0"}),D("div",{className:"flex-1 min-w-0",children:[E("div",{className:"text-sm font-medium",children:"通知"}),E("div",{className:"text-xs text-muted-foreground",children:"群管/撤回等"})]})]})]})]}),E("div",{className:"p-2 border-t",children:E("button",{className:"w-full py-2 px-3 rounded-md border border-dashed text-sm text-muted-foreground hover:bg-accent transition-colors",onClick:we,children:"+ 添加频道"})})]}),K&&E("div",{className:"channel-overlay md:hidden",onClick:()=>q(false)}),D("div",{className:"chat-area",children:[J==="requests"&&D("div",{className:"rounded-lg border bg-card flex-1 flex flex-col min-h-0 overflow-hidden",children:[E("div",{className:"p-3 border-b flex-shrink-0",children:D("h2",{className:"text-lg font-bold flex items-center gap-2",children:[E(_,{size:20})," 请求"]})}),D("div",{className:"flex-1 overflow-y-auto p-4 flex flex-col items-center justify-center gap-3 text-muted-foreground text-center",children:[E(_,{size:48,className:"opacity-30"}),E("span",{children:"沙盒为模拟环境,暂无请求数据"}),D("span",{className:"text-sm",children:["实际好友/群邀请等请求请到侧边栏 ",E("strong",{children:"机器人"})," 页面进入对应机器人管理查看"]})]})]}),J==="notices"&&D("div",{className:"rounded-lg border bg-card flex-1 flex flex-col min-h-0 overflow-hidden",children:[E("div",{className:"p-3 border-b flex-shrink-0",children:D("h2",{className:"text-lg font-bold flex items-center gap-2",children:[E(i,{size:20})," 通知"]})}),D("div",{className:"flex-1 overflow-y-auto p-4 flex flex-col items-center justify-center gap-3 text-muted-foreground text-center",children:[E(i,{size:48,className:"opacity-30"}),E("span",{children:"沙盒为模拟环境,暂无通知数据"}),D("span",{className:"text-sm",children:["实际群管、撤回等通知请到侧边栏 ",E("strong",{children:"机器人"})," 页面进入对应机器人管理查看"]})]})]}),J==="chat"&&D(ie,{children:[E("div",{className:"rounded-lg border bg-card p-3 flex-shrink-0",children:D("div",{className:"flex justify-between items-center flex-wrap gap-2",children:[D("div",{className:"flex items-center gap-3",children:[E("div",{className:"p-2 rounded-lg bg-secondary",children:Te(O.type)}),D("div",{children:[E("h2",{className:"text-lg font-bold",children:O.name}),D("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[E("span",{children:O.id}),E("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded border text-[10px]",children:$.length}),E("span",{children:"条消息"})]})]}),E("span",{className:"inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-secondary text-secondary-foreground",children:O.type==="private"?"私聊":O.type==="group"?"群聊":"频道"})]}),D("div",{className:"flex items-center gap-2",children:[E("input",{value:M,onChange:e3=>ce(e3.target.value),placeholder:"机器人名称",className:"h-8 w-28 rounded-md border bg-transparent px-2 text-sm"}),D("button",{className:"inline-flex items-center gap-1 h-8 px-3 rounded-md bg-secondary text-secondary-foreground text-sm hover:bg-secondary/80",onClick:Se,children:[E(h,{size:14})," 清空"]})]})]})}),E("div",{className:"rounded-lg border bg-card flex-1 flex flex-col min-h-0",children:E("div",{className:"flex-1 overflow-y-auto p-4",children:$.length===0?D("div",{className:"flex flex-col items-center justify-center h-full gap-3",children:[E(u,{size:64,className:"text-muted-foreground/20"}),E("span",{className:"text-muted-foreground",children:"暂无消息,开始对话吧!"})]}):D("div",{className:"space-y-2",children:[$.map(e3=>E("div",{className:t("flex",e3.type==="sent"?"justify-end":"justify-start"),children:D("div",{className:t("max-w-[70%] p-3 rounded-2xl",e3.type==="sent"?"bg-primary text-primary-foreground":"bg-muted"),children:[D("div",{className:"flex items-center gap-2 mb-1",children:[e3.type==="received"&&E(a,{size:14}),e3.type==="sent"&&E(g,{size:14}),E("span",{className:"text-xs font-medium opacity-90",children:e3.senderName}),E("span",{className:"text-xs opacity-70",children:new Date(e3.timestamp).toLocaleTimeString()})]}),E("div",{className:"text-sm space-y-1",children:be(e3.content,e3.type==="sent")})]})},e3.id)),E("div",{ref:_e})]})})}),D("div",{className:"rounded-lg border bg-card p-3 flex-shrink-0 space-y-3",children:[D("div",{className:"flex gap-2 items-center flex-wrap",children:[E("button",{type:"button",className:t("h-8 w-8 rounded-md flex items-center justify-center border transition-colors",F?"bg-primary text-primary-foreground":"hover:bg-accent"),onClick:()=>{I(!F),R(null)},title:"插入表情",children:E(p,{size:16})}),E("button",{type:"button",className:t("h-8 w-8 rounded-md flex items-center justify-center border transition-colors",L==="image"?"bg-primary text-primary-foreground":"hover:bg-accent"),onClick:()=>{R(e3=>e3==="image"?null:"image"),I(false)},title:"插入图片 URL",children:E(c,{size:16})}),E("button",{type:"button",className:t("h-8 w-8 rounded-md flex items-center justify-center border transition-colors",L==="video"?"bg-primary text-primary-foreground":"hover:bg-accent"),onClick:()=>{R(e3=>e3==="video"?null:"video"),I(false)},title:"插入视频 URL",children:E(y,{size:16})}),E("button",{type:"button",className:t("h-8 w-8 rounded-md flex items-center justify-center border transition-colors",L==="audio"?"bg-primary text-primary-foreground":"hover:bg-accent"),onClick:()=>{R(e3=>e3==="audio"?null:"audio"),I(false)},title:"插入音频 URL",children:E(d,{size:16})}),E("div",{className:"flex-1 min-w-[1rem]"}),A&&E("button",{className:"h-8 w-8 rounded-md flex items-center justify-center hover:bg-accent transition-colors",onClick:()=>{j(""),G([])},children:E(ne,{size:16})})]}),F&&D("div",{className:"p-3 rounded-md border bg-muted/30 max-h-64 overflow-y-auto space-y-2",children:[E("input",{value:W,onChange:e3=>fe(e3.target.value),placeholder:"搜索表情...",className:"w-full h-8 rounded-md border bg-transparent px-2 text-sm"}),E("div",{className:"grid grid-cols-8 gap-1",children:Me.slice(0,80).map(e3=>E("button",{onClick:()=>Ee(e3.id),title:e3.name,className:"w-10 h-10 rounded-md border flex items-center justify-center hover:bg-accent transition-colors",children:E("img",{src:`https://face.viki.moe/apng/${e3.id}.png`,alt:e3.name,className:"w-8 h-8"})},e3.id))}),Me.length===0&&D("div",{className:"flex flex-col items-center gap-2 py-4",children:[E(f,{size:32,className:"text-muted-foreground/30"}),E("span",{className:"text-sm text-muted-foreground",children:"未找到匹配的表情"})]})]}),L&&D("div",{className:"p-3 rounded-md border bg-muted/30 space-y-2",children:[D("p",{className:"text-xs text-muted-foreground",children:[L==="image"&&"支持 http(s) 图片链接或 data URL",L==="video"&&"支持浏览器可解码的视频直链(如 .mp4、.webm)",L==="audio"&&"支持 .mp3、.ogg、.wav 等音频直链"]}),E("input",{value:z,onChange:e3=>B(e3.target.value),placeholder:L==="image"?"图片 URL…":L==="video"?"视频 URL…":"音频 URL…",className:"w-full h-8 rounded-md border border-input bg-background px-2 text-sm",onKeyDown:e3=>{e3.key==="Enter"&&(e3.preventDefault(),De())}}),D("button",{type:"button",className:"inline-flex items-center gap-1 h-8 px-3 rounded-md bg-primary text-primary-foreground text-sm disabled:opacity-50",onClick:De,disabled:!z.trim(),children:[E(o,{size:14})," 插入到输入框"]})]}),D("div",{className:"flex gap-2 items-start",children:[D("div",{className:"flex-1 relative",children:[E(ae,{ref:Z,placeholder:`向 ${O.name} 发送消息...`,onSend:xe,onChange:je,onAtTrigger:ke,minHeight:"44px",maxHeight:"200px"}),V&&E("div",{className:"absolute z-50 rounded-lg border bg-popover shadow-md min-w-60 max-h-72 overflow-y-auto p-1",style:{top:`${V.top}px`,left:`${V.left}px`},children:Ae.length>0?Ae.map(e3=>D("div",{className:"flex items-center gap-2 p-2 rounded-md cursor-pointer hover:bg-accent transition-colors",onClick:()=>Oe(e3),children:[E(g,{size:16,className:"text-muted-foreground"}),D("div",{className:"flex-1",children:[E("div",{className:"text-sm font-medium",children:e3.name}),D("div",{className:"text-xs text-muted-foreground",children:["ID: ",e3.id]})]})]},e3.id)):D("div",{className:"flex flex-col items-center gap-2 p-4",children:[E(f,{size:20,className:"text-muted-foreground/50"}),E("span",{className:"text-xs text-muted-foreground",children:"未找到匹配的用户"})]})})]}),D("button",{className:"inline-flex items-center gap-1.5 h-10 px-4 rounded-md bg-primary text-primary-foreground text-sm font-medium disabled:opacity-50 transition-colors hover:bg-primary/90",onClick:()=>{let e3=Z.current?.getContent();e3&&xe(e3.text,e3.segments)},disabled:!ye(ge),children:[E(ee,{size:16})," 发送"]})]}),D("div",{className:"flex items-center gap-2 flex-wrap text-xs text-muted-foreground",children:[E(l,{size:12})," 快捷操作:",E("span",{className:"px-1 py-0.5 rounded border text-[10px]",children:"Enter"})," 发送",E("span",{className:"px-1 py-0.5 rounded border text-[10px]",children:"Shift+Enter"})," 换行",E("span",{className:"px-1 py-0.5 rounded border text-[10px]",children:"[@名称]"})," @某人",E("span",{className:"px-1 py-0.5 rounded border text-[10px]",children:"[video:URL]"}),E("span",{className:"px-1 py-0.5 rounded border text-[10px]",children:"[audio:URL]"})]})]})]})]})]})}e({key:"process-sandbox",path:"/sandbox",title:"沙盒",icon:E(m,{className:"w-5 h-5"}),element:E(oe,{})});
|
|
1
|
+
import Ve,{useState as C,useEffect as Ie,useRef as we}from"react";import{cn as M,resolveMediaSrc as Pe,pickMediaRawUrl as ye}from"@zhin.js/client";import{forwardRef as da,createElement as ua}from"react";var Le=(...m)=>m.filter((L,h,x)=>!!L&&L.trim()!==""&&x.indexOf(L)===h).join(" ").trim();var Te=m=>m.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();var qe=m=>m.replace(/^([A-Z])|[\s-_]+(\w)/g,(L,h,x)=>x?x.toUpperCase():h.toLowerCase());var ke=m=>{let L=qe(m);return L.charAt(0).toUpperCase()+L.slice(1)};import{forwardRef as oa,createElement as Oe}from"react";var xe={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Ue=m=>{for(let L in m)if(L.startsWith("aria-")||L==="role"||L==="title")return!0;return!1};import{createContext as ea,useContext as aa,useMemo as Oa,createElement as Na}from"react";var ta=ea({});var He=()=>aa(ta);var Ne=oa(({color:m,size:L,strokeWidth:h,absoluteStrokeWidth:x,className:N="",children:D,iconNode:g,...p},w)=>{let{size:F=24,strokeWidth:b=2,absoluteStrokeWidth:K=!1,color:E="currentColor",className:Z=""}=He()??{},H=x??K?Number(h??b)*24/Number(L??F):h??b;return Oe("svg",{ref:w,...xe,width:L??F??xe.width,height:L??F??xe.height,stroke:m??E,strokeWidth:H,className:Le("lucide",Z,N),...!D&&!Ue(p)&&{"aria-hidden":"true"},...p},[...g.map(([B,P])=>Oe(B,P)),...Array.isArray(D)?D:[D]])});var r=(m,L)=>{let h=da(({className:x,...N},D)=>ua(Ne,{ref:D,iconNode:L,className:Le(`lucide-${Te(ke(m))}`,`lucide-${m}`,x),...N}));return h.displayName=ke(m),h};var la=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]],V=r("bell",la);var sa=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],ee=r("bot",sa);var ra=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],ae=r("check",ra);var fa=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],te=r("hash",fa);var ia=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],oe=r("image",ia);var ca=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],de=r("info",ca);var na=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],O=r("message-square",na);var pa=[["path",{d:"M9 18V5l12-2v13",key:"1jmyc2"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["circle",{cx:"18",cy:"16",r:"3",key:"1hluhg"}]],ue=r("music",pa);var ma=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],j=r("search",ma);var La=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],le=r("send",La);var xa=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]],se=r("smile",xa);var Ia=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],re=r("trash-2",Ia);var Ca=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]],z=r("user-plus",Ca);var ga=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],X=r("user",ga);var ha=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],fe=r("users",ha);var Sa=[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5",key:"ftymec"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2",key:"158x01"}]],ie=r("video",Sa);var ka=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],ce=r("wifi-off",ka);var wa=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]],ne=r("wifi",wa);var Pa=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],pe=r("x",Pa);import{useRef as Ee,forwardRef as ya,useImperativeHandle as Aa}from"react";import{jsx as Ma}from"react/jsx-runtime";var Ge=ya(({placeholder:m="\u8F93\u5165\u6D88\u606F...",onSend:L,onChange:h,onAtTrigger:x,minHeight:N="44px",maxHeight:D="200px"},g)=>{let p=Ee(null),w=Ee(null),F=()=>{if(!p.current)return{text:"",segments:[]};let d="",t=[],u=Array.from(p.current.childNodes);for(let c of u)if(c.nodeType===Node.TEXT_NODE){let l=c.textContent||"";l&&(d+=l,t.push({type:"text",data:{text:l}}))}else if(c.nodeType===Node.ELEMENT_NODE){let l=c;if(l.classList.contains("editor-face")){let n=l.dataset.id;d+=`[face:${n}]`,t.push({type:"face",data:{id:Number(n)}})}else if(l.classList.contains("editor-image")){let n=l.dataset.url;d+=`[image:${n}]`,t.push({type:"image",data:{url:n}})}else if(l.classList.contains("editor-video")){let n=l.dataset.url||"";d+=`[video:${n}]`,t.push({type:"video",data:{url:n}})}else if(l.classList.contains("editor-audio")){let n=l.dataset.url||"";d+=`[audio:${n}]`,t.push({type:"audio",data:{url:n}})}else if(l.classList.contains("editor-at")){let n=l.dataset.name,A=l.dataset.id;d+=`[@${n}]`,t.push({type:"at",data:{name:n,qq:A}})}else l.tagName==="BR"&&(d+=`
|
|
2
|
+
`)}return{text:d,segments:t}},b=d=>{if(!p.current)return;let t=document.createElement("img");t.src=`https://face.viki.moe/apng/${d}.png`,t.alt=`[face:${d}]`,t.dataset.type="face",t.dataset.id=String(d),t.className="editor-face",B(t),v()},K=d=>{if(!p.current||!d.trim())return;let t=document.createElement("img");t.src=d.trim(),t.alt=`[image:${d.trim()}]`,t.dataset.type="image",t.dataset.url=d.trim(),t.className="editor-image",B(t),v()},E=d=>{if(!p.current||!d.trim())return;let t=d.trim(),u=document.createElement("span");u.className="editor-video",u.dataset.url=t,u.contentEditable="false",u.textContent="\u{1F4F9} \u89C6\u9891",B(u),v()},Z=d=>{if(!p.current||!d.trim())return;let t=d.trim(),u=document.createElement("span");u.className="editor-audio",u.dataset.url=t,u.contentEditable="false",u.textContent="\u{1F3B5} \u97F3\u9891",B(u),v()},H=(d,t)=>{if(!p.current||!d.trim())return;let u=document.createElement("span");u.dataset.type="at",u.dataset.name=d,t&&(u.dataset.id=t),u.className="editor-at",u.contentEditable="false";let c=document.createElement("span");c.textContent="@",c.className="editor-at-symbol";let l=document.createElement("span");l.textContent=d,l.className="editor-at-name",u.appendChild(c),u.appendChild(l),B(u),v()},B=d=>{if(!p.current)return;p.current.focus();let t=window.getSelection();if(t&&t.rangeCount>0){let u=t.getRangeAt(0);if(p.current.contains(u.commonAncestorContainer))u.deleteContents(),u.insertNode(d),u.collapse(!1),t.removeAllRanges(),t.addRange(u);else{p.current.appendChild(d);let l=document.createRange();l.setStartAfter(d),l.collapse(!0),t.removeAllRanges(),t.addRange(l)}}else{p.current.appendChild(d);let u=window.getSelection();if(u){let c=document.createRange();c.setStartAfter(d),c.collapse(!0),u.removeAllRanges(),u.addRange(c)}}},P=()=>{p.current&&(p.current.innerHTML="",v())},G=()=>{p.current?.focus()},$=()=>F(),me=()=>{if(!p.current||!x)return;let d=window.getSelection();if(!d||d.rangeCount===0){x(!1,""),w.current=null;return}let t=d.getRangeAt(0);if(!p.current.contains(t.commonAncestorContainer)){x(!1,""),w.current=null;return}let u=t.startContainer;if(u.nodeType!==Node.TEXT_NODE){x(!1,""),w.current=null;return}let c=u,l=c.textContent?.substring(0,t.startOffset)||"",n=l.lastIndexOf("@");if(n!==-1){let A=l.substring(n+1);if(A.includes(" ")||A.includes(`
|
|
3
|
+
`)){x(!1,""),w.current=null;return}w.current=c;let W=document.createRange();W.setStart(c,n),W.setEnd(c,n+1);let T=W.getBoundingClientRect(),R=p.current.getBoundingClientRect();x(!0,A,{top:T.bottom-R.top,left:T.left-R.left})}else x(!1,""),w.current=null},v=()=>{if(me(),h){let{text:d,segments:t}=F();h(d,t)}},Ce=(d,t)=>{if(!w.current)return;let u=w.current,c=u.textContent||"",l=c.lastIndexOf("@");if(l!==-1){let n=c.substring(l+1),A=l+1+n.split(/[\s\n]/)[0].length,W=c.substring(0,l),T=c.substring(A);u.textContent=W+T;let R=window.getSelection();if(R){let q=document.createRange();q.setStart(u,l),q.collapse(!0),R.removeAllRanges(),R.addRange(q)}}w.current=null,H(d,t)},Y=d=>{d.preventDefault();let t=d.clipboardData,c=Array.from(t.items).find(n=>n.type.startsWith("image/"));if(c){let n=c.getAsFile();if(n){let A=new FileReader;A.onload=()=>{typeof A.result=="string"&&K(A.result)},A.readAsDataURL(n)}return}let l=t.getData("text/plain");l&&(document.execCommand("insertText",!1,l),v())},Q=d=>{if(d.key==="Enter"&&!d.shiftKey&&(d.preventDefault(),L)){let{text:t,segments:u}=F();L(t,u)}};return Aa(g,()=>({focus:G,clear:P,insertFace:b,insertImage:K,insertVideo:E,insertAudio:Z,insertAt:H,replaceAtTrigger:Ce,getContent:$})),Ma("div",{ref:p,contentEditable:!0,suppressContentEditableWarning:!0,onInput:v,onKeyDown:Q,onPaste:Y,"data-placeholder":m,className:"rich-text-editor",style:{width:"100%",minHeight:N,maxHeight:D,padding:"0.5rem 0.75rem",border:"1px solid var(--gray-6)",borderRadius:"6px",backgroundColor:"var(--gray-1)",fontSize:"var(--font-size-2)",outline:"none",overflowY:"auto",lineHeight:"1.5",wordWrap:"break-word",color:"var(--gray-12)"}})});Ge.displayName="RichTextEditor";var We=Ge;import{Fragment as Ba,jsx as e,jsxs as o}from"react/jsx-runtime";function Ae(){let[m,L]=C([]),[h,x]=C([{id:"user_1001",name:"\u6D4B\u8BD5\u7528\u6237",type:"private",unread:0},{id:"group_2001",name:"\u6D4B\u8BD5\u7FA4\u7EC4",type:"group",unread:0},{id:"channel_3001",name:"\u6D4B\u8BD5\u9891\u9053",type:"channel",unread:0}]),[N,D]=C([]),[g,p]=C(h[0]),[w,F]=C(""),[b,K]=C("ProcessBot"),[E,Z]=C(!1),[H,B]=C(!1),[P,G]=C(null),[$,me]=C(""),[v,Ce]=C(!1),[Y,Q]=C(null),[d,t]=C(""),[u,c]=C(""),[l,n]=C(""),[A]=C([{id:"10001",name:"\u5F20\u4E09"},{id:"10002",name:"\u674E\u56DB"},{id:"10003",name:"\u738B\u4E94"},{id:"10004",name:"\u8D75\u516D"},{id:"10005",name:"\u6D4B\u8BD5\u7528\u6237"},{id:"10086",name:"Admin"},{id:"10010",name:"Test User"}]),[W,T]=C([]),[R,q]=C(!1),[_,ge]=C("chat"),Me=we(null),J=we(null),U=we(null),ze=async()=>{try{let a=await fetch("https://face.viki.moe/metadata.json");D(await a.json())}catch(a){console.error("[Sandbox] Failed to fetch face list:",a)}};Ie(()=>{ze()},[]),Ie(()=>{let a=window.location.protocol==="https:"?"wss:":"ws:";return J.current=new WebSocket(`${a}//${window.location.host}/sandbox`),J.current.onopen=()=>Z(!0),J.current.onmessage=f=>{try{let s=JSON.parse(f.data),I=typeof s.content=="string"?he(s.content):Array.isArray(s.content)?s.content:he(String(s.content)),i=h.find(y=>y.id===s.id);if(!i){let y=s.type==="private"?`\u79C1\u804A-${s.bot||b}`:s.type==="group"?`\u7FA4\u7EC4-${s.id}`:`\u9891\u9053-${s.id}`;i={id:s.id,name:y,type:s.type,unread:0},x(k=>[...k,i]),p(i)}let S={id:`bot_${s.timestamp}`,type:"received",channelType:s.type,channelId:s.id,channelName:i.name,senderId:"bot",senderName:s.bot||b,content:I,timestamp:s.timestamp};L(y=>[...y,S])}catch(s){console.error("[Sandbox] Failed to parse message:",s)}},J.current.onclose=()=>Z(!1),()=>{J.current?.close()}},[b,h]),Ie(()=>{Me.current?.scrollIntoView({behavior:"smooth"})},[m]),Ie(()=>{T(w.trim()?he(w):[])},[w]);let he=a=>{let f=[],s=/\[@([^\]]+)\]|\[face:(\d+)\]|\[image:([^\]]+)\]|\[video:([^\]]+)\]|\[audio:([^\]]+)\]/g,I=0,i;for(;(i=s.exec(a))!==null;){if(i.index>I){let S=a.substring(I,i.index);S&&f.push({type:"text",data:{text:S}})}i[1]?f.push({type:"at",data:{qq:i[1],name:i[1]}}):i[2]?f.push({type:"face",data:{id:parseInt(i[2],10)}}):i[3]?f.push({type:"image",data:{url:i[3]}}):i[4]?f.push({type:"video",data:{url:i[4]}}):i[5]&&f.push({type:"audio",data:{url:i[5]}}),I=s.lastIndex}if(I<a.length){let S=a.substring(I);S&&f.push({type:"text",data:{text:S}})}return f.length>0?f:[{type:"text",data:{text:a}}]},Be=a=>a.length===0?!1:a.some(f=>f.type==="text"?!!String(f.data?.text??"").trim():!0),Xe=(a,f)=>{let s=f?"ring-1 ring-primary-foreground/25":"ring-1 ring-border/60";return a.map((I,i)=>{if(typeof I=="string")return e("span",{children:I.split(`
|
|
4
|
+
`).map((y,k)=>o(Ve.Fragment,{children:[y,k<I.split(`
|
|
5
|
+
`).length-1&&e("br",{})]},k))},i);let S=I.data;switch(I.type){case"text":return e("span",{children:String(S.text??"").split(`
|
|
6
|
+
`).map((y,k)=>o(Ve.Fragment,{children:[y,k<String(S.text??"").split(`
|
|
7
|
+
`).length-1&&e("br",{})]},k))},i);case"at":return o("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded bg-accent text-accent-foreground text-xs mx-0.5",children:["@",String(S.name??S.qq??"")]},i);case"face":return e("img",{src:`https://face.viki.moe/apng/${S.id}.png`,alt:"",className:"w-6 h-6 inline-block align-middle mx-0.5"},i);case"image":{let y=ye(S),k=Pe(y,"image");return k?e("a",{href:k,target:"_blank",rel:"noreferrer",className:"block my-1",children:e("img",{src:k,alt:"",className:M("max-w-[min(320px,88vw)] rounded-lg block",s,"ring-offset-0"),onError:Ye=>{Ye.target.style.display="none"}})},i):e("span",{className:"text-xs opacity-70",children:"[\u56FE\u7247]"},i)}case"video":{let y=ye(S),k=Pe(y,"video");return k?e("video",{src:k,controls:!0,playsInline:!0,preload:"metadata",className:M("max-w-[min(360px,92vw)] max-h-72 rounded-lg my-1 bg-black/10",s)},i):e("span",{className:"text-xs opacity-70",children:"[\u89C6\u9891\u65E0\u5730\u5740]"},i)}case"audio":case"record":{let y=ye(S),k=Pe(y,"audio");return k?e("audio",{src:k,controls:!0,preload:"metadata",className:M("w-full max-w-sm my-2 h-10",f&&"opacity-95")},i):e("span",{className:"text-xs opacity-70",children:"[\u97F3\u9891\u65E0\u5730\u5740]"},i)}case"file":return o("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded border text-xs mx-0.5",children:["\u{1F4CE} ",String(S.name||"\u6587\u4EF6")]},i);default:return o("span",{className:"text-xs opacity-70",children:["[",I.type,"]"]},i)}})},Fe=(a,f)=>{if(!Be(f))return;let s={id:`msg_${Date.now()}`,type:"sent",channelType:g.type,channelId:g.id,channelName:g.name,senderId:"test_user",senderName:"\u6D4B\u8BD5\u7528\u6237",content:f,timestamp:Date.now()};L(I=>[...I,s]),F(""),T([]),U.current?.clear(),J.current?.send(JSON.stringify({type:g.type,id:g.id,content:f,timestamp:Date.now()}))},Ke=()=>{confirm("\u786E\u5B9A\u6E05\u7A7A\u6240\u6709\u6D88\u606F\u8BB0\u5F55\uFF1F")&&L([])},Ze=a=>{ge("chat"),p(a),x(f=>f.map(s=>s.id===a.id?{...s,unread:0}:s)),window.innerWidth<768&&q(!1)},Qe=()=>{let a=["private","group","channel"],f=a[Math.floor(Math.random()*a.length)],s=prompt("\u8BF7\u8F93\u5165\u9891\u9053\u540D\u79F0\uFF1A");if(s){let I={id:`${f}_${Date.now()}`,name:s,type:f,unread:0};x(i=>[...i,I]),p(I)}},De=a=>{switch(a){case"private":return e(X,{size:16});case"group":return e(fe,{size:16});case"channel":return e(te,{size:16});default:return e(O,{size:16})}},_e=a=>{U.current?.insertFace(a),B(!1)},Re=()=>{let a=$.trim();!a||!P||(P==="image"?U.current?.insertImage(a):P==="video"?U.current?.insertVideo(a):U.current?.insertAudio(a),me(""),G(null))},Fa=()=>{l.trim()&&(U.current?.insertAt(l.trim()),n(""),Ce(!1))},Je=a=>{U.current?.replaceAtTrigger(a.name,a.id),Q(null),t("")},je=(a,f,s)=>{if(g.type==="private"){Q(null),t("");return}a&&s?(Q(s),t(f)):(Q(null),t(""))},be=A.filter(a=>{if(!d.trim())return!0;let f=d.toLowerCase();return a.name.toLowerCase().includes(f)||a.id.toLowerCase().includes(f)}),$e=(a,f)=>{F(a),T(f)},ve=N.filter(a=>a.name.toLowerCase().includes(u.toLowerCase())||a.describe.toLowerCase().includes(u.toLowerCase())),Se=m.filter(a=>a.channelId===g.id);return o("div",{className:"sandbox-container rounded-xl border border-border/70 bg-card/30 shadow-sm",children:[o("button",{className:"mobile-channel-toggle md:hidden",onClick:()=>q(!R),children:[e(O,{size:20})," \u9891\u9053\u5217\u8868"]}),o("div",{className:M("channel-sidebar rounded-lg border bg-card",R&&"show"),children:[e("div",{className:"p-3 border-b",children:o("div",{className:"flex justify-between items-center",children:[o("div",{className:"flex items-center gap-2",children:[e("div",{className:"p-1 rounded-md bg-secondary",children:e(O,{size:16,className:"text-muted-foreground"})}),e("h3",{className:"font-semibold",children:"\u9891\u9053\u5217\u8868"})]}),o("span",{className:M("inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium border",E?"bg-emerald-100 text-emerald-800 border-emerald-200 dark:bg-emerald-900/30 dark:text-emerald-400 dark:border-emerald-800":"bg-muted text-muted-foreground"),children:[E?e(ne,{size:12}):e(ce,{size:12}),E?"\u5DF2\u8FDE\u63A5":"\u672A\u8FDE\u63A5"]})]})}),o("div",{className:"flex-1 overflow-y-auto p-2 space-y-1",children:[h.map(a=>{let f=_==="chat"&&g.id===a.id;return o("div",{className:M("menu-item",f&&"active"),onClick:()=>Ze(a),children:[e("span",{className:"shrink-0",children:De(a.type)}),o("div",{className:"flex-1 min-w-0",children:[e("div",{className:"text-sm font-medium truncate",children:a.name}),e("div",{className:"text-xs text-muted-foreground",children:a.type==="private"?"\u79C1\u804A":a.type==="group"?"\u7FA4\u804A":"\u9891\u9053"})]}),a.unread>0&&e("span",{className:"inline-flex items-center justify-center h-5 min-w-5 rounded-full bg-destructive text-destructive-foreground text-[10px] font-medium px-1",children:a.unread})]},a.id)}),o("div",{className:"pt-2 mt-2 border-t space-y-1",children:[o("div",{className:M("menu-item",_==="requests"&&"active"),onClick:()=>{ge("requests"),window.innerWidth<768&&q(!1)},children:[e(z,{size:16,className:"shrink-0"}),o("div",{className:"flex-1 min-w-0",children:[e("div",{className:"text-sm font-medium",children:"\u8BF7\u6C42"}),e("div",{className:"text-xs text-muted-foreground",children:"\u597D\u53CB/\u7FA4\u9080\u8BF7\u7B49"})]})]}),o("div",{className:M("menu-item",_==="notices"&&"active"),onClick:()=>{ge("notices"),window.innerWidth<768&&q(!1)},children:[e(V,{size:16,className:"shrink-0"}),o("div",{className:"flex-1 min-w-0",children:[e("div",{className:"text-sm font-medium",children:"\u901A\u77E5"}),e("div",{className:"text-xs text-muted-foreground",children:"\u7FA4\u7BA1/\u64A4\u56DE\u7B49"})]})]})]})]}),e("div",{className:"p-2 border-t",children:e("button",{className:"w-full py-2 px-3 rounded-md border border-dashed text-sm text-muted-foreground hover:bg-accent transition-colors",onClick:Qe,children:"+ \u6DFB\u52A0\u9891\u9053"})})]}),R&&e("div",{className:"channel-overlay md:hidden",onClick:()=>q(!1)}),o("div",{className:"chat-area",children:[_==="requests"&&o("div",{className:"rounded-lg border bg-card flex-1 flex flex-col min-h-0 overflow-hidden",children:[e("div",{className:"p-3 border-b flex-shrink-0",children:o("h2",{className:"text-lg font-bold flex items-center gap-2",children:[e(z,{size:20})," \u8BF7\u6C42"]})}),o("div",{className:"flex-1 overflow-y-auto p-4 flex flex-col items-center justify-center gap-3 text-muted-foreground text-center",children:[e(z,{size:48,className:"opacity-30"}),e("span",{children:"\u6C99\u76D2\u4E3A\u6A21\u62DF\u73AF\u5883\uFF0C\u6682\u65E0\u8BF7\u6C42\u6570\u636E"}),o("span",{className:"text-sm",children:["\u5B9E\u9645\u597D\u53CB/\u7FA4\u9080\u8BF7\u7B49\u8BF7\u6C42\u8BF7\u5230\u4FA7\u8FB9\u680F ",e("strong",{children:"\u673A\u5668\u4EBA"})," \u9875\u9762\u8FDB\u5165\u5BF9\u5E94\u673A\u5668\u4EBA\u7BA1\u7406\u67E5\u770B"]})]})]}),_==="notices"&&o("div",{className:"rounded-lg border bg-card flex-1 flex flex-col min-h-0 overflow-hidden",children:[e("div",{className:"p-3 border-b flex-shrink-0",children:o("h2",{className:"text-lg font-bold flex items-center gap-2",children:[e(V,{size:20})," \u901A\u77E5"]})}),o("div",{className:"flex-1 overflow-y-auto p-4 flex flex-col items-center justify-center gap-3 text-muted-foreground text-center",children:[e(V,{size:48,className:"opacity-30"}),e("span",{children:"\u6C99\u76D2\u4E3A\u6A21\u62DF\u73AF\u5883\uFF0C\u6682\u65E0\u901A\u77E5\u6570\u636E"}),o("span",{className:"text-sm",children:["\u5B9E\u9645\u7FA4\u7BA1\u3001\u64A4\u56DE\u7B49\u901A\u77E5\u8BF7\u5230\u4FA7\u8FB9\u680F ",e("strong",{children:"\u673A\u5668\u4EBA"})," \u9875\u9762\u8FDB\u5165\u5BF9\u5E94\u673A\u5668\u4EBA\u7BA1\u7406\u67E5\u770B"]})]})]}),_==="chat"&&o(Ba,{children:[e("div",{className:"rounded-lg border bg-card p-3 flex-shrink-0",children:o("div",{className:"flex justify-between items-center flex-wrap gap-2",children:[o("div",{className:"flex items-center gap-3",children:[e("div",{className:"p-2 rounded-lg bg-secondary",children:De(g.type)}),o("div",{children:[e("h2",{className:"text-lg font-bold",children:g.name}),o("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[e("span",{children:g.id}),e("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded border text-[10px]",children:Se.length}),e("span",{children:"\u6761\u6D88\u606F"})]})]}),e("span",{className:"inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-secondary text-secondary-foreground",children:g.type==="private"?"\u79C1\u804A":g.type==="group"?"\u7FA4\u804A":"\u9891\u9053"})]}),o("div",{className:"flex items-center gap-2",children:[e("input",{value:b,onChange:a=>K(a.target.value),placeholder:"\u673A\u5668\u4EBA\u540D\u79F0",className:"h-8 w-28 rounded-md border bg-transparent px-2 text-sm"}),o("button",{className:"inline-flex items-center gap-1 h-8 px-3 rounded-md bg-secondary text-secondary-foreground text-sm hover:bg-secondary/80",onClick:Ke,children:[e(re,{size:14})," \u6E05\u7A7A"]})]})]})}),e("div",{className:"rounded-lg border bg-card flex-1 flex flex-col min-h-0",children:e("div",{className:"flex-1 overflow-y-auto p-4",children:Se.length===0?o("div",{className:"flex flex-col items-center justify-center h-full gap-3",children:[e(O,{size:64,className:"text-muted-foreground/20"}),e("span",{className:"text-muted-foreground",children:"\u6682\u65E0\u6D88\u606F\uFF0C\u5F00\u59CB\u5BF9\u8BDD\u5427\uFF01"})]}):o("div",{className:"space-y-2",children:[Se.map(a=>e("div",{className:M("flex",a.type==="sent"?"justify-end":"justify-start"),children:o("div",{className:M("max-w-[70%] p-3 rounded-2xl",a.type==="sent"?"bg-primary text-primary-foreground":"bg-muted"),children:[o("div",{className:"flex items-center gap-2 mb-1",children:[a.type==="received"&&e(ee,{size:14}),a.type==="sent"&&e(X,{size:14}),e("span",{className:"text-xs font-medium opacity-90",children:a.senderName}),e("span",{className:"text-xs opacity-70",children:new Date(a.timestamp).toLocaleTimeString()})]}),e("div",{className:"text-sm space-y-1",children:Xe(a.content,a.type==="sent")})]})},a.id)),e("div",{ref:Me})]})})}),o("div",{className:"rounded-lg border bg-card p-3 flex-shrink-0 space-y-3",children:[o("div",{className:"flex gap-2 items-center flex-wrap",children:[e("button",{type:"button",className:M("h-8 w-8 rounded-md flex items-center justify-center border transition-colors",H?"bg-primary text-primary-foreground":"hover:bg-accent"),onClick:()=>{B(!H),G(null)},title:"\u63D2\u5165\u8868\u60C5",children:e(se,{size:16})}),e("button",{type:"button",className:M("h-8 w-8 rounded-md flex items-center justify-center border transition-colors",P==="image"?"bg-primary text-primary-foreground":"hover:bg-accent"),onClick:()=>{G(a=>a==="image"?null:"image"),B(!1)},title:"\u63D2\u5165\u56FE\u7247 URL",children:e(oe,{size:16})}),e("button",{type:"button",className:M("h-8 w-8 rounded-md flex items-center justify-center border transition-colors",P==="video"?"bg-primary text-primary-foreground":"hover:bg-accent"),onClick:()=>{G(a=>a==="video"?null:"video"),B(!1)},title:"\u63D2\u5165\u89C6\u9891 URL",children:e(ie,{size:16})}),e("button",{type:"button",className:M("h-8 w-8 rounded-md flex items-center justify-center border transition-colors",P==="audio"?"bg-primary text-primary-foreground":"hover:bg-accent"),onClick:()=>{G(a=>a==="audio"?null:"audio"),B(!1)},title:"\u63D2\u5165\u97F3\u9891 URL",children:e(ue,{size:16})}),e("div",{className:"flex-1 min-w-[1rem]"}),w&&e("button",{className:"h-8 w-8 rounded-md flex items-center justify-center hover:bg-accent transition-colors",onClick:()=>{F(""),T([])},children:e(pe,{size:16})})]}),H&&o("div",{className:"p-3 rounded-md border bg-muted/30 max-h-64 overflow-y-auto space-y-2",children:[e("input",{value:u,onChange:a=>c(a.target.value),placeholder:"\u641C\u7D22\u8868\u60C5...",className:"w-full h-8 rounded-md border bg-transparent px-2 text-sm"}),e("div",{className:"grid grid-cols-8 gap-1",children:ve.slice(0,80).map(a=>e("button",{onClick:()=>_e(a.id),title:a.name,className:"w-10 h-10 rounded-md border flex items-center justify-center hover:bg-accent transition-colors",children:e("img",{src:`https://face.viki.moe/apng/${a.id}.png`,alt:a.name,className:"w-8 h-8"})},a.id))}),ve.length===0&&o("div",{className:"flex flex-col items-center gap-2 py-4",children:[e(j,{size:32,className:"text-muted-foreground/30"}),e("span",{className:"text-sm text-muted-foreground",children:"\u672A\u627E\u5230\u5339\u914D\u7684\u8868\u60C5"})]})]}),P&&o("div",{className:"p-3 rounded-md border bg-muted/30 space-y-2",children:[o("p",{className:"text-xs text-muted-foreground",children:[P==="image"&&"\u652F\u6301 http(s) \u56FE\u7247\u94FE\u63A5\u6216 data URL",P==="video"&&"\u652F\u6301\u6D4F\u89C8\u5668\u53EF\u89E3\u7801\u7684\u89C6\u9891\u76F4\u94FE\uFF08\u5982 .mp4\u3001.webm\uFF09",P==="audio"&&"\u652F\u6301 .mp3\u3001.ogg\u3001.wav \u7B49\u97F3\u9891\u76F4\u94FE"]}),e("input",{value:$,onChange:a=>me(a.target.value),placeholder:P==="image"?"\u56FE\u7247 URL\u2026":P==="video"?"\u89C6\u9891 URL\u2026":"\u97F3\u9891 URL\u2026",className:"w-full h-8 rounded-md border border-input bg-background px-2 text-sm",onKeyDown:a=>{a.key==="Enter"&&(a.preventDefault(),Re())}}),o("button",{type:"button",className:"inline-flex items-center gap-1 h-8 px-3 rounded-md bg-primary text-primary-foreground text-sm disabled:opacity-50",onClick:Re,disabled:!$.trim(),children:[e(ae,{size:14})," \u63D2\u5165\u5230\u8F93\u5165\u6846"]})]}),o("div",{className:"flex gap-2 items-start",children:[o("div",{className:"flex-1 relative",children:[e(We,{ref:U,placeholder:`\u5411 ${g.name} \u53D1\u9001\u6D88\u606F...`,onSend:Fe,onChange:$e,onAtTrigger:je,minHeight:"44px",maxHeight:"200px"}),Y&&e("div",{className:"absolute z-50 rounded-lg border bg-popover shadow-md min-w-60 max-h-72 overflow-y-auto p-1",style:{top:`${Y.top}px`,left:`${Y.left}px`},children:be.length>0?be.map(a=>o("div",{className:"flex items-center gap-2 p-2 rounded-md cursor-pointer hover:bg-accent transition-colors",onClick:()=>Je(a),children:[e(X,{size:16,className:"text-muted-foreground"}),o("div",{className:"flex-1",children:[e("div",{className:"text-sm font-medium",children:a.name}),o("div",{className:"text-xs text-muted-foreground",children:["ID: ",a.id]})]})]},a.id)):o("div",{className:"flex flex-col items-center gap-2 p-4",children:[e(j,{size:20,className:"text-muted-foreground/50"}),e("span",{className:"text-xs text-muted-foreground",children:"\u672A\u627E\u5230\u5339\u914D\u7684\u7528\u6237"})]})})]}),o("button",{className:"inline-flex items-center gap-1.5 h-10 px-4 rounded-md bg-primary text-primary-foreground text-sm font-medium disabled:opacity-50 transition-colors hover:bg-primary/90",onClick:()=>{let a=U.current?.getContent();a&&Fe(a.text,a.segments)},disabled:!Be(W),children:[e(le,{size:16})," \u53D1\u9001"]})]}),o("div",{className:"flex items-center gap-2 flex-wrap text-xs text-muted-foreground",children:[e(de,{size:12})," \u5FEB\u6377\u64CD\u4F5C:",e("span",{className:"px-1 py-0.5 rounded border text-[10px]",children:"Enter"})," \u53D1\u9001",e("span",{className:"px-1 py-0.5 rounded border text-[10px]",children:"Shift+Enter"})," \u6362\u884C",e("span",{className:"px-1 py-0.5 rounded border text-[10px]",children:"[@\u540D\u79F0]"})," @\u67D0\u4EBA",e("span",{className:"px-1 py-0.5 rounded border text-[10px]",children:"[video:URL]"}),e("span",{className:"px-1 py-0.5 rounded border text-[10px]",children:"[audio:URL]"})]})]})]})]})]})}function Io(m){m.addRoute({path:"/console/sandbox",name:"\u6C99\u76D2",element:m.React.createElement(Ae,{hostReact:m.React})}),m.addTool({id:"sandbox",name:"\u6C99\u76D2",path:"/console/sandbox"})}export{Io as register};
|
|
8
|
+
/*! Bundled license information:
|
|
9
|
+
|
|
10
|
+
lucide-react/dist/esm/shared/src/utils/mergeClasses.mjs:
|
|
11
|
+
lucide-react/dist/esm/shared/src/utils/toKebabCase.mjs:
|
|
12
|
+
lucide-react/dist/esm/shared/src/utils/toCamelCase.mjs:
|
|
13
|
+
lucide-react/dist/esm/shared/src/utils/toPascalCase.mjs:
|
|
14
|
+
lucide-react/dist/esm/defaultAttributes.mjs:
|
|
15
|
+
lucide-react/dist/esm/shared/src/utils/hasA11yProp.mjs:
|
|
16
|
+
lucide-react/dist/esm/context.mjs:
|
|
17
|
+
lucide-react/dist/esm/Icon.mjs:
|
|
18
|
+
lucide-react/dist/esm/createLucideIcon.mjs:
|
|
19
|
+
lucide-react/dist/esm/icons/bell.mjs:
|
|
20
|
+
lucide-react/dist/esm/icons/bot.mjs:
|
|
21
|
+
lucide-react/dist/esm/icons/check.mjs:
|
|
22
|
+
lucide-react/dist/esm/icons/hash.mjs:
|
|
23
|
+
lucide-react/dist/esm/icons/image.mjs:
|
|
24
|
+
lucide-react/dist/esm/icons/info.mjs:
|
|
25
|
+
lucide-react/dist/esm/icons/message-square.mjs:
|
|
26
|
+
lucide-react/dist/esm/icons/music.mjs:
|
|
27
|
+
lucide-react/dist/esm/icons/search.mjs:
|
|
28
|
+
lucide-react/dist/esm/icons/send.mjs:
|
|
29
|
+
lucide-react/dist/esm/icons/smile.mjs:
|
|
30
|
+
lucide-react/dist/esm/icons/trash-2.mjs:
|
|
31
|
+
lucide-react/dist/esm/icons/user-plus.mjs:
|
|
32
|
+
lucide-react/dist/esm/icons/user.mjs:
|
|
33
|
+
lucide-react/dist/esm/icons/users.mjs:
|
|
34
|
+
lucide-react/dist/esm/icons/video.mjs:
|
|
35
|
+
lucide-react/dist/esm/icons/wifi-off.mjs:
|
|
36
|
+
lucide-react/dist/esm/icons/wifi.mjs:
|
|
37
|
+
lucide-react/dist/esm/icons/x.mjs:
|
|
38
|
+
lucide-react/dist/esm/lucide-react.mjs:
|
|
39
|
+
(**
|
|
40
|
+
* @license lucide-react v1.11.0 - ISC
|
|
41
|
+
*
|
|
42
|
+
* This source code is licensed under the ISC license.
|
|
43
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
44
|
+
*)
|
|
45
|
+
*/
|
package/lib/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { EventEmitter } from "events";
|
|
|
2
2
|
import { Bot, Adapter, Message, SendOptions, MessageType, MessageElement, Plugin } from "zhin.js";
|
|
3
3
|
import type { WebSocket } from "ws";
|
|
4
4
|
import { Router } from "@zhin.js/http";
|
|
5
|
+
import { PageManager } from "@zhin.js/console";
|
|
5
6
|
export interface SandboxConfig {
|
|
6
7
|
context: "sandbox";
|
|
7
8
|
ws: WebSocket;
|
|
@@ -13,7 +14,7 @@ declare module "zhin.js" {
|
|
|
13
14
|
namespace Plugin {
|
|
14
15
|
interface Contexts {
|
|
15
16
|
router: Router;
|
|
16
|
-
web:
|
|
17
|
+
web: PageManager;
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
20
|
interface Adapters {
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACL,GAAG,EACH,OAAO,EAEP,OAAO,EACP,WAAW,EAGX,WAAW,EACX,cAAc,EACd,MAAM,EACP,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACL,GAAG,EACH,OAAO,EAEP,OAAO,EACP,WAAW,EAGX,WAAW,EACX,cAAc,EACd,MAAM,EACP,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,SAAS,CAAC;IACnB,EAAE,EAAE,SAAS,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,MAAM,CAAC;QACf,UAAU,QAAQ;YAChB,MAAM,EAAE,MAAM,CAAC;YACf,GAAG,EAAE,WAAW,CAAC;SAClB;KACF;IAED,UAAU,QAAQ;QAChB,OAAO,EAAE,cAAc,CAAC;KACzB;CACF;AAYD,qBAAa,UAAW,SAAQ,YAAa,YAAW,GAAG,CAAC,aAAa,EAAE;IAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;IAShG,OAAO,EAAE,cAAc;IAAS,OAAO,EAAE,aAAa;IARzE,UAAU,EAAE,OAAO,CAAS;IAE5B,IAAI,GAAG,WAEN;IAED,OAAO,CAAC,MAAM,CAAU;gBAEL,OAAO,EAAE,cAAc,EAAS,OAAO,EAAE,aAAa;IAqBnE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAKlC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,WAAW,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE;;;;IAsC5G,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAenD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGhD;AAED,cAAM,cAAe,SAAQ,OAAO,CAAC,UAAU,CAAC;IAC9C,GAAG,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAEnB,MAAM,EAAE,MAAM;IAI1B,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU;IAOtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAkCpD"}
|
package/lib/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EventEmitter } from "events";
|
|
2
2
|
import { Adapter, usePlugin, Message, segment, } from "zhin.js";
|
|
3
|
+
import { PageManager } from "@zhin.js/console";
|
|
3
4
|
import path from "path";
|
|
4
5
|
const plugin = usePlugin();
|
|
5
6
|
const logger = plugin.logger;
|
|
@@ -165,12 +166,12 @@ plugin.useContext("router", async (router) => {
|
|
|
165
166
|
});
|
|
166
167
|
});
|
|
167
168
|
// 使用 web 上下文注册客户端入口
|
|
168
|
-
plugin.useContext("web", (
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
production: path.resolve(import.meta.dirname, "../dist/index.js"),
|
|
169
|
+
plugin.useContext("web", () => {
|
|
170
|
+
PageManager.addEntry({
|
|
171
|
+
id: "sandbox",
|
|
172
172
|
development: path.resolve(import.meta.dirname, "../client/index.tsx"),
|
|
173
|
+
production: path.resolve(import.meta.dirname, "../dist/index.js"),
|
|
174
|
+
meta: { name: "Sandbox" },
|
|
173
175
|
});
|
|
174
|
-
return dispose;
|
|
175
176
|
});
|
|
176
177
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhin.js/adapter-sandbox",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.14",
|
|
4
4
|
"description": "Zhin.js adapter for local testing and development",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -43,19 +43,20 @@
|
|
|
43
43
|
"directory": "plugins/adapters/sandbox"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@types/react": "^19.2.
|
|
46
|
+
"@types/react": "^19.2.14",
|
|
47
47
|
"@types/react-dom": "^19.2.1",
|
|
48
48
|
"radix-ui": "^1.4.3",
|
|
49
|
-
"lucide-react": "^
|
|
50
|
-
"typescript": "^6.0.
|
|
51
|
-
"zhin.js": "1.0.
|
|
49
|
+
"lucide-react": "^1.11.0",
|
|
50
|
+
"typescript": "^6.0.3",
|
|
51
|
+
"@zhin.js/cli": "1.0.68",
|
|
52
|
+
"zhin.js": "1.0.72"
|
|
52
53
|
},
|
|
53
54
|
"peerDependencies": {
|
|
54
|
-
"@zhin.js/
|
|
55
|
-
"@zhin.js/
|
|
56
|
-
"@zhin.js/
|
|
57
|
-
"@zhin.js/console": "2.0.
|
|
58
|
-
"zhin.js": "1.0.
|
|
55
|
+
"@zhin.js/core": "1.1.14",
|
|
56
|
+
"@zhin.js/client": "1.0.18",
|
|
57
|
+
"@zhin.js/http": "1.0.65",
|
|
58
|
+
"@zhin.js/console": "2.0.14",
|
|
59
|
+
"zhin.js": "1.0.72"
|
|
59
60
|
},
|
|
60
61
|
"peerDependenciesMeta": {
|
|
61
62
|
"@zhin.js/http": {
|
|
@@ -73,7 +74,7 @@
|
|
|
73
74
|
"registry": "https://registry.npmjs.org"
|
|
74
75
|
},
|
|
75
76
|
"scripts": {
|
|
76
|
-
"build": "
|
|
77
|
+
"build": "zhin build",
|
|
77
78
|
"clean": "rimraf lib"
|
|
78
79
|
}
|
|
79
80
|
}
|
package/src/index.ts
CHANGED
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
} from "zhin.js";
|
|
14
14
|
import type { WebSocket } from "ws";
|
|
15
15
|
import { Router } from "@zhin.js/http";
|
|
16
|
+
import { PageManager } from "@zhin.js/console";
|
|
16
17
|
import path from "path";
|
|
17
18
|
|
|
18
19
|
export interface SandboxConfig {
|
|
@@ -27,7 +28,7 @@ declare module "zhin.js" {
|
|
|
27
28
|
namespace Plugin {
|
|
28
29
|
interface Contexts {
|
|
29
30
|
router: Router;
|
|
30
|
-
web:
|
|
31
|
+
web: PageManager;
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
|
|
@@ -228,11 +229,11 @@ plugin.useContext("router", async (router: Router) => {
|
|
|
228
229
|
});
|
|
229
230
|
|
|
230
231
|
// 使用 web 上下文注册客户端入口
|
|
231
|
-
plugin.useContext("web", (
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
production: path.resolve(import.meta.dirname, "../dist/index.js"),
|
|
232
|
+
plugin.useContext("web", () => {
|
|
233
|
+
PageManager.addEntry({
|
|
234
|
+
id: "sandbox",
|
|
235
235
|
development: path.resolve(import.meta.dirname, "../client/index.tsx"),
|
|
236
|
+
production: path.resolve(import.meta.dirname, "../dist/index.js"),
|
|
237
|
+
meta: { name: "Sandbox" },
|
|
236
238
|
});
|
|
237
|
-
return dispose;
|
|
238
239
|
});
|