luckytri 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/docs/en/CHANGELOG.md +13 -0
  2. package/docs/en/guide.md +6 -0
  3. package/docs/en/her-life.md +2 -0
  4. package/docs/en/webui.md +2 -0
  5. package/docs/zh/CHANGELOG.md +13 -0
  6. package/docs/zh/guide.md +7 -1
  7. package/docs/zh/her-life.md +4 -2
  8. package/docs/zh/webui.md +2 -0
  9. package/package.json +110 -110
  10. package/public/app/assets/ChatsPage-B83Evc79.js +3 -0
  11. package/public/app/assets/{Empty-DP6WMGHi.js → Empty-ddEfu0w8.js} +1 -1
  12. package/public/app/assets/{Field-CtbdqaiB.js → Field-mIhV5YBA.js} +1 -1
  13. package/public/app/assets/HeartPage-BGEn24rc.js +1 -0
  14. package/public/app/assets/LifePage-BleqPj4O.js +1 -0
  15. package/public/app/assets/MemoryPage-BM3-0_lF.js +1 -0
  16. package/public/app/assets/{NaturePage-CTXHCE2D.css → NaturePage-CHkpb5NK.css} +1 -1
  17. package/public/app/assets/NaturePage-CxxMnQIc.js +3 -0
  18. package/public/app/assets/PeoplePage-D12cvuy7.js +1 -0
  19. package/public/app/assets/{PeoplePage-BmUxkrOU.css → PeoplePage-DDDHESQp.css} +1 -1
  20. package/public/app/assets/{PluginsPage-DksEZbUU.js → PluginsPage-DE_-Q3ra.js} +1 -1
  21. package/public/app/assets/SystemPage-BWQKEQRU.js +1 -0
  22. package/public/app/assets/{SystemPage-BkRu0Rvx.css → SystemPage-Be1a6UDP.css} +1 -1
  23. package/public/app/assets/TimePage-Dzt8t8kL.js +3 -0
  24. package/public/app/assets/index-oLIXWxsn.js +4 -0
  25. package/public/app/assets/{knowledge-C6_HvoyB.js → knowledge-Dvtmpd45.js} +1 -1
  26. package/public/app/assets/{media-SMfTT-yc.js → media-keE52cIX.js} +1 -1
  27. package/public/app/assets/mind-DYRfFMwh.js +1 -0
  28. package/public/app/index.html +3 -3
  29. package/public/guide.en.html +17 -3
  30. package/public/guide.html +13 -4
  31. package/public/tutorial.en.md +6 -0
  32. package/public/tutorial.md +7 -1
  33. package/server/app.js +3 -0
  34. package/server/core/persona-manager.js +20 -5
  35. package/server/i18n/errors.js +13 -2
  36. package/server/mind/api.js +1 -0
  37. package/server/mind/faces.js +257 -22
  38. package/server/mind/life/context.js +9 -6
  39. package/server/mind/life/growth.js +4 -3
  40. package/server/mind/nature.js +77 -2
  41. package/server/mind/schema.js +3 -0
  42. package/server/mind/view.js +3 -0
  43. package/server/studio/updates.js +133 -0
  44. package/public/app/assets/ChatsPage-BhlJHseG.js +0 -3
  45. package/public/app/assets/HeartPage-32BeTPn2.js +0 -1
  46. package/public/app/assets/LifePage-CxSm0XKI.js +0 -1
  47. package/public/app/assets/MemoryPage-BeKBcPCY.js +0 -1
  48. package/public/app/assets/NaturePage-NEPYl2HS.js +0 -3
  49. package/public/app/assets/PeoplePage-DxtpekwM.js +0 -1
  50. package/public/app/assets/SystemPage-BvzJlHuY.js +0 -1
  51. package/public/app/assets/TimePage-7-awH5XL.js +0 -3
  52. package/public/app/assets/formatters-ZmW_xFHw.js +0 -1
  53. package/public/app/assets/index-4rItIkD-.js +0 -4
@@ -1,3 +0,0 @@
1
- import{$ as e,Ct as t,D as n,Et as r,I as i,J as a,M as o,P as s,St as c,Tt as l,U as u,V as d,W as f,X as p,Y as m,Z as h,_ as g,ct as _,dt as v,et as y,gt as b,i as x,j as S,lt as C,m as w,n as T,nt as E,o as ee,q as D,s as O,t as te,ut as k,v as A,vt as ne,wt as j,xt as M,yt as N}from"./Empty-DP6WMGHi.js";import{t as P}from"./formatters-ZmW_xFHw.js";import{I as re,N as F,a as ie,c as ae,n as oe,o as se}from"./index-4rItIkD-.js";var I=[`aria-label`],L={class:`agenda-heading`},R={class:`eyebrow`},z=[`aria-label`],B=[`aria-pressed`],V=[`aria-pressed`],H={class:`muted`},U={class:`agenda-legend`},ce={class:`legend-actual`},le={class:`legend-plan`},W={class:`legend-free`},G={class:`legend-point`},K={class:`agenda-chart`},q={class:`agenda-axis`},ue={class:`agenda-lane`},de={class:`lane-label`},fe={class:`lane-track`},pe=[`title`,`aria-label`,`onClick`],me=[`title`],he={class:`agenda-lane`},J={class:`lane-label`},Y={class:`lane-track`},ge=[`title`,`aria-label`,`onClick`],X=[`title`],Z={key:0,class:`agenda-history`},Q={class:`agenda-itinerary`},_e=[`onClick`],$={key:1,class:`faint`},ve={key:2,class:`faint`},ye={class:`agenda-itinerary`},be=[`data-kind`],xe=[`onClick`],Se={key:0,class:`muted`},Ce={key:2,class:`faint`},we={key:3,class:`faint`},Te={key:4,class:`agenda-waiting`,open:``},Ee=[`onClick`],De={class:`muted`},Oe={key:5,class:`agenda-waiting`,open:``},ke=[`onClick`],Ae={class:`muted`},je={key:6,class:`agenda-waiting`,open:``},Me=[`onClick`],Ne={class:`muted`},Pe=T(E({__name:`DayAgenda`,props:{agenda:{}},emits:[`task`],setup(n,{emit:s}){let c=n,u=s,d=M(!0),m=D(()=>{let e=c.agenda;if(!d.value)return[e.start,e.end];let t=Math.max(e.start,Math.min(e.end-216e5,Math.floor((e.now-e.start)/36e5)*36e5+e.start-36e5));return[t,Math.min(e.end,t+216e5)]}),g=e=>e===c.agenda.end?`24:00`:P(o(),{timeZone:c.agenda.zone,hour:`2-digit`,minute:`2-digit`,hourCycle:`h23`}).format(new Date(e)),_=e=>(e-m.value[0])/(m.value[1]-m.value[0])*100,y=e=>(e.chartEnd??e.end)>e.start&&(e.chartEnd??e.end)>m.value[0]&&e.start<m.value[1],b=e=>({left:Math.max(0,_(e.start))+`%`,width:Math.max(.3,Math.min(100,_(e.chartEnd??e.end))-Math.max(0,_(e.start)))+`%`}),x=D(()=>Array.from({length:7},(e,t)=>m.value[0]+(m.value[1]-m.value[0])*t/6)),S=D(()=>c.agenda.planned.filter(e=>e.kind!==`sleep`).slice(0,18)),C=e=>`${g(e.start)} — ${g(e.end)} · ${e.title} · ${e.label||{rest:i(`休息建议`),free:i(`自由安排`),sleep:i(`作息安排`)}[e.kind]||i(`已发生`)}`,w=e=>e.engagedMs===null?i(`此前时长未单独记录`):i(`实际投入 {v} 分钟`,{v:Math.floor(e.engagedMs/6e4)});return(o,s)=>(k(),h(`section`,{class:`card day-agenda`,"aria-label":t(i)(`今日时间表`)},[a(`div`,L,[a(`div`,null,[a(`span`,R,r(n.agenda.date),1),a(`h2`,null,r(t(i)(`今日时间表`)),1)]),a(`div`,{class:`agenda-range`,role:`group`,"aria-label":t(i)(`时间表显示范围`)},[a(`button`,{"aria-pressed":d.value,onClick:s[0]||=e=>d.value=!0},r(t(i)(`此刻附近`)),9,B),a(`button`,{"aria-pressed":!d.value,onClick:s[1]||=e=>d.value=!1},r(t(i)(`全天`)),9,V)],8,z)]),a(`p`,H,r(n.agenda.note),1),a(`div`,U,[a(`span`,ce,r(t(i)(`实际时段`)),1),a(`span`,le,r(t(i)(`选定的安排`)),1),a(`span`,W,r(t(i)(`作息 / 空白`)),1),a(`span`,G,r(t(i)(`● 伴随交流`)),1)]),a(`div`,K,[a(`div`,q,[(k(!0),h(f,null,v(x.value,(e,t)=>(k(),h(`time`,{key:e,style:l({left:t*100/6+`%`})},r(g(e)),5))),128))]),a(`div`,ue,[a(`span`,de,r(t(i)(`已发生`)),1),a(`div`,fe,[(k(!0),h(f,null,v(x.value.slice(0,-1),(e,t)=>(k(),h(`i`,{key:e,class:`gridline`,style:l({left:t*100/6+`%`})},null,4))),128)),(k(!0),h(f,null,v(n.agenda.actual.filter(y),e=>(k(),h(`button`,{key:e.id,class:j([`agenda-block actual`,{ongoing:e.ongoing}]),style:l(b(e)),title:C(e)+` · `+w(e),"aria-label":C(e),onClick:t=>u(`task`,e.taskId)},null,14,pe))),128)),(k(!0),h(f,null,v(n.agenda.interactions.filter(e=>e.at>=m.value[0]&&e.at<m.value[1]),e=>(k(),h(`span`,{key:e.id,class:`agenda-interaction`,style:l({left:_(e.at)+`%`}),title:g(e.at)+t(i)(` · 伴随交流`)},null,12,me))),128)),_(n.agenda.now)>=0&&_(n.agenda.now)<=100?(k(),h(`span`,{key:0,class:`agenda-now`,style:l({left:_(n.agenda.now)+`%`})},[a(`small`,null,r(t(i)(`现在`)),1)],4)):p(``,!0)])]),a(`div`,he,[a(`span`,J,r(t(i)(`接下来`)),1),a(`div`,Y,[(k(!0),h(f,null,v(x.value.slice(0,-1),(e,t)=>(k(),h(`i`,{key:e,class:`gridline`,style:l({left:t*100/6+`%`})},null,4))),128)),(k(!0),h(f,null,v(n.agenda.planned.filter(y),e=>(k(),h(f,{key:e.id},[e.taskId?(k(),h(`button`,{key:0,class:`agenda-block plan`,style:l(b(e)),title:C(e),"aria-label":C(e),onClick:t=>u(`task`,e.taskId)},null,12,ge)):(k(),h(`span`,{key:1,class:j([`agenda-block`,e.kind]),style:l(b(e)),title:C(e)},null,14,X))],64))),128))])])]),n.agenda.actual.length?(k(),h(`details`,Z,[a(`summary`,null,r(t(i)(`已经走过的时段 · {length} 段`,{length:n.agenda.actual.length})),1),a(`ol`,Q,[(k(!0),h(f,null,v(n.agenda.actual,t=>(k(),h(`li`,{key:t.id},[a(`time`,null,[e(r(g(t.start)),1),s[2]||=a(`br`,null,null,-1),e(r(g(t.end)),1)]),a(`div`,null,[a(`button`,{class:`text-button`,onClick:e=>u(`task`,t.taskId)},r(t.title),9,_e),a(`small`,null,r(t.label)+` · `+r(w(t)),1)])]))),128))])])):(k(),h(`p`,$,r(t(i)(`今天还没有活动记录,实际开始后会显示在上方。`)),1)),a(`h3`,null,r(t(i)(`她定下的安排`)),1),S.value.length?p(``,!0):(k(),h(`p`,ve,r(t(i)(`还没有选定活动时间,留白由她再决定,不按待办队列填满。`)),1)),a(`ol`,ye,[(k(!0),h(f,null,v(S.value,n=>(k(),h(`li`,{key:n.id,"data-kind":n.kind},[a(`time`,null,[e(r(g(n.start)),1),s[3]||=a(`br`,null,null,-1),e(r(g(n.end)),1)]),a(`div`,null,[n.taskId?(k(),h(f,{key:0},[a(`button`,{class:`text-button`,onClick:e=>u(`task`,n.taskId)},r(n.title),9,xe),a(`small`,null,r(t(i)(`{label} · {v} · {durationMinutes} 分钟 · {scope}`,{label:n.label,v:n.kindOfTask===`plan`?t(i)(`自己的安排`):n.kindOfTask===`promise`?t(i)(`答应的事`):t(i)(`外部建议`),durationMinutes:n.durationMinutes,scope:n.scope})),1),n.why?(k(),h(`p`,Se,r(n.why),1)):p(``,!0)],64)):(k(),h(f,{key:1},[a(`b`,null,r(n.title),1),a(`small`,null,r(n.kind===`free`?t(i)(`可以想自己的事,也可以歇着;不算已做过`):t(i)(`预计,做完眼前这段再调整`)),1)],64)),n.interruptedAt?(k(),h(`p`,Ce,r(g(n.interruptedAt))+` `+r(n.interruption===`sleep`?t(i)(`进入睡眠安排,醒来后再选择续接时间。`):t(i)(`有更高优先级安排,届时先让位,之后再选续接时间。`)),1)):p(``,!0)])],8,be))),128))]),n.agenda.planned.some(e=>e.kind===`sleep`)?(k(),h(`p`,we,r(t(i)(`睡眠安排:{v}`,{v:n.agenda.planned.filter(e=>e.kind===`sleep`).map(e=>g(e.start)+` — `+g(e.end)).join(`、`)})),1)):p(``,!0),n.agenda.unarranged?.length?(k(),h(`details`,Te,[a(`summary`,null,r(t(i)(`已记下,还没选时间 · {length} 件`,{length:n.agenda.unarranged.length})),1),a(`ul`,null,[(k(!0),h(f,null,v(n.agenda.unarranged,e=>(k(),h(`li`,{key:e.id},[a(`button`,{class:`text-button`,onClick:t=>u(`task`,e.id)},r(e.title),9,Ee),a(`p`,De,r(e.reason),1)]))),128))])])):p(``,!0),n.agenda.paused?.length?(k(),h(`details`,Oe,[a(`summary`,null,r(t(i)(`暂时停下来,进度保留 · {length} 件`,{length:n.agenda.paused.length})),1),a(`ul`,null,[(k(!0),h(f,null,v(n.agenda.paused,e=>(k(),h(`li`,{key:e.id},[a(`button`,{class:`text-button`,onClick:t=>u(`task`,e.id)},r(e.title),9,ke),a(`p`,Ae,r(e.reason),1)]))),128))])])):p(``,!0),n.agenda.waiting.length?(k(),h(`details`,je,[a(`summary`,null,r(t(i)(`需要条件或调整约定 · {length} 件`,{length:n.agenda.waiting.length})),1),a(`ul`,null,[(k(!0),h(f,null,v(n.agenda.waiting,e=>(k(),h(`li`,{key:e.id},[a(`button`,{class:`text-button`,onClick:t=>u(`task`,e.id)},r(e.title),9,Me),a(`p`,Ne,r(e.reason),1)]))),128))])])):p(``,!0)],8,I))}}),[[`__scopeId`,`data-v-10b48f6c`]]),Fe=[`aria-label`],Ie={class:`experience-intro`},Le={class:`eyebrow`},Re={class:`experience-date`},ze={class:`experience-timeline`},Be=[`data-experience`],Ve=[`datetime`],He={class:`card experience-card`},Ue={class:`experience-meta`},We={class:`experience-kind`},Ge={key:0,class:`faint`},Ke={key:0,class:`experience-summary`},qe={key:1,class:`faint experience-missing`},Je={key:2,class:`experience-project faint`},Ye={key:3,class:`experience-actions`},Xe=[`onClick`],Ze=[`onClick`],Qe={key:4,class:`experience-materials`},$e=[`onClick`],et={class:`experience-capability`},tt={class:`faint`},nt={class:`muted`},rt=T(E({__name:`ExperienceLog`,props:{rows:{},zone:{},loading:{type:Boolean}},emits:[`work`,`project`,`source`],setup(n,{emit:s}){let c=n,l=s,u=D(()=>{let e=P(o(),{timeZone:c.zone,year:`numeric`,month:`long`,day:`numeric`,weekday:`short`}),t=[];for(let n of c.rows){let r=e.format(n.created);t.at(-1)?.date!==r&&t.push({date:r,rows:[]}),t.at(-1).rows.push(n)}return t});function d(e){return P(o(),{timeZone:c.zone,hour:`2-digit`,minute:`2-digit`,hourCycle:`h23`}).format(e)}return(o,s)=>(k(),h(`section`,{class:`experience-log`,"aria-label":t(i)(`体验记录`)},[a(`header`,Ie,[a(`div`,null,[a(`span`,Le,r(t(i)(`EXPERIENCES · 留下的经历`)),1),a(`h1`,null,r(t(i)(`最近做过的事`)),1)]),a(`p`,null,r(t(i)(`故事写到哪里,玩过什么,又留下了哪些想法。`)),1)]),(k(!0),h(f,null,v(u.value,n=>(k(),h(`section`,{key:n.date,class:`experience-day`},[a(`h2`,Re,r(n.date),1),a(`div`,ze,[(k(!0),h(f,null,v(n.rows,n=>(k(),h(`article`,{key:n.id,class:`experience-entry`,"data-experience":n.id},[a(`time`,{class:`experience-clock`,datetime:new Date(n.created).toISOString()},r(d(n.created)),9,Ve),a(`div`,He,[a(`div`,Ue,[a(`span`,We,r(t(i)(`{label}记录`,{label:n.label})),1),n.work?(k(),h(`span`,Ge,r(t(i)(`{v} · {characters} 字 · 版本 {version}`,{v:n.work.state===`complete`?t(i)(`已保存成果`):t(i)(`已保存草稿`),characters:n.work.characters,version:n.work.version})),1)):p(``,!0)]),a(`h3`,null,r(n.title),1),n.summary?(k(),h(`p`,Ke,r(n.summary),1)):(k(),h(`p`,qe,r(t(i)(`这条旧记录没有保存摘要。`)),1)),n.project?.title&&n.project.title!==n.title?(k(),h(`p`,Je,r(t(i)(`来自 {title}`,{title:n.project.title})),1)):p(``,!0),n.work||n.project?(k(),h(`div`,Ye,[n.work?(k(),h(`button`,{key:0,onClick:e=>l(`work`,n.work.id,n.work.version)},[e(r(n.activity===`write`?t(i)(`阅读这一稿`):t(i)(`阅读完整记录`)),1),s[0]||=a(`span`,{"aria-hidden":`true`},` →`,-1)],8,Xe)):p(``,!0),n.project?(k(),h(`button`,{key:1,class:`text-button`,onClick:e=>l(`project`,n.project.id)},r(t(i)(`查看项目`)),9,Ze)):p(``,!0)])):p(``,!0),n.materials?.length?(k(),h(`details`,Qe,[a(`summary`,null,r(t(i)(`接触的内容 · {length} 份`,{length:n.materials.length})),1),a(`ul`,null,[(k(!0),h(f,null,v(n.materials,e=>(k(),h(`li`,{key:e.id},[a(`button`,{class:`text-button`,onClick:t=>l(`source`,e.id)},r(e.title||t(i)(`未命名资料`)),9,$e)]))),128))])])):p(``,!0)])],8,Be))),128))])]))),128)),!n.loading&&!n.rows.length?(k(),m(te,{key:0,title:t(i)(`这里还没有经历记录`),text:t(i)(`做过的事与保存的成果,会逐渐出现在这里。`)},null,8,[`title`,`text`])):p(``,!0),a(`details`,et,[a(`summary`,null,[e(r(t(i)(`游戏客户端连接`))+` `,1),a(`span`,tt,r(t(i)(`开发中`)),1)]),a(`p`,nt,r(t(i)(`客户端控制尚未接入。已有的游玩记录可以在上方阅读。`)),1)])],8,Fe))}}),[[`__scopeId`,`data-v-400cba84`]]),it={class:`page time-page`},at={class:`time-intro`},ot={class:`eyebrow`},st={class:`time-clock`,"aria-hidden":`true`},ct={key:0,class:`card`,role:`alert`},lt={key:1,class:`muted`,role:`status`},ut={class:`time-today`},dt={class:`card main-activity`},ft={class:`eyebrow`},pt={class:`chip`},mt={key:0,class:`faint`},ht={key:1,class:`faint`},gt={class:`muted`},_t={class:`muted`},vt={key:0,class:`faint`},yt={class:`card day-balance`},bt={class:`eyebrow`},xt={class:`muted`},St={key:1,class:`card own-care`},Ct={class:`eyebrow`},wt={key:0,class:`muted`},Tt={key:1,class:`faint`},Et=[`disabled`],Dt={class:`card time-settings`},Ot=[`disabled`],kt={key:1},At={class:`sr-only`},jt=[`placeholder`],Mt={key:2},Nt={key:0,class:`time-cards`},Pt=[`data-task`],Ft={class:`row task-meta`},It=[`data-tone`],Lt={class:`faint`},Rt={class:`task-priority`},zt={key:0,class:`muted`},Bt={class:`faint`},Vt={key:1,class:`muted`},Ht={key:2,class:`share-status`},Ut={key:3,class:`muted`},Wt={class:`task-sources`},Gt={key:0,class:`faint`},Kt={class:`faint`},qt={key:1,class:`muted`},Jt={class:`row`},Yt=[`onClick`],Xt=[`onClick`],Zt=[`onClick`],Qt=[`onClick`],$t=[`onClick`],en=[`onClick`],tn={key:1,class:`time-cards work-grid`},nn=[`data-work`,`onClick`],rn={class:`eyebrow`},an={class:`faint`},on={key:2,class:`time-cards work-grid`},sn={class:`eyebrow`},cn={class:`muted`},ln=[`onClick`],un={class:`row time-pagination`},dn=[`disabled`],fn=[`disabled`],pn={class:`row`},mn={class:`chip`},hn={class:`work-body`},gn={class:`muted`},_n={key:0},vn={class:`row`},yn={class:`list`},bn=[`onClick`],xn={key:1},Sn={class:`list`},Cn=[`onClick`],wn=[`href`],Tn={key:1,class:`muted`},En={class:`faint`},Dn={class:`work-body`},On=T(E({__name:`TimePage`,setup(o){let l=[`today`,`tasks`,`works`,`projects`,`experiences`],T=M(l.includes(O.sub.split(`/`)[0])?O.sub.split(`/`)[0]:`today`),E=c(g(`/mind/time`)),j=c([]),P=M(!1),I=M(``),L=M(0),R=M(``),z=M(``),B=M(O.sub.split(`/`)[0]===`tasks`&&O.sub.split(`/`)[1]||``),V=c(null),H=c(null),U=c(null),ce=M(!1),le=M(!1),W=M(!1),G=M(!1),K=M({focusMinutes:25,breakMinutes:5,stepMinutes:5,paceSpeed:1.25,ownPlanMinutes:45,commitmentReviewMinutes:30}),q=D(()=>re.data?.clock?.timeZone||`Asia/Shanghai`),ue=s({todo:S(`ToDo · 待办`),scheduled:S(`Scheduled · 已安排`),doing:S(`Doing · 正在做`),paused:S(`Paused · 暂停`),waiting:S(`Waiting · 等待`),done:S(`Done · 已完成`),abandoned:S(`Abandoned · 已放下`)}),de=s({none:``,waiting:S(`完成,尚未交付`),deferred:S(`暂缓交付`),declined:S(`暂不分享`),pending:S(`待继续交付`),sent:S(`已完整交付`),reported:S(`已整理并汇报`),uncertain:S(`送达不确定,等待核对`),sending:S(`正在交付`)}),fe=s({0:S(`低`),1:S(`普通`),2:S(`高`),3:S(`最高`)});function pe(e){return e.state===`waiting`?e.waitKind===`adjust`?i(`需要调整约定`):e.waitKind===`specify`?i(`待想具体`):i(`Waiting · 等条件`):e.state===`todo`&&!e.schedule?.chosenAt?i(`ToDo · 待选时间`):e.state===`scheduled`?i(`Scheduled · 已选时间`):e.state===`paused`?i(`Paused · 进度保留`):ue[e.state]}async function me(e,t){try{await w(`/mind/time/tasks/`+e.id+`/control`,`POST`,{action:`priority`,priority:t}),await X()}catch(e){A(e.message,!0)}}let he=e=>i(`{v} 分钟`,{v:Math.floor((e||0)/6e4)}),J=e=>i(`{v} 分钟`,{v:Math.ceil((e||0)/6e4)}),Y=0;function ge(){let e=new URLSearchParams({limit:`24`,offset:String(L.value)});return R.value&&e.set(`q`,R.value),T.value===`tasks`&&z.value&&e.set(`state`,z.value),T.value===`tasks`&&B.value&&e.set(`id`,B.value),`/mind/time/`+T.value+`?`+e}async function X(){let e=++Y,t=T.value===`today`?`/mind/time`:ge(),n=g(t);n&&(T.value===`today`?E.value=n:j.value=n),P.value=!n,I.value=``;try{let n=await w(t);if(e!==Y)return;T.value===`today`?(E.value=n,W.value||(K.value={...n.settings})):(j.value=n,le.value=n.length===24)}catch(t){e===Y&&(I.value=t.message)}finally{e===Y&&(P.value=!1)}}async function Z(e,t){ce.value=!0;try{V.value=await w(`/mind/time/works/`+encodeURIComponent(e)+(t?`?version=`+t:``)),H.value=null,U.value=null}catch(e){A(e.message,!0)}finally{ce.value=!1}}async function Q(e){try{let t=await w(`/mind/time/projects/`+e),[n,r]=await Promise.all([w(`/mind/time/works?project=`+e),w(`/mind/time/projects/`+e+`/sources`)]);H.value={...t,works:n,sources:r},V.value=null,U.value=null}catch(e){A(e.message,!0)}}async function _e(e){try{U.value=await w(`/mind/time/sources/`+e)}catch(e){A(e.message,!0)}}async function $(e,t){let r,a;if(t===`schedule`){let t=await n(i(`最早开始时间(YYYY-MM-DD HH:mm)。截止时间保留原安排。`),{title:i(`安排时间`),confirmText:i(`继续`),placeholder:`2026-10-02 14:30`});if(t===null)return;r=t;let o=await n(i(`这次安排投入多少分钟(5 至 240)?`),{title:i(`投入时间`),confirmText:i(`继续`),placeholder:String(e.schedule?.durationMinutes||25)});if(o===null)return;a=Number(o)}let o=await n(i(t===`abandon`?`留下放下这件事的原因。`:`留下这次调整的原因。`),{title:i(`调整安排`),confirmText:i(`保存`),placeholder:i(`管理台调整`)});if(o!==null)try{await w(`/mind/time/tasks/`+e.id+`/control`,`POST`,{action:t,...r?{readyAt:r}:{},...a===void 0?{}:{durationMinutes:a},reason:o||i(`管理台调整`)}),await X()}catch(e){A(e.message,!0)}}async function ve(e){if(!H.value)return;let t=await n(i(`提出选题、续写方向或修改想法。她会自行决定是否采纳。`),{title:i(`给她一个建议`),confirmText:i(`留下建议`)});if(t!==null)try{let n=await w(`/mind/time/projects/`+H.value.id+`/suggest`,`POST`,{action:e,idea:t});A(n.duplicate?i(`这个项目已有待处理事项`):i(`建议已保存,等待她的选择`)),await X()}catch(e){A(e.message,!0)}}async function ye(){if(!V.value)return;let e=V.value,t=new Blob([e.title+`
2
-
3
- `+e.content],{type:`text/plain;charset=utf-8`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=e.title.replace(/[\\/:*?"<>|]/g,`_`)+`-v`+e.version+`.txt`,r.click(),URL.revokeObjectURL(n)}async function be(){if(!G.value){G.value=!0,Y++;try{let e=await w(`/mind/time/settings`,`PUT`,{...K.value});Y++,K.value=e,W.value=!1,A(i(`专注安排已保存`)),await X()}catch(e){A(e.message,!0)}finally{G.value=!1}}}function xe(e){B.value=e,T.value===`tasks`?X():T.value=`tasks`,ee(`tasks/`+e)}async function Se(){try{await w(`/mind/time/care`,`POST`,{}),A(i(`已记下,空下来时回看说过的话`)),await X()}catch(e){A(e.message,!0)}}async function Ce(){try{await w(`/mind/time/plan`,`POST`,{}),A(i(`已记下,让她重新想具体时间与投入时长`)),await X()}catch(e){A(e.message,!0)}}function we(){L.value=0,X()}b(T,e=>{O.page===`time`&&(L.value=0,j.value=[],R.value=``,z.value=``,e!==`tasks`&&(B.value=``),ee(e===`today`?``:e===`tasks`&&B.value?`tasks/`+B.value:e===`works`&&O.sub.startsWith(`works/`)?O.sub:e),X())}),b(()=>[O.page,O.sub],([e,t])=>{if(e!==`time`)return;let n=t.split(`/`)[0]||`today`;if(n===`tasks`){let e=t.split(`/`)[1]||``;B.value!==e&&(B.value=e,T.value===`tasks`&&X())}l.includes(n)&&(T.value=n),n===`works`&&t.split(`/`)[1]&&V.value?.id!==t.split(`/`)[1]&&Z(t.split(`/`)[1])});let Te=ie(`time`,X),Ee=0;return _(()=>{Ee=window.setInterval(()=>{Te.value&&T.value===`today`&&!document.hidden&&X()},5e3);let e=O.sub.split(`/`)[1];e&&T.value===`works`&&Z(e)}),C(()=>{clearInterval(Ee),Y++}),(n,o)=>(k(),h(`div`,it,[a(`header`,at,[a(`div`,null,[a(`span`,ot,r(t(i)(`TIME · 时间`)),1),a(`h1`,null,[e(r(t(i)(`日子在走,`)),1),a(`em`,null,r(t(i)(`我也有自己的事。`)),1)]),a(`p`,null,r(t(i)(`想做的事,正在留下的作品,与世界相遇的每一段。`)),1)]),a(`div`,st,[o[24]||=a(`span`,null,`25`,-1),a(`small`,null,r(t(i)(`留一点时间给自己`)),1)])]),y(oe,{modelValue:T.value,"onUpdate:modelValue":o[0]||=e=>T.value=e,label:t(i)(`时间的分区`),items:[{key:`today`,label:t(i)(`今日`)},{key:`tasks`,label:t(i)(`待办`)},{key:`works`,label:t(i)(`作品库`)},{key:`projects`,label:t(i)(`持续项目`)},{key:`experiences`,label:t(i)(`体验记录`)}]},null,8,[`modelValue`,`label`,`items`]),I.value?(k(),h(`p`,ct,[e(r(I.value)+` `,1),a(`button`,{onClick:X},r(t(i)(`重试`)),1)])):p(``,!0),P.value?(k(),h(`p`,lt,r(t(i)(`正在取回这段生活…`)),1)):p(``,!0),T.value===`today`&&E.value?(k(),h(f,{key:2},[a(`section`,ut,[a(`article`,dt,[a(`span`,ft,r(t(i)(`此刻的主活动`)),1),E.value.current?(k(),h(f,{key:0},[a(`h2`,null,r(E.value.current.title||E.value.current.label),1),a(`span`,pt,r(E.value.current.label)+` · `+r(E.value.current.timing?.phase===`preparing`?t(i)(`正在准备`):(E.value.current.sessionElapsedMs??E.value.current.elapsedMs)<6e4?t(i)(`刚开始这一段`):t(i)(`本次已投入 `)+he(E.value.current.sessionElapsedMs??E.value.current.elapsedMs)),1),E.value.current.schedule?.chosenAt?(k(),h(`p`,mt,r(t(i)(`她安排 {v} 开始,这次想投入 {durationMinutes} 分钟。`,{v:t(F)(E.value.current.schedule.proposedAt,q.value),durationMinutes:E.value.current.schedule.durationMinutes})),1)):p(``,!0),E.value.current.timing?.plannedMs?(k(),h(`p`,ht,r(t(i)(`本段预计 {v} · 还需约 {v2}`,{v:J(E.value.current.timing.plannedMs),v2:J(E.value.current.timing.remainingMs)})),1)):p(``,!0),a(`p`,null,r(E.value.current.why||t(i)(`从自己的打算接着做。`)),1),a(`p`,gt,r(E.value.current.checkpoint?.next||t(i)(`正在推进当前步骤。`)),1),a(`button`,{class:`text-button`,onClick:o[1]||=e=>T.value=`tasks`},r(t(i)(`查看安排 →`)),1)],64)):(k(),h(f,{key:1},[a(`h2`,null,r(E.value.agenda?.idle?.title||t(i)(`这会儿没有主活动`)),1),a(`p`,_t,r(E.value.agenda?.idle?.reason||t(i)(`自己选择接下来做什么,也可以歇着。`)),1),E.value.agenda?.idle?.next?(k(),h(`p`,vt,r(t(i)(`下一项:{title} · {v} 开始 · {durationMinutes} 分钟`,{title:E.value.agenda.idle.next.title,v:t(F)(E.value.agenda.idle.next.chosenStart,q.value),durationMinutes:E.value.agenda.idle.next.durationMinutes})),1)):p(``,!0),a(`button`,{class:`text-button`,onClick:Ce},r(t(i)(`让她重新想想安排`)),1)],64))]),a(`article`,yt,[a(`span`,bt,r(t(i)(`今天`)),1),a(`h2`,null,r(he(E.value.today?.activeMs)),1),a(`p`,null,r(t(i)(`实际活动投入 · {energyLabel} · {mood}`,{energyLabel:E.value.affect?.energyLabel,mood:E.value.affect?.mood})),1),a(`p`,xt,r(t(i)(`普通交流可以伴随进行,短消息不会自动暂停。`)),1),a(`button`,{class:`text-button`,onClick:o[2]||=e=>t(x)(`life`)},r(t(i)(`翻开日记 →`)),1)])]),E.value.agenda?(k(),m(Pe,{key:0,agenda:E.value.agenda,onTask:xe},null,8,[`agenda`])):p(``,!0),E.value.care?(k(),h(`section`,St,[a(`span`,Ct,r(t(i)(`独处时理一理`)),1),a(`h2`,null,r(t(i)(`自己的打算,说过的约定`)),1),a(`p`,null,r(t(i)(`空下来时,她会想一件自己愿意做的小事,也会回看有没有漏下答应别人的事。可以选择歇着。`)),1),E.value.care.last?(k(),h(`p`,wt,[e(r(t(i)(`最近:{reason}`,{reason:E.value.care.last.reason})),1),E.value.care.last.finished?(k(),h(f,{key:0},[e(` · `+r(t(F)(E.value.care.last.finished,q.value)),1)],64)):p(``,!0)])):p(``,!0),E.value.care.pendingReplies?(k(),h(`p`,Tt,r(t(i)(`还有 {pendingReplies} 条已说过的话等着分批回看。`,{pendingReplies:E.value.care.pendingReplies})),1)):p(``,!0),a(`button`,{disabled:E.value.care.queued||!!E.value.care.working,onClick:Se},r(E.value.care.working?t(i)(`正在整理自己的生活`):E.value.care.queued?t(i)(`已记下,空下来时整理`):t(i)(`空下来整理一下约定`)),9,Et)])):p(``,!0),a(`details`,Dt,[a(`summary`,null,r(t(i)(`专注与休息安排`)),1),a(`form`,{onSubmit:u(be,[`prevent`]),onInput:o[9]||=e=>W.value=!0,onChange:o[10]||=e=>W.value=!0},[a(`label`,null,[e(r(t(i)(`默认专注段(分钟)`)),1),N(a(`input`,{"onUpdate:modelValue":o[3]||=e=>K.value.focusMinutes=e,type:`number`,min:`1`,max:`120`},null,512),[[d,K.value.focusMinutes,void 0,{number:!0}]]),a(`small`,null,r(t(i)(`没有另行选择时使用;她自己的安排优先。`)),1)]),a(`label`,null,[e(r(t(i)(`休息建议(分钟)`)),1),N(a(`input`,{"onUpdate:modelValue":o[4]||=e=>K.value.breakMinutes=e,type:`number`,min:`1`,max:`120`},null,512),[[d,K.value.breakMinutes,void 0,{number:!0}]])]),a(`label`,null,[e(r(t(i)(`保存步骤间隔(分钟)`)),1),N(a(`input`,{"onUpdate:modelValue":o[5]||=e=>K.value.stepMinutes=e,type:`number`,min:`1`,max:`120`},null,512),[[d,K.value.stepMinutes,void 0,{number:!0}]])]),a(`label`,null,[e(r(t(i)(`活动节奏`)),1),N(a(`input`,{"onUpdate:modelValue":o[6]||=e=>K.value.paceSpeed=e,type:`number`,min:`1`,max:`2`,step:`0.05`},null,512),[[d,K.value.paceSpeed,void 0,{number:!0}]]),a(`small`,null,r(t(i)(`默认 1.25 倍,所有活动按现实时间逐段推进。`)),1)]),a(`label`,null,[e(r(t(i)(`想自己的安排(间隔分钟)`)),1),N(a(`input`,{"onUpdate:modelValue":o[7]||=e=>K.value.ownPlanMinutes=e,type:`number`,min:`1`,max:`120`},null,512),[[d,K.value.ownPlanMinutes,void 0,{number:!0}]]),a(`small`,null,r(t(i)(`有空才考虑,可以决定休息。`)),1)]),a(`label`,null,[e(r(t(i)(`回看说过的话(间隔分钟)`)),1),N(a(`input`,{"onUpdate:modelValue":o[8]||=e=>K.value.commitmentReviewMinutes=e,type:`number`,min:`1`,max:`120`},null,512),[[d,K.value.commitmentReviewMinutes,void 0,{number:!0}]]),a(`small`,null,r(t(i)(`分批整理约定,保留去重与原来的选择。`)),1)]),a(`button`,{class:`primary`,disabled:G.value},r(G.value?t(i)(`正在保存`):t(i)(`保存安排`)),9,Ot)],32)])],64)):T.value===`today`?p(``,!0):(k(),h(f,{key:3},[a(`form`,{class:`time-filter`,onSubmit:u(we,[`prevent`])},[T.value===`tasks`&&B.value?(k(),h(`button`,{key:0,type:`button`,onClick:o[11]||=e=>{B.value=``,t(ee)(`tasks`),X()}},r(t(i)(`查看全部待办`)),1)):p(``,!0),[`works`,`projects`,`experiences`].includes(T.value)?(k(),h(`label`,kt,[a(`span`,At,r(t(i)(`搜索标题`)),1),N(a(`input`,{"onUpdate:modelValue":o[12]||=e=>R.value=e,placeholder:t(i)(`搜索标题或项目`)},null,8,jt),[[d,R.value]]),a(`button`,null,r(t(i)(`搜索`)),1)])):p(``,!0),T.value===`tasks`?(k(),h(`label`,Mt,[e(r(t(i)(`任务状态`)),1),y(ae,{modelValue:z.value,"onUpdate:modelValue":o[13]||=e=>z.value=e,"aria-label":t(i)(`任务状态`),options:[{value:``,label:t(i)(`全部`)},...Object.entries(t(ue)).map(([e,t])=>({value:e,label:t}))],onChange:we},null,8,[`modelValue`,`aria-label`,`options`])])):p(``,!0)],32),T.value===`tasks`?(k(),h(`div`,Nt,[(k(!0),h(f,null,v(j.value,n=>(k(),h(`article`,{key:n.id,class:`card time-task`,"data-task":n.id},[a(`div`,Ft,[a(`span`,{class:`chip`,"data-tone":n.state===`done`?`ok`:`quiet`},r(pe(n)),9,It),a(`span`,Lt,r(n.kind===`promise`?t(i)(`答应的事`):n.kind===`suggestion`?t(i)(`外部建议`):t(i)(`自己的计划`))+r(n.person?` · `+n.person:``),1),a(`label`,Rt,[a(`span`,null,r(t(i)(`优先级`)),1),y(ae,{"model-value":n.priority,"aria-label":t(i)(`优先级:`)+n.title,options:Object.entries(t(fe)).map(([e,t])=>({value:e,label:t})),disabled:!!n.checkpoint?.mergedInto,"onUpdate:modelValue":e=>me(n,Number(e))},null,8,[`model-value`,`aria-label`,`options`,`disabled`,`onUpdate:modelValue`])])]),a(`h2`,null,r(n.title),1),a(`p`,null,r(n.why),1),n.wait_reason?(k(),h(`p`,zt,r(n.wait_reason),1)):p(``,!0),a(`p`,Bt,[n.schedule?.chosenAt&&!n.checkpoint?.reschedule?(k(),h(f,{key:0},[e(r(t(i)(`{v} {v2} — {v3} · 这次 {durationMinutes} 分钟`,{v:n.schedule.chosenBy===`admin`?t(i)(`管理台安排`):t(i)(`她选定`),v2:t(F)(n.schedule.proposedAt,q.value),v3:t(F)(n.schedule.proposedEnd,q.value),durationMinutes:n.schedule.durationMinutes})),1)],64)):n.schedule?.startedAt?(k(),h(f,{key:1},[e(r(t(i)(`本段开始 {v}`,{v:t(F)(n.schedule.startedAt,q.value)})),1)],64)):n.schedule?.proposedAt?(k(),h(f,{key:2},[e(r(n.schedule.conditional?t(i)(`条件满足后建议`):t(i)(`已安排`))+` `+r(t(F)(n.schedule.proposedAt,q.value))+` — `+r(t(F)(n.schedule.proposedEnd,q.value)),1)],64)):(k(),h(f,{key:3},[e(r(n.state===`waiting`?t(i)(`需要解决上面的条件,再选择时间`):n.state===`paused`?t(i)(`进度已保存,之后再安排续接时间`):t(i)(`已记下,等她选择具体时间`)),1)],64)),n.timing?.plannedMs?(k(),h(f,{key:4},[e(r(t(i)(`· 本段预计 {v} · 本段已投入 {v2}`,{v:J(n.timing.plannedMs),v2:he(n.timing.stepMs)})),1),n.timing.phase===`engaged`?(k(),h(f,{key:0},[e(r(t(i)(`· 还需约 {v}`,{v:J(n.timing.remainingMs)})),1)],64)):p(``,!0)],64)):n.timing?.phase===`legacy`?(k(),h(f,{key:5},[e(r(t(i)(`· 此前时长未单独记录`)),1)],64)):(k(),h(f,{key:6},[e(` · `+r(n.state===`doing`?t(i)(`正在准备这一段`):t(i)(`尚未开始本段投入`)),1)],64))]),n.schedule?.outcome?(k(),h(`p`,Vt,r(t(i)(`本段目标:{outcome}`,{outcome:n.schedule.outcome})),1)):p(``,!0),t(de)[n.share_state]?(k(),h(`p`,Ht,r(t(de)[n.share_state])+` `+r(n.share_reason),1)):p(``,!0),n.checkpoint?.next?(k(),h(`p`,Ut,r(t(i)(`下一步:{next}`,{next:n.checkpoint.next})),1)):p(``,!0),a(`details`,Wt,[a(`summary`,null,r(t(i)(`来源与原安排 · {length} 条`,{length:n.sources.length})),1),n.due_at?(k(),h(`p`,Gt,r(t(i)(`原话日期参考 {v},不作为逾期判断。`,{v:t(F)(n.due_at,q.value)})),1)):p(``,!0),a(`small`,Kt,r(n.sources.join(` · `)),1),n.checkpoint?.mergedInto?(k(),h(`p`,qt,r(t(i)(`已合并到唯一事项,保留这条原记录。`)),1)):p(``,!0)]),a(`div`,Jt,[n.work_id?(k(),h(`button`,{key:0,onClick:e=>Z(n.work_id)},r(t(i)(`阅读已有正文`)),9,Yt)):p(``,!0),n.project_id?(k(),h(`button`,{key:1,onClick:e=>Q(n.project_id)},r(t(i)(`持续项目`)),9,Xt)):p(``,!0),[`done`,`abandoned`].includes(n.state)?p(``,!0):(k(),h(f,{key:2},[n.state===`doing`?(k(),h(`button`,{key:0,onClick:e=>$(n,`pause`)},r(t(i)(`暂停`)),9,Zt)):(k(),h(`button`,{key:1,onClick:e=>$(n,`resume`)},r(t(i)(`重新安排`)),9,Qt)),a(`button`,{onClick:e=>$(n,`schedule`)},r(t(i)(`安排时间`)),9,$t),a(`button`,{class:`text-button`,onClick:e=>$(n,`abandon`)},r(t(i)(`放下`)),9,en)],64))])],8,Pt))),128))])):T.value===`works`?(k(),h(`div`,tn,[(k(!0),h(f,null,v(j.value,e=>(k(),h(`button`,{key:e.id,class:`card work-card`,"data-work":e.id,onClick:t=>Z(e.id)},[a(`span`,rn,r(t(i)(`{v} · 第 {ordinal} 篇`,{v:e.state===`complete`?t(i)(`完成稿`):t(i)(`草稿`),ordinal:e.ordinal})),1),a(`h2`,null,r(e.title),1),a(`p`,null,r(e.summary),1),a(`small`,null,r(t(i)(`{characters} 字 · 版本 {version}`,{characters:e.characters,version:e.version})),1),a(`span`,an,r(e.project_title||t(i)(`独处留下的东西`)),1)],8,nn))),128))])):T.value===`projects`?(k(),h(`div`,on,[(k(!0),h(f,null,v(j.value,e=>(k(),h(`article`,{key:e.id,class:`card`},[a(`span`,sn,r(e.kind===`game`?t(i)(`游戏`):e.serial?t(i)(`连载`):t(i)(`持续项目`))+` · `+r(e.state===`active`?t(i)(`在继续`):e.state===`complete`?t(i)(`已完结`):t(i)(`暂时放下`)),1),a(`h2`,null,r(e.title),1),a(`p`,null,r(e.why),1),a(`p`,cn,r(e.summary),1),a(`button`,{onClick:t=>Q(e.id)},r(t(i)(`打开项目`)),9,ln)]))),128))])):(k(),m(rt,{key:3,rows:j.value,zone:q.value,loading:P.value,onWork:Z,onProject:Q,onSource:_e},null,8,[`rows`,`zone`,`loading`])),T.value!==`experiences`&&!P.value&&!j.value.length?(k(),m(te,{key:4,title:T.value===`works`?t(i)(`作品还在等待第一笔`):t(i)(`这里还没有记录`),text:t(i)(`实际发生并保存之后,这里才会出现内容。`)},null,8,[`title`,`text`])):p(``,!0),a(`div`,un,[a(`button`,{disabled:L.value===0,onClick:o[14]||=e=>{L.value=Math.max(0,L.value-24),X()}},r(t(i)(`上一页`)),9,dn),a(`span`,null,r(L.value/24+1),1),a(`button`,{disabled:!le.value,onClick:o[15]||=e=>{L.value+=24,X()}},r(t(i)(`下一页`)),9,fn)])],64)),y(se,{open:!!V.value,title:V.value?.title||t(i)(`作品`),eyebrow:t(i)(`她留下的正文`),width:`780px`,onClose:o[18]||=e=>V.value=null},{default:ne(()=>[V.value?(k(),h(f,{key:0},[a(`div`,pn,[a(`span`,mn,r(t(i)(`{v} · {length} 字`,{v:V.value.state===`complete`?t(i)(`完成稿`):t(i)(`草稿`),length:V.value.content.length})),1),a(`label`,null,[e(r(t(i)(`版本`)),1),y(ae,{"model-value":V.value.version,"aria-label":t(i)(`作品版本`),options:V.value.versions.map(e=>({value:e.version,label:e.version+` · `+t(F)(e.created,q.value)})),"onUpdate:modelValue":o[16]||=e=>Z(V.value.id,Number(e))},null,8,[`model-value`,`aria-label`,`options`])]),a(`button`,{onClick:ye},r(t(i)(`导出正文`)),1)]),a(`p`,hn,r(V.value.content),1),V.value.project_id?(k(),h(`button`,{key:0,onClick:o[17]||=e=>Q(V.value.project_id)},r(t(i)(`查看项目与设定`)),1)):p(``,!0)],64)):p(``,!0)]),_:1},8,[`open`,`title`,`eyebrow`]),y(se,{open:!!H.value,title:H.value?.title||t(i)(`持续项目`),eyebrow:t(i)(`她自己的方向`),width:`740px`,onClose:o[22]||=e=>H.value=null},{default:ne(()=>[H.value?(k(),h(f,{key:0},[a(`p`,null,r(H.value.why),1),a(`p`,gn,r(H.value.summary),1),Object.keys(H.value.bible||{}).length?(k(),h(`details`,_n,[a(`summary`,null,r(t(i)(`设定与未解决线索`)),1),a(`dl`,null,[(k(!0),h(f,null,v(H.value.bible,(e,n)=>(k(),h(f,{key:n},[a(`dt`,null,r({characters:t(i)(`人物`),world:t(i)(`世界`),threads:t(i)(`未解决线索`),topic:t(i)(`资料主题`),mode:t(i)(`模式`)}[n]||n),1),a(`dd`,null,r(e),1)],64))),128))])])):p(``,!0),a(`div`,vn,[a(`button`,{onClick:o[19]||=e=>ve(`continue`)},r(t(i)(`建议续写`)),1),a(`button`,{onClick:o[20]||=e=>ve(`revise`)},r(t(i)(`建议修改`)),1),a(`button`,{onClick:o[21]||=e=>ve(`direction`)},r(t(i)(`建议方向`)),1)]),a(`h3`,null,r(t(i)(`已经留下的篇章`)),1),a(`ul`,yn,[(k(!0),h(f,null,v(H.value.works,e=>(k(),h(`li`,{key:e.id},[a(`button`,{class:`text-button`,onClick:t=>Z(e.id)},r(t(i)(`第 {ordinal} 篇 · {title}`,{ordinal:e.ordinal,title:e.title})),9,bn),a(`small`,null,r(e.state===`draft`?t(i)(`草稿`):t(i)(`完成稿`)),1)]))),128))]),H.value.sources.length?(k(),h(`h3`,xn,r(t(i)(`接触的资料`)),1)):p(``,!0),a(`ul`,Sn,[(k(!0),h(f,null,v(H.value.sources,e=>(k(),h(`li`,{key:e.id},[a(`button`,{class:`text-button`,onClick:t=>_e(e.id)},r(e.title),9,Cn)]))),128))])],64)):p(``,!0)]),_:1},8,[`open`,`title`,`eyebrow`]),y(se,{open:!!U.value,title:U.value?.title||t(i)(`资料`),eyebrow:U.value?.kind===`model`?t(i)(`模型知识整理 · 未经联网核验`):t(i)(`实际返回的摘录`),width:`740px`,onClose:o[23]||=e=>U.value=null},{default:ne(()=>[U.value?(k(),h(f,{key:0},[U.value.url?(k(),h(`a`,{key:0,href:U.value.url,target:`_blank`,rel:`noopener noreferrer`},r(t(i)(`打开来源`)),9,wn)):p(``,!0),U.value.kind===`model`?(k(),h(`p`,Tn,r(U.value.uncertainty||t(i)(`基于模型已有知识,具体剧情与章节仍需核验。`)),1)):p(``,!0),a(`p`,En,r(t(F)(U.value.created,q.value)),1),a(`p`,Dn,r(U.value.content),1)],64)):p(``,!0)]),_:1},8,[`open`,`title`,`eyebrow`])]))}}),[[`__scopeId`,`data-v-6804b51c`]]);export{On as default};
@@ -1 +0,0 @@
1
- var e=new Map;function t(t,n){let r=JSON.stringify([t,n]),i=e.get(r);return i||(i=new Intl.DateTimeFormat(t,n),e.set(r,i),e.size>64&&e.delete(e.keys().next().value)),i}export{t};
@@ -1,4 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ChatsPage-BhlJHseG.js","assets/Empty-DP6WMGHi.js","assets/Empty-DmUB2-Bk.css","assets/formatters-ZmW_xFHw.js","assets/media-SMfTT-yc.js","assets/Field-CtbdqaiB.js","assets/ChatsPage-DfyPCS9N.css","assets/HeartPage-32BeTPn2.js","assets/HeartPage-Bft9wZp5.css","assets/PeoplePage-DxtpekwM.js","assets/knowledge-C6_HvoyB.js","assets/PeoplePage-BmUxkrOU.css","assets/LifePage-CxSm0XKI.js","assets/LifePage-BUi5euBF.css","assets/TimePage-7-awH5XL.js","assets/TimePage-BOms_n4I.css","assets/MemoryPage-BeKBcPCY.js","assets/MemoryPage-cZvXfkXb.css","assets/NaturePage-NEPYl2HS.js","assets/NaturePage-CTXHCE2D.css","assets/SystemPage-BvzJlHuY.js","assets/SystemPage-BkRu0Rvx.css","assets/PluginsPage-DksEZbUU.js","assets/PluginsPage-CVVQwEBI.css"])))=>i.map(i=>d[i]);
2
- import{$ as e,A as t,B as n,C as r,Ct as i,Et as a,F as o,G as s,H as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as g,Q as _,R as v,S as y,St as ee,T as te,Tt as b,U as x,V as S,W as C,X as w,Y as T,Z as E,_ as ne,_t as D,a as O,at as re,bt as k,c as A,ct as j,d as ie,dt as M,et as N,ft as ae,g as oe,gt as P,h as se,ht as ce,i as F,it as le,j as I,k as ue,l as de,lt as fe,m as L,mt as pe,n as R,nt as z,ot as me,pt as he,q as B,r as ge,rt as _e,s as V,st as ve,t as ye,tt as be,u as xe,ut as H,v as U,vt as W,wt as G,x as Se,xt as K,y as q,yt as Ce}from"./Empty-DP6WMGHi.js";import{t as we}from"./formatters-ZmW_xFHw.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var J=g({calm:{key:`calm`,label:I(`平静`),feel:I(`像一杯温水`),particle:`mote`,tempo:1},sweet:{key:`sweet`,label:I(`甜甜`),feel:I(`心里软软的`),particle:`bubble`,tempo:1.05},bright:{key:`bright`,label:I(`雀跃`),feel:I(`想蹦起来`),particle:`sparkle`,tempo:1.45},blue:{key:`blue`,label:I(`低落`),feel:I(`有点灰灰的`),particle:`rain`,tempo:.7},stormy:{key:`stormy`,label:I(`烦躁`),feel:I(`心里起风了`),particle:`fluff`,tempo:1.25},drowsy:{key:`drowsy`,label:I(`困倦`),feel:I(`眼皮在打架`),particle:`dust`,tempo:.6},night:{key:`night`,label:I(`夜晚`),feel:I(`睡着了`),particle:`star`,tempo:.45}}),Te=Object.keys(J);function Ee(e){return typeof e==`string`&&e in J}function De(e){if(!e)return`calm`;let t=e.valence??0,n=e.arousal??.35;return e.phase===`asleep`?`night`:e.phase===`sleepy`||e.phase===`waking`||(e.energy??1)<.25?`drowsy`:t>.45?n>.5?`bright`:`sweet`:t>.22?`sweet`:t>-.12?`calm`:n>.5?`stormy`:`blue`}function Oe(e){if(!e)return .45;if(e.phase===`asleep`)return .6;let t=.25+Math.abs(e.valence??0)*.5+(e.arousal??.35)*.35;return Math.min(1,Math.max(.2,t))}var ke=`luckyTheme`,Ae=`luckyQuietMotion`;function je(e){try{return localStorage.getItem(e)}catch{return null}}function Me(e,t){try{t===null?localStorage.removeItem(e):localStorage.setItem(e,t)}catch{}}var Ne=typeof matchMedia==`function`?matchMedia(`(prefers-reduced-motion: reduce)`):null,Pe=je(ke),Y=k({affect:null,pinned:Ee(Pe)?Pe:null,quiet:je(Ae)===`true`,reduced:!!Ne?.matches});Ne?.addEventListener?.(`change`,e=>{Y.reduced=e.matches});var X=B(()=>De(Y.affect)),Fe=B(()=>Y.pinned??X.value),Z=B(()=>!Y.quiet&&!Y.reduced),Ie=B(()=>Y.pinned?.6:Oe(Y.affect));function Le(e){Y.affect=e}function Re(e){Y.pinned=e,Me(ke,e)}function ze(e){Y.quiet=e,Me(Ae,String(e))}function Be(){D(()=>{let e=document.documentElement,t=Fe.value,n=Y.affect?.phase||`awake`,r=Z.value?`full`:`quiet`;e.dataset.mood!==t&&(e.dataset.mood=t),e.dataset.phase!==n&&(e.dataset.phase=n),e.dataset.motion!==r&&(e.dataset.motion=r);let i=String(J[t].tempo),a=Ie.value.toFixed(2);e.style.getPropertyValue(`--tempo`)!==i&&e.style.setProperty(`--tempo`,i),e.style.getPropertyValue(`--intensity`)!==a&&e.style.setProperty(`--intensity`,a)})}var Q=k({data:null,error:``}),Ve=null,He=0;function Ue(){return Ve??=L(`/mind/presence`).then(e=>{Q.data=e,Q.error=``,Le({...e.affect})}).catch(e=>{Q.error=e.message}).finally(()=>{Ve=null}),Ve}function We(){Ue(),clearInterval(He),He=window.setInterval(()=>{document.hidden||Ue()},3e4);let e=()=>{document.hidden||Ue()};return document.addEventListener(`visibilitychange`,e),()=>{clearInterval(He),document.removeEventListener(`visibilitychange`,e)}}async function Ge(e,t={}){let{session:n=``,signal:r,reconnectMs:i=3e3}=t,a=e=>new Promise(t=>{if(r?.aborted)return t();let n=setTimeout(i,e);function i(){clearTimeout(n),r?.removeEventListener(`abort`,i),t()}r?.addEventListener(`abort`,i,{once:!0})});for(;!r?.aborted;){try{await te();let t=new URL(`/api/core/stream`,location.origin);n&&t.searchParams.set(`session`,n);let i=await fetch(t,{credentials:`same-origin`,signal:r});if(i.status===401&&y(),!i.ok)throw Error(`stream unavailable`);let a=i.body.getReader(),o=new TextDecoder,s=``;for(;;){let{value:t,done:n}=await a.read();if(n)break;s+=o.decode(t,{stream:!0});let r;for(;(r=s.indexOf(`
3
-
4
- `))>=0;){let t=s.slice(0,r);s=s.slice(r+2),t.startsWith(`data: `)&&await e(JSON.parse(t.slice(6)))}}}catch{}r?.aborted||await a(i)}}var Ke=`/app/assets/luckytri-home-95QKeMtc.png`,qe=`luckytri-wallpapers`,Je=`files`,Ye=`luckytri-sky-opacity-v1`,Xe=.22,Ze=.4,$=k({hero:Ke,sky:``,skyOpacity:$e()}),Qe=null;function $e(){try{let e=Number(localStorage.getItem(Ye));return Number.isFinite(e)?et(e):Xe}catch{return Xe}}function et(e){return Math.min(.82,Math.max(.08,e))}function tt(){return new Promise((e,t)=>{let n=indexedDB.open(qe,1);n.onupgradeneeded=()=>{n.result.objectStoreNames.contains(Je)||n.result.createObjectStore(Je)},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}function nt(e){return tt().then(t=>new Promise((n,r)=>{let i=t.transaction(Je).objectStore(Je).get(e);i.onsuccess=()=>n(i.result||null),i.onerror=()=>r(i.error)}))}function rt(e,t){return tt().then(n=>new Promise((r,i)=>{let a=n.transaction(Je,`readwrite`).objectStore(Je),o=t?a.put(t,e):a.delete(e);o.onsuccess=()=>r(),o.onerror=()=>i(o.error)}))}function it(e,t){let n=$[e];n.startsWith(`blob:`)&&URL.revokeObjectURL(n),$[e]=t?URL.createObjectURL(t):e===`hero`?Ke:``}async function at(e,t){if(!e.type.startsWith(`image/`))throw Error(l(`请选择一张图片`));if(e.size>20971520)throw Error(l(`图片太大了,请换一张 20MB 以内的`));try{let n=await createImageBitmap(e),r=Math.min(1,t/Math.max(n.width,n.height)),i=document.createElement(`canvas`);i.width=Math.max(1,Math.round(n.width*r)),i.height=Math.max(1,Math.round(n.height*r));let a=i.getContext(`2d`);if(!a)throw Error(l(`无法处理这张图片`));a.drawImage(n,0,0,i.width,i.height),n.close();let o=await new Promise(e=>i.toBlob(e,`image/jpeg`,.86));if(!o)throw Error(l(`无法处理这张图片`));return o}catch(t){if(t instanceof Error&&t.message!==l(`请选择一张图片`)&&e.size<=6291456)return e;throw t instanceof Error?t:Error(l(`无法处理这张图片`))}}function ot(){return Qe??=(async()=>{try{let[e,t]=await Promise.all([nt(`hero`),nt(`sky`)]);e&&it(`hero`,e),t&&it(`sky`,t)}catch{}})(),Qe}async function st(e){let t=await at(e,1600);await rt(`hero`,t),it(`hero`,t)}async function ct(){await rt(`hero`,null),it(`hero`,null)}async function lt(e){let t=await at(e,1920);await rt(`sky`,t),it(`sky`,t);let n=null;try{n=localStorage.getItem(Ye)}catch{n=null}n||dt(Ze)}async function ut(){await rt(`sky`,null),it(`sky`,null)}function dt(e){let t=et(e);$.skyOpacity=t;try{localStorage.setItem(Ye,String(t))}catch{}}var ft=g({idle:I(`闲着`),speaking:I(`刚说完话`),thinking:I(`在想怎么回`),solitude:I(`在独处`),reading:I(`在读资料`),diary:I(`在写日记`),review:I(`在回顾这段日子`),night:I(`在夜里整理今天`),asleep:I(`睡着了`),busy:I(`在忙自己的事`)});function pt(e){if(!e)return``;if(e.phase===`asleep`)return l(`睡着了,呼吸很轻`);let t=[e.phaseLabel,e.energyLabel,e.mood].filter(Boolean).join(`,`);return e.cause?l(`{line},因为{cause}`,{line:t,cause:e.cause}):t}function mt(e){return e?.lately||``}function ht(e){if(!e)return``;if(e.currentLife?.current)return e.currentLife.current.label+(e.currentLife.current.title?` · `+e.currentLife.current.title:``);let{kind:t,sessionName:n}=e.activity||{kind:`idle`},r=ft[t]||ft.idle;return(t===`speaking`||t===`thinking`)&&n?`${r} · ${n}`:r}var gt={mote:16,sparkle:12,bubble:10,rain:28,fluff:8,dust:18,star:24},_t=36,vt=class{canvas;ctx;parts=[];kind=`mote`;intensity=.5;colors={particle:`#ffffff`,accent:`#2c8465`,cheek:`#ff9db1`};w=0;h=0;raf=0;last=0;running=!1;shooting=null;nextShot=0;constructor(e){this.canvas=e;let t=e.getContext(`2d`,{alpha:!0,desynchronized:!0});if(!t)throw Error(`canvas unavailable`);this.ctx=t}configure(e,t){let n=e!==this.kind||Math.abs(t-this.intensity)>.15||!this.parts.length;this.kind=e,this.intensity=t,this.readColors(),n&&this.seed()}readColors(){let e=getComputedStyle(document.documentElement),t=(t,n)=>e.getPropertyValue(t).trim()||n;this.colors={particle:t(`--particle`,`#ffffff`),accent:t(`--accent`,`#2c8465`),cheek:t(`--cheek`,`#ff9db1`)}}resize(){let e=this.canvas.getBoundingClientRect();this.w=e.width,this.h=e.height,this.canvas.width=Math.round(e.width*1),this.canvas.height=Math.round(e.height*1),this.ctx.setTransform(1,0,0,1,0,0),this.seed()}start(){if(this.running)return;this.running=!0,this.last=performance.now();let e=t=>{if(!this.running)return;this.raf=requestAnimationFrame(e);let n=t-this.last;n<1e3/60-1||(this.last=t,this.step(Math.min(.05,n/1e3),t/1e3))};this.raf=requestAnimationFrame(e)}stop(){this.running=!1,cancelAnimationFrame(this.raf),this.ctx.clearRect(0,0,this.w,this.h)}count(){let e=Math.min(1.25,Math.max(.4,this.w*this.h/1296e3));return Math.min(_t,Math.round(gt[this.kind]*e*(.55+this.intensity*.9)))}seed(){this.parts=Array.from({length:this.count()},()=>this.spawn(!0))}spawn(e){let t=Math.random,n={x:t()*this.w,y:t()*this.h,vx:0,vy:0,r:2,a:1,phase:t()*Math.PI*2,spin:(t()-.5)*.6,alt:!1};switch(this.kind){case`mote`:Object.assign(n,{r:2+t()*4,vx:(t()-.5)*8,vy:-4-t()*8,a:.25+t()*.45}),e||(n.y=this.h+10);break;case`sparkle`:Object.assign(n,{r:2.5+t()*4.5,vx:(t()-.5)*14,vy:-6-t()*14,a:.5+t()*.5,alt:t()<.35}),e||(n.y=this.h+10);break;case`bubble`:Object.assign(n,{r:3+t()*8,vx:(t()-.5)*10,vy:-10-t()*18,a:.35+t()*.4,alt:t()<.3}),e||(n.y=this.h+14);break;case`rain`:Object.assign(n,{x:t()*(this.w+120),r:10+t()*14,vx:-40,vy:380+t()*180,a:.12+t()*.2}),e||(n.y=-24);break;case`fluff`:Object.assign(n,{r:14+t()*26,vx:(t()-.5)*30,vy:(t()-.5)*18,a:.06+t()*.08});break;case`dust`:Object.assign(n,{r:.8+t()*1.8,vx:(t()-.5)*6,vy:(t()-.5)*6,a:.3+t()*.5});break;case`star`:Object.assign(n,{r:.6+t()*1.6,a:.4+t()*.6,y:t()*this.h*.8})}return n}step(e,t){let{ctx:n,w:r,h:i,colors:a}=this;n.clearRect(0,0,r,i);let o=.6+this.intensity*.8;for(let n=0;n<this.parts.length;n++){let s=this.parts[n];switch(s.phase+=e,s.x+=s.vx*e*o,s.y+=s.vy*e*o,this.kind){case`mote`:case`sparkle`:case`bubble`:s.x+=Math.sin(t*.6+s.phase)*.25,s.y<-24&&(this.parts[n]=this.spawn(!1));break;case`rain`:s.y>i+24&&(this.parts[n]=this.spawn(!1));break;default:this.kind===`fluff`&&(s.vx+=Math.sin(t*.7+s.phase*3)*12*e,s.vy+=Math.cos(t*.5+s.phase*2)*8*e,s.vx=Math.max(-24,Math.min(24,s.vx)),s.vy=Math.max(-16,Math.min(16,s.vy))),s.x<-40&&(s.x=r+40),s.x>r+40&&(s.x=-40),s.y<-40&&(s.y=i+40),s.y>i+40&&(s.y=-40)}this.draw(this.parts[n],t,a)}this.kind===`star`&&this.shoot(e,t),n.globalAlpha=1}draw(e,t,n){let r=this.ctx;switch(this.kind){case`mote`:{let t=e.a*(.7+.3*Math.sin(e.phase*1.3));r.fillStyle=n.particle,r.globalAlpha=t*.25,this.circle(e.x,e.y,e.r*2.4),r.globalAlpha=t,this.circle(e.x,e.y,e.r);break}case`sparkle`:r.fillStyle=e.alt?n.accent:n.particle,r.globalAlpha=e.a*(.35+.65*(.5+.5*Math.sin(e.phase*2.2))),this.star(e.x,e.y,e.r,t*e.spin);break;case`bubble`:r.globalAlpha=e.a,e.alt?(r.fillStyle=n.cheek,this.heart(e.x,e.y,e.r*.8)):(r.strokeStyle=n.particle,r.lineWidth=1.2,r.beginPath(),r.arc(e.x,e.y,e.r,0,Math.PI*2),r.stroke(),r.globalAlpha=e.a*.8,r.beginPath(),r.arc(e.x-e.r*.35,e.y-e.r*.35,e.r*.25,0,Math.PI*2),r.fillStyle=n.particle,r.fill());break;case`rain`:r.strokeStyle=n.particle,r.globalAlpha=e.a,r.lineWidth=1,r.beginPath(),r.moveTo(e.x,e.y),r.lineTo(e.x-e.r*.1,e.y+e.r),r.stroke();break;case`fluff`:{let t=r.createRadialGradient(e.x,e.y,0,e.x,e.y,e.r);t.addColorStop(0,n.particle),t.addColorStop(1,`transparent`),r.fillStyle=t,r.globalAlpha=e.a,this.circle(e.x,e.y,e.r);break}case`dust`:r.fillStyle=n.particle,r.globalAlpha=e.a*(.75+.25*Math.sin(e.phase*.9)),this.circle(e.x,e.y,e.r);break;case`star`:r.fillStyle=n.particle,r.globalAlpha=e.a*(.55+.45*Math.sin(t*(.6+e.spin)+e.phase)),this.circle(e.x,e.y,e.r),e.r>1.8&&(r.globalAlpha*=.35,this.star(e.x,e.y,e.r*3.2,0))}}shoot(e,t){!this.shooting&&t>this.nextShot&&(this.nextShot=t+9+Math.random()*10,this.shooting={x:this.w*(.3+Math.random()*.6),y:this.h*Math.random()*.3,life:0});let n=this.shooting;if(!n)return;n.life+=e;let r=n.life/1.4;if(r>=1){this.shooting=null;return}let i=n.x-r*220,a=n.y+r*110,o=this.ctx,s=o.createLinearGradient(i,a,i+60,a-30);s.addColorStop(0,this.colors.particle),s.addColorStop(1,`transparent`),o.strokeStyle=s,o.globalAlpha=Math.sin(r*Math.PI)*.7,o.lineWidth=1.4,o.beginPath(),o.moveTo(i,a),o.lineTo(i+60,a-30),o.stroke()}circle(e,t,n){this.ctx.beginPath(),this.ctx.arc(e,t,n,0,Math.PI*2),this.ctx.fill()}star(e,t,n,r){let i=this.ctx;i.save(),i.translate(e,t),i.rotate(r),i.beginPath(),i.moveTo(0,-n),i.quadraticCurveTo(0,0,n,0),i.quadraticCurveTo(0,0,0,n),i.quadraticCurveTo(0,0,-n,0),i.quadraticCurveTo(0,0,0,-n),i.fill(),i.restore()}heart(e,t,n){let r=this.ctx;r.beginPath(),r.moveTo(e,t+n*.9),r.bezierCurveTo(e-n*1.6,t-n*.2,e-n*.6,t-n*1.3,e,t-n*.45),r.bezierCurveTo(e+n*.6,t-n*1.3,e+n*1.6,t-n*.2,e,t+n*.9),r.fill()}},yt=[`data-particles`],bt={key:0,class:`moon`},xt=R(z({__name:`MoodSky`,setup(e){let t=K(),n=B(()=>$.sky?{backgroundImage:`url("${$.sky}")`,opacity:String($.skyOpacity)}:void 0),r=B(()=>Z.value?J[Fe.value].particle:`off`),a=null,o=0;function s(){a&&(a.configure(J[Fe.value].particle,Ie.value),clearTimeout(o),o=window.setTimeout(()=>a?.readColors(),1500),Z.value&&!document.hidden?a.start():a.stop())}function c(){a?.resize()}function l(){a&&(document.hidden?a.stop():Z.value&&a.start())}return j(()=>{if(t.value){try{a=new vt(t.value)}catch{return}a.resize(),s(),window.addEventListener(`resize`,c,{passive:!0}),document.addEventListener(`visibilitychange`,l)}}),P([Fe,Ie,Z],s),me(()=>{a?.stop(),clearTimeout(o),window.removeEventListener(`resize`,c),document.removeEventListener(`visibilitychange`,l)}),(e,a)=>(H(),E(`div`,{class:`sky`,"aria-hidden":`true`,"data-particles":r.value},[a[0]||=u(`div`,{class:`sky-base`},null,-1),u(`div`,{class:G([`garden`,{custom:!!i($).sky}]),style:b(n.value)},null,6),a[1]||=_(`<div class="glow g1" data-v-d7604463></div><div class="glow g2" data-v-d7604463></div><div class="glow g3" data-v-d7604463></div><div class="glow g4" data-v-d7604463></div><div class="horizon" data-v-d7604463></div><div class="landscape" data-v-d7604463><i data-v-d7604463></i><i data-v-d7604463></i><i data-v-d7604463></i><i data-v-d7604463></i></div><div class="sheen" data-v-d7604463></div>`,7),i(Fe)===`night`?(H(),E(`div`,bt)):w(``,!0),a[2]||=u(`div`,{class:`vignette`},null,-1),u(`canvas`,{ref_key:`canvas`,ref:t,class:G([`particles`,{off:!i(Z)}])},null,2)],8,yt))}}),[[`__scopeId`,`data-v-d7604463`]]),St=g({calm:[I(`嗯?`),I(`我在这儿。`),I(`有什么事吗?`),I(`戳我做什么呀`)],sweet:[I(`在呢~`),I(`被你发现啦`),I(`嘿嘿,找我呀`),I(`今天心情不错哦`)],bright:[I(`哇!干嘛呀~`),I(`今天超开心的!`),I(`再戳我也还是好开心`),I(`嘿嘿嘿`)],blue:[I(`……嗯`),I(`我没事,就是有点低落`),I(`陪我待一会儿就好`),I(`唔……`)],stormy:[I(`别戳啦!`),I(`我现在有点烦……`),I(`让我静一静嘛`),I(`哼`)],drowsy:[I(`唔……好困`),I(`再让我眯一会儿`),I(`嗯……?`),I(`哈——欠`)],night:[I(`呼……呼……`),I(`(翻了个身)`),`zzz……`,I(`(嘟囔了一句梦话)`)]}),Ct=g({calm:[I(`……有点痒`),I(`嗯,这样挺好`),I(`谢谢你`)],sweet:[I(`嘿嘿,好舒服`),I(`再摸一下嘛`),I(`脸要红了……`)],bright:[I(`哈哈哈好痒!`),I(`最喜欢这样了!`),I(`嘿嘿,开心加倍`)],blue:[I(`……谢谢你`),I(`好像好一点了`),I(`嗯,别走开`)],stormy:[I(`……好吧,就一下`),I(`哼,勉强接受`),I(`嗯……好像没那么烦了`)],drowsy:[I(`呼……要睡着了`),I(`好温暖……`),I(`嗯……`)],night:[I(`(在梦里笑了一下)`),I(`(蹭了蹭)`),`zzz……`]}),wt=g({thinking:[I(`等等,我在想怎么回……`),I(`嘘,我在看大家聊什么`)],speaking:[I(`刚刚在说话来着`),I(`你看到我说的了吗`)],solitude:[I(`我在想事情,一会儿就好`),I(`让我安静一下下`)],reading:[I(`我在看书呢`),I(`这一页好有意思`)],diary:[I(`我在写日记,不许偷看`),I(`今天的事,写下来`)],review:[I(`在翻以前的日记呢`),I(`原来那时候我是这样想的`)],night:[I(`在整理今天的事……`),I(`嘘,快整理完了`)]}),Tt=0;function Et(e,t,n=`idle`){let r=e===`poke`&&n!==`asleep`&&wt[n]?wt[n]:(e===`pet`?Ct:St)[n===`asleep`?`night`:t]||St.calm;return Tt+=1,r[Tt%r.length]}var Dt=[`role`,`tabindex`,`aria-label`,`data-mood`,`data-activity`,`onKeydown`],Ot=[`id`],kt=[`id`],At=[`id`],jt=[`fill`],Mt={key:0,class:`halo`},Nt={class:`squish`},Pt=[`d`,`fill`],Ft=[`d`,`fill`],It=[`transform`],Lt={key:0,class:`brows`},Rt=[`d`],zt=[`d`],Bt=[`cx`,`cy`,`ry`],Vt=[`cx`,`cy`],Ht=[`d`],Ut=[`d`],Wt={key:3},Gt=[`d`],Kt=[`d`],qt={class:`mouth`},Jt=[`d`],Yt={key:1,class:`line`,d:`M94 125Q100 129.5 106 125`},Xt={key:2},Zt={key:3,class:`line`,d:`M89 123Q94.5 129 100 123.5Q105.5 129 111 123`},Qt={key:4,class:`line`,d:`M91 130Q100 122.5 109 130`},$t={key:5,class:`line`,d:`M88 127q3 -3.4 6 0t6 0t6 0t6 0`},en={key:6,class:`ink yawn`,cx:`100`,cy:`127`,rx:`4.6`,ry:`5.6`},tn={key:7,class:`ink`,cx:`100`,cy:`127`,rx:`2.6`,ry:`3`},nn={key:8,class:`ink talk`,cx:`100`,cy:`126`,rx:`5`,ry:`4.5`},rn={key:9,class:`line`,d:`M91 127Q102 130 110 121`},an={key:10,class:`line`,d:`M93 126L107 126`},on={key:0,class:`held`},sn={key:1,class:`held`},cn={key:1,class:`fx`},ln=[`d`],un={key:2,class:`fx`},dn=[`d`],fn={key:3,class:`fx rain`},pn={key:4,class:`fx storm`},mn={key:5,class:`fx`},hn={key:6,class:`fx`},gn={key:7,class:`fx`},_n={key:8,class:`fx`},vn={key:9,class:`fx think`},yn={key:10,class:`fx talkwaves`},bn=R(z({__name:`TaOrb`,props:{mood:{default:`calm`},activity:{default:`idle`},size:{default:160},interactive:{type:Boolean,default:!1},speech:{default:``},traits:{default:null},bubbleSide:{default:`top`},label:{default:``}},emits:[`open-chat`,`react`],setup(e,{expose:t,emit:n}){let r=e,o=n,s={calm:{wobble:.6,speed:.8,bounce:0,droop:0,jitter:0,eyes:`open`,mouth:`small`,cheeks:.25},sweet:{wobble:.8,speed:1,bounce:1.6,droop:0,jitter:0,eyes:`happy`,mouth:`cat`,cheeks:.8},bright:{wobble:1,speed:1.5,bounce:7,droop:0,jitter:0,eyes:`happy`,mouth:`grin`,cheeks:.55},blue:{wobble:.35,speed:.5,bounce:0,droop:4,jitter:0,eyes:`sad`,mouth:`frown`,cheeks:.1},stormy:{wobble:1.1,speed:1.2,bounce:0,droop:0,jitter:.9,eyes:`cross`,mouth:`wavy`,cheeks:.15},drowsy:{wobble:.45,speed:.45,bounce:0,droop:2,jitter:0,eyes:`sleepy`,mouth:`yawn`,cheeks:.35},night:{wobble:.3,speed:.35,bounce:0,droop:3,jitter:0,eyes:`closed`,mouth:`sleep`,cheeks:.3}},d=new Set([`open`,`sad`,`cross`,`up`,`down`]),p=[{x:28,y:48,r:8,d:0},{x:176,y:36,r:6,d:.8},{x:184,y:128,r:7,d:1.5},{x:18,y:138,r:5,d:2.1}],m=[{x:164,y:70,s:7,d:0},{x:34,y:84,s:5.5,d:1.4},{x:178,y:118,s:4.5,d:2.6}],h=`orb`+Math.random().toString(36).slice(2,8),g={fill:h+`-fill`,aura:h+`-aura`,rim:h+`-rim`},v=`${(Math.random()*3).toFixed(2)}s`,y=K(),ee=K(),te=K(),S=K(),T=K(),ne=K({x:0,y:0}),D=K(``),O=K(``),k=B(()=>{let e={...s[r.mood]},t=r.traits;if(t){let n=t.warmth??65,r=t.activity??40;e.eyes=(t.humor??25)>60?`happy`:`open`,e.mouth=(t.sarcasm??5)>40?`smirk`:n>35?`smile`:`flat`,e.cheeks=Math.max(0,(n-30)/70)*.9,e.bounce=r/100*8,e.speed=.5+r/100*1.2,e.wobble=.4+r/100*.8,e.jitter=0,e.droop=0}switch(r.activity){case`asleep`:Object.assign(e,{eyes:`closed`,mouth:`sleep`,bounce:0,speed:.35,wobble:.3,jitter:0});break;case`solitude`:case`night`:case`review`:Object.assign(e,{eyes:`closed`,mouth:`small`,bounce:0,jitter:0});break;case`diary`:case`reading`:e.eyes=`down`,e.bounce=0,(e.mouth===`grin`||e.mouth===`wavy`)&&(e.mouth=`small`);break;case`thinking`:e.eyes=`up`,e.mouth===`grin`&&(e.mouth=`small`);break;case`speaking`:e.mouth=`talk`}return D.value===`pet`&&e.eyes!==`closed`?Object.assign(e,{eyes:`happy`,mouth:`cat`,cheeks:1}):D.value===`pet`&&(e.cheeks=1),D.value===`poke`&&e.eyes===`happy`&&(e.eyes=`open`),e}),A=B(()=>r.size<72),ie=B(()=>k.value.eyes===`up`?{x:2,y:-3}:k.value.eyes===`down`?{x:0,y:2.5}:{x:0,y:0}),ae=B(()=>r.traits?.3+(r.traits.warmth??65)/100*1.1:1),oe=B(()=>(r.traits?.humor??0)>45),se=B(()=>{let{eyes:e,mouth:t}=k.value;return e===`sad`?[`M70 95 Q78 92 87 90`,`M113 90 Q122 92 130 95`]:e===`cross`?[`M71 90 L87 95.5`,`M113 95.5 L129 90`]:t===`smirk`?[`M71 94 L87 93`,`M113 90 Q121 85.5 129 89`]:null}),ce=B(()=>{let e=r.traits;if(!e)return;let t=((e.warmth??65)-50)/50,n=(e.initiative??25)/100;return{filter:`hue-rotate(${Math.round(-t*28)}deg) saturate(${(1+t*.18).toFixed(2)})`,transform:`scale(${(.92+n*.14).toFixed(3)}) rotate(${((n-.25)*8).toFixed(1)}deg)`}}),F=B(()=>O.value||r.speech),le=B(()=>r.label||(r.interactive?l(`TA:轻触互动,按住摸摸头,双击和 TA 聊聊`):`TA`)),I=B(()=>A.value?``:r.activity===`asleep`?`night`:r.mood);function ue(e,t,n,r){let i=[];for(let a=0;a<8;a++){let o=a/8*Math.PI*2-Math.PI/2,s=62*(1+(Math.sin(e*1.3+a*1.7)*.6+Math.sin(e*.7+a*2.9)*.4)*.055*t),c=Math.sin(o)>0?.92:1.02;i.push([100+Math.cos(o)*s*n,112+Math.sin(o)*s*r*c])}let a=`M${i[0][0].toFixed(2)},${i[0][1].toFixed(2)}`;for(let e=0;e<8;e++){let t=i[(e-1+8)%8],n=i[e],r=i[(e+1)%8],o=i[(e+2)%8];a+=`C${(n[0]+(r[0]-t[0])/6).toFixed(2)},${(n[1]+(r[1]-t[1])/6).toFixed(2)} ${(r[0]-(o[0]-n[0])/6).toFixed(2)},${(r[1]-(o[1]-n[1])/6).toFixed(2)} ${r[0].toFixed(2)},${r[1].toFixed(2)}`}return a+`Z`}let de=ue(0,0,1,1),fe=performance.now()-Math.random()*1e4,L=0,pe=0;function R(e,t=!1){let n=k.value,r=(e-fe)/1e3,i=r*n.speed,a=t?0:Math.sin(i*1.7)*.022,o=t||!n.bounce?0:Math.max(0,Math.sin(i*2.6))**1.5*n.bounce,s=t||!n.jitter||Math.sin(r*.8)<.55?0:Math.sin(r*38)*n.jitter,c=t?de:ue(i,n.wobble,1+a-o*.004,1-a*.7+o*.006);ee.value?.setAttribute(`d`,c),te.value?.setAttribute(`d`,c),S.value?.setAttribute(`transform`,`translate(${s.toFixed(2)} ${(n.droop-o).toFixed(2)})`),T.value?.setAttribute(`rx`,(46*(1-o/30)).toFixed(2))}function z(e){L=requestAnimationFrame(z),!(e-pe<1e3/60-1)&&(pe=e,R(e))}let he=!0,ge=!0,_e=null;function V(){cancelAnimationFrame(L),L=0,Z.value&&he&&ge&&!document.hidden?L=requestAnimationFrame(z):R(performance.now(),!0)}let ye=0;function be(e){ye||=requestAnimationFrame(()=>{ye=0;let t=y.value;if(!t||k.value.eyes===`closed`){ne.value={x:0,y:0};return}let n=t.getBoundingClientRect(),r=e.clientX-(n.left+n.width/2),i=e.clientY-(n.top+n.height/2),a=Math.hypot(r,i)||1,o=Math.min(1,a/360);ne.value={x:Math.round(r/a*4*o*10)/10,y:Math.round(i/a*3*o*10)/10}})}function xe(e){window.removeEventListener(`pointermove`,be),e&&he&&ge&&!document.hidden&&r.size>=56?window.addEventListener(`pointermove`,be,{passive:!0}):ne.value={x:0,y:0}}let U=0,Se=0,q=0;function Ce(e){O.value=e,clearTimeout(U),U=window.setTimeout(()=>O.value=``,2800)}function we(e){D.value=e,clearTimeout(Se),Se=window.setTimeout(()=>D.value=``,e===`pet`?1500:650),Ce(Et(e,r.mood,r.activity)),o(`react`,e)}function J(){r.interactive&&we(`poke`)}function Te(){r.interactive&&we(`pet`)}function Ee(e){!r.interactive||e.button>0||(D.value=`press`,clearTimeout(q),q=window.setTimeout(()=>{q=0,we(`pet`)},520))}function De(){r.interactive&&q&&(clearTimeout(q),q=0,we(`poke`))}function Oe(){q&&clearTimeout(q),q=0,D.value===`press`&&(D.value=``)}function ke(e,t,n){return`M${e} ${t-n}Q${e} ${t} ${e+n} ${t}Q${e} ${t} ${e} ${t+n}Q${e} ${t} ${e-n} ${t}Q${e} ${t} ${e} ${t-n}Z`}function Ae(e,t,n){return`M${e} ${t+n*.9}C${e-n*1.6} ${t-n*.2} ${e-n*.6} ${t-n*1.3} ${e} ${t-n*.45}C${e+n*.6} ${t-n*1.3} ${e+n*1.6} ${t-n*.2} ${e} ${t+n*.9}Z`}P([k,Z],V),P(Z,xe);function je(){V(),xe(Z.value)}return re(()=>{ge=!0,je()}),ve(()=>{ge=!1,je()}),j(()=>{V(),xe(Z.value),y.value&&`IntersectionObserver`in window&&(_e=new IntersectionObserver(e=>{he=e[0].isIntersecting,je()}),_e.observe(y.value)),document.addEventListener(`visibilitychange`,je)}),me(()=>{cancelAnimationFrame(L),cancelAnimationFrame(ye),window.removeEventListener(`pointermove`,be),_e?.disconnect(),document.removeEventListener(`visibilitychange`,je),clearTimeout(U),clearTimeout(Se),clearTimeout(q)}),t({poke:J,pet:Te,cancel:Oe}),(t,n)=>(H(),E(`div`,{ref_key:`root`,ref:y,class:G([`ta-orb`,[`mood-${e.mood}`,`act-${e.activity}`,D.value&&`is-${D.value}`,{interactive:e.interactive,small:A.value}]]),style:b({width:e.size+`px`,height:e.size+`px`,"--blink-delay":v}),role:e.interactive?`button`:`img`,tabindex:e.interactive?0:void 0,"aria-label":le.value,"data-mood":e.mood,"data-activity":e.activity,onPointerdown:Ee,onPointerup:De,onPointerleave:Oe,onPointercancel:Oe,onDblclick:n[0]||=e=>o(`open-chat`),onKeydown:[c(x(J,[`prevent`]),[`enter`]),c(x(Te,[`prevent`]),[`space`])],onContextmenu:n[1]||=x(()=>{},[`prevent`])},[(H(),E(`svg`,{viewBox:`0 0 200 200`,style:b(ce.value),"aria-hidden":`true`},[u(`defs`,null,[u(`radialGradient`,{id:g.fill,cx:`38%`,cy:`30%`,r:`78%`},[...n[2]||=[u(`stop`,{offset:`0%`,style:{"stop-color":`var(--orb-a)`}},null,-1),u(`stop`,{offset:`58%`,style:{"stop-color":`var(--orb-b)`}},null,-1),u(`stop`,{offset:`100%`,style:{"stop-color":`var(--orb-c)`}},null,-1)]],8,Ot),u(`radialGradient`,{id:g.aura},[...n[3]||=[u(`stop`,{offset:`45%`,style:{"stop-color":`var(--orb-b)`,"stop-opacity":`0.5`}},null,-1),u(`stop`,{offset:`100%`,style:{"stop-color":`var(--orb-b)`,"stop-opacity":`0`}},null,-1)]],8,kt),u(`radialGradient`,{id:g.rim,cx:`50%`,cy:`50%`,r:`50%`},[...n[4]||=[u(`stop`,{offset:`72%`,style:{"stop-color":`#ffffff`,"stop-opacity":`0`}},null,-1),u(`stop`,{offset:`100%`,style:{"stop-color":`#ffffff`,"stop-opacity":`0.4`}},null,-1)]],8,At)]),u(`circle`,{class:`aura`,cx:`100`,cy:`112`,r:`94`,fill:`url(#${g.aura})`},null,8,jt),e.activity===`solitude`?(H(),E(`g`,Mt,[...n[5]||=[u(`circle`,{cx:`100`,cy:`112`,r:`86`},null,-1),u(`circle`,{class:`halo-soft`,cx:`100`,cy:`112`,r:`76`},null,-1)]])):w(``,!0),u(`ellipse`,{ref_key:`shadow`,ref:T,class:`shadow`,cx:`100`,cy:`186`,rx:`46`,ry:`6`},null,512),u(`g`,Nt,[u(`g`,{ref_key:`whole`,ref:S},[u(`path`,{ref_key:`body`,ref:ee,class:`body`,d:i(de),fill:`url(#${g.fill})`},null,8,Pt),u(`path`,{ref_key:`rim`,ref:te,class:`rim`,d:i(de),fill:`url(#${g.rim})`},null,8,Ft),n[10]||=u(`ellipse`,{class:`shine`,cx:`76`,cy:`80`,rx:`17`,ry:`10`,transform:`rotate(-28 76 80)`},null,-1),n[11]||=u(`ellipse`,{class:`shine dot`,cx:`98`,cy:`68`,rx:`4`,ry:`3`},null,-1),u(`g`,{class:`face`,transform:`translate(${ne.value.x} ${ne.value.y})`},[se.value?(H(),E(`g`,Lt,[u(`path`,{class:`line thin`,d:se.value[0]},null,8,Rt),u(`path`,{class:`line thin`,d:se.value[1]},null,8,zt)])):w(``,!0),u(`g`,{class:G([`eyes`,{blinks:i(d).has(k.value.eyes)}])},[(H(),E(C,null,M([80,120],(e,t)=>u(`g`,{key:t,class:G([`eye`,{wink:oe.value&&t===1&&i(d).has(k.value.eyes)}])},[i(d).has(k.value.eyes)?(H(),E(C,{key:0},[u(`ellipse`,{class:`ink`,cx:e+ie.value.x,cy:106+ie.value.y,rx:`5.4`,ry:k.value.eyes===`sad`?6:7.2},null,8,Bt),u(`circle`,{class:`glint`,cx:e+ie.value.x+1.8,cy:106+ie.value.y-2.6,r:`1.9`},null,8,Vt)],64)):k.value.eyes===`happy`?(H(),E(`path`,{key:1,class:`line`,d:`M${e-7} 108Q${e} 98 ${e+7} 108`},null,8,Ht)):k.value.eyes===`closed`?(H(),E(`path`,{key:2,class:`line`,d:`M${e-7} 105Q${e} 111 ${e+7} 105`},null,8,Ut)):(H(),E(`g`,Wt,[u(`path`,{class:`ink`,d:`M${e-6} 106A6 5 0 0 0 ${e+6} 106Z`},null,8,Gt),u(`path`,{class:`line thin`,d:`M${e-7.5} 106L${e+7.5} 106`},null,8,Kt)]))],2)),64))],2),u(`g`,{class:`cheeks`,style:b({opacity:k.value.cheeks})},[...n[6]||=[u(`ellipse`,{cx:`70`,cy:`119`,rx:`9`,ry:`5.2`},null,-1),u(`ellipse`,{cx:`130`,cy:`119`,rx:`9`,ry:`5.2`},null,-1)]],4),u(`g`,qt,[k.value.mouth===`smile`?(H(),E(`path`,{key:0,class:`line`,d:`M89 124Q100 ${(124+9*ae.value).toFixed(1)} 111 124`},null,8,Jt)):k.value.mouth===`small`?(H(),E(`path`,Yt)):k.value.mouth===`grin`?(H(),E(`g`,Xt,[...n[7]||=[u(`path`,{class:`ink`,d:`M87 121Q100 140 113 121Z`},null,-1),u(`path`,{class:`tongue`,d:`M94 129.5Q100 135 106 129.5Q100 127.5 94 129.5Z`},null,-1)]])):k.value.mouth===`cat`?(H(),E(`path`,Zt)):k.value.mouth===`frown`?(H(),E(`path`,Qt)):k.value.mouth===`wavy`?(H(),E(`path`,$t)):k.value.mouth===`yawn`?(H(),E(`ellipse`,en)):k.value.mouth===`sleep`?(H(),E(`ellipse`,tn)):k.value.mouth===`talk`?(H(),E(`ellipse`,nn)):k.value.mouth===`smirk`?(H(),E(`path`,rn)):(H(),E(`path`,an))])],8,It),e.activity===`reading`?(H(),E(`g`,on,[...n[8]||=[u(`path`,{class:`page`,d:`M100 150L72 142L72 167L100 175Z`},null,-1),u(`path`,{class:`page`,d:`M100 150L128 142L128 167L100 175Z`},null,-1),u(`path`,{class:`line thin`,d:`M100 150L100 175`},null,-1)]])):e.activity===`diary`?(H(),E(`g`,sn,[...n[9]||=[_(`<rect class="page" x="118" y="150" width="50" height="34" rx="5" transform="rotate(-8 143 167)" data-v-3fb60aa5></rect><path class="line hair" d="M126 163L156 159M127 171L150 168" data-v-3fb60aa5></path><g class="pen" transform="rotate(38 152 146)" data-v-3fb60aa5><rect x="148" y="112" width="9" height="40" rx="3.5" data-v-3fb60aa5></rect><path d="M148 152L152.5 163L157 152Z" data-v-3fb60aa5></path></g>`,3)]])):w(``,!0)],512)]),I.value===`bright`?(H(),E(`g`,cn,[(H(),E(C,null,M(p,(e,t)=>u(`path`,{key:t,class:`sparkle`,d:ke(e.x,e.y,e.r),style:b({animationDelay:e.d+`s`})},null,12,ln)),64))])):I.value===`sweet`?(H(),E(`g`,un,[(H(),E(C,null,M(m,(e,t)=>u(`path`,{key:t,class:`heart`,d:Ae(e.x,e.y,e.s),style:b({animationDelay:e.d+`s`})},null,12,dn)),64))])):I.value===`blue`?(H(),E(`g`,fn,[...n[12]||=[_(`<g class="cloud" data-v-3fb60aa5><circle cx="30" cy="36" r="9" data-v-3fb60aa5></circle><circle cx="42" cy="30" r="11" data-v-3fb60aa5></circle><circle cx="54" cy="36" r="8" data-v-3fb60aa5></circle><rect x="22" y="35" width="40" height="10" rx="5" data-v-3fb60aa5></rect></g><path class="drop" d="M31 50l-1.5 6" data-v-3fb60aa5></path><path class="drop" d="M42 50l-1.5 6" style="animation-delay:0.45s;" data-v-3fb60aa5></path><path class="drop" d="M53 50l-1.5 6" style="animation-delay:0.9s;" data-v-3fb60aa5></path>`,4)]])):I.value===`stormy`?(H(),E(`g`,pn,[...n[13]||=[_(`<g class="cloud" data-v-3fb60aa5><circle cx="156" cy="34" r="9" data-v-3fb60aa5></circle><circle cx="168" cy="28" r="11" data-v-3fb60aa5></circle><circle cx="180" cy="34" r="8" data-v-3fb60aa5></circle><rect x="148" y="33" width="40" height="10" rx="5" data-v-3fb60aa5></rect></g><path class="scribble" d="M154 54q4 -5 8 0t8 0t8 0" data-v-3fb60aa5></path>`,2)]])):I.value===`drowsy`&&e.activity===`idle`?(H(),E(`g`,mn,[...n[14]||=[u(`text`,{class:`zz`,x:`158`,y:`58`},`z`,-1)]])):w(``,!0),I.value===`night`||e.activity===`review`||e.activity===`night`?(H(),E(`g`,hn,[...n[15]||=[u(`path`,{class:`moon`,d:`M40 20a18 18 0 1 0 16 28a14 14 0 1 1 -16 -28Z`},null,-1)]])):w(``,!0),e.activity===`asleep`||e.mood===`night`&&e.activity===`idle`?(H(),E(`g`,gn,[...n[16]||=[u(`text`,{class:`zz`,x:`150`,y:`64`},`z`,-1),u(`text`,{class:`zz`,x:`162`,y:`48`,style:{"animation-delay":`1s`,"font-size":`16px`}},` z `,-1),u(`text`,{class:`zz`,x:`174`,y:`30`,style:{"animation-delay":`2s`,"font-size":`20px`}},` Z `,-1)]])):w(``,!0),e.activity===`review`||e.activity===`night`?(H(),E(`g`,_n,[...n[17]||=[u(`g`,{class:`floating-page`},[u(`rect`,{class:`page`,x:`156`,y:`92`,width:`30`,height:`38`,rx:`4`}),u(`path`,{class:`line hair`,d:`M162 103h18M162 111h18M162 119h11`})],-1)]])):w(``,!0),e.activity===`thinking`?(H(),E(`g`,vn,[...n[18]||=[_(`<circle class="puff" cx="146" cy="58" r="3.5" data-v-3fb60aa5></circle><circle class="puff" cx="156" cy="45" r="5" data-v-3fb60aa5></circle><ellipse class="puff" cx="176" cy="24" rx="21" ry="14" data-v-3fb60aa5></ellipse><circle class="dot" cx="167" cy="24" r="2.6" data-v-3fb60aa5></circle><circle class="dot" cx="176" cy="24" r="2.6" style="animation-delay:0.18s;" data-v-3fb60aa5></circle><circle class="dot" cx="185" cy="24" r="2.6" style="animation-delay:0.36s;" data-v-3fb60aa5></circle>`,6)]])):w(``,!0),e.activity===`speaking`&&!A.value?(H(),E(`g`,yn,[...n[19]||=[u(`path`,{class:`line thin`,d:`M170 94q8 9 0 18`},null,-1),u(`path`,{class:`line thin`,d:`M180 88q13 15 0 30`,style:{"animation-delay":`0.3s`}},null,-1)]])):w(``,!0)],4)),N(f,{name:`orb-say`},{default:W(()=>[F.value?(H(),E(`p`,{key:F.value,class:G([`orb-say`,`say-`+e.bubbleSide]),role:`status`},a(F.value),3)):w(``,!0)]),_:1})],46,Dt))}}),[[`__scopeId`,`data-v-3fb60aa5`]]),xn={overview:()=>L(`/mind`),mood:()=>L(`/mind/mood`),notes:(e=``)=>L(`/mind/thoughts?q=`+encodeURIComponent(e)),presence:()=>L(`/mind/presence`),today:()=>L(`/mind/today`),person:e=>L(`/mind/people/`+encodeURIComponent(e)),self:()=>L(`/mind/self`),thread:e=>L(`/mind/self/`+encodeURIComponent(e)),bonds:()=>L(`/mind/bonds`),bondChanges:(e,t)=>L(`/mind/bonds/${e}/`+encodeURIComponent(t)),faces:e=>L(`/mind/faces/`+encodeURIComponent(e)),life:(e=``,t)=>L(`/mind/life?q=`+encodeURIComponent(e)+(t?`&before=`+t:``)),day:e=>L(`/mind/day/`+e),chapter:e=>L(`/mind/chapters/`+e),story:()=>L(`/mind/story`),nature:()=>L(`/mind/nature`),saveNature:e=>L(`/mind/nature`,`PUT`,e),saveSettings:e=>L(`/mind/settings`,`PUT`,e),reflect:()=>L(`/mind/reflect`,`POST`,{}),review:()=>L(`/mind/review`,`POST`,{}),revoke:(e,t,n=``)=>L(`/mind/revoke`,`POST`,{kind:e,id:t,reason:n}),thought:(e,t)=>L(`/mind/thoughts/`+encodeURIComponent(e),`PATCH`,t),removeThought:e=>L(`/mind/thoughts/`+encodeURIComponent(e),`DELETE`,{}),preview:e=>L(`/mind/preview`,`POST`,e),savePrompts:e=>L(`/core/prompts`,`PUT`,e)},Sn=g({promise:I(`答应的事`),plan:I(`想做的事`),event:I(`别人的安排`),date:I(`每年的日子`)}),Cn=g({pending:I(`还在等`),lapsed:I(`悄悄错过了`),done:I(`做到了`),missed:I(`错过了`),let_go:I(`不再惦记`),revoked:I(`已撤销`)}),wn=g({turn:I(`聊天时`),direct:I(`聊天时`),group:I(`聊天时`),solitude:I(`独处时`),daily:I(`写日记时`),weekly:I(`回顾时`),memory:I(`从 TA 说过的话里`),migration:I(`旧版本`)}),Tn=g({activity:I(`做自己的事`),solitude:I(`独处`),expression:I(`自己的念头`),daily:I(`写日记`),weekly:I(`回顾这段日子`),night:I(`夜里整理`)}),En=g({running:I(`进行中`),written:I(`留下了东西`),state:I(`心情变了`),empty:I(`没什么新的`),error:I(`出了点问题`),skipped:I(`跳过了`),cancelled:I(`作废了`),interrupted:I(`重启中断`)}),Dn=g({active:I(`已经是 TA 的一部分`),emerging:I(`刚开始有这种感觉`),closed:I(`已经放下`)}),On={interest:`#ffc15f`,view:`#7fc8ff`,trait:`#ff9a8b`,habit:`#b9a4ff`,intention:`#6fe0b8`,care:`#ff8fbf`,curiosity:`#9ef0ff`},kn=g({warmer:I(`更亲近了一点`),closer:I(`走近了`),trust_up:I(`更信任了`),trust_down:I(`有点失望`),friction:I(`有了别扭`),repair:I(`和好了`),distance:I(`疏远了一点`),impression:I(`印象`)}),An=new Set([`friction`,`trust_down`,`distance`]),jn=g([[`familiarity`,I(`熟悉`)],[`closeness`,I(`亲近`)],[`trust`,I(`信任`)],[`tension`,I(`别扭`)]]),Mn=g({open:I(`公开`),private:I(`私下知道`),secret:I(`要 TA 保密`)}),Nn=g({confirmed:I(`TA 这样认为`),superseded:I(`已被新的取代`),candidate:I(`旧版待确认`),disputed:I(`有争议`),expired:I(`已过期`),deleted:I(`已撤销`)}),Pn=g({planned:I(`等合适的时候`),sending:I(`正在发`),sent:I(`说出口了`),declined:I(`TA 后来决定不说`),skipped:I(`时机不合适`),cancelled:I(`没有发`),uncertain:I(`投递未确认`)}),Fn=g({speak:I(`开口`),react:I(`简短反应`),decline:I(`说不想聊`),silent:I(`没出声`)});function In(e,t=`Asia/Shanghai`){return e?we(p(),{timeZone:t,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}).format(e):l(`还没有`)}function Ln(e){return`${Math.round(Math.max(0,Math.min(1,Number(e)||0))*100)}%`}function Rn(e,t=`Asia/Shanghai`){return e?we(p(),{timeZone:t,hour:`2-digit`,minute:`2-digit`,hourCycle:`h23`}).format(e):``}function zn(e){let[,t,n]=e.split(`-`).map(Number);return t&&n?l(`{month} 月 {date} 日`,{month:t,date:n}):e}function Bn(e){let t=new Date(e+`T12:00:00`);return Number.isNaN(t.getTime())?``:we(p(),{weekday:`short`}).format(t)}function Vn(e,t=Date.now()){if(!e)return``;let n=Math.round((t-e)/6e4);if(n<1)return l(`刚刚`);if(n<60)return l(`{minutes} 分钟前`,{minutes:n});let r=Math.round(n/60);if(r<24)return l(`{hours} 小时前`,{hours:r});let i=Math.round(r/24);if(i<30)return l(`{days} 天前`,{days:i});let a=Math.round(i/30);return a<12?l(`{months} 个月前`,{months:a}):l(`{v} 年前`,{v:Math.round(a/12)})}function Hn(e){return Number(e||0).toLocaleString(p())}var Un=/^\d{4,20}$/;function Wn(e){let t=String(e||``).split(`:`);return t[t.length-1]||``}function Gn(e){let t=Wn(e.id||``),n=String(e.name||``).trim(),r=n.replace(/^(群聊|私聊)\s+/,``),i=e.kind||(String(e.id||``).startsWith(`private:`)?`private`:`group`);return!n||r===t||Un.test(r)?l(i===`private`?`未命名的人`:`未命名的群`):n}function Kn(e,t=``){let n=e.map(e=>({value:e.id,label:Gn(e)}));return t?[{value:``,label:t,disabled:!0},...n]:n}function qn(e){let t=String(e||`?`).trim();return/^[\x00-\x7f]/.test(t)?t.slice(0,2).toUpperCase():t.slice(-2)}function Jn(e){let t=0;for(let n of String(e))t=(t*31+n.codePointAt(0))%360;return t}var Yn=[`id`,`aria-controls`,`aria-activedescendant`,`aria-label`,`aria-expanded`,`disabled`],Xn=[`id`,`aria-labelledby`],Zn=[`id`,`tabindex`,`aria-selected`,`onClick`],Qn={key:0,class:`empty`},$n=[`id`,`name`,`value`,`disabled`],er=[`value`,`disabled`],tr=R(z({__name:`Select`,props:{modelValue:{default:``},options:{},id:{default:``},name:{default:``},ariaLabel:{default:``},disabled:{type:Boolean,default:!1}},emits:[`update:modelValue`,`change`],setup(e,{emit:t}){let n=e,r=t,o=K(!1),s=K(),c=K(),f=K(),p=K(),m=pe(),h=K(0),g=K({top:0,bottom:0,left:0,width:220,maxHeight:280,upward:!1}),_=B(()=>n.options.filter(e=>!e.disabled)),v=B(()=>n.options.find(e=>String(e.value)===String(n.modelValue))?.label||_.value[0]?.label||l(`请选择`));function y(){let e=c.value?.getBoundingClientRect();if(!e)return;let t=n.options.reduce((e,t)=>Math.max(e,String(t.label||``).length),0),r=Math.min(window.innerWidth-16,Math.max(e.width,Math.min(t*15+32,420),220)),i=Math.max(8,Math.min(e.left,window.innerWidth-r-8)),a=window.innerHeight-e.bottom-6-8,o=e.top-6-8,s=a<220&&o>a;g.value={top:e.bottom+6,bottom:window.innerHeight-e.top+6,left:i,width:r,maxHeight:Math.max(96,Math.min(320,s?o:a)),upward:s}}function ee(){n.disabled||(o.value=!o.value,o.value&&y())}function te(){let e=p.value?.querySelectorAll(`[role="option"]`)[h.value];e?.focus({preventScroll:!0}),e?.scrollIntoView({block:`nearest`})}function S(e){if(e.key===`Tab`){o.value=!1;return}if([`Escape`,`ArrowDown`,`ArrowUp`,`Home`,`End`,`Enter`,` `].includes(e.key)){if(e.preventDefault(),e.stopPropagation(),e.key===`Escape`){o.value=!1,c.value?.focus();return}if(_.value.length){if(e.key===`Enter`||e.key===` `){D(_.value[h.value].value);return}h.value=e.key===`Home`?0:e.key===`End`?_.value.length-1:(h.value+(e.key===`ArrowUp`?-1:1)+_.value.length)%_.value.length,te()}}}function ne(e){[`ArrowDown`,`ArrowUp`].includes(e.key)&&!o.value&&(e.preventDefault(),ee())}function D(e){let t=String(e);if(o.value=!1,!f.value){r(`update:modelValue`,t);return}f.value.value=t;let n=new Event(`change`,{bubbles:!0});f.value.dispatchEvent(n),c.value?.focus()}function O(e){s.value&&!s.value.contains(e.target)&&(o.value=!1)}function re(){o.value&&y()}function k(){document.removeEventListener(`pointerdown`,O),window.removeEventListener(`scroll`,re,!0),window.removeEventListener(`resize`,re),document.removeEventListener(`keydown`,S,!0)}return P(o,async e=>{k(),e&&(h.value=Math.max(0,_.value.findIndex(e=>String(e.value)===String(n.modelValue))),document.addEventListener(`pointerdown`,O),window.addEventListener(`scroll`,re,!0),window.addEventListener(`resize`,re),document.addEventListener(`keydown`,S,!0),await le(),o.value&&te())}),P(()=>n.disabled,e=>{e&&(o.value=!1)}),ve(()=>{o.value=!1,k()}),me(k),(t,n)=>(H(),E(`div`,{ref_key:`root`,ref:s,class:G([`menu-select`,{open:o.value,disabled:e.disabled}])},[u(`button`,{ref_key:`face`,ref:c,type:`button`,class:`menu-face`,id:i(m)+`-face`,role:`combobox`,"aria-haspopup":`listbox`,"aria-controls":i(m),"aria-activedescendant":o.value&&_.value.length?i(m)+`-`+h.value:void 0,"aria-label":e.ariaLabel||void 0,"aria-expanded":o.value,disabled:e.disabled,onClick:ee,onKeydown:ne},[u(`span`,null,a(v.value),1),n[2]||=u(`i`,{"aria-hidden":`true`},null,-1)],40,Yn),(H(),T(d,{to:`body`},[o.value?(H(),E(`ul`,{key:0,ref_key:`menu`,ref:p,id:i(m),class:G([`menu-list`,{up:g.value.upward}]),role:`listbox`,"aria-labelledby":i(m)+`-face`,onPointerdown:n[0]||=x(()=>{},[`stop`]),style:b({top:g.value.upward?`auto`:g.value.top+`px`,bottom:g.value.upward?g.value.bottom+`px`:`auto`,left:g.value.left+`px`,width:g.value.width+`px`,maxHeight:g.value.maxHeight+`px`})},[(H(!0),E(C,null,M(_.value,(t,n)=>(H(),E(`li`,{key:String(t.value)},[u(`button`,{type:`button`,role:`option`,id:i(m)+`-`+n,tabindex:n===h.value?0:-1,"aria-selected":String(t.value)===String(e.modelValue),onClick:e=>D(t.value)},a(t.label),9,Zn)]))),128)),_.value.length?w(``,!0):(H(),E(`li`,Qn,a(i(l)(`没有可选项`)),1))],46,Xn)):w(``,!0)])),u(`select`,{ref_key:`native`,ref:f,class:`native`,id:e.id||void 0,name:e.name||void 0,value:e.modelValue,disabled:e.disabled,tabindex:`-1`,"aria-hidden":`true`,onChange:n[1]||=e=>{o.value=!1,r(`update:modelValue`,e.target.value),r(`change`,e)}},[(H(!0),E(C,null,M(e.options,e=>(H(),E(`option`,{key:`n-`+String(e.value),value:e.value,disabled:e.disabled},a(e.label),9,er))),128))],40,$n)],2))}}),[[`__scopeId`,`data-v-41eb8776`]]),nr=[`id`],rr={class:`preview-meta`,role:`status`},ir=[`id`],ar={key:1},or={key:2,class:`why`},sr=[`aria-label`],cr=[`id`],lr={class:`ta-chat-options`},ur={class:`where`},dr=[`disabled`],fr={class:`composer`},pr=[`placeholder`],mr=[`disabled`],hr=R(z({__name:`TaChat`,props:{sessions:{default:()=>[]},nature:{default:null},anchored:{type:Boolean,default:!1},starter:{default:``}},setup(e){let t=e,n=K([]),r=K(t.starter),o=K(``),s=K(!1),c=K(``),d=K();async function f(){await le(),d.value?.scrollTo({top:d.value.scrollHeight})}async function p(){let e=r.value.trim();if(!s.value&&e){s.value=!0,n.value.push({role:`user`,text:e}),r.value=``,f();try{let r=await xn.preview({text:e,history:n.value.slice(0,-1).slice(-12).map(({role:e,text:t})=>({role:e,text:t})),...t.nature?{nature:t.nature}:{},viewSession:o.value});r.reply?n.value.push({role:`assistant`,text:r.reply,bubbles:r.bubbles?.length?r.bubbles:[r.reply],note:[Fn[r.choice]||r.choice,r.appraisal].filter(Boolean).join(` · `),why:r.reason}):n.value.push({role:`assistant`,text:l(`(TA 没有出声)`),note:Fn[r.choice]||l(`没出声`),why:r.reason}),c.value=l(`{v} · 心情{v2} · {latency} ms`,{v:r.mode===`model`?l(`真实模型`):l(`本地样例(没有模型档案)`),v2:r.mood||l(`平静`),latency:r.latency})}catch(t){n.value.pop(),r.value=e,c.value=t.message}finally{s.value=!1,f()}}}function m(){n.value=[]}return(t,f)=>(H(),E(`div`,{class:`ta-chat`,id:e.anchored?`ta-preview`:void 0},[u(`p`,rr,a(c.value||i(l)(`试聊走真实链路:读取 TA 此刻的心智和记忆,但不写入,也不发 QQ。配置了模型时会消耗 Token。`)),1),u(`div`,{id:e.anchored?`previewMessages`:void 0,ref_key:`log`,ref:d,class:`ta-chat-log scroll-pane`},[!n.value.length&&!s.value?(H(),T(ye,{key:0,title:i(l)(`TA 会先理解,再决定说不说`),text:i(l)(`回应会显示 TA 的选择和当时的想法。`)},null,8,[`title`,`text`])):w(``,!0),(H(!0),E(C,null,M(n.value,(e,t)=>(H(),E(`article`,{key:t,class:G([`preview-bubble`,e.role===`assistant`?`bot`:`me`])},[e.bubbles?(H(!0),E(C,{key:0},M(e.bubbles,(e,t)=>(H(),E(`p`,{key:t},a(e),1))),128)):(H(),E(`p`,ar,a(e.text),1)),e.note||e.why?(H(),E(`details`,or,[u(`summary`,null,a(e.note||i(l)(`为什么`)),1),u(`p`,null,a(e.why||i(l)(`没有留下理由。`)),1)])):w(``,!0)],2))),128)),s.value?(H(),E(`div`,{key:1,class:`typing`,"aria-label":i(l)(`TA 在想`)},[...f[2]||=[u(`i`,null,null,-1),u(`i`,null,null,-1),u(`i`,null,null,-1)]],8,sr)):w(``,!0)],8,ir),u(`form`,{id:e.anchored?`previewForm`:void 0,class:`ta-chat-form`,onSubmit:x(p,[`prevent`])},[u(`div`,lr,[u(`label`,ur,[u(`span`,null,a(i(l)(`想象在这里`)),1),N(tr,{modelValue:o.value,"onUpdate:modelValue":f[0]||=e=>o.value=e,name:`viewSession`,"aria-label":i(l)(`想象在这里`),options:[{value:``,label:i(l)(`一段新的私聊`)},...i(Kn)(e.sessions)]},null,8,[`modelValue`,`aria-label`,`options`])]),ae(t.$slots,`options`,{},void 0,!0),u(`button`,{type:`button`,class:`text-button`,disabled:!n.value.length,onClick:m},a(i(l)(`清空`)),9,dr)]),u(`div`,fr,[Ce(u(`input`,{"onUpdate:modelValue":f[1]||=e=>r.value=e,name:`text`,placeholder:i(l)(`说一句试试…`),required:``,maxlength:`1000`,autocomplete:`off`},null,8,pr),[[S,r.value]]),u(`button`,{class:`primary`,disabled:s.value},a(s.value?i(l)(`TA 在想…`):i(l)(`说`)),9,mr)])],40,cr)],8,nr))}}),[[`__scopeId`,`data-v-235059b5`]]),gr={class:`companion`},_r=[`aria-label`],vr=[`aria-label`],yr={class:`drawer-head`},br={class:`drawer-title`},xr={class:`chip`,"data-tone":`quiet`},Sr=[`aria-label`],Cr={key:0,class:`companion-dock`},wr=[`aria-expanded`],Tr=R(z({__name:`TaCompanion`,props:{hideOrb:{type:Boolean}},setup(e){let t=K(),n=B(()=>Q.data?.activity?.kind||`idle`),r=B(()=>Q.data?.name||`TA`);return P(()=>V.chatOpen,async e=>{e&&(await le(),t.value?.querySelector(`input[name=text]`)?.focus())}),(o,s)=>(H(),E(`div`,gr,[N(f,{name:`scrim`},{default:W(()=>[i(V).chatOpen?(H(),E(`button`,{key:0,class:`scrim`,type:`button`,"aria-label":i(l)(`收起聊天`),onClick:s[0]||=e=>i(V).chatOpen=!1},null,8,_r)):w(``,!0)]),_:1}),N(f,{name:`drawer`},{default:W(()=>[i(V).chatOpen?(H(),E(`section`,{key:0,ref_key:`drawer`,ref:t,class:`ta-drawer`,role:`dialog`,"aria-modal":`true`,"aria-label":i(l)(`和 {name} 聊聊(试聊)`,{name:r.value}),onKeydown:s[2]||=c(e=>i(V).chatOpen=!1,[`esc`])},[u(`header`,yr,[N(bn,{mood:i(X),activity:n.value,size:42},null,8,[`mood`,`activity`]),u(`div`,br,[u(`h2`,null,a(i(l)(`和 {name} 聊聊`,{name:r.value})),1),u(`span`,xr,a(i(l)(`试聊 · 什么都不写入`)),1)]),u(`button`,{class:`icon-button ghost`,"aria-label":i(l)(`收起聊天`),onClick:s[1]||=e=>i(V).chatOpen=!1},` ✕ `,8,Sr)]),N(hr,{sessions:i(V).core?.sessions||[]},null,8,[`sessions`])],40,vr)):w(``,!0)]),_:1}),!e.hideOrb&&!i(V).chatOpen?(H(),E(`div`,Cr,[u(`button`,{class:`companion-talk`,"aria-expanded":i(V).chatOpen,onClick:s[3]||=e=>i(V).chatOpen=!i(V).chatOpen},a(i(V).chatOpen?i(l)(`收起`):i(l)(`聊聊`)),9,wr),N(bn,{mood:i(X),activity:n.value,size:44,interactive:``,"bubble-side":`left`,onOpenChat:s[4]||=e=>i(V).chatOpen=!0},null,8,[`mood`,`activity`])])):w(``,!0)]))}}),[[`__scopeId`,`data-v-038fa72e`]]),Er=[`aria-label`],Dr=[`lang`,`aria-pressed`,`aria-label`,`title`,`data-locale`,`onClick`],Or=R(z({__name:`LocaleSwitch`,setup(e){return(e,n)=>(H(),E(`div`,{id:`locale`,class:`seg locale-switch`,role:`group`,"aria-label":i(l)(`语言`)},[(H(!0),E(C,null,M(i(t),e=>(H(),E(`button`,{key:e.code,type:`button`,lang:e.code===`zh`?`zh-CN`:`en`,class:G({active:i(m)===e.code}),"aria-pressed":i(m)===e.code,"aria-label":e.label,title:e.label,"data-locale":e.code,onClick:t=>i(o)(e.code)},a(e.short),11,Dr))),128))],8,Er))}}),[[`__scopeId`,`data-v-bc942b38`]]),kr=[`aria-expanded`,`title`],Ar=[`data-mood`],jr={class:`rail-label`},Mr=[`aria-label`],Nr=[`aria-checked`],Pr=[`data-mood`],Fr=[`data-theme-choice`,`aria-checked`,`onClick`],Ir=[`data-mood`],Lr=R(z({__name:`ThemePicker`,props:{inline:{type:Boolean,default:!1}},setup(e){let t=K(!1),n=K();function r(e){Re(e),t.value=!1}function o(e){t.value&&n.value&&!n.value.contains(e.target)&&!e.target.closest(`.theme-menu`)&&(t.value=!1)}return j(()=>document.addEventListener(`pointerdown`,o)),me(()=>document.removeEventListener(`pointerdown`,o)),(o,s)=>(H(),E(`div`,{ref_key:`root`,ref:n,class:G([`theme-picker`,{inline:e.inline}]),onKeydown:s[2]||=c(e=>t.value=!1,[`esc`])},[e.inline?w(``,!0):(H(),E(`button`,{key:0,class:`theme-toggle`,type:`button`,"aria-expanded":t.value,"aria-haspopup":`true`,title:i(Y).pinned?i(l)(`主题固定为「{v}」`,{v:i(J)[i(Y).pinned].label}):i(l)(`主题跟随 TA 的心情`),onClick:s[0]||=e=>t.value=!t.value},[u(`span`,{class:`swatch`,"data-mood":i(Y).pinned??i(X),"aria-hidden":`true`},null,8,Ar),u(`span`,jr,a(i(Y).pinned?i(l)(`固定:{v}`,{v:i(J)[i(Y).pinned].label}):i(l)(`跟随 TA · {v}`,{v:i(J)[i(X)].label})),1)],8,kr)),(H(),T(d,{to:`body`,disabled:e.inline},[N(f,{name:`pop`},{default:W(()=>[t.value||e.inline?(H(),E(`div`,{key:0,class:G([`theme-menu`,{"inline-menu":e.inline}]),role:`radiogroup`,"aria-label":i(l)(`界面主题`)},[u(`button`,{type:`button`,role:`radio`,"data-theme-choice":`auto`,"aria-checked":!i(Y).pinned,onClick:s[1]||=e=>r(null)},[u(`span`,{class:`swatch auto`,"data-mood":i(X),"aria-hidden":`true`},null,8,Pr),u(`span`,null,[u(`b`,null,a(i(l)(`跟随 TA 的心情`)),1),u(`small`,null,a(i(l)(`现在是「{v}」`,{v:i(J)[i(X)].label})),1)])],8,Nr),(H(!0),E(C,null,M(i(Te),e=>(H(),E(`button`,{key:e,type:`button`,role:`radio`,"data-theme-choice":e,"aria-checked":i(Y).pinned===e,onClick:t=>r(e)},[u(`span`,{class:`swatch`,"data-mood":e,"aria-hidden":`true`},null,8,Ir),u(`span`,null,[u(`b`,null,a(i(J)[e].label),1),u(`small`,null,a(i(J)[e].feel),1)])],8,Fr))),128))],10,Mr)):w(``,!0)]),_:1})],8,[`disabled`]))],34))}}),[[`__scopeId`,`data-v-4e5670d2`]]),Rr=[`aria-label`],zr={class:`presence-detail`},Br={class:`eyebrow`},Vr={class:`mood-word`},Hr={class:`lede`},Ur={class:`row chips`},Wr=[`data-activity`],Gr={key:0,class:`chip`,"data-tone":`quiet`},Kr={key:1,class:`chip`,"data-tone":`quiet`},qr={key:2,class:`chip`,"data-tone":`quiet`},Jr={class:`row actions`},Yr=[`disabled`],Xr=[`disabled`],Zr={class:`faint`},Qr={key:0,class:`aside-bit`},$r={class:`eyebrow`},ei={key:1,class:`aside-bit`},ti={class:`eyebrow`},ni={key:0},ri={key:2,class:`aside-bit`},ii={class:`eyebrow`},ai={key:0},oi=R(z({__name:`NowStatusDock`,setup(t){let n=B(()=>Q.data),r=K(!1),o=B(()=>Q.data),s=B(()=>o.value?.affect||n.value?.affect||{}),c=B(()=>o.value?.activity?.kind||`idle`),d=B(()=>o.value?.expecting?.[0]||null),f=B(()=>r.value||!!n.value?.busy||[`solitude`,`diary`,`review`,`night`].includes(c.value));async function p(e){r.value=!0;try{let t=await xn[e]();U(t.reason||l(`完成了`),t.status===`error`)}catch(e){U(e.message,!0)}finally{r.value=!1,await Ue()}}return(t,r)=>(H(),E(`aside`,{class:`presence-dock`,"aria-label":i(l)(`TA 的此刻状态`)},[u(`div`,zr,[u(`span`,Br,[e(a(i(l)(`第 {v} 天`,{v:o.value?.dayOfLife??n.value?.dayOfLife??1}))+` `,1),o.value?.clock?(H(),E(C,{key:0},[e(` · `+a(o.value.clock.period)+` `+a(o.value.clock.local.slice(11)),1)],64)):w(``,!0)]),u(`h2`,Vr,a(s.value.mood||i(l)(`平静`)),1),u(`p`,Hr,a(i(pt)(s.value)||i(l)(`没有特别牵动 TA 的事,心情慢慢回到平常。`)),1),u(`div`,Ur,[u(`span`,{class:`chip activity-chip`,"data-activity":c.value},a(i(ht)(o.value)),9,Wr),i(mt)(s.value)?(H(),E(`span`,Gr,a(i(l)(`这阵子 · {v}`,{v:i(mt)(s.value)})),1)):w(``,!0),s.value.energyLabel?(H(),E(`span`,Kr,a(i(l)(`精力 · {energyLabel}`,{energyLabel:s.value.energyLabel})),1)):w(``,!0),n.value?.nature?.rhythm?.enabled?(H(),E(`span`,qr,a(i(l)(`{wake} 醒 / {sleep} 睡`,{wake:n.value.nature.rhythm.wake,sleep:n.value.nature.rhythm.sleep})),1)):w(``,!0)]),u(`div`,Jr,[o.value?.currentLife?.current?(H(),E(`button`,{key:0,class:`text-button`,onClick:r[0]||=e=>i(F)(`time`)},a(i(l)(`看看进度`)),1)):w(``,!0),u(`button`,{class:`primary`,onClick:r[1]||=e=>i(V).chatOpen=!0},a(i(l)(`和 TA 聊聊`)),1),u(`button`,{disabled:f.value,onClick:r[2]||=e=>p(`reflect`)},a(f.value?i(l)(`TA 正在想…`):i(l)(`让 TA 独处一会儿`)),9,Yr),u(`button`,{disabled:f.value,onClick:r[3]||=e=>p(`review`)},a(i(l)(`写下今天的日记`)),9,Xr)]),u(`small`,Zr,a(n.value?.reason||i(l)(`安静下来时,TA 会自己独处。`)),1),o.value?.lastWords?(H(),E(`div`,Qr,[u(`span`,$r,a(i(l)(`最近说`)),1),u(`p`,null,`“`+a(o.value.lastWords.text)+`”`,1),u(`small`,null,a(i(Gn)({name:o.value.lastWords.sessionName,id:o.value.lastWords.session}))+` · `+a(i(Vn)(o.value.lastWords.time,o.value.now)),1)])):w(``,!0),o.value?.thought?(H(),E(`div`,ei,[u(`span`,ti,a(i(l)(`放在心上`)),1),u(`p`,null,a(o.value.thought.content),1),o.value.thought.when?(H(),E(`small`,ni,a(o.value.thought.when),1)):w(``,!0)])):w(``,!0),d.value?(H(),E(`div`,ri,[u(`span`,ii,a(i(l)(`在等`)),1),u(`p`,null,a(d.value.name?`${d.value.name}:`:``)+a(d.value.content),1),d.value.when?(H(),E(`small`,ai,a(d.value.when),1)):w(``,!0)])):w(``,!0)])],8,Rr))}}),[[`__scopeId`,`data-v-4625711b`]]),si=[`onKeydown`],ci=[`aria-label`],li={key:0},ui=[`type`,`placeholder`,`autocomplete`],di={class:`row end`},fi=R(z({__name:`Confirm`,setup(e){let t=B(()=>h.queue[0]||null),r=K(``),i=K(),o=K(),s=null;P(t,async(e,t)=>{if(e&&!t&&(s=document.activeElement),!e){s?.focus?.(),s=null;return}r.value=e.value,await le(),e.kind===`prompt`?i.value?.focus():o.value?.focus()});function l(){t.value&&ue(t.value.kind===`prompt`?r.value.trim():`ok`)}function p(){ue(null)}return(e,s)=>(H(),T(d,{to:`body`},[N(f,{name:`dialog`},{default:W(()=>[t.value?(H(),E(`div`,{key:0,class:`dialog-layer`,onKeydown:c(x(p,[`prevent`]),[`esc`])},[u(`form`,{class:`dialog`,role:`alertdialog`,"aria-modal":`true`,"aria-label":t.value.title,onSubmit:x(l,[`prevent`])},[s[1]||=u(`span`,{class:`dialog-orb`,"aria-hidden":`true`},null,-1),u(`h2`,null,a(t.value.title),1),t.value.message?(H(),E(`p`,li,a(t.value.message),1)):w(``,!0),t.value.kind===`prompt`?Ce((H(),E(`input`,{key:1,ref_key:`input`,ref:i,"onUpdate:modelValue":s[0]||=e=>r.value=e,type:t.value.secret?`password`:`text`,placeholder:t.value.placeholder,autocomplete:t.value.secret?`current-password`:`off`},null,8,ui)),[[n,r.value]]):w(``,!0),u(`div`,di,[u(`button`,{type:`button`,class:`dialog-cancel ghost`,onClick:p},a(t.value.cancelText),1),u(`button`,{ref_key:`confirmButton`,ref:o,type:`submit`,class:G([`dialog-confirm`,t.value.danger?`danger`:`primary`])},a(t.value.confirmText),3)])],40,ci)],40,si)):w(``,!0)]),_:1})]))}}),[[`__scopeId`,`data-v-2339e49c`]]),pi={class:`icon`,viewBox:`0 0 24 24`,"aria-hidden":`true`},mi={key:6,d:`M4.5 19.5h15M6 19.5V6.5h3v13M10.5 19.5V4.5h3v15M15.2 19.2l-.6-11.8 2.9-.4 1.2 11.8`},hi={key:14,d:`M12 5.5v13M5.5 12h13`},gi={key:15,d:`M14.5 6 8.5 12l6 6`},_i={key:19,cx:`12`,cy:`12`,r:`7`},vi=R(z({__name:`Icon`,props:{name:{}},setup(e){return(t,n)=>(H(),E(`svg`,pi,[e.name===`now`?(H(),E(C,{key:0},[n[0]||=u(`path`,{d:`M12 4.5c4.2 0 7 2.9 7 7.2 0 4.6-3 7.8-7 7.8s-7-3.2-7-7.8c0-4.3 2.8-7.2 7-7.2Z`},null,-1),n[1]||=u(`path`,{d:`M9.4 11.4v.6M14.6 11.4v.6M10 15c1.2.9 2.8.9 4 0`},null,-1)],64)):e.name===`time`?(H(),E(C,{key:1},[n[2]||=u(`circle`,{cx:`12`,cy:`12`,r:`8`},null,-1),n[3]||=u(`path`,{d:`M12 7v5l3 2`},null,-1)],64)):e.name===`chats`?(H(),E(C,{key:2},[n[4]||=u(`path`,{d:`M4.5 6.5a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H11l-4 3.5v-3.5h-.5a2 2 0 0 1-2-2v-7Z`},null,-1),n[5]||=u(`path`,{d:`M8.5 10h.01M12 10h.01M15.5 10h.01`},null,-1)],64)):e.name===`heart`?(H(),E(C,{key:3},[n[6]||=u(`path`,{d:`M12 3.5l1.6 4.4 4.6.2-3.6 2.9 1.3 4.5L12 12.9l-3.9 2.6 1.3-4.5-3.6-2.9 4.6-.2L12 3.5Z`},null,-1),n[7]||=u(`path`,{d:`M5 19.5h.01M19 18.5h.01M18.5 4.5h.01`},null,-1)],64)):e.name===`people`?(H(),E(C,{key:4},[n[8]||=_(`<circle cx="12" cy="12" r="2.6" data-v-69e2db74></circle><circle cx="5.2" cy="7.2" r="1.7" data-v-69e2db74></circle><circle cx="18.6" cy="8.4" r="1.4" data-v-69e2db74></circle><circle cx="16.8" cy="18" r="1.9" data-v-69e2db74></circle><path d="M6.6 8.4l3.3 2.1M17.3 9.1l-3 1.7M15.6 16.4l-1.7-2.3" data-v-69e2db74></path>`,5)],64)):e.name===`life`?(H(),E(C,{key:5},[n[9]||=u(`path`,{d:`M12 6.5c-2-1.4-4.6-1.8-7.5-1.5v12.6c2.9-.3 5.5.1 7.5 1.5 2-1.4 4.6-1.8 7.5-1.5V5c-2.9-.3-5.5.1-7.5 1.5Z`},null,-1),n[10]||=u(`path`,{d:`M12 6.5v12.6`},null,-1)],64)):e.name===`memory`?(H(),E(`path`,mi)):e.name===`nature`?(H(),E(C,{key:7},[n[11]||=u(`path`,{d:`M12 20v-7.5`},null,-1),n[12]||=u(`path`,{d:`M12 12.5c0-4 2.6-6.8 6.8-7-.1 4.2-2.8 7-6.8 7Z`},null,-1),n[13]||=u(`path`,{d:`M12 14.5c0-3-2-5.1-5.3-5.2.1 3.1 2.2 5.2 5.3 5.2Z`},null,-1)],64)):e.name===`system`?(H(),E(C,{key:8},[n[14]||=u(`circle`,{cx:`12`,cy:`12`,r:`3`},null,-1),n[15]||=u(`path`,{d:`M12 3.5v2.3M12 18.2v2.3M20.5 12h-2.3M5.8 12H3.5M18 6l-1.6 1.6M7.6 16.4 6 18M18 18l-1.6-1.6M7.6 7.6 6 6`},null,-1)],64)):e.name===`more`?(H(),E(C,{key:9},[n[16]||=u(`circle`,{cx:`6`,cy:`12`,r:`1.3`},null,-1),n[17]||=u(`circle`,{cx:`12`,cy:`12`,r:`1.3`},null,-1),n[18]||=u(`circle`,{cx:`18`,cy:`12`,r:`1.3`},null,-1)],64)):e.name===`refresh`?(H(),E(C,{key:10},[n[19]||=u(`path`,{d:`M19 12a7 7 0 1 1-2.1-5`},null,-1),n[20]||=u(`path`,{d:`M19 4.5V9h-4.5`},null,-1)],64)):e.name===`send`?(H(),E(C,{key:11},[n[21]||=u(`path`,{d:`M4.5 11.8 19.5 5l-4.8 14.5-3.2-6.2-7-1.5Z`},null,-1),n[22]||=u(`path`,{d:`m11.5 13.3 3.4-3.6`},null,-1)],64)):e.name===`palette`?(H(),E(C,{key:12},[n[23]||=u(`path`,{d:`M12 4a8 8 0 1 0 0 16c1.2 0 1.8-.8 1.8-1.6 0-1.3-1.3-1.6-1.3-2.7 0-.9.7-1.5 1.7-1.5H16a4 4 0 0 0 4-4C20 6.9 16.4 4 12 4Z`},null,-1),n[24]||=u(`path`,{d:`M8 11h.01M10 7.8h.01M14 7.8h.01M16.2 11h.01`},null,-1)],64)):e.name===`search`?(H(),E(C,{key:13},[n[25]||=u(`circle`,{cx:`11`,cy:`11`,r:`6`},null,-1),n[26]||=u(`path`,{d:`m20 20-4.5-4.5`},null,-1)],64)):e.name===`plus`?(H(),E(`path`,hi)):e.name===`back`?(H(),E(`path`,gi)):e.name===`motion`?(H(),E(C,{key:16},[n[27]||=u(`path`,{d:`M4 14c2.5-4 5.5-4 8 0s5.5 4 8 0`},null,-1),n[28]||=u(`path`,{d:`M4 9c2.5-4 5.5-4 8 0s5.5 4 8 0`},null,-1)],64)):e.name===`plugins`?(H(),E(C,{key:17},[n[29]||=u(`path`,{d:`M8 7h8v4H8zM6 11h12v6H6z`},null,-1),n[30]||=u(`path`,{d:`M9 11V7M15 11V7M12 14v3`},null,-1)],64)):e.name===`guide`?(H(),E(C,{key:18},[n[31]||=u(`circle`,{cx:`12`,cy:`12`,r:`8`},null,-1),n[32]||=u(`path`,{d:`M9.8 9.6a2.3 2.3 0 1 1 3.3 2.1c-.7.3-1.1.9-1.1 1.6v.3M12 16.5h.01`},null,-1)],64)):(H(),E(`circle`,_i))]))}}),[[`__scopeId`,`data-v-69e2db74`]]),yi=[`aria-label`],bi={class:`sheet-head`},xi={key:0,class:`eyebrow`},Si=[`aria-label`],Ci={class:`sheet-body`},wi=R(z({__name:`Sheet`,props:{open:{type:Boolean},title:{},eyebrow:{default:``},width:{default:`520px`}},emits:[`close`],setup(e,{emit:t}){let n=e,r=t,o=K(),s=K(!0),c=B(()=>n.open&&s.value);re(()=>{s.value=!0}),ve(()=>{s.value=!1});let p=null;function m(e){e.key===`Escape`&&r(`close`)}return P(c,async e=>{e?(p=document.activeElement,document.addEventListener(`keydown`,m),await le(),o.value?.focus()):(document.removeEventListener(`keydown`,m),p?.focus?.())},{immediate:!0}),me(()=>document.removeEventListener(`keydown`,m)),(t,n)=>(H(),T(d,{to:`body`},[N(f,{name:`sheet`},{default:W(()=>[c.value?(H(),E(`div`,{key:0,class:`sheet-layer`,onClick:n[1]||=x(e=>r(`close`),[`self`])},[u(`aside`,{ref_key:`panel`,ref:o,class:`sheet`,role:`dialog`,"aria-modal":`true`,"aria-label":e.title,tabindex:`-1`,style:b({"--sheet-w":e.width})},[u(`header`,bi,[u(`div`,null,[e.eyebrow?(H(),E(`span`,xi,a(e.eyebrow),1)):w(``,!0),u(`h2`,null,a(e.title),1)]),u(`button`,{class:`icon-button ghost sheet-close`,"aria-label":i(l)(`关闭`),onClick:n[0]||=e=>r(`close`)},` ✕ `,8,Si)]),u(`div`,Ci,[ae(t.$slots,`default`,{},void 0,!0)])],12,yi)])):w(``,!0)]),_:3})]))}}),[[`__scopeId`,`data-v-2c804a0d`]]);function Ti(e,t){let n=!1,r=!1,i=!1,a=B(()=>V.page===e),o=()=>{if(a.value){if(r){i=!0;return}r=!0,t().catch(e=>U(e.message,!0)).finally(()=>{r=!1,i&&(i=!1,o())})}};return j(o),re(()=>{n&&o(),n=!0}),P(()=>[V.tick,V.pulse],o),a}var Ei={class:`card`},Di={key:0,class:`card-head`},Oi={key:0,class:`eyebrow`},ki={key:1},Ai={key:2},ji={key:0,class:`row`},Mi=R(z({__name:`Card`,props:{title:{},eyebrow:{},sub:{}},setup(e){return(t,n)=>(H(),E(`section`,Ei,[e.title||e.eyebrow||t.$slots.actions?(H(),E(`header`,Di,[u(`div`,null,[e.eyebrow?(H(),E(`span`,Oi,a(e.eyebrow),1)):w(``,!0),e.title?(H(),E(`h2`,ki,a(e.title),1)):w(``,!0),e.sub?(H(),E(`p`,Ai,a(e.sub),1)):w(``,!0)]),t.$slots.actions?(H(),E(`div`,ji,[ae(t.$slots,`actions`,{},void 0,!0)])):w(``,!0)])):w(``,!0),ae(t.$slots,`default`,{},void 0,!0)]))}}),[[`__scopeId`,`data-v-2c88637b`]]),Ni={class:`meter-row`},Pi={class:`meter-label`},Fi=[`aria-label`,`aria-valuenow`],Ii={class:`meter-value`},Li=R(z({__name:`Meter`,props:{label:{},value:{},text:{},warn:{type:Boolean}},setup(e){let t=e,n=B(()=>Math.round(Math.max(0,Math.min(1,Number(t.value)||0))*100));return(t,r)=>(H(),E(`div`,Ni,[u(`span`,Pi,a(e.label),1),u(`div`,{class:G([`meter`,{warn:e.warn}]),role:`meter`,"aria-label":e.label,"aria-valuemin":`0`,"aria-valuemax":`100`,"aria-valuenow":n.value},[u(`i`,{style:b({width:n.value+`%`})},null,4)],10,Fi),u(`b`,Ii,a(e.text??n.value+`%`),1)]))}}),[[`__scopeId`,`data-v-4f51518c`]]),Ri=[`aria-label`],zi=[`data-tab`,`aria-selected`,`tabindex`,`onClick`],Bi={key:0,class:`count`},Vi=R(z({__name:`Tabs`,props:_e({items:{},label:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(t){let n=ce(t,`modelValue`);function r(e,t){let r=t.findIndex(e=>e.key===n.value),i=e.key===`ArrowRight`?1:e.key===`ArrowLeft`?-1:0;if(!i)return;e.preventDefault();let a=t[(r+i+t.length)%t.length];n.value=a.key;let o=e.currentTarget.closest(`[role="tablist"]`);requestAnimationFrame(()=>o?.querySelector(`[data-tab="${a.key}"]`)?.focus())}return(i,o)=>(H(),E(`div`,{class:`seg tabs`,role:`tablist`,"aria-label":t.label},[(H(!0),E(C,null,M(t.items,i=>(H(),E(`button`,{key:i.key,type:`button`,role:`tab`,"data-tab":i.key,"aria-selected":n.value===i.key,tabindex:n.value===i.key?0:-1,onClick:e=>n.value=i.key,onKeydown:o[0]||=e=>r(e,t.items)},[e(a(i.label),1),i.count!==void 0&&i.count!==``?(H(),E(`small`,Bi,a(i.count),1)):w(``,!0)],40,zi))),128))],8,Ri))}}),[[`__scopeId`,`data-v-e8e03a3b`]]),Hi=[`aria-label`],Ui=[`data-tone`],Wi={class:`entry`},Gi=R(z({__name:`Timeline`,props:{items:{},label:{}},setup(e){return(t,n)=>(H(),E(`ol`,{class:`timeline`,"aria-label":e.label},[(H(!0),E(C,null,M(e.items,(e,r)=>(H(),E(`li`,{key:e.id??r,"data-tone":e.tone||void 0},[n[0]||=u(`span`,{class:`stem`,"aria-hidden":`true`},[u(`i`)],-1),u(`div`,Wi,[ae(t.$slots,`default`,{item:e,index:r},void 0,!0)])],8,Ui))),128))],8,Hi))}}),[[`__scopeId`,`data-v-e79d18a9`]]),Ki=[`aria-label`],qi={class:`choice`},Ji={class:`row`},Yi=[`disabled`],Xi=[`disabled`],Zi={class:`choice`},Qi={class:`row`},$i=[`disabled`],ea=[`disabled`],ta={key:0,class:`opacity`},na=[`value`,`aria-label`],ra=R(z({__name:`WallpaperPicker`,props:{open:{type:Boolean}},emits:[`close`],setup(e,{emit:t}){let n=t,r=K(),o=K(),s=K(``);async function c(e,t){let n=t.target,r=n.files?.[0];if(n.value=``,r){s.value=e;try{e===`hero`?await st(r):await lt(r),U(l(e===`hero`?`中间这张已换上`:`后面的壁纸已换上`))}catch(e){U(e.message,!0)}finally{s.value=``}}}async function d(e){s.value=e;try{e===`hero`?await ct():await ut(),U(l(`已恢复原来的壁纸`))}catch(e){U(e.message,!0)}finally{s.value=``}}return(t,f)=>e.open?(H(),E(`section`,{key:0,class:`wallpaper-picker`,"aria-label":i(l)(`换壁纸`)},[u(`header`,null,[u(`b`,null,a(i(l)(`换壁纸`)),1),u(`button`,{type:`button`,class:`text-button`,onClick:f[0]||=e=>n(`close`)},a(i(l)(`收起`)),1)]),u(`div`,qi,[u(`span`,null,a(i(l)(`中间这张`)),1),u(`div`,Ji,[u(`button`,{type:`button`,disabled:!!s.value,onClick:f[1]||=e=>r.value?.click()},a(s.value===`hero`?i(l)(`处理中…`):i(l)(`选择图片`)),9,Yi),u(`button`,{type:`button`,disabled:!!s.value,onClick:f[2]||=e=>d(`hero`)},a(i(l)(`恢复默认`)),9,Xi)])]),u(`div`,Zi,[u(`span`,null,a(i(l)(`后面的大壁纸`)),1),u(`div`,Qi,[u(`button`,{type:`button`,disabled:!!s.value,onClick:f[3]||=e=>o.value?.click()},a(s.value===`sky`?i(l)(`处理中…`):i(l)(`选择图片`)),9,$i),u(`button`,{type:`button`,disabled:!!s.value,onClick:f[4]||=e=>d(`sky`)},a(i(l)(`恢复默认`)),9,ea)]),i($).sky?(H(),E(`label`,ta,[u(`span`,null,a(i(l)(`透明度 {v}%`,{v:Math.round(i($).skyOpacity*100)})),1),u(`input`,{type:`range`,min:`0.08`,max:`0.82`,step:`0.02`,value:i($).skyOpacity,"aria-label":i(l)(`后面壁纸的透明度`),onInput:f[5]||=e=>i(dt)(Number(e.target.value))},null,40,na),u(`small`,null,a(i(l)(`越透明,心情的颜色越清楚。`)),1)])):w(``,!0)]),u(`input`,{ref_key:`heroInput`,ref:r,"data-wallpaper":`hero`,type:`file`,accept:`image/*`,hidden:``,onChange:f[6]||=e=>c(`hero`,e)},null,544),u(`input`,{ref_key:`skyInput`,ref:o,"data-wallpaper":`sky`,type:`file`,accept:`image/*`,hidden:``,onChange:f[7]||=e=>c(`sky`,e)},null,544)],8,Ki)):w(``,!0)}}),[[`__scopeId`,`data-v-01d9dcb6`]]),ia=`luckytri-home-wallpaper-position-v3`;function aa(e,t){try{let n=JSON.parse(localStorage.getItem(e)||`null`);return!n||!Number.isFinite(n.x)||!Number.isFinite(n.y)?null:{x:Math.min(t.x[1],Math.max(t.x[0],n.x)),y:Math.min(t.y[1],Math.max(t.y[0],n.y))}}catch{return null}}function oa(e,t,n){try{return localStorage.setItem(e,JSON.stringify(t)),!0}catch{return U(n,!0),!1}}function sa(){let e=K(!1),t=K(null),n=K(null),r=K(aa(ia,{x:[0,100],y:[0,100]})||{x:50,y:50}),i=B(()=>({objectPosition:`${r.value.x}% ${r.value.y}%`})),a=K(null);function o(e){let t=e.currentTarget,i=n.value;if(!i?.naturalWidth||!i.naturalHeight)return;let o=t.getBoundingClientRect(),s=Math.max(o.width/i.naturalWidth,o.height/i.naturalHeight);a.value={pointerId:e.pointerId,startX:e.clientX,startY:e.clientY,startPositionX:r.value.x,startPositionY:r.value.y,overflowX:Math.max(0,i.naturalWidth*s-o.width),overflowY:Math.max(0,i.naturalHeight*s-o.height)},t.setPointerCapture(e.pointerId)}function s(e){let t=a.value;t&&t.pointerId===e.pointerId&&(t.overflowX>0&&(r.value.x=Math.min(100,Math.max(0,t.startPositionX-(e.clientX-t.startX)/t.overflowX*100))),t.overflowY>0&&(r.value.y=Math.min(100,Math.max(0,t.startPositionY-(e.clientY-t.startY)/t.overflowY*100))))}function c(e){a.value?.pointerId===e.pointerId&&(a.value=null)}function u(){r.value={x:50,y:50}}function d(){oa(ia,r.value,l(`浏览器没有保存这次构图`))&&(e.value=!1,a.value=null,U(l(`首页壁纸构图已记住`)))}return{adjusting:e,heroRef:t,imageRef:n,pictureStyle:i,beginPictureDrag:o,movePicture:s,endPictureDrag:c,resetPicture:u,finishPicture:d}}var ca={class:`page now`},la={class:`now-presentation`},ua={class:`wallpaper-layer`,"aria-hidden":`true`},da=[`src`],fa=[`aria-label`],pa={class:`wallpaper-tip`},ma={class:`wallpaper-controls`},ha={class:`wallpaper-tip-inline`},ga={class:`notes`},_a={class:`note words`},va={class:`eyebrow`},ya={key:0,class:`recent-list`},ba={class:`quote`},xa={key:1,class:`muted`},Sa={class:`note thought`},Ca={class:`eyebrow`},wa={key:1,class:`muted`},Ta={key:2,class:`will-line`},Ea={key:3},Da={key:4,class:`muted`},Oa={key:5},ka={class:`note ahead`},Aa={class:`eyebrow`},ja={key:0,class:`list`},Ma={key:1,class:`muted`},Na={class:`now-grid`},Pa={class:`today-scroll scroll-pane`},Fa={class:`entry-head`},Ia={key:0},La={key:1},Ra={key:2},za={key:3},Ba={key:4},Va={key:5,class:`chip`,"data-tone":`quiet`},Ha={key:6,class:`chip`,"data-tone":`quiet`},Ua={key:0},Wa={key:0},Ga={key:1,class:`muted`},Ka={key:2},qa={key:3,class:`muted`},Ja={key:4},Ya={key:0},Xa={class:`stack side`},Za={class:`stack tight`},Qa={class:`faint ledger-note`},$a={key:0,class:`list`},eo={class:`grow`},to=[`data-tone`],no={key:1,class:`muted small-text`},ro={class:`counts`},io=R(z({__name:`NowPage`,setup(t){let n=ee(ne(`/mind`)||null),r=ee(ne(`/mind/today`)||null),o=K(`all`),s=K(!1),{adjusting:c,heroRef:d,imageRef:f,pictureStyle:p,beginPictureDrag:m,movePicture:h,endPictureDrag:_,resetPicture:v,finishPicture:y}=sa(),te=g([{id:`conversation`,label:I(`对话`)},{id:`inner`,label:I(`独处与日记`)},{id:`upkeep`,label:I(`整理记忆`)}]),S=B(()=>Q.data),D=B(()=>{let e=S.value?.recentWords?.filter(e=>e.text?.trim())||[];return e.length?e.slice(0,3):S.value?.lastWords?[S.value.lastWords]:[]}),O=B(()=>S.value?.clock?.timeZone||n.value?.clock?.timeZone||`Asia/Shanghai`),re=B(()=>{let e=r.value?.items||[],t=[];for(let[n,r]of e.entries()){let e=r.type===`choice`||r.type===`glance`?`talk`:r.type===`feeling`?`feel`:`inner`;if(o.value!==`all`&&o.value!==e)continue;let i=t[t.length-1];if(r.type===`glance`&&i?.type===`glance`){i.count+=1;let e=Gn({name:r.sessionName,id:r.session});i.places.includes(e)||i.places.push(e);continue}t.push({...r,id:`${r.type}-${r.time}-${n}`,tone:r.type===`glance`||r.type===`choice`&&r.choice===`silent`?`quiet`:r.type===`feeling`?r.valence>=0?`warm`:`night`:r.type===`run`?`night`:`glow`,count:1,places:r.type===`glance`?[Gn({name:r.sessionName,id:r.session})]:[]})}return t}),k=B(()=>{let e=r.value?.items||[];return{all:e.length,talk:e.filter(e=>e.type===`choice`||e.type===`glance`).length,feel:e.filter(e=>e.type===`feeling`).length,inner:e.filter(e=>e.type===`run`||e.type===`ahead`).length}}),A=B(()=>n.value?.budget?.usage||{}),j=B(()=>n.value?.budget?.limits||{}),ie=B(()=>(S.value?.expecting||[]).filter(e=>e.content?.trim()).slice(0,5));function ae(e){let t=j.value[e];return t?(A.value[e]||0)/t:A.value.total?(A.value[e]||0)/A.value.total:0}let oe=0;async function P(){let e=++oe,[t,i]=await Promise.all([xn.overview(),xn.today()]);e===oe&&(n.value=t,r.value=i)}return Ti(`now`,P),(t,g)=>(H(),E(`div`,ca,[u(`div`,la,[u(`section`,{ref_key:`heroRef`,ref:d,class:G([`now-hero`,{"wallpaper-adjusting":i(c)}])},[u(`div`,ua,[u(`img`,{ref_key:`imageRef`,ref:f,src:i($).hero,style:b(i(p)),alt:``,draggable:`false`},null,12,da)]),i(c)?(H(),E(`div`,{key:0,class:`wallpaper-drag-layer`,role:`application`,"aria-label":i(l)(`拖动调整首页壁纸构图`),onPointerdown:g[0]||=x((...e)=>i(m)&&i(m)(...e),[`prevent`]),onPointermove:g[1]||=x((...e)=>i(h)&&i(h)(...e),[`prevent`]),onPointerup:g[2]||=(...e)=>i(_)&&i(_)(...e),onPointercancel:g[3]||=(...e)=>i(_)&&i(_)(...e),onLostpointercapture:g[4]||=(...e)=>i(_)&&i(_)(...e)},[u(`span`,pa,a(i(l)(`按住并拖动图片,调整人物位置`)),1)],40,fa)):w(``,!0),u(`div`,ma,[i(c)?(H(),E(C,{key:0},[u(`span`,ha,a(i(l)(`拖动背景调整构图`)),1),u(`button`,{type:`button`,onClick:g[5]||=(...e)=>i(v)&&i(v)(...e)},a(i(l)(`恢复默认`)),1),u(`button`,{type:`button`,class:`primary`,onClick:g[6]||=(...e)=>i(y)&&i(y)(...e)},a(i(l)(`完成`)),1)],64)):(H(),E(`button`,{key:1,type:`button`,onClick:g[7]||=e=>c.value=!0},a(i(l)(`调整构图`)),1)),i(c)?w(``,!0):(H(),E(`button`,{key:2,type:`button`,onClick:g[8]||=e=>s.value=!s.value},a(i(l)(`换壁纸`)),1))]),N(ra,{open:s.value&&!i(c),onClose:g[9]||=e=>s.value=!1},null,8,[`open`])],2)]),u(`section`,ga,[u(`article`,_a,[u(`span`,va,a(i(l)(`TA 最近说`)),1),D.value.length?(H(),E(`ul`,ya,[(H(!0),E(C,null,M(D.value,(e,t)=>(H(),E(`li`,{key:`${e.time}-${t}`},[u(`p`,ba,`“`+a(e.text)+`”`,1),u(`small`,null,a(i(Gn)({name:e.sessionName,id:e.session}))+` · `+a(i(Vn)(e.time,S.value?.now)),1)]))),128))])):(H(),E(`p`,xa,a(i(l)(`TA 还没在哪里开过口。`)),1))]),u(`article`,Sa,[u(`span`,Ca,a(i(l)(`放在心上`)),1),S.value?.thought?(H(),E(C,{key:0},[u(`p`,null,a(S.value.thought.content),1),u(`small`,null,a(S.value.thought.when),1)],64)):(H(),E(`p`,wa,a(i(l)(`心里暂时没有挂着的事。`)),1)),S.value?.will?(H(),E(`p`,Ta,a(i(l)(`正在为自己而活:{content}`,{content:S.value.will.content})),1)):w(``,!0),S.value?.will?.touched?(H(),E(`small`,Ea,a(i(l)(`被别人的话碰到过 {touched} 次,上次{v}`,{touched:S.value.will.touched,v:S.value.will.lastSpoke?i(l)(`出了声`):i(l)(`没出声`)})),1)):w(``,!0),S.value?.meaning?(H(),E(`p`,Da,[e(a(i(l)(`上次相遇:{text}`,{text:S.value.meaning.text})),1),S.value.meaning.spoke?w(``,!0):(H(),E(C,{key:0},[e(a(i(l)(`(没出声)`)),1)],64))])):w(``,!0),S.value?.meaning?.when&&!S.value.meaning.recent?(H(),E(`small`,Oa,a(S.value.meaning.when),1)):w(``,!0),u(`button`,{class:`text-button`,onClick:g[10]||=e=>i(F)(`heart`,`notes`)},a(i(l)(`看看 TA 的便签`)),1)]),u(`article`,ka,[u(`span`,Aa,a(i(l)(`在等的事`)),1),ie.value.length?(H(),E(`ul`,ja,[(H(!0),E(C,null,M(ie.value,e=>(H(),E(`li`,{key:e.id},[u(`b`,null,a(e.when),1),u(`span`,null,a(e.name?`${e.name}:`:``)+a(e.content),1),u(`small`,null,a(i(Sn)[e.kind]||e.kind),1)]))),128))])):(H(),E(`p`,Ma,a(i(l)(`这几天没有 TA 特别在等的事。`)),1)),u(`button`,{class:`text-button`,onClick:g[11]||=e=>i(F)(`life`,`ahead`)},a(i(l)(`约定与期待`)),1)])]),u(`section`,Na,[N(Mi,{class:`today`,title:i(l)(`今天的 TA`),sub:r.value?i(l)(`{v},按时间排在一起`,{v:i(zn)(r.value.day)}):``},{actions:W(()=>[N(Vi,{modelValue:o.value,"onUpdate:modelValue":g[12]||=e=>o.value=e,label:i(l)(`筛选今天的事`),items:[{key:`all`,label:i(l)(`全部`),count:k.value.all},{key:`talk`,label:i(l)(`开口与沉默`),count:k.value.talk},{key:`feel`,label:i(l)(`心情`),count:k.value.feel},{key:`inner`,label:i(l)(`独处与日记`),count:k.value.inner}]},null,8,[`modelValue`,`label`,`items`])]),default:W(()=>[u(`div`,Pa,[re.value.length?(H(),T(Gi,{key:0,items:re.value,label:i(l)(`今天的 TA`)},{default:W(({item:t})=>[u(`div`,Fa,[u(`time`,null,a(i(Rn)(t.time,O.value)),1),t.type===`choice`?(H(),E(`b`,Ia,a(i(Fn)[t.choice]||t.choice),1)):t.type===`glance`?(H(),E(`b`,La,a(t.count>1?i(l)(`扫了 {count} 眼`,{count:t.count}):i(l)(`扫了一眼`)),1)):t.type===`feeling`?(H(),E(`b`,Ra,a(i(l)(`心情 · {feeling}`,{feeling:t.feeling})),1)):t.type===`run`?(H(),E(`b`,za,a(i(Tn)[t.kind]||t.kind)+` · `+a(i(En)[t.status]||t.status),1)):(H(),E(`b`,Ba,a(i(l)(`约定 · {v}`,{v:i(Cn)[t.status]||t.status})),1)),t.type===`choice`?(H(),E(`span`,Va,a(i(Gn)({name:t.sessionName})),1)):t.type===`glance`?(H(),E(`span`,Ha,a(t.places.join(`、`)),1)):w(``,!0)]),t.type===`choice`?(H(),E(`p`,Ua,[e(a(t.reason),1),t.appraisal?(H(),E(`small`,Wa,` · `+a(t.appraisal),1)):w(``,!0)])):t.type===`glance`?(H(),E(`p`,Ga,a(t.reason||i(l)(`没什么需要 TA 细看的`)),1)):t.type===`feeling`?(H(),E(`p`,Ka,[e(a(t.cause||i(l)(`说不清为什么`))+` `,1),u(`small`,null,`· `+a(i(wn)[t.origin]||t.origin),1)])):t.type===`run`?(H(),E(`p`,qa,a(t.reason),1)):(H(),E(`p`,Ja,[e(a(t.content),1),t.note?(H(),E(`small`,Ya,` · `+a(t.note),1)):w(``,!0)]))]),_:1},8,[`items`,`label`])):(H(),T(ye,{key:1,title:i(l)(`今天还很安静`),text:i(l)(`TA 扫一眼、开口、没出声、心情变化、独处、写日记,都会按时间排在这里。`)},null,8,[`title`,`text`]))])]),_:1},8,[`title`,`sub`]),u(`div`,Xa,[N(Mi,{title:i(l)(`今天的注意力`),eyebrow:i(l)(`这一天`)},{default:W(()=>[u(`div`,Za,[(H(!0),E(C,null,M(i(te),e=>(H(),T(Li,{key:e.id,label:e.label,value:ae(e.id),warn:!!j.value[e.id]&&ae(e.id)>=.8,text:i(Hn)(A.value[e.id])},null,8,[`label`,`value`,`warn`,`text`]))),128))]),u(`p`,Qa,a(i(l)(`共 {v} 次调用、{v2} Token,缓存命中 {v3}。 {v4}`,{v:i(Hn)(A.value.calls),v2:i(Hn)(A.value.total),v3:i(Hn)(A.value.cached),v4:j.value.total?i(l)(`每日上限 {v}。`,{v:i(Hn)(j.value.total)}):i(l)(`没有设置每日上限。`)})),1)]),_:1},8,[`title`,`eyebrow`]),N(Mi,{title:i(l)(`还没细看的消息`),eyebrow:i(l)(`留意`)},{default:W(()=>[n.value?.attention?.length?(H(),E(`ul`,$a,[(H(!0),E(C,null,M(n.value.attention,e=>(H(),E(`li`,{key:e.session,class:`list-row`},[u(`span`,eo,a(e.name),1),u(`span`,{class:`chip`,"data-tone":e.unread?void 0:`quiet`},a(i(l)(`{unread} 条未读`,{unread:e.unread})),9,to)]))),128))])):(H(),E(`p`,no,a(i(l)(`被叫到、聊到 TA 在意的事、熟人说话或攒了不少消息时,TA 才会细看。`)),1))]),_:1},8,[`title`,`eyebrow`]),N(Mi,{title:i(l)(`TA 的这一生`),eyebrow:i(l)(`到现在`)},{default:W(()=>[u(`div`,ro,[u(`button`,{onClick:g[13]||=e=>i(F)(`heart`)},[u(`b`,null,a(n.value?.counts?.self??0),1),u(`span`,null,a(i(l)(`自我线索`)),1)]),u(`button`,{onClick:g[14]||=e=>i(F)(`people`)},[u(`b`,null,a(n.value?.counts?.people??0),1),u(`span`,null,a(i(l)(`认识的人`)),1)]),u(`button`,{onClick:g[15]||=e=>i(F)(`life`)},[u(`b`,null,a(n.value?.counts?.diaries??0),1),u(`span`,null,a(i(l)(`天日记`)),1)]),u(`button`,{onClick:g[16]||=e=>i(F)(`life`,`ahead`)},[u(`b`,null,a(n.value?.counts?.anticipations??0),1),u(`span`,null,a(i(l)(`件在等的事`)),1)])])]),_:1},8,[`title`,`eyebrow`])])])]))}}),[[`__scopeId`,`data-v-663ff302`]]),ao=`modulepreload`,oo=function(e){return`/app/`+e},so={},co=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=oo(t,n),t=s(t),t in so)return;so[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:ao,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},lo={chats:()=>co(()=>import(`./ChatsPage-BhlJHseG.js`),__vite__mapDeps([0,1,2,3,4,5,6])),heart:()=>co(()=>import(`./HeartPage-32BeTPn2.js`),__vite__mapDeps([7,1,2,4,8])),people:()=>co(()=>import(`./PeoplePage-DxtpekwM.js`),__vite__mapDeps([9,1,2,10,11])),life:()=>co(()=>import(`./LifePage-CxSm0XKI.js`),__vite__mapDeps([12,1,2,13])),time:()=>co(()=>import(`./TimePage-7-awH5XL.js`),__vite__mapDeps([14,1,2,3,15])),memory:()=>co(()=>import(`./MemoryPage-BeKBcPCY.js`),__vite__mapDeps([16,1,2,10,17])),nature:()=>co(()=>import(`./NaturePage-NEPYl2HS.js`),__vite__mapDeps([18,1,2,19])),system:()=>co(()=>import(`./SystemPage-BvzJlHuY.js`),__vite__mapDeps([20,1,2,21])),plugins:()=>co(()=>import(`./PluginsPage-DksEZbUU.js`),__vite__mapDeps([22,1,2,5,23]))},uo=new Map;function fo(e){let t=lo[e];return t?(uo.has(e)||uo.set(e,t().catch(t=>{throw uo.delete(e),t})),uo.get(e)):Promise.resolve()}var po=Object.fromEntries([[`now`,io],...Object.keys(lo).map(e=>[e,be(()=>fo(e))])]);function mo(){navigator.connection?.saveData||document.hidden||Promise.all(Object.keys(lo).map(e=>fo(e).catch(()=>{})))}var ho={key:1,class:`access-gate`},go={class:`access-language`},_o={class:`access-card`},vo={key:0},yo=[`autocomplete`],bo={key:0},xo={key:1},So={key:2,class:`access-error`,role:`alert`},Co=[`disabled`],wo={class:`access-error`,role:`alert`},To=R(z({__name:`AccessGate`,setup(t){let n=B(()=>q.phase===`setup`),o=K(``),s=K(``),c=K(``),d=K(!1);async function f(){c.value=``;try{await Se()}catch{c.value=l(`暂时无法连接,请重试`)}}j(f);async function p(){if(!d.value){if(c.value=``,n.value&&o.value!==s.value){c.value=l(`两次输入的密码不一致`);return}d.value=!0;try{await r(o.value),o.value=``,s.value=``}catch(e){c.value=e.message}finally{d.value=!1}}}return(t,r)=>i(q).phase===`ready`?ae(t.$slots,`default`,{},void 0,!0,0):(H(),E(`main`,ho,[u(`div`,go,[N(Or)]),u(`section`,_o,[r[2]||=u(`div`,{class:`access-orb`,"aria-hidden":`true`},`✦`,-1),r[3]||=u(`p`,{class:`eyebrow`},`LuckyTri`,-1),u(`h1`,null,a(n.value?i(l)(`为这个小世界设置密码`):i(l)(`欢迎回来`)),1),i(q).phase===`checking`?(H(),E(`p`,vo,a(i(l)(`正在连接小世界…`)),1)):(H(),E(C,{key:1},[u(`p`,null,a(n.value?i(l)(`只需设置一个管理密码,以后用它登录。`):i(l)(`输入管理密码,继续陪伴 TA。`)),1),u(`form`,{class:`access-form`,onSubmit:x(p,[`prevent`])},[u(`label`,null,[e(a(i(l)(`管理密码`))+` `,1),Ce(u(`input`,{"onUpdate:modelValue":r[0]||=e=>o.value=e,name:`managementPassword`,type:`password`,autocomplete:n.value?`new-password`:`current-password`,minlength:`8`,maxlength:`256`,required:``,autofocus:``},null,8,yo),[[S,o.value]])]),n.value?(H(),E(`label`,bo,[e(a(i(l)(`确认密码`))+` `,1),Ce(u(`input`,{"onUpdate:modelValue":r[1]||=e=>s.value=e,name:`confirmPassword`,type:`password`,autocomplete:`new-password`,minlength:`8`,maxlength:`256`,required:``},null,512),[[S,s.value]])])):w(``,!0),n.value?(H(),E(`small`,xo,a(i(l)(`至少 8 个字符。密码只保存在本机的加密校验记录中。`)),1)):w(``,!0),c.value?(H(),E(`p`,So,a(c.value),1)):w(``,!0),u(`button`,{class:`primary`,disabled:d.value},a(d.value?i(l)(`请稍候…`):n.value?i(l)(`设置密码并进入`):i(l)(`登录`)),9,Co)],32)],64)),c.value&&i(q).phase===`checking`?(H(),E(C,{key:2},[u(`p`,wo,a(c.value),1),u(`button`,{class:`primary`,onClick:f},a(i(l)(`重试`)),1)],64)):w(``,!0)])]))}}),[[`__scopeId`,`data-v-299ced1e`]]),Eo={key:0,class:`startup`},Do={class:`eyebrow`},Oo=[`aria-label`],ko=[`aria-current`,`aria-label`],Ao={class:`dock-ta-text rail-label`},jo={class:`dock-groups`},Mo={class:`rail-label`},No=[`data-page`,`aria-current`,`title`,`onClick`,`onPointerenter`,`onFocus`],Po={class:`rail-label`},Fo={class:`dock-foot`},Io=[`aria-pressed`,`title`],Lo={class:`rail-label`},Ro=[`href`,`title`],zo={class:`rail-label`},Bo={class:`workspace`},Vo={id:`main`,tabindex:`-1`},Ho={class:`topbar`},Uo={class:`topbar-title`},Wo={key:0,class:`eyebrow`},Go={class:`topbar-actions`},Ko=[`title`],qo=[`aria-label`,`title`,`disabled`],Jo={key:0,class:`draft-banner`,role:`status`},Yo=[`aria-label`],Xo=[`data-page`,`aria-current`,`onClick`],Zo=[`aria-expanded`],Qo={class:`more-grid`},$o=[`data-page`,`onClick`],es={class:`more-title`},ts={class:`row more-tools`},ns=[`aria-pressed`],rs=[`href`],is={key:2,class:`startup`,role:`status`},as=v(R(z({__name:`App`,setup(t){Be();let n=B(()=>A[V.page]),r=B(()=>!!V.health?.connection?.online),o=B(()=>Q.data?.name||V.core?.nature?.name||`TA`),c=B(()=>Q.data?.activity?.kind||`idle`),d=B(()=>de.includes(V.page)),f=B(()=>m.value===`en`?`/guide.en.html`:`/guide.html`),p=0,h=!1,g=new AbortController,_=()=>{},v=K(!1);function y(e){!h&&(h=!0,e?.revision===V.core?.revision)||(p||=(oe(),window.setTimeout(()=>{p=0,!document.hidden&&(oe(),Ue(),!V.dirty&&V.page!==`chats`&&O().catch(()=>{}),V.pulse+=1)},2e3)))}async function ee(){if(!v.value){if(V.dirty){U(l(`请先保存草稿`));return}v.value=!0;try{se(),await Promise.all([O(),Ue()]),V.tick+=1}finally{v.value=!1}}}P(m,async()=>{if(se(),V.core&&!V.dirty)try{await Promise.all([O(),Ue()]),V.tick+=1}catch{}});function te(){document.getElementById(`main`)?.focus()}function b(){window.location.reload()}function S(){document.documentElement.dataset.visibility=document.hidden?`hidden`:`visible`,document.hidden||(oe(),!V.dirty&&V.page!==`chats`&&O().catch(()=>{}),V.pulse++)}return j(async()=>{ot(),ge(),window.addEventListener(`hashchange`,ge),window.addEventListener(`popstate`,ge),fo(V.page).catch(()=>{}),mo();try{await O()}catch(e){V.error=e.message;return}_=We(),document.addEventListener(`visibilitychange`,S),Ge(y,{signal:g.signal})}),fe(()=>{window.removeEventListener(`hashchange`,ge),window.removeEventListener(`popstate`,ge),g.abort(),clearTimeout(p),_(),document.removeEventListener(`visibilitychange`,S)}),(t,p)=>(H(),T(To,null,{default:W(()=>[N(xt),i(V).error?(H(),E(`div`,Eo,[N(bn,{mood:`blue`,size:128}),u(`span`,Do,a(i(l)(`暂未连接`)),1),u(`h1`,null,a(i(l)(`TA 在等你回来`)),1),u(`p`,null,a(i(V).error),1),u(`button`,{class:`primary`,onClick:b},a(i(l)(`重新连接`)),1)])):i(V).core&&i(V).health?(H(),E(`div`,{key:1,class:G([`shell`,`at-`+i(V).page])},[u(`a`,{class:`skip-link`,href:`#main`,onClick:x(te,[`prevent`])},a(i(l)(`跳到主要内容`)),1),u(`nav`,{class:`dock primary-nav`,"aria-label":i(l)(`主要功能`)},[u(`button`,{class:G([`dock-ta`,{active:i(V).page===`now`}]),"data-page":`now`,"aria-current":i(V).page===`now`?`page`:void 0,"aria-label":i(l)(`{name}:回到此刻`,{name:o.value}),onClick:p[0]||=e=>i(F)(`now`)},[N(bn,{mood:i(X),activity:c.value,size:50},null,8,[`mood`,`activity`]),u(`span`,Ao,[p[6]||=u(`b`,null,`LuckyTri`,-1),u(`small`,null,a(o.value===`LuckyTri`?``:o.value+` · `)+a(i(J)[i(X)].label)+` · `+a(i(ft)[c.value]||i(l)(`闲着`)),1)])],10,ko),u(`div`,jo,[(H(!0),E(C,null,M(i(ie),e=>(H(),E(`section`,{key:e.label,class:`dock-group`},[u(`h2`,Mo,a(e.label),1),(H(!0),E(C,null,M(e.pages,e=>(H(),E(`button`,{key:e,class:G([`dock-link`,{active:i(V).page===e}]),"data-page":e,"aria-current":i(V).page===e?`page`:void 0,title:i(A)[e].label,onClick:t=>i(F)(e),onPointerenter:t=>i(fo)(e).catch(()=>{}),onFocus:t=>i(fo)(e).catch(()=>{})},[N(vi,{name:e},null,8,[`name`]),u(`span`,Po,a(i(A)[e].label),1)],42,No))),128))]))),128))]),u(`div`,Fo,[N(Lr),u(`button`,{class:`dock-tool`,"aria-pressed":i(Y).quiet,title:i(Y).quiet?i(l)(`开启灵动效果`):i(l)(`减少动画`),onClick:p[1]||=e=>i(ze)(!i(Y).quiet)},[N(vi,{name:`motion`}),u(`span`,Lo,a(i(Y).quiet?i(l)(`开启灵动效果`):i(l)(`减少动画`)),1)],8,Io),u(`a`,{class:`dock-tool`,href:f.value,target:`_blank`,rel:`noopener`,title:i(l)(`使用教程`)},[N(vi,{name:`guide`}),u(`span`,zo,a(i(l)(`使用教程 ↗`)),1)],8,Ro)])],8,Oo),u(`div`,Bo,[N(oi),u(`main`,Vo,[u(`header`,Ho,[u(`div`,Uo,[i(m)===`zh`?(H(),E(`span`,Wo,a(n.value.en),1)):w(``,!0),u(`h1`,null,a(n.value.label),1),u(`p`,null,a(n.value.tagline),1)]),u(`div`,Go,[N(Or),u(`button`,{id:`connection`,class:G([`pill`,{offline:!r.value}]),title:r.value?i(l)(`QQ 已连接`):i(l)(`去连接 QQ`),onClick:p[2]||=e=>r.value||i(F)(`system`,`connect`)},[u(`span`,{class:G([`dot`,{off:!r.value}])},null,2),e(a(r.value?i(l)(`QQ 已连接`):i(l)(`QQ 未连接`)),1)],10,Ko),u(`button`,{id:`refresh`,class:G([`icon-button`,{spinning:v.value}]),"aria-label":i(l)(`刷新当前数据`),title:i(l)(`刷新`),disabled:v.value,onClick:ee},[N(vi,{name:`refresh`})],10,qo)])]),i(V).dirty?(H(),E(`div`,Jo,[p[7]||=u(`span`,{class:`dot warn`},null,-1),e(a(i(l)(`草稿还没保存,保存后才会生效`)),1)])):w(``,!0),u(`div`,{class:G([`view`,`page-`+i(V).page])},[(H(),T(s,{max:5,include:[`NowPage`,`HeartPage`,`PeoplePage`,`LifePage`,`TimePage`]},[(H(),T(he(i(po)[i(V).page]),{key:i(V).page,class:`route-page`}))],1024))],2)])]),u(`nav`,{class:`tabbar`,"aria-label":i(l)(`主要功能`)},[(H(!0),E(C,null,M(i(xe),e=>(H(),E(`button`,{key:e,"data-page":e,class:G({active:i(V).page===e}),"aria-current":i(V).page===e?`page`:void 0,onClick:t=>i(F)(e)},[N(vi,{name:e},null,8,[`name`]),u(`span`,null,a(i(A)[e].label),1)],10,Xo))),128)),u(`button`,{class:G([`tabbar-more`,{active:d.value}]),"aria-expanded":i(V).moreOpen,onClick:p[3]||=e=>i(V).moreOpen=!i(V).moreOpen},[N(vi,{name:`more`}),u(`span`,null,a(i(l)(`更多`)),1)],10,Zo)],8,Yo),N(wi,{open:i(V).moreOpen,title:i(l)(`更多`),eyebrow:i(l)(`更多`),width:`420px`,onClose:p[5]||=e=>i(V).moreOpen=!1},{default:W(()=>[u(`div`,Qo,[(H(!0),E(C,null,M(i(de),e=>(H(),E(`button`,{key:e,"data-page":e,class:G({active:i(V).page===e}),onClick:t=>i(F)(e)},[N(vi,{name:e},null,8,[`name`]),u(`b`,null,a(i(A)[e].label),1),u(`small`,null,a(i(A)[e].tagline),1)],10,$o))),128))]),u(`h3`,es,a(i(l)(`界面主题`)),1),N(Lr,{inline:``}),u(`div`,ts,[u(`button`,{"aria-pressed":i(Y).quiet,onClick:p[4]||=e=>i(ze)(!i(Y).quiet)},a(i(Y).quiet?i(l)(`开启灵动效果`):i(l)(`减少动画`)),9,ns),u(`a`,{href:f.value,target:`_blank`,rel:`noopener`},a(i(l)(`使用教程 ↗`)),9,rs)])]),_:1},8,[`open`,`title`,`eyebrow`]),N(Tr,{"hide-orb":i(V).page===`now`},null,8,[`hide-orb`])],2)):(H(),E(`div`,is,[N(bn,{mood:i(X),activity:`idle`,size:128},null,8,[`mood`]),u(`h1`,null,a(i(l)(`正在进入 TA 的小世界`)),1),u(`p`,null,a(i(l)(`连接会话与记忆…`)),1)])),N(fi)]),_:1}))}}),[[`__scopeId`,`data-v-0e622eac`]]));as.config.errorHandler=e=>{U(e instanceof Error?e.message:l(`操作失败,请重试`),!0)},as.mount(`#app`);export{Dn as A,Mn as C,Pn as D,wn as E,Ge as F,Q as I,X as L,Ln as M,In as N,Tn as O,bn as P,jn as S,Nn as T,Bn as _,Ti as a,kn as b,tr as c,zn as d,Jn as f,Kn as g,Gn as h,Mi as i,xn as j,En as k,Vn as l,Hn as m,Vi as n,wi as o,qn as p,Li as r,hr as s,Gi as t,Rn as u,Sn as v,On as w,An as x,Cn as y};