ryugi-artifacts 1.18.2 → 1.18.4

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/cli.cjs CHANGED
@@ -922,7 +922,7 @@ async function main(argv) {
922
922
  }, emit);
923
923
  }
924
924
  if (command === "--version" || command === "-v") {
925
- console.log("1.18.2");
925
+ console.log("1.18.4");
926
926
  return 0;
927
927
  }
928
928
  if (command === "--help" || command === "-h") {
package/dist/server.cjs CHANGED
@@ -91079,7 +91079,7 @@ function openReady(payload) {
91079
91079
  }
91080
91080
 
91081
91081
  // package.json
91082
- var version = "1.18.2";
91082
+ var version = "1.18.4";
91083
91083
 
91084
91084
  // src/server/main.ts
91085
91085
  async function main() {
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{n as t,t as n}from"./jsx-runtime-CldxteV5.js";import{a as r}from"./useSandboxFrame-3fuBOs0A.js";import{t as i}from"./index.js";import a from"./CloudDocument-CotgQhd8.js";import{DocumentView as o,t as s}from"./DocumentPage-BG_gTOK2.js";var c=e(t(),1),l=`1.18.2`,u=e=>/^(\d+)\.(\d+)\./.exec(e??``)?.slice(1,3).join(`.`)??null;function d(e,t){let n=u(e);return n!==null&&n===u(t)}var f=(e,t)=>`电脑上的 ryugi 是 ${t??`未知版本`},网页是 ${e},版本对上之前只能评论`,p=n();function m({id:e,state:t,contentBase:n,liveContentBase:u,comments:m}){let{transport:h,presence:g}=s(e,u??n??``),_=g?.online??!1;r(e,{online:g?.online??null});let[v,y]=(0,c.useState)(!1);if((0,c.useEffect)(()=>{_&&y(!0)},[_]),!h||!(v||_))return!t||!n?(0,p.jsx)(i,{children:g===null?`正在连接…`:`还没发布。电脑在线时,这里会实时显示。`}):(0,p.jsx)(a,{id:e,state:t,contentBase:n,comments:m,offline:g!==null&&!_});let b=_&&d(l,g?.version??null),x=_&&!b?f(l,g?.version??null):null;return(0,p.jsx)(o,{id:e,transport:h,live:_,cloud:{online:_,canEdit:b,reason:x}})}export{m as default};
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{n as t,t as n}from"./jsx-runtime-CldxteV5.js";import{a as r}from"./useSandboxFrame-3fuBOs0A.js";import{t as i}from"./index.js";import a from"./CloudDocument-CotgQhd8.js";import{DocumentView as o,t as s}from"./DocumentPage-0GGJlY-j.js";var c=e(t(),1),l=`1.18.4`,u=e=>/^(\d+)\.(\d+)\./.exec(e??``)?.slice(1,3).join(`.`)??null;function d(e,t){let n=u(e);return n!==null&&n===u(t)}var f=(e,t)=>`电脑上的 ryugi 是 ${t??`未知版本`},网页是 ${e},版本对上之前只能评论`,p=n();function m({id:e,state:t,contentBase:n,liveContentBase:u,comments:m}){let{transport:h,presence:g}=s(e,u??n??``),_=g?.online??!1;r(e,{online:g?.online??null});let[v,y]=(0,c.useState)(!1);if((0,c.useEffect)(()=>{_&&y(!0)},[_]),!h||!(v||_))return!t||!n?(0,p.jsx)(i,{children:g===null?`正在连接…`:`还没发布。电脑在线时,这里会实时显示。`}):(0,p.jsx)(a,{id:e,state:t,contentBase:n,comments:m,offline:g!==null&&!_});let b=_&&d(l,g?.version??null),x=_&&!b?f(l,g?.version??null):null;return(0,p.jsx)(o,{id:e,transport:h,live:_,cloud:{online:_,canEdit:b,reason:x}})}export{m as default};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{n as t,t as n}from"./jsx-runtime-CldxteV5.js";import{a as r,d as i,f as a,ga as o,h as s,m as c,ni as l,o as u,p as d,s as f}from"./useSandboxFrame-3fuBOs0A.js";import{a as p,b as m,c as h,f as g,h as _,i as v,l as y,m as b,n as x,o as S,p as C,r as w,s as T,t as E,v as D,x as O,y as k}from"./DocumentLayout-BmFhvhLU.js";import{a as A,c as j,d as M,i as N,l as P,n as F,o as ee,r as I,s as L,u as R}from"./index.js";var z={name:`message-square`,size:24,node:[[`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`}]]};z.node;var B=l(z),V=e(t(),1),H=n();function U({left:e,top:t,quote:n,initial:r,restored:a,leaving:o,onChange:s,onSubmit:c,onCancel:l,ref:u}){return(0,H.jsx)(`div`,{ref:u,...{0:{className:`x10l6tqk x1u8a7rm xj6ak53 xowlrko xllfotl xatqbsq x1u6ievf`},1:{className:`x10l6tqk x1u8a7rm xj6ak53 x1u6ievf xxp0q0x x12l1aco xn0cd8s x47corl`}}[!!o|0],style:{left:e,top:t},children:(0,H.jsxs)(x,{active:!0,children:[(0,H.jsxs)(`div`,{className:`x78zum5 x1pha0wt x167g77z xz9dl7a x1hr3lfm xqfszdh x1j6dyjg`,children:[(0,H.jsxs)(`span`,{className:`x98rzlu xeuugli xb3r6kr xuxw1ft xlyipyv xddlp02`,children:[`“`,n,`”`]}),a?(0,H.jsx)(`span`,{className:`x2lah0s x7zghnd`,children:`已恢复上次的草稿`}):null]}),(0,H.jsx)(i,{autoFocus:!0,initial:r,placeholder:`写下你的问题或意见…`,onChange:s,onSubmit:c,onCancel:l})]})})}function W({left:e,top:t,onComment:n,onCopy:r,ref:i}){return(0,H.jsxs)(`div`,{ref:i,className:`x10l6tqk x1u8a7rm x78zum5 x6s0dn4 x195vfkc xc9qbxq x9f619 x9ms5i6 xmkeg23 x1y0btm7 xgcsv5v x1q4ynmn x12ilycc x1d5q07e xi1bcxy x773k2o xa3vuyk`,style:{left:e,top:t},onMouseDown:e=>e.preventDefault(),children:[n?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`button`,{type:`button`,onClick:n,className:`x78zum5 x6s0dn4 x17d4w8g x1fgtraw xt970qd x1awh872 xc342km xu4hgxq xjbqb8w xj0l527 x2230gt xo2rkog xqfszdh xfifm61 xk50ysn x1ypdohk x1de99jn xaatb59 x1y3gkto x1uczgqu x1fkwv27`,children:[(0,H.jsx)(B,{size:14,className:`x2lah0s x17nrqe2`}),`评论`]}),(0,H.jsx)(`span`,{"aria-hidden":`true`,className:`x2lah0s x1i1rx1s xlup9mm xj3msbq xcn5yip`})]}):null,(0,H.jsx)(`button`,{type:`button`,onClick:r,className:`x78zum5 x6s0dn4 x17d4w8g x1fgtraw xt970qd x1awh872 xc342km xu4hgxq xjbqb8w xj0l527 x2230gt xqfszdh xfifm61 xk50ysn x1ypdohk x1de99jn xaatb59 x1y3gkto x1uczgqu x1fkwv27 x1bo0w0s`,children:`复制`})]})}var G=(e,t)=>`${e}\n${t}`;function K(){let e=new Map;return{save(t,n){n.trim()?e.set(t,n):e.delete(t)},take(t){return e.get(t)??``}}}function q(e){let t=(0,V.useMemo)(K,[]),[n,r]=(0,V.useState)(null),[i,a]=(0,V.useState)(!1),o=(0,V.useRef)(``),s=(0,V.useRef)(0),c=(0,V.useRef)(null),l=(0,V.useRef)(null);p(i?null:n?.target.range??null);let u=(0,V.useCallback)(n=>{window.clearTimeout(s.current);let i=t.take(G(n.blockId,n.quote));o.current=i,a(!1),r({target:n,initial:i}),window.getSelection()?.removeAllRanges(),e()},[t,e]),d=(0,V.useCallback)(e=>{n&&(t.save(G(n.target.blockId,n.target.quote),e?o.current:``),a(!0),s.current=window.setTimeout(()=>{r(null),a(!1)},120))},[n,t]);return(0,V.useEffect)(()=>{if(!n||i)return;let e=e=>{let t=e.target;c.current?.contains(t)||l.current?.contains(t)||d(!0)};return document.addEventListener(`pointerdown`,e,!0),()=>document.removeEventListener(`pointerdown`,e,!0)},[n,i,d]),(0,V.useEffect)(()=>()=>window.clearTimeout(s.current),[]),{draft:n,leaving:i,restored:!!n?.initial,open:u,close:d,onText:e=>{o.current=e},panelRef:c,toolbarRef:l}}function J(e){return{left:e.offsetLeft,right:Math.min(e.offsetLeft+e.offsetWidth,window.innerWidth-16)}}function te({editor:e,threads:t,actions:n,agent:r,canComment:i,selection:a,clearSelection:o,onCreate:s,onMain:c,children:l}){let u=q(o),{draft:d}=u;return(0,H.jsx)(E,{editor:e,threads:t,actions:n,agent:r,onMain:c,overlay:e=>(0,H.jsxs)(H.Fragment,{children:[a&&!d?(0,H.jsx)(W,{ref:u.toolbarRef,...h(a,J(e),128,36,8),onComment:i?()=>u.open(a):void 0,onCopy:()=>{navigator.clipboard?.writeText(a.quote),window.getSelection()?.removeAllRanges(),o()}}):null,d?(0,H.jsx)(U,{ref:u.panelRef,...T(d.target,J(e),340,8),quote:d.target.quote,initial:d.initial,restored:u.restored,leaving:u.leaving,onChange:u.onText,onSubmit:e=>s(d.target,e).then(e=>(e&&u.close(!1),e)),onCancel:()=>u.close(!0)},`${d.target.blockId}:${d.target.quote}`):null]}),children:l})}function ne({id:e,title:t,agentEditing:n,agentSection:i,offline:a,openComments:o,cloud:s,compact:c=!1,onDone:l,agent:u=`Agent`}){return r(e,s?{...t?{title:t}:{},online:s.online,comments:o,activity:n?`${u} 正在编辑${i?` ${i}`:``}`:null,retrying:a,reason:s.reason}:null)&&!c?null:(0,H.jsxs)(`header`,{...{0:{className:`x7wzq59 x13vifvy x1n327nk xdd8jsf x78zum5 x6s0dn4 x1v2ro7d x4l9tsp x1rozbrz xqfszdh`},1:{className:`x7wzq59 x13vifvy x1n327nk xdd8jsf x78zum5 x6s0dn4 x1rozbrz xqfszdh x1hr3lfm x883omv`}}[!!c|0],children:[c?null:(0,H.jsxs)(`span`,{className:`xddlp02 xfifm61 xuxw1ft`,children:[`document / `,(0,H.jsx)(`span`,{className:`xo2rkog x1s688f`,children:e})]}),n?(0,H.jsxs)(`span`,{className:`x78zum5 x6s0dn4 x17d4w8g xj8oexa x1awh872 x1e6avla xlssvyo x19ay2w6 x1j6dyjg xuxw1ft`,children:[(0,H.jsx)(`i`,{className:`x1v4s8kt xols6we x16rqkct xtwfq29`}),u,` 正在编辑`,i?` ${i}`:``]}):null,a?(0,H.jsx)(`span`,{className:`x78zum5 x6s0dn4 x17d4w8g xj8oexa x1awh872 x1e6avla x1j6dyjg xuxw1ft xqdcvd7 x7zghnd`,children:`未同步,正在重试`}):null,s?.reason&&!c?(0,H.jsx)(`span`,{className:`xb3r6kr xddlp02 xfifm61 xuxw1ft xlyipyv`,children:s.reason}):null,(0,H.jsx)(`span`,{className:`x98rzlu`}),s?(0,H.jsxs)(`span`,{className:`x78zum5 x6s0dn4 x17d4w8g x1bo0w0s xfifm61 xuxw1ft`,children:[(0,H.jsx)(`i`,{...{0:{className:`xci0xqf x1hagigm x16rqkct xxwmxtg`},1:{className:`xci0xqf x1hagigm x16rqkct xux1nz0`}}[!!s.online|0]}),s.online?`电脑在线`:`电脑离线`]}):null,c?null:(0,H.jsxs)(`span`,{className:`xddlp02 xfifm61 xuxw1ft`,children:[`评论 `,o]}),l?(0,H.jsx)(`button`,{type:`button`,onClick:l,className:`x12ulsxz xaope02 xc342km x1kogg8i x19ckca5 xs0jrwl xqfszdh x4z9k3i x1s688f x1ypdohk`,children:`完成`}):s||c?null:(0,H.jsx)(R,{artifact:`document/${e}`})]})}function Y(e,t,n){let[r,i]=t<=n?[t,n]:[n,t];return{blockIds:e.slice(r,i+1).flatMap(e=>e.id?[e.id]:[]).slice(0,j.blockIds),heading:e.slice(0,r+1).filter(e=>e.heading).pop()?.text??``}}var X=crypto.randomUUID(),re=300,Z={quote:``,blockIds:[],heading:``};function ie(e){let t=window.getSelection(),n=e.getRootElement();if(!t||t.isCollapsed||!n?.contains(t.anchorNode)||!n.contains(t.focusNode))return Z;let r=t.toString().trim().slice(0,j.quote);return r?e.read(()=>{let e=m().getChildren(),n=t=>{let n=t&&k(t)?.getTopLevelElement();return n?e.findIndex(e=>e.is(n)):-1},i=n(t.anchorNode),a=n(t.focusNode);if(i<0||a<0)return{...Z,quote:r};let o=e.map(e=>({id:O(e,D)||``,heading:e.getType()===`heading`,text:e.getTextContent().slice(0,j.heading)}));return{quote:r,...Y(o,i,a)}}):Z}function ae(e,t,n,r){let i=(0,V.useRef)(Z);(0,V.useEffect)(()=>{if(!e)return;let n=0,a=()=>{let n=ie(e);JSON.stringify(n)!==JSON.stringify(i.current)&&(i.current=n,r({type:`selection`,artifact:t,tab:X,human:!0,...n}))},o=()=>{clearTimeout(n),n=window.setTimeout(a,re)};return document.addEventListener(`selectionchange`,o),()=>{clearTimeout(n),document.removeEventListener(`selectionchange`,o)}},[e,t,r]),(0,V.useEffect)(()=>{n&&i.current.quote&&r({type:`selection`,artifact:t,tab:X,human:!1,...i.current})},[n,t,r])}var oe=e=>{let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return btoa(t)};function se({id:e,channel:t,send:n}){let r=(t,n,r)=>fetch(`/api/document/${e}/${t}`,{method:`POST`,headers:{"Content-Type":r},body:n});return{artifact:`document/${e}`,channel:t,send:n,async meta(){let t=await fetch(`/api/artifacts/document/${e}`,{cache:`no-store`});return t.ok?await t.json():null},async state(){let t=await fetch(`/api/document/${e}/state`,{cache:`no-store`}),n=await t.json();if(!t.ok||!n.snapshot)throw Error(n.error??`load failed (${t.status})`);return n},async update(e){let t=await r(`update`,e,`application/octet-stream`);if(!t.ok)throw Error(`update failed (${t.status})`)},async comment(e){let t=await r(`comments`,JSON.stringify(e),`application/json`);if(!t.ok)throw Error(`comment failed (${t.status})`);return(await t.json()).comments}}}function ce(e){let t=_(),n=(e.connect??N)({url:e.url,artifact:e.artifact,WebSocket:e.WebSocket,retryMs:e.retryMs,onPresence:e.onPresence,onEvent:e=>t.emit(e),onOnline:()=>t.emit({type:`open`})});return{artifact:e.artifact,channel:t,close:n.close,async meta(){let t=await n.request({op:`meta`});return/^https?:\/\//.test(t.contentBase??``)?t:{...t,contentBase:e.contentBase}},state:()=>n.request({op:`state`}),async update(e){await n.request({op:`update`,bytes:oe(e)})},async comment(e){return(await n.request({op:`comment`,comment:e})).comments},send(e){let{type:t}=e;t===`selection`?n.request({op:`selection`,selection:e}).catch(()=>{}):(t===`loaded`||t===`runtime-error`)&&n.request({op:`client`,message:e}).catch(()=>{})}}}function le(e){let t=(0,V.useMemo)(_,[]),n=`document/${e}`,{live:r,send:i}=P(e=>{e.artifact===n&&t.emit(e)},()=>t.emit({type:`open`}));return{transport:(0,V.useMemo)(()=>se({id:e,channel:t,send:i}),[e,t,i]),live:r}}function ue(e,t){let[n,r]=(0,V.useState)(null),[i,a]=(0,V.useState)(null);return(0,V.useEffect)(()=>{let n=ce({url:F(e),artifact:`document/${e}`,contentBase:t,onPresence:a,connect:t=>I({...t,cloudId:e,known:A()})});return r(n),()=>{n.close(),r(null),a(null)}},[e,t]),{transport:n,presence:i}}function de({left:e,top:t,canComment:n,canEdit:r,onComment:i,onCopy:a,onEdit:o}){let s=[n?{label:`评论`,run:i,primary:!0}:null,{label:`复制`,run:a,primary:!1},r?{label:`改字`,run:o,primary:!1}:null].filter(e=>e!==null);return(0,H.jsx)(`div`,{"data-edit-menu":!0,className:`x10l6tqk x1u8a7rm x78zum5 x90ne7k xb3r6kr xur7f20 xf6xdpg`,style:{left:e,top:t},onMouseDown:e=>e.preventDefault(),children:s.map((e,t)=>(0,H.jsx)(`button`,{type:`button`,onClick:e.run,...{0:{className:`xt970qd x1l730wp xc342km xjbqb8w xfungia xqfszdh x4z9k3i x1ypdohk`},2:{className:`xt970qd x1l730wp xc342km xjbqb8w xfungia xqfszdh x4z9k3i x1ypdohk xe0pwq x19ypqd9 xi2uw60`},1:{className:`xt970qd x1l730wp xc342km xjbqb8w xfungia xqfszdh x4z9k3i x1ypdohk x1s688f`},3:{className:`xt970qd x1l730wp xc342km xjbqb8w xfungia xqfszdh x4z9k3i x1ypdohk xe0pwq x19ypqd9 xi2uw60 x1s688f`}}[(t>0)<<1|!!e.primary],children:e.label},e.label))})}var Q={state:{kmuXW:`x2lah0s`,kGuDYH:`xfifm61`,$$css:!0},waitingAgent:{kMwMTN:`x7zghnd`,$$css:!0},answered:{kMwMTN:`xh0clw4`,$$css:!0},resolved:{kMwMTN:`xddlp02`,$$css:!0}},fe=e=>new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`});function pe({thread:e,agent:t=`Agent`,actions:n,active:r=!1,offline:c=!1}){let l=s(e),u=e.status===`resolved`,f=u?{label:`已解决`,tone:Q.resolved}:l===`agent`?{label:`等 ${t} 回复`,tone:Q.waitingAgent}:l===`human`?{label:`${t} 已回复`,tone:Q.answered}:null;return(0,H.jsxs)(`div`,{"data-thread":e.id,...{0:{className:`xxlmvz2 x178xt8z x13fuv20 xxu5053 xqfszdh xo2rkog`},1:{className:`xxlmvz2 x178xt8z x13fuv20 xxu5053 xqfszdh xo2rkog xggygye`}}[!!r|0],children:[(0,H.jsxs)(`div`,{className:`x78zum5 x1pha0wt x167g77z x1lqa7cf x1vo0akb x19ypqd9 x13ym6ox x4z9k3i`,children:[(0,H.jsx)(`span`,{className:`x98rzlu xeuugli xb3r6kr xuxw1ft xlyipyv x1bo0w0s`,children:e.anchor.quote||`整段`}),f?(0,H.jsx)(`span`,{...o(Q.state,f.tone),children:f.label}):null]}),u&&!r?null:e.messages.map(e=>{let{label:t,initial:n}=d(e);return(0,H.jsxs)(`div`,{className:`x14vqqas`,children:[(0,H.jsxs)(`div`,{className:`x78zum5 x6s0dn4 x167g77z x4z9k3i x1s688f`,children:[(0,H.jsx)(a,{human:e.author===`human`,initial:n,name:e.name,src:e.avatar}),t,(0,H.jsx)(`span`,{className:`xddlp02 xo1l8bm xfifm61`,children:fe(e.editedAt??e.at)})]}),(0,H.jsx)(`div`,{...{0:{className:`x1gslohp xxpkpgd x1jvydc1 x1dbl2gt x126k92a xj0a0fe`},1:{className:`x1gslohp xxpkpgd x1jvydc1 x1dbl2gt x126k92a xj0a0fe xc7n51q`}}[!!e.deleted|0],children:e.deleted?`已删除`:e.text})]},e.id)}),n?(0,H.jsxs)(`div`,{className:`x78zum5 x6s0dn4 xou54vl x1anpbxc xxpkpgd`,children:[u?null:(0,H.jsx)(`div`,{className:`x98rzlu xeuugli x1qyh8g1 xso031l x1q0q8m5 x1iz93xd`,children:(0,H.jsx)(i,{placeholder:`回复…`,onSubmit:t=>n.reply(e.id,t)})}),c?null:(0,H.jsx)(`button`,{type:`button`,onClick:()=>u?n.reopen(e.id):n.resolve(e.id),className:`x2lah0s x1717udv xc342km xjbqb8w x1bo0w0s xqfszdh x4z9k3i x1ypdohk`,children:u?`重新打开`:`解决`})]}):null]})}var $=.5,me=e=>e===78?$:e;function he({threads:e,agent:t=`Agent`,actions:n,offline:r,draft:a,onCreate:o,onCancelDraft:c,activeId:l,snap:u,onSnap:d}){let f=(0,V.useRef)(null),p=L([78,$,1],u,d),m=e.filter(e=>!e.messages.every(e=>e.deleted)),h=m.filter(e=>s(e)===`agent`).length,g=r?`电脑离线,暂时不能评论`:h>0?`${h} 条等 ${t} 回复`:null;return(0,V.useEffect)(()=>{l&&f.current?.querySelector(`[data-thread="${CSS.escape(l)}"]`)?.scrollIntoView({block:`start`,behavior:`smooth`})},[l]),(0,H.jsx)(M,{open:!0,className:`ryugi-phone-sheet`,dismissible:!1,variant:`embedded`,mode:`overlay`,minHeight:78,maxHeight:1,snapPoints:[78,$,1],activeSnapPoint:u,onSnapPointChange:d,title:(0,H.jsxs)(`span`,{...p,className:`x78zum5 x1pha0wt x17d4w8g xqfszdh x1jvydc1 x1s688f`,children:[`评论 `,m.length,g?(0,H.jsxs)(`span`,{className:`xddlp02 xfifm61 xo1l8bm`,children:[`· `,g]}):null]}),children:(0,H.jsxs)(`div`,{ref:f,className:`x17qtykl xwxc41k`,children:[a&&n?(0,H.jsxs)(`div`,{className:`x10dr8xq xqfszdh`,children:[(0,H.jsxs)(`div`,{className:`x78zum5 x1pha0wt x167g77z x4z9k3i`,children:[(0,H.jsx)(`span`,{className:`x98rzlu xeuugli x1lqa7cf x1vo0akb x19ypqd9 x13ym6ox xb3r6kr xuxw1ft xlyipyv x1bo0w0s`,children:a.quote}),(0,H.jsx)(`button`,{type:`button`,onClick:c,className:`x1717udv xc342km xjbqb8w xddlp02 x4z9k3i x1ypdohk`,children:`取消`})]}),(0,H.jsx)(`div`,{className:`x1xmf6yo x1qyh8g1 xso031l x1q0q8m5 x1iz93xd`,children:(0,H.jsx)(i,{autoFocus:!0,placeholder:`写给 agent 的评论…`,onSubmit:e=>o(a,e).then(e=>(e&&c(),e))})})]}):null,m.length===0&&!a?(0,H.jsx)(`div`,{className:`xr9q8rw xddlp02 xqfszdh x4z9k3i x2b8uid`,children:`还没有评论。选中文字就能评论。`}):null,m.map(e=>(0,H.jsx)(pe,{thread:e,agent:t,actions:n,active:e.id===l,offline:r},e.id))]})})}function ge({editor:e,threads:t,actions:n,agent:r,canComment:i,canEdit:a,offline:o,selection:s,clearSelection:c,onCreate:l,onEdit:u,onMain:d,children:f}){let[m,g]=(0,V.useState)(null),[_,y]=(0,V.useState)(null),[b,x]=(0,V.useState)(78),[C,T]=(0,V.useState)(null),E=v(e,t,m);S(E,t,_),p(C?.range??null);let D=()=>{window.getSelection()?.removeAllRanges(),c()};return(0,H.jsxs)(`main`,{ref:e=>{g(e),d?.(e)},className:`x1n2onr6 x1cnzs8 x17qtykl x1ffnkcp`,children:[(0,H.jsx)(`article`,{onClick:e=>{let t=w(E,e.clientX,e.clientY);y(t),t&&x(me)},children:f}),s&&!C?(0,H.jsx)(de,{...h(s,{left:8,right:(m?.clientWidth??0)-8},150,34,8),canComment:i,canEdit:a,onComment:()=>{T(s),x($),D()},onCopy:()=>{navigator.clipboard?.writeText(s.quote),D()},onEdit:()=>{u(s),c()}}):null,(0,H.jsxs)(`div`,{className:`xixxii4 x1ozmhy9 xu96u03 x3m8u43 x1ey2m1c x1355qak x47corl`,children:[(0,H.jsx)(`div`,{...{0:{className:`x10l6tqk x10a8y8t xf6xdpg xg01cxk x19991ni x1d8287x`},1:{className:`x10l6tqk x10a8y8t xf6xdpg x19991ni x1d8287x xs9930i x67bb7w`}}[b===1|0],onClick:()=>x($)}),(0,H.jsx)(he,{threads:t,agent:r,actions:n,offline:o,draft:C,onCreate:l,onCancelDraft:()=>T(null),activeId:_,snap:b,onSnap:x})]})]})}var _e=200;function ve(e,t){let[n,r]=(0,V.useState)(null);return(0,V.useEffect)(()=>{if(!e||!t)return;let n=0,i=()=>{let n=window.getSelection(),i=e.getRootElement();if(!n||n.isCollapsed||n.rangeCount===0||!i?.contains(n.anchorNode)){r(null);return}let a=n.toString().trim(),o=e.read(()=>{let e=n.anchorNode&&k(n.anchorNode)?.getTopLevelElement(),t=n.focusNode&&k(n.focusNode)?.getTopLevelElement();return!e||!t||!e.is(t)?null:O(e,D)||null});if(!o||!a){r(null);return}let s=n.getRangeAt(0),c=[...s.getClientRects()],l=c[0]??s.getBoundingClientRect(),u=c.at(-1)??l,d=t.getBoundingClientRect();r({blockId:o,quote:a.slice(0,500),left:l.left-d.left,bottom:u.bottom-d.top,top:l.top-d.top,right:u.right-d.left,range:s.cloneRange()})},a=()=>{clearTimeout(n),n=window.setTimeout(i,_e)};return document.addEventListener(`selectionchange`,a),()=>{clearTimeout(n),document.removeEventListener(`selectionchange`,a)}},[e,t]),[n,()=>r(null)]}function ye(){let e=(0,V.useMemo)(()=>window.matchMedia(`(prefers-color-scheme: dark)`),[]),[t,n]=(0,V.useState)(e.matches);return(0,V.useEffect)(()=>{let t=()=>n(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[e]),t}function be(e){(0,V.useEffect)(()=>{if(!e)return;let t=document.createElement(`base`);return t.href=e,document.head.prepend(t),()=>t.remove()},[e])}function xe({id:e}){let{transport:t,live:n}=le(e);return(0,H.jsx)(Se,{id:e,transport:t,live:n})}function Se({id:e,transport:t,live:n,cloud:r}){let[i,a]=(0,V.useState)(null),[o,s]=(0,V.useState)(null),[l,d]=(0,V.useState)(c),[p,m]=(0,V.useState)(null),[h,_]=(0,V.useState)(!1),[v,x]=(0,V.useState)(null),[S,w]=(0,V.useState)(!1),[T,E]=(0,V.useState)(null),[D,O]=(0,V.useState)(null),k=ye(),{artifact:A,channel:j}=t,M=!r||r.online,N=!r||r.canEdit,P=f(u),[F,I]=(0,V.useState)(!1),L=P?F&&N:N,R=(0,V.useCallback)(async()=>{let e=await t.meta();e&&a(e)},[t]);(0,V.useEffect)(()=>{let e=!1;return(async()=>{try{await R();let n=await t.state();if(e)return;let r=new C;r.setRecordTimestamp(!0),r.setChangeMergeInterval(20),r.import(g(n.snapshot)),_(!!n.streaming),d(n.comments??c()),s(r)}catch(t){e||m(t.message)}})(),()=>{e=!0}},[t,R]),(0,V.useEffect)(()=>j.subscribe(e=>{e.type===`change`?R():e.type===`doc-status`?_(e.streaming):e.type===`doc-comments`&&d(e.comments)}),[j,R]),(0,V.useEffect)(()=>{T?.setEditable(L)},[T,L]),(0,V.useEffect)(()=>{N||I(!1)},[N]);let z=(0,V.useCallback)(e=>{_(!!e.streaming),e.comments&&d(e.comments)},[]);be(i?.contentBase),ae(T,A,n,t.send);let B=(0,V.useMemo)(()=>({artifact:A,contentBase:i?.contentBase??``,channel:j,send:t.send}),[A,i?.contentBase,j,t]);(0,V.useEffect)(()=>{document.title=i?.title||e},[i?.title,e]);let U=l.threads.filter(e=>e.status===`open`).length,[W,G]=ve(T,D),K=(0,V.useCallback)(async e=>{try{return d(await t.comment(e)),!0}catch{return!1}},[t]),q=(0,V.useMemo)(()=>({reply:(e,t)=>K({op:`reply`,threadId:e,text:t}),edit:(e,t,n)=>void K({op:`edit`,threadId:e,messageId:t,text:n}),remove:(e,t)=>void K({op:`delete`,threadId:e,messageId:t}),resolve:e=>void K({op:`resolve`,threadId:e}),reopen:e=>void K({op:`reopen`,threadId:e})}),[K]),J=(0,V.useCallback)((e,t)=>K({op:`create`,blockId:e.blockId,quote:e.quote,text:t}),[K]),Y=(0,V.useCallback)(e=>{if(!T)return;T.setEditable(!0),I(!0),T.getRootElement()?.focus({preventScroll:!0});let t=window.getSelection();t?.removeAllRanges(),t?.addRange(e.range)},[T]);if(p)return(0,H.jsx)(`div`,{className:`x1o8uwn5 x2b8uid x1bo0w0s xqfszdh xif65rj`,children:p});if(!o)return(0,H.jsx)(`div`,{className:`x1o8uwn5 x2b8uid x1bo0w0s xqfszdh xif65rj`,children:`Loading…`});let X=(0,H.jsx)(b.Provider,{value:B,children:(0,H.jsx)(y,{transport:t,agent:i?.agent,doc:o,theme:k?`dark`:`light`,onAgentSection:x,onOffline:w,onState:z,onEditorReady:E})});return(0,H.jsxs)(`div`,{className:`x1us19tq x1rozbrz xo2rkog`,className:`ryugi-doc ${{className:`x1us19tq x1rozbrz xo2rkog`}.className??``}`,children:[(0,H.jsx)(ne,{id:e,title:i?.title||e,agent:i?.agent,agentEditing:h,agentSection:v,offline:S,openComments:U,cloud:r,compact:P,onDone:P&&F?()=>I(!1):void 0}),P?(0,H.jsx)(ge,{editor:T,threads:l.threads,actions:q,agent:i?.agent,canComment:M,canEdit:N,offline:!(!r||r.online),selection:F?null:W,clearSelection:G,onCreate:J,onEdit:Y,onMain:O,children:X}):(0,H.jsx)(te,{editor:T,threads:l.threads,actions:q,agent:i?.agent,canComment:M,selection:W,clearSelection:G,onCreate:J,onMain:O,children:X}),(0,H.jsx)(ee,{warnings:i?.warnings??[]})]})}export{Se as DocumentView,xe as default,ue as t};