ocean-brain 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server/client/dist/assets/ArrowRight.es-DZTjsBaI.js +1 -0
- package/server/client/dist/assets/AuxiliaryPanelHeader-Bp3iRjm6.js +1 -0
- package/server/client/dist/assets/Calendar-BLiViCGr.js +25 -0
- package/server/client/dist/assets/Callout-Cye6_6BM.js +1 -0
- package/server/client/dist/assets/CheckCircle.es-BTloiuti.js +1 -0
- package/server/client/dist/assets/Copy.es-CkLUgwY-.js +1 -0
- package/server/client/dist/assets/File.es-c83QExqr.js +1 -0
- package/server/client/dist/assets/FlowArrow.es-DWiIXWQG.js +1 -0
- package/server/client/dist/assets/Graph-jbPLcne9.js +46 -0
- package/server/client/dist/assets/Image.es-vY-nTyOe.js +1 -0
- package/server/client/dist/assets/Note-BTQLB80Y.js +25 -0
- package/server/client/dist/assets/{NotePropertiesPanel-aCKXAe5F.js → NotePropertiesPanel-uO-JKy19.js} +2 -2
- package/server/client/dist/assets/Plus.es-CaRgmXc_.js +1 -0
- package/server/client/dist/assets/Reminders-BAgZEUwV.js +1 -0
- package/server/client/dist/assets/Search-BxozUWkC.js +31 -0
- package/server/client/dist/assets/SurfaceCard-BAlcul6z.js +1 -0
- package/server/client/dist/assets/Tag-BhCf_mil.js +1 -0
- package/server/client/dist/assets/TagNotes-BIzhXqwp.js +1 -0
- package/server/client/dist/assets/Trash.es-prxIxo9c.js +1 -0
- package/server/client/dist/assets/ViewChip-Cq_YzRvB.js +1 -0
- package/server/client/dist/assets/Views-C26uWznP.js +1 -0
- package/server/client/dist/assets/{abnfDiagram-VRR7QNED-CWlV5dXw.js → abnfDiagram-VRR7QNED-2cuaaDg0.js} +1 -1
- package/server/client/dist/assets/app-CEkicO08.css +1 -0
- package/server/client/dist/assets/app-DbQdHfMb.js +139 -0
- package/server/client/dist/assets/{arc-BV-n6RUX.js → arc-Cr-oYJoQ.js} +1 -1
- package/server/client/dist/assets/{architectureDiagram-ZJ3FMSHR-CekzMXdu.js → architectureDiagram-ZJ3FMSHR-HF8-bEM0.js} +1 -1
- package/server/client/dist/assets/{blockDiagram-677ZJIJ3-B49yHoxq.js → blockDiagram-677ZJIJ3-evR8rlpQ.js} +1 -1
- package/server/client/dist/assets/{c4Diagram-LMCZKHZV-0AfB9NBC.js → c4Diagram-LMCZKHZV-zCjuWUmC.js} +1 -1
- package/server/client/dist/assets/channel-Cq5ZBtfo.js +1 -0
- package/server/client/dist/assets/{chunk-2Q5K7J3B-DaPQAU1q.js → chunk-2Q5K7J3B-P0v1gRui.js} +1 -1
- package/server/client/dist/assets/{chunk-32BRIVSS-CfL3kZAg.js → chunk-32BRIVSS-102-EyWU.js} +1 -1
- package/server/client/dist/assets/{chunk-5VM5RSS4-DeOwWPE_.js → chunk-5VM5RSS4-uqI_1K1p.js} +1 -1
- package/server/client/dist/assets/{chunk-EX3LRPZG-C3W1oc9y.js → chunk-EX3LRPZG-k5hlNinR.js} +1 -1
- package/server/client/dist/assets/{chunk-JWPE2WC7-_Oqh79OY.js → chunk-JWPE2WC7-PLvgEy_B.js} +1 -1
- package/server/client/dist/assets/{chunk-MOJQB5TN-DDKNNzI6.js → chunk-MOJQB5TN-B-LmIwhJ.js} +1 -1
- package/server/client/dist/assets/{chunk-RYQCIY6F-DCHah7CC.js → chunk-RYQCIY6F-CaNSMki0.js} +1 -1
- package/server/client/dist/assets/{chunk-V7JOEXUC-uUOIzgxj.js → chunk-V7JOEXUC-CmSzAkUx.js} +1 -1
- package/server/client/dist/assets/{chunk-VR4S4FIN-DDVw2WPs.js → chunk-VR4S4FIN-IiOfWaBG.js} +1 -1
- package/server/client/dist/assets/{chunk-XXDRQBXY-Coo4UFm2.js → chunk-XXDRQBXY-DRXrI6SM.js} +1 -1
- package/server/client/dist/assets/classDiagram-OUVF2IWQ-BqUaa8a6.js +1 -0
- package/server/client/dist/assets/classDiagram-v2-EOCWNBFH-BqUaa8a6.js +1 -0
- package/server/client/dist/assets/{cose-bilkent-JH36ORCC-C3pHmHpD.js → cose-bilkent-JH36ORCC-COcEaZRS.js} +1 -1
- package/server/client/dist/assets/{cynefinDiagram-TSTJHNR4-DZ6iiJFo.js → cynefinDiagram-TSTJHNR4-CSHqcg9K.js} +1 -1
- package/server/client/dist/assets/{dagre-VKFMJZFB-DNELbhwC.js → dagre-VKFMJZFB-XAWCPOS0.js} +1 -1
- package/server/client/dist/assets/{diagram-FQU43EPY-CMEvZJ61.js → diagram-FQU43EPY-scBCDUnE.js} +1 -1
- package/server/client/dist/assets/{diagram-G47NLZAW-BYDtf6j9.js → diagram-G47NLZAW-nPKP5kd8.js} +1 -1
- package/server/client/dist/assets/{diagram-NH7WQ7WH-CmXfcCQA.js → diagram-NH7WQ7WH-DcWalY4j.js} +1 -1
- package/server/client/dist/assets/{diagram-OA4YK3LP-BflTKJxU.js → diagram-OA4YK3LP-CXTlHB5A.js} +4 -4
- package/server/client/dist/assets/{diagram-WEI45ONY-KW3fKqna.js → diagram-WEI45ONY-D1uvaJub.js} +1 -1
- package/server/client/dist/assets/{ebnfDiagram-CCIWWBDH-CbyhY5Nj.js → ebnfDiagram-CCIWWBDH-nHt3vRNt.js} +1 -1
- package/server/client/dist/assets/{erDiagram-Q63AITRT-CC2eZV8g.js → erDiagram-Q63AITRT-K6stUUV2.js} +1 -1
- package/server/client/dist/assets/{flowDiagram-23GEKE2U-unplo7Qm.js → flowDiagram-23GEKE2U-DDWtKrEp.js} +4 -4
- package/server/client/dist/assets/{ganttDiagram-NO4QXBWP-BcBK5HcZ.js → ganttDiagram-NO4QXBWP-Daqh7b4I.js} +1 -1
- package/server/client/dist/assets/{gitGraphDiagram-IHSO6WYX-DgVbbb5k.js → gitGraphDiagram-IHSO6WYX-D73CLkcG.js} +1 -1
- package/server/client/dist/assets/{image.api-CyQisInP.js → image.api-Bbwmcw0T.js} +1 -1
- package/server/client/dist/assets/index-8bsOoxxg.js +1 -0
- package/server/client/dist/assets/{infoDiagram-FWYZ7A6U-N_D9RdfG.js → infoDiagram-FWYZ7A6U-Bc1YI5Iu.js} +1 -1
- package/server/client/dist/assets/{ishikawaDiagram-FXEZZL3T-BBKrzmB2.js → ishikawaDiagram-FXEZZL3T-BJDXbmaY.js} +1 -1
- package/server/client/dist/assets/{journeyDiagram-5HDEW3XC-NdCxLmQB.js → journeyDiagram-5HDEW3XC-DlyJx4xT.js} +1 -1
- package/server/client/dist/assets/{kanban-definition-HUTT4EX6-Ck7t4-tt.js → kanban-definition-HUTT4EX6-AmTeXesc.js} +1 -1
- package/server/client/dist/assets/manage-image-DCBgglLx.js +1 -0
- package/server/client/dist/assets/manage-image-detail-CPpeRZD4.js +1 -0
- package/server/client/dist/assets/{mcp-CCaFd0zm.js → mcp-Y2p95Lm9.js} +1 -1
- package/server/client/dist/assets/mcp-admin-adapter-z9OaMVrl.js +1 -0
- package/server/client/dist/assets/{mermaid.core-B14ZAmWA.js → mermaid.core-B528P54n.js} +4 -4
- package/server/client/dist/assets/{mindmap-definition-LN4V7U3C-BTUqSdcP.js → mindmap-definition-LN4V7U3C-C_6tKVmY.js} +1 -1
- package/server/client/dist/assets/{note-ui-CtijppHK.js → note-ui-Cv6quEYh.js} +1 -1
- package/server/client/dist/assets/{pegDiagram-2B236MQR-Cjcu3mVz.js → pegDiagram-2B236MQR-CGKCNdrV.js} +1 -1
- package/server/client/dist/assets/{pieDiagram-ENE6RG2P-BxI_c22Z.js → pieDiagram-ENE6RG2P-C3cMh7d5.js} +1 -1
- package/server/client/dist/assets/{placeholder-AusSo8p9.js → placeholder-CHRQt_T8.js} +1 -1
- package/server/client/dist/assets/properties-CwxDtivz.js +1 -0
- package/server/client/dist/assets/{quadrantDiagram-ABIIQ3AL-DGm0a-yR.js → quadrantDiagram-ABIIQ3AL-CVVzGxBd.js} +1 -1
- package/server/client/dist/assets/{railroadDiagram-RFXS5EU6-DmCDu89O.js → railroadDiagram-RFXS5EU6-wa-4aJR9.js} +1 -1
- package/server/client/dist/assets/{requirementDiagram-TGXJPOKE-CBpUt7Ig.js → requirementDiagram-TGXJPOKE-DyuC9W7q.js} +1 -1
- package/server/client/dist/assets/route-preload.js +2 -2
- package/server/client/dist/assets/{sankeyDiagram-HTMAVEWB-BjGnDZlp.js → sankeyDiagram-HTMAVEWB-B70y-MQg.js} +1 -1
- package/server/client/dist/assets/search-DCLnUWYd.js +1 -0
- package/server/client/dist/assets/search-admin-adapter-BLMYNm9w.js +1 -0
- package/server/client/dist/assets/{sequenceDiagram-DBY2YBRQ-B7rpCfS6.js → sequenceDiagram-DBY2YBRQ-mGkh3IEy.js} +1 -1
- package/server/client/dist/assets/{sizeCapture-X5ZJPWSS-CUJhD0uW.js → sizeCapture-X5ZJPWSS-BhnCNP5z.js} +1 -1
- package/server/client/dist/assets/sortable.esm-DgSW3bAA.js +5 -0
- package/server/client/dist/assets/{stateDiagram-2N3HPSRC-Y9-3XqRX.js → stateDiagram-2N3HPSRC-BqSKSfKi.js} +1 -1
- package/server/client/dist/assets/{stateDiagram-v2-6OUMAXLB-DbHXhT02.js → stateDiagram-v2-6OUMAXLB-Wl7lGTf3.js} +1 -1
- package/server/client/dist/assets/{swimlanes-5IMT3BWC-Cs1NO9ng.js → swimlanes-5IMT3BWC-CZ7ckdmY.js} +2 -2
- package/server/client/dist/assets/swimlanesDiagram-G3AALYLV-BZL3DQ-c.js +8 -0
- package/server/client/dist/assets/{tag.api-DNSQpqwk.js → tag.api-bU52U0tT.js} +1 -1
- package/server/client/dist/assets/time-DZKkPFUi.js +361 -0
- package/server/client/dist/assets/{timeline-definition-FHXFAJF6-8fqD4WNL.js → timeline-definition-FHXFAJF6-C-t9-x4M.js} +3 -3
- package/server/client/dist/assets/trash-BNeUFJnC.js +1 -0
- package/server/client/dist/assets/{url-9nrbQs7Z.js → url-BvjSC8PU.js} +1 -1
- package/server/client/dist/assets/useNoteMutate-VJYw0Vt_.js +9 -0
- package/server/client/dist/assets/useReminderMutate-DaO0QssD.js +121 -0
- package/server/client/dist/assets/{vennDiagram-L72KCM5P-BPqKkd5a.js → vennDiagram-L72KCM5P-CP014Nl5.js} +1 -1
- package/server/client/dist/assets/{wardleyDiagram-EHGQE667-Cq11kU2M.js → wardleyDiagram-EHGQE667-B7Ghd-94.js} +1 -1
- package/server/client/dist/assets/{xychartDiagram-FW5EYKEG-DJ6UzFj-.js → xychartDiagram-FW5EYKEG-C4YGS0YJ.js} +1 -1
- package/server/client/dist/index.html +6 -6
- package/server/dist/features/note/graphql/note.query.resolver.js +27 -9
- package/server/dist/features/note/graphql/note.type-defs.js +2 -0
- package/server/dist/features/note/services/content-blocks.js +24 -21
- package/server/dist/features/reminder/graphql/reminder.query.resolver.js +62 -0
- package/server/dist/features/reminder/graphql/reminder.type-defs.js +25 -0
- package/server/dist/features/view/graphql/view.query.resolver.js +40 -5
- package/server/dist/features/view/graphql/view.type-defs.js +23 -1
- package/server/dist/features/view/services/workspace.js +108 -5
- package/server/dist/paths.js +0 -1
- package/server/dist/routes/client.js +1 -1
- package/server/prisma/schema.prisma +1 -0
- package/server/client/dist/assets/ArrowRight.es-BEhnlwfe.js +0 -1
- package/server/client/dist/assets/AuxiliaryPanelHeader-B1k7pZpn.js +0 -1
- package/server/client/dist/assets/Calendar-D7QJsAlg.js +0 -25
- package/server/client/dist/assets/Callout-BTd1BYtV.js +0 -1
- package/server/client/dist/assets/Copy.es-BoLjilxv.js +0 -1
- package/server/client/dist/assets/File.es-Ct7fscBg.js +0 -1
- package/server/client/dist/assets/Graph-DYUb7gQb.js +0 -46
- package/server/client/dist/assets/Graph-LY_IgMYy.js +0 -1
- package/server/client/dist/assets/Image.es-OYyN3BYt.js +0 -1
- package/server/client/dist/assets/Note-DsMhwrHw.js +0 -25
- package/server/client/dist/assets/PencilLine.es-0JpEgxFY.js +0 -1
- package/server/client/dist/assets/Plus.es-DRfLW_bI.js +0 -1
- package/server/client/dist/assets/Reminders-COr1OHvF.js +0 -1
- package/server/client/dist/assets/Search-Ctkx0BQk.js +0 -31
- package/server/client/dist/assets/SurfaceCard-t7pdfhEe.js +0 -1
- package/server/client/dist/assets/Tag-BjxtrIQW.js +0 -1
- package/server/client/dist/assets/TagNotes-DV_fdRbg.js +0 -1
- package/server/client/dist/assets/Trash.es-Bo1VyK9Q.js +0 -1
- package/server/client/dist/assets/ViewChip-DlCkL4z4.js +0 -1
- package/server/client/dist/assets/ViewNotes-wWWeFJyU.js +0 -1
- package/server/client/dist/assets/ViewSectionDialog-DhH8harC.js +0 -102
- package/server/client/dist/assets/Views-CWE99SnI.js +0 -1
- package/server/client/dist/assets/app-B9WZRrAH.css +0 -1
- package/server/client/dist/assets/app-BpSMjzET.js +0 -26
- package/server/client/dist/assets/channel-CigOulR-.js +0 -1
- package/server/client/dist/assets/classDiagram-OUVF2IWQ-D13ISIOW.js +0 -1
- package/server/client/dist/assets/classDiagram-v2-EOCWNBFH-D13ISIOW.js +0 -1
- package/server/client/dist/assets/index-B-E1Ilh9.js +0 -1
- package/server/client/dist/assets/manage-image-azmo5iVw.js +0 -1
- package/server/client/dist/assets/manage-image-detail-BF-uSqb_.js +0 -1
- package/server/client/dist/assets/mcp-admin-adapter-PMmgPupc.js +0 -1
- package/server/client/dist/assets/note.api-D3oJmG3q.js +0 -356
- package/server/client/dist/assets/properties-BrNJLkxR.js +0 -1
- package/server/client/dist/assets/search-D-xKTPdO.js +0 -1
- package/server/client/dist/assets/search-admin-adapter-CJnJmL6w.js +0 -1
- package/server/client/dist/assets/swimlanesDiagram-G3AALYLV-DQnrq2ZC.js +0 -8
- package/server/client/dist/assets/time-D5LRMumI.js +0 -9
- package/server/client/dist/assets/trash-D4-9sv8q.js +0 -1
- package/server/client/dist/assets/useReminderMutate-BrGO9M0o.js +0 -82
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mermaid.core-B528P54n.js","assets/preload-helper-BXl3LOEh.js","assets/floating-ui.react-dom-BWTnA00G.js","assets/transform-BUB79_za.js","assets/katex-DywYRkvg.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as o,j as a}from"./floating-ui.react-dom-BWTnA00G.js";import{al as wn,C as xt,T as S,i as Ve,n as Cn,q as L,M as B,B as k,am as Nn,an as Sn,c as W,K as bt,J as yt,V as Rn,e as Re,u as Ke,m as G,ao as jn,ap as An,aq as En,a2 as kn,s as Tn,ar as Mn,a1 as vt,ah as wt,as as Ue,at as Dn,W as Pn,ai as Ln,aj as _n,au as On,Q as Ye,P as qe,av as Qe,h as Bn,l as ie,F as Hn}from"./time-DZKkPFUi.js";import{M as je,f as Ct,m as Fn,a as Be,b as $n,s as In,k as Nt,l as Un,p as St,j as Rt,o as zn,r as tt,d as Zn}from"./useNoteMutate-VJYw0Vt_.js";import{m as Wn,c as Vn,C as nt}from"./Callout-Cye6_6BM.js";import{J as jt,A as At,N as Kn}from"./NotePropertiesPanel-uO-JKy19.js";import{N as Ae,T as Yn,S as qn}from"./url-BvjSC8PU.js";import{S as Qn}from"./SurfaceCard-BAlcul6z.js";import{b as Gn,c as Jn,u as Xn,R as er}from"./useReminderMutate-DaO0QssD.js";import{n as tr}from"./Plus.es-CaRgmXc_.js";import{h as Ge,m as nr,L as Et,Z as kt,M as rr,K as sr,a as ar}from"./note-ui-Cv6quEYh.js";import{u as or}from"./image.api-Bbwmcw0T.js";import{L as ir,t as rt,q as cr,B as he,G as lr,y as st}from"./note-core-DUTqUh5N.js";import{s as Tt}from"./FlowArrow.es-DWiIXWQG.js";import{_ as ze}from"./preload-helper-BXl3LOEh.js";import{s as dr}from"./Copy.es-CkLUgwY-.js";import{A as ur,p as fr}from"./AuxiliaryPanelHeader-Bp3iRjm6.js";import{f as pr,c as mr}from"./tag.api-bU52U0tT.js";import{cn as at}from"./note-runtime-zN5ddTba.js";import{s as hr}from"./File.es-c83QExqr.js";function gr(e,n){if(e===void 0)return{shouldBlockFn:()=>!0,withResolver:!1};if("shouldBlockFn"in e)return e;if(typeof e=="function")return{shouldBlockFn:async()=>await e(),enableBeforeUnload:!0,withResolver:!1};const t=!!(e.condition??!0),s=e.blockerFn;return{shouldBlockFn:async()=>t&&s!==void 0?await s():t,enableBeforeUnload:t,withResolver:s===void 0}}function xr(e,n){const{shouldBlockFn:t,enableBeforeUnload:s=!0,disabled:r=!1,withResolver:i=!1}=gr(e),l=wn(),{history:c}=l,[f,d]=o.useState({status:"idle",current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0});return o.useEffect(()=>{const m=async g=>{function b(A){const w=l.parseLocation(A),p=l.getMatchedRoutes(w.pathname);return p.foundRoute===void 0?{routeId:"__notFound__",fullPath:w.pathname,pathname:w.pathname,params:p.routeParams,search:l.options.parseSearch(A.search)}:{routeId:p.foundRoute.id,fullPath:p.foundRoute.fullPath,pathname:w.pathname,params:p.routeParams,search:l.options.parseSearch(A.search)}}const u=b(g.currentLocation),h=b(g.nextLocation);if(u.routeId==="__notFound__"&&h.routeId!=="__notFound__")return!1;const v=await t({action:g.action,current:u,next:h});if(!i)return v;if(!v)return!1;const R=await new Promise(A=>{d({status:"blocked",current:u,next:h,action:g.action,proceed:()=>A(!1),reset:()=>A(!0)})});return d({status:"idle",current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0}),R};return r?void 0:c.block({blockerFn:m,enableBeforeUnload:s})},[t,s,r,i,c,l]),f}const br=new Map([["bold",o.createElement(o.Fragment,null,o.createElement("path",{d:"M212,40a12,12,0,0,1-12,12H170.71A20,20,0,0,0,151,68.42L142.38,116H184a12,12,0,0,1,0,24H138l-9.44,51.87A44,44,0,0,1,85.29,228H56a12,12,0,0,1,0-24H85.29A20,20,0,0,0,105,187.58L113.62,140H72a12,12,0,0,1,0-24h46l9.44-51.87A44,44,0,0,1,170.71,28H200A12,12,0,0,1,212,40Z"}))],["duotone",o.createElement(o.Fragment,null,o.createElement("path",{d:"M200,40V200a16,16,0,0,1-16,16H56V56A16,16,0,0,1,72,40Z",opacity:"0.2"}),o.createElement("path",{d:"M208,40a8,8,0,0,1-8,8H170.71a24,24,0,0,0-23.62,19.71L137.59,120H184a8,8,0,0,1,0,16H134.68l-10,55.16A40,40,0,0,1,85.29,224H56a8,8,0,0,1,0-16H85.29a24,24,0,0,0,23.62-19.71l9.5-52.29H72a8,8,0,0,1,0-16h49.32l10-55.16A40,40,0,0,1,170.71,32H200A8,8,0,0,1,208,40Z"}))],["fill",o.createElement(o.Fragment,null,o.createElement("path",{d:"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM176,72H159.92a16,16,0,0,0-15.73,13l-6.55,35H168a8,8,0,0,1,0,16H134.64l-7.11,37.9A32,32,0,0,1,96.08,200H80a8,8,0,0,1,0-16H96.08A16,16,0,0,0,111.81,171L118.36,136H88a8,8,0,0,1,0-16h33.36l7.11-37.9A32,32,0,0,1,159.92,56H176a8,8,0,0,1,0,16Z"}))],["light",o.createElement(o.Fragment,null,o.createElement("path",{d:"M206,40a6,6,0,0,1-6,6H170.71a26,26,0,0,0-25.58,21.35L135.19,122H184a6,6,0,0,1,0,12H133l-10.33,56.8A38,38,0,0,1,85.29,222H56a6,6,0,0,1,0-12H85.29a26,26,0,0,0,25.58-21.35L120.81,134H72a6,6,0,0,1,0-12h51l10.33-56.8A38,38,0,0,1,170.71,34H200A6,6,0,0,1,206,40Z"}))],["regular",o.createElement(o.Fragment,null,o.createElement("path",{d:"M208,40a8,8,0,0,1-8,8H170.71a24,24,0,0,0-23.62,19.71L137.59,120H184a8,8,0,0,1,0,16H134.68l-10,55.16A40,40,0,0,1,85.29,224H56a8,8,0,0,1,0-16H85.29a24,24,0,0,0,23.62-19.71l9.5-52.29H72a8,8,0,0,1,0-16h49.32l10-55.16A40,40,0,0,1,170.71,32H200A8,8,0,0,1,208,40Z"}))],["thin",o.createElement(o.Fragment,null,o.createElement("path",{d:"M204,40a4,4,0,0,1-4,4H170.71a28,28,0,0,0-27.55,23l-10.37,57H184a4,4,0,0,1,0,8H131.34l-10.63,58.44A36,36,0,0,1,85.29,220H56a4,4,0,0,1,0-8H85.29a28,28,0,0,0,27.55-23l10.37-57H72a4,4,0,0,1,0-8h52.66l10.63-58.44A36,36,0,0,1,170.71,36H200A4,4,0,0,1,204,40Z"}))]]),yr=new Map([["bold",o.createElement(o.Fragment,null,o.createElement("path",{d:"M230.15,70.54,185.46,25.86a20,20,0,0,0-28.28,0L33.86,149.17A19.86,19.86,0,0,0,28,163.31V208a20,20,0,0,0,20,20H216a12,12,0,0,0,0-24H125L230.15,98.83A20,20,0,0,0,230.15,70.54ZM136,81l11,11L76,163,65,152ZM52,204V173l15.52,15.51h0L83,204Zm52-13L93,180l71-71,11,11Zm88-88L153,64l18.34-18.34,39,39Z"}))],["duotone",o.createElement(o.Fragment,null,o.createElement("path",{d:"M221.66,90.34,192,120,136,64l29.66-29.66a8,8,0,0,1,11.31,0L221.66,79A8,8,0,0,1,221.66,90.34Z",opacity:"0.2"}),o.createElement("path",{d:"M227.32,73.37,182.63,28.69a16,16,0,0,0-22.63,0L36.69,152A15.86,15.86,0,0,0,32,163.31V208a16,16,0,0,0,16,16H216a8,8,0,0,0,0-16H115.32l112-112A16,16,0,0,0,227.32,73.37ZM79.32,188,164,103.31,180.69,120,96,204.69ZM68,176.69,51.31,160,136,75.31,152.69,92Zm-20,2.62L76.69,208H48Zm144-70.62L147.32,64l24-24L216,84.69Z"}))],["fill",o.createElement(o.Fragment,null,o.createElement("path",{d:"M227.32,73.37,182.63,28.69a16,16,0,0,0-22.63,0L36.69,152A15.86,15.86,0,0,0,32,163.31V208a16,16,0,0,0,16,16H216a8,8,0,0,0,0-16H115.32l112-112A16,16,0,0,0,227.32,73.37ZM79.32,188l90.34-90.34,16.69,16.68L96,204.69Zm79-101.66h0L68,176.69,51.31,160l90.35-90.34ZM48,179.31,76.69,208H48Z"}))],["light",o.createElement(o.Fragment,null,o.createElement("path",{d:"M225.91,74.79,181.22,30.1a14,14,0,0,0-19.8,0L38.1,153.41a13.94,13.94,0,0,0-4.1,9.9V208a14,14,0,0,0,14,14H216a6,6,0,0,0,0-12H110.49L225.91,94.59A14,14,0,0,0,225.91,74.79ZM76.49,188,164,100.48,183.52,120,96,207.51ZM68,179.52,48.49,160,136,72.49,155.52,92ZM46,208V174.48L81.52,210H48A2,2,0,0,1,46,208ZM217.42,86.1,192,111.52,144.49,64,169.9,38.59a2,2,0,0,1,2.83,0l44.69,44.68A2,2,0,0,1,217.42,86.1Z"}))],["regular",o.createElement(o.Fragment,null,o.createElement("path",{d:"M227.32,73.37,182.63,28.69a16,16,0,0,0-22.63,0L36.69,152A15.86,15.86,0,0,0,32,163.31V208a16,16,0,0,0,16,16H216a8,8,0,0,0,0-16H115.32l112-112A16,16,0,0,0,227.32,73.37ZM136,75.31,152.69,92,68,176.69,51.31,160ZM48,208V179.31L76.69,208Zm48-3.31L79.32,188,164,103.31,180.69,120Zm96-96L147.32,64l24-24L216,84.69Z"}))],["thin",o.createElement(o.Fragment,null,o.createElement("path",{d:"M224.49,76.2,179.8,31.51a12,12,0,0,0-17,0L39.51,154.83A12,12,0,0,0,36,163.31V208a12,12,0,0,0,12,12H216a4,4,0,0,0,0-8H105.66L224.49,93.17A12,12,0,0,0,224.49,76.2ZM73.66,188,164,97.66,186.35,120,96,210.34ZM68,182.34,45.66,160,136,69.66,158.35,92ZM44,208V169.66l21.17,21.17h0L86.34,212H48A4,4,0,0,1,44,208ZM218.83,87.51,192,114.34,141.66,64l26.83-26.83a4,4,0,0,1,5.66,0l44.68,44.69A4,4,0,0,1,218.83,87.51Z"}))]]),Mt=o.forwardRef((e,n)=>o.createElement(xt,{ref:n,...e,weights:br}));Mt.displayName="FunctionIcon";const Dt=Mt,Pt=o.forwardRef((e,n)=>o.createElement(xt,{ref:n,...e,weights:yr}));Pt.displayName="PencilLineIcon";const vr=Pt;function wr({title:e,description:n,selected:t=!1,onClick:s,children:r}){return a.jsxs("button",{type:"button","aria-pressed":t,className:`focus-ring-soft flex w-full items-start justify-between gap-3 p-3 text-left transition-colors sm:p-4 ${t?"surface-floating bg-elevated":"rounded-[14px] border border-border-subtle bg-transparent hover:border-border-secondary hover:bg-hover-subtle"}`,onClick:s,children:[a.jsxs("div",{className:"min-w-0",children:[a.jsx(S,{as:"div",variant:"body",weight:"semibold",tone:t?"default":"secondary",children:e}),a.jsx(S,{as:"div",variant:"meta",weight:"medium",tone:t?"secondary":"tertiary",className:"mt-1",children:n})]}),r?a.jsx("div",{className:"shrink-0",children:r}):null]})}const Cr=e=>{const{data:n}=Ve({queryKey:L.notes.backReferences(e.noteId),async queryFn(){const t=await Cn(e.noteId);if(t.type==="error")throw t;return t.backReferences}});return e.render(n)};function Nr({noteId:e,searchParams:n,render:t}){const{data:s}=Ve({queryKey:e?L.reminders.note(e,n):L.reminders.upcoming(n),queryFn:async()=>{if(e){const i=await Gn(e,n);if(i.type==="error")throw i;return i.noteReminders}const r=await Jn(n);if(r.type==="error")throw r;return r.upcomingReminders}});return a.jsx(a.Fragment,{children:t(s)})}const Sr=[{value:"narrow",label:"Narrow",description:"Optimized for reading long-form content"},{value:"wide",label:"Wide",description:"Balanced width suitable for most content"},{value:"full",label:"Full Width",description:"Maximize screen space utilization"}];function Rr({isOpen:e,onClose:n,onSave:t,currentLayout:s="wide"}){const[r,i]=o.useState(s);o.useEffect(()=>{e&&i(s)},[e,s]);const l=()=>{t(r),n()};return a.jsxs(B,{isOpen:e,onClose:n,variant:"compact",children:[a.jsx(B.Header,{title:"Layout Settings",onClose:n}),a.jsx(B.Body,{children:a.jsx("div",{className:"flex flex-col gap-3 sm:gap-4",children:a.jsxs("div",{className:"flex flex-col gap-2",children:[a.jsx(S,{as:"div",variant:"body",weight:"semibold",tone:"secondary",children:"Note layout"}),a.jsx("div",{className:"flex flex-col gap-2",children:Sr.map(c=>a.jsx(wr,{title:c.label,description:c.description,selected:r===c.value,onClick:()=>i(c.value)},c.value))})]})})}),a.jsx(B.Footer,{children:a.jsxs(je,{children:[a.jsx(k,{variant:"ghost",size:"sm",onClick:n,children:"Cancel"}),a.jsx(k,{variant:"primary",size:"sm",onClick:l,children:"Apply"})]})})]})}const ge=e=>{const n=/^\d+$/.test(e)?Number(e):Date.parse(e);return Number.isFinite(n)?n:null},Ne=(e,n)=>{const t=ge(e),s=ge(n);return t===null||s===null?e===n?0:null:t===s?0:t<s?-1:1},jr=2200;function Ar({status:e,savedAt:n,savedVersion:t,confirmationRevision:s}){const[r,i]=o.useState(()=>Date.now()),[l,c]=o.useState(!1);o.useEffect(()=>{if(e!=="saved")return;const u=window.setTimeout(()=>i(Date.now()),Nn(ge(t),r));return()=>window.clearTimeout(u)},[r,t,e]),o.useEffect(()=>{if(s===0)return;c(!0);const u=window.setTimeout(()=>c(!1),jr);return()=>window.clearTimeout(u)},[s]);const f=e==="saved"&&l,d=e==="pending"?"Saving...":e==="saving"?"Saving now...":e==="error"?"Save failed. Try again.":e==="conflict"?"Save paused: changed elsewhere":`Saved ${Sn(ge(t),r)}`,m=W("inline-flex items-center gap-2 transition-colors",e==="saved"&&!f&&"text-fg-secondary",f&&"text-accent-success",(e==="pending"||e==="saving")&&"text-fg-default",(e==="error"||e==="conflict")&&"text-fg-error"),g=W("save-progress-ring flex h-4 w-4 shrink-0 items-center justify-center rounded-full",(e==="pending"||e==="saving")&&"save-progress-ring-active",e==="saved"&&f&&"save-progress-ring-complete",(e==="error"||e==="conflict")&&"save-progress-ring-error"),b=e==="error"||e==="conflict"?a.jsx(Wn,{className:"h-3.5 w-3.5",weight:"fill"}):a.jsx("span",{className:g,"aria-hidden":!0,children:a.jsx("span",{className:"h-2 w-2 rounded-full bg-elevated"})});return a.jsxs(S,{as:"span",variant:"label",weight:"medium",className:m,role:"status","aria-live":"polite",title:n,children:[b,d]})}function Er({title:e,titleRef:n,isPinned:t,createdAt:s,saveStatus:r,savedAt:i,savedVersion:l,saveConfirmationRevision:c,onTitleChange:f,onCopyMarkdown:d,onDownloadDocument:m,onTogglePinned:g,onChangeLayout:b,onCloneNote:u,onRestoreVersion:h,onDelete:v,onSave:N}){return a.jsx("div",{className:"surface-floating sticky top-20 z-[1001] mb-7 px-5 pt-4 pb-3.5",children:a.jsxs("div",{className:"flex flex-col gap-3.5",children:[a.jsxs("div",{className:"flex items-start justify-between gap-5",children:[a.jsxs("div",{className:"min-w-0 flex-1 pt-0.5",children:[a.jsx(S,{as:"div",variant:"micro",weight:"semibold",tracking:"widest",transform:"uppercase",tone:"tertiary",className:"mb-1.5",children:"Thought in progress"}),a.jsx("input",{ref:n,"aria-label":"Note title",placeholder:"Title",className:"text-heading sm:text-display w-full bg-transparent font-semibold leading-[1.25] tracking-[-0.02em] outline-none",type:"text",value:e,onChange:R=>f(R.target.value)})]}),a.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[a.jsx(bt,{button:a.jsx(Ct,{label:"Note actions",size:"lg"}),items:[{name:"Copy Markdown",onClick:d},{name:"Download document",onClick:m},{type:"separator",key:"export-separator"},{name:t?"Unpin":"Pin",onClick:g},{name:"Change layout",onClick:b},{type:"separator"},{name:"Clone this note",onClick:u},{name:"Restore previous version",onClick:h},{type:"separator"},{name:"Delete",onClick:v}]}),a.jsx(k,{size:"sm",variant:"subtle",isLoading:r==="saving",disabled:r==="conflict",onClick:N,children:"Save"})]})]}),a.jsxs("div",{className:"flex flex-wrap items-center gap-x-2.5 gap-y-1.5 border-t border-border-subtle/80 pt-3",children:[t&&a.jsxs(S,{as:"span",variant:"label",weight:"medium",tone:"secondary",className:"inline-flex items-center gap-1.5",children:[a.jsx(Fn,{className:"h-3 w-3",weight:"fill"}),"Pinned"]}),t&&a.jsx("span",{className:"h-1 w-1 rounded-full bg-border-secondary"}),a.jsx(Ar,{status:r,savedAt:i,savedVersion:l,confirmationRevision:c}),a.jsx("span",{className:"h-1 w-1 rounded-full bg-border-secondary"}),a.jsxs(S,{as:"span",variant:"micro",weight:"medium",tone:"tertiary",children:["Created ",s]})]})]})})}const kr=/[:{}[\],&*#?|<>=!%@`-]/,Tr="/assets/images/",Mr=e=>e.trim().toLowerCase().replace(/\s+/g,"-").replace(/[\\/:*?"<>|]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")||"untitled-note",Ce=e=>e?kr.test(e)||/^\s|\s$/.test(e)?JSON.stringify(e):e:'""',Se=e=>{if(!e)return;const n=Number(e);return Number.isFinite(n)?new Date(n).toISOString():e},Je=()=>typeof window>"u"||!window.location?.origin?"http://localhost":window.location.origin,Ee=(e,n=Je())=>{try{const t=new URL(e,n);return t.origin===n&&t.pathname.startsWith(Tr)}catch{return!1}},Lt=(e,n=Je())=>{const t=new URL(e,n);return`${t.pathname}${t.search}`},_t=e=>e.headers.get("content-type")?.split(";")[0]?.trim().toLowerCase()??"",Dr=e=>e.trim().replace(/[\\/:*?"<>|]/g,"-").split("").map(s=>s.charCodeAt(0)<32?"-":s).join("").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")||"image",Pr=e=>{const n=e.lastIndexOf(".");return n<=0||n===e.length-1?{baseName:e,extension:""}:{baseName:e.slice(0,n),extension:e.slice(n)}},Ot=(e,n,t)=>{const r=new URL(e,Je()).pathname.split("/").filter(Boolean),i=decodeURIComponent(r[r.length-1]??""),l=`image-${n+1}`,{baseName:c,extension:f}=Pr(Dr(i||l));let d=`${c}${f}`,m=2;for(;t.has(d);)d=`${c}-${m}${f}`,m+=1;return t.add(d),`assets/${d}`},Lr=(e,n)=>{let t=null;for(let s=n;s<e.length;s+=1){const r=e[s];if(t){r===t&&(t=null);continue}if(r==='"'||r==="'"){t=r;continue}if(r===">")return s}return-1},_r=(e,n)=>{let t=n;for(;t<e.length;){const s=e.toLowerCase().indexOf("<img",t);if(s===-1)return-1;const r=e[s+4],i=s===0?-1:e.lastIndexOf("<",s-1),l=s===0?-1:e.lastIndexOf(">",s-1);if(i<=l&&(!r||/[\s/>]/.test(r)))return s;t=s+4}return-1},Or=(e,n,t,s)=>{let r=n;for(;r<t;){for(;r<t&&/[\s/]/.test(e[r]);)r+=1;const i=r;for(;r<t&&/[^\s=/>]/.test(e[r]);)r+=1;const l=e.slice(i,r).toLowerCase();for(;r<t&&/\s/.test(e[r]);)r+=1;if(e[r]!=="=")continue;for(r+=1;r<t&&/\s/.test(e[r]);)r+=1;const c=e[r];if(c==='"'||c==="'"){const d=r+1,m=e.indexOf(c,d);if(m===-1||m>t)return;if(r=m+1,l===s)return{end:m,start:d,value:e.slice(d,m)};continue}const f=r;for(;r<t&&/[^\s>]/.test(e[r]);)r+=1;if(l===s)return{end:r,start:f,value:e.slice(f,r)}}},Bt=e=>{const n=[];let t=0;for(;t<e.length;){const s=_r(e,t);if(s===-1)break;const r=Lr(e,s+4);if(r===-1)break;const i=Or(e,s+4,r,"src");i&&n.push({end:r+1,source:i,start:s}),t=r+1}return n},Ht=(e,n)=>{let t=e;for(const s of[...n].sort((r,i)=>i.start-r.start))t=`${t.slice(0,s.start)}${s.value}${t.slice(s.end)}`;return t},Ft=(e,n)=>{let t=e;for(const s of[...n].sort((r,i)=>i.start-r.start))t=`${t.slice(0,s.start)}${s.value}${t.slice(s.end)}`;return t},$t=e=>{const n=[];let t=0;for(;t<e.length;){const s=e.indexOf("![",t);if(s===-1)break;let r=s+2,i=1;for(;r<e.length&&i>0&&e[r]!==`
|
|
3
|
+
`;){if(e[r]==="\\"){r+=2;continue}e[r]==="["?i+=1:e[r]==="]"&&(i-=1),r+=1}if(i!==0||e[r]!=="("){t=s+2;continue}const l=r+1;let c=l;for(;c<e.length&&e[c]!==`
|
|
4
|
+
`&&/\s/.test(e[c]);)c+=1;if(c>=e.length||e[c]===`
|
|
5
|
+
`){t=s+2;continue}let f=c,d=c,m=c;if(e[c]==="<"){for(r=c+1;r<e.length&&e[r]!==">"&&e[r]!==`
|
|
6
|
+
`;)r+=e[r]==="\\"?2:1;if(e[r]!==">"){t=s+2;continue}f=r+1,d=c+1,m=r}else{let g=0;for(r=c;r<e.length&&e[r]!==`
|
|
7
|
+
`;){const b=e[r];if(b==="\\"){r+=2;continue}if(/\s/.test(b)&&g===0)break;if(b==="(")g+=1;else if(b===")"){if(g===0)break;g-=1}r+=1}f=r,d=c,m=f}if(m<=d){t=s+2;continue}for(r=f;r<e.length&&e[r]!==`
|
|
8
|
+
`&&/\s/.test(e[r]);)r+=1;if(e[r]==='"'||e[r]==="'"){const g=e[r];for(r+=1;r<e.length&&e[r]!==`
|
|
9
|
+
`;){if(e[r]==="\\"){r+=2;continue}if(e[r]===g){r+=1;break}r+=1}}for(;r<e.length&&e[r]!==`
|
|
10
|
+
`&&/\s/.test(e[r]);)r+=1;if(e[r]!==")"){t=s+2;continue}n.push({end:r+1,source:{end:f,start:l,value:e.slice(d,m)},start:s}),t=r+1}return n},Br=(e,n)=>`${Mr(e)}.${n}`,Hr=({id:e,title:n,createdAt:t,updatedAt:s})=>{const r=["---",`title: ${Ce(n)}`,`note_id: ${Ce(e)}`],i=Se(t),l=Se(s);return i&&r.push(`created_at: ${Ce(i)}`),l&&r.push(`updated_at: ${Ce(l)}`),r.push("source: ocean-brain","---"),r.join(`
|
|
11
|
+
`)},It=(e,n,t=!1)=>t?`${Hr(n)}
|
|
12
|
+
|
|
13
|
+
${e}`:e,Ut=(e,n,{includeMetadata:t=!1}={})=>{const s=It(e,n,t),r=$t(s).filter(i=>Ee(i.source.value)).map(i=>({end:i.end,start:i.start,value:""}));return Ft(s,r)},zt=(e,n,{includeMetadata:t=!1}={})=>`${t?`<!--
|
|
14
|
+
source: ocean-brain
|
|
15
|
+
note_id: ${n.id}
|
|
16
|
+
title: ${n.title}
|
|
17
|
+
created_at: ${Se(n.createdAt)??""}
|
|
18
|
+
updated_at: ${Se(n.updatedAt)??""}
|
|
19
|
+
-->
|
|
20
|
+
`:""}${e}`,Fr=(e,n,{includeMetadata:t=!1}={})=>{const s=zt(e,n,{includeMetadata:t}),r=Bt(s).filter(i=>Ee(i.source.value)).map(i=>({end:i.end,start:i.start,value:""}));return Ht(s,r)},$r=async(e,n,{fetchImpl:t=fetch,includeMetadata:s=!1}={})=>{const r=new jt,i=zt(e,n,{includeMetadata:s}),l=Bt(i),c=[],f=new Set,d=new Map;for(const{source:m}of l){if(!Ee(m.value))continue;const g=Lt(m.value);let b=d.get(g);if(!b){b=Ot(g,d.size,f),d.set(g,b);const u=await t(g,{credentials:"same-origin"});if(!u.ok)throw new Error(`Failed to fetch image asset: ${g}`);if(!_t(u).startsWith("image/"))throw new Error(`Image asset did not return image content: ${g}`);r.file(b,new Uint8Array(await u.arrayBuffer()))}c.push({end:m.end,start:m.start,value:`./${b}`})}return r.file("note.html",Ht(i,c)),r.generateAsync({type:"blob"})},Ir=async(e,n,{fetchImpl:t=fetch,includeMetadata:s=!1}={})=>{const r=new jt,i=It(e,n,s),l=$t(i),c=[],f=new Set,d=new Map;for(const{source:m}of l){if(!Ee(m.value))continue;const g=Lt(m.value);let b=d.get(g);if(!b){b=Ot(g,d.size,f),d.set(g,b);const u=await t(g,{credentials:"same-origin"});if(!u.ok)throw new Error(`Failed to fetch image asset: ${g}`);if(!_t(u).startsWith("image/"))throw new Error(`Image asset did not return image content: ${g}`);r.file(b,new Uint8Array(await u.arrayBuffer()))}c.push({end:m.end,start:m.start,value:`./${b}`})}return r.file("note.md",Ft(i,c)),r.generateAsync({type:"blob"})},Ur=(e,n)=>{const t=URL.createObjectURL(e),s=document.createElement("a");s.href=t,s.download=n,document.body.appendChild(s),s.click(),s.remove(),URL.revokeObjectURL(t)},Zt={html:{extension:"html",getContent:e=>e.getHtml(),createDocumentBlob:(e,n)=>new Blob([Fr(e,n.metadata,{includeMetadata:n.includeMetadata})],{type:"text/html;charset=utf-8"}),createZipBlob:(e,n)=>$r(e,n.metadata,{fetchImpl:n.fetchImpl,includeMetadata:n.includeMetadata})},markdown:{extension:"md",getContent:e=>e.getMarkdown(),createDocumentBlob:(e,n)=>new Blob([Ut(e,n.metadata,{includeMetadata:n.includeMetadata})],{type:"text/markdown;charset=utf-8"}),createZipBlob:(e,n)=>Ir(e,n.metadata,{fetchImpl:n.fetchImpl,includeMetadata:n.includeMetadata})}},Wt=(e,n)=>n?"zip":Zt[e].extension,zr=async e=>{const n=Zt[e.format],t=n.getContent(e.source);if(t===void 0)return{type:"not-ready",format:e.format};const s=Wt(e.format,e.includeAssets);return{type:"success",blob:e.includeAssets?await n.createZipBlob(t,e):n.createDocumentBlob(t,e),filename:Br(e.metadata.title,s)}},Zr=e=>e==="markdown"?"Markdown is not ready yet.":"HTML is not ready yet.",ot=({checked:e,description:n,id:t,label:s,onChange:r})=>{const i=`${t}-label`;return a.jsxs("div",{className:"flex min-h-6 items-center gap-2",children:[a.jsx(yt,{id:t,size:"sm",checked:e,onChange:l=>r(l.target.checked),"aria-labelledby":i}),a.jsx("label",{id:i,htmlFor:t,className:"min-w-0 cursor-pointer",children:a.jsx(S,{as:"span",variant:"label",weight:"medium",tone:"secondary",className:"block",children:s})}),a.jsx(Rn,{content:a.jsx("span",{className:"block max-w-[240px] leading-4",children:n}),side:"top",children:a.jsx("button",{type:"button",className:"focus-ring-soft inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full text-fg-tertiary transition-colors hover:bg-hover-subtle hover:text-fg-secondary","aria-label":`${s} help`,children:a.jsx(Vn,{className:"h-3.5 w-3.5"})})})]})};function Wr({isOpen:e,metadata:n,getHtml:t,getMarkdown:s,onClose:r}){const i=Re(),[l,c]=o.useState("html"),[f,d]=o.useState(!0),[m,g]=o.useState(!1),[b,u]=o.useState(!1),h=Wt(l,f),v=async()=>{u(!0);try{const N=await zr({format:l,includeAssets:f,includeMetadata:m,metadata:n,source:{getHtml:t,getMarkdown:s}});if(N.type==="not-ready"){i(Zr(N.format));return}Ur(N.blob,N.filename),r(),i("Downloaded note.")}catch{i("Failed to download note.")}finally{u(!1)}};return a.jsxs(B,{isOpen:e,onClose:r,variant:"compact",children:[a.jsx(B.Header,{title:"Download document",onClose:r}),a.jsx(B.Body,{children:a.jsxs("div",{className:"flex flex-col gap-5",children:[a.jsxs("div",{className:"flex flex-col gap-3",role:"radiogroup","aria-label":"Format",children:[a.jsx(S,{as:"span",variant:"meta",weight:"bold",tone:"muted",children:"Format"}),a.jsxs("div",{className:"flex flex-wrap gap-4",children:[a.jsxs("label",{className:"flex cursor-pointer items-center gap-2",children:[a.jsx("input",{type:"radio",name:"note-export-format",value:"html",checked:l==="html",onChange:()=>c("html"),className:"h-4 w-4 accent-cta"}),a.jsx(S,{as:"span",variant:"label",weight:"medium",tone:"secondary",children:".html"})]}),a.jsxs("label",{className:"flex cursor-pointer items-center gap-2",children:[a.jsx("input",{type:"radio",name:"note-export-format",value:"markdown",checked:l==="markdown",onChange:()=>c("markdown"),className:"h-4 w-4 accent-cta"}),a.jsx(S,{as:"span",variant:"label",weight:"medium",tone:"secondary",children:".md"})]})]})]}),a.jsxs("div",{className:"flex flex-col gap-3",role:"group","aria-label":"Options",children:[a.jsx(S,{as:"span",variant:"meta",weight:"bold",tone:"muted",children:"Options"}),a.jsxs("div",{className:"flex flex-col gap-2",children:[a.jsx(ot,{id:"note-export-include-assets",label:"Include local image assets",checked:f,onChange:d,description:"Bundle uploaded Ocean Brain images with the document. Without assets, local images are omitted."}),a.jsx(ot,{id:"note-export-include-metadata",label:"Include metadata",checked:m,onChange:g,description:"Add the note title, note id, timestamps, and Ocean Brain source information."})]})]})]})}),a.jsx(B.Footer,{children:a.jsxs(je,{children:[a.jsx(k,{variant:"ghost",size:"sm",onClick:r,children:"Cancel"}),a.jsx(k,{variant:"primary",size:"sm",onClick:v,disabled:b,children:b?"Downloading...":`Download .${h}`})]})})]})}const Vt=e=>e==="mcp"?{actor:"An MCP client",place:"through MCP",target:"the MCP update"}:e==="web"?{actor:"Another browser tab",place:"in another tab",target:"the tab update"}:{actor:"Another editor",place:"elsewhere",target:"the outside change"},Vr=({isDeleted:e,isConflict:n,source:t})=>{const s=Vt(t);return e?`This note was moved to trash ${s.place}`:n?`Save paused: note changed ${s.place}`:`This note changed ${s.place}`},Kr=({isDeleted:e,isConflict:n,hasDraft:t,source:s})=>{const r=Vt(s);return e?`${r.actor} moved this note to trash. Open trash to review or restore it.`:n&&t?`Your draft is saved locally. Reload the latest note, overwrite ${r.target}, or clone your draft into a new note.`:n?`The layout change is paused because the note changed ${r.place}. Reload the latest note or overwrite only the layout.`:`${r.actor} changed this note while it was open here. Reload the latest version before continuing.`};function Yr({isOpen:e,isDeleted:n,isConflict:t,hasDraft:s,source:r,isReloading:i,onReload:l,onOverwrite:c,onCloneDraft:f,onOpenTrash:d}){return a.jsxs(B,{isOpen:e,onClose:()=>{},variant:"inspect",children:[a.jsx(B.Header,{title:Vr({isDeleted:n,isConflict:t,source:r})}),a.jsx(B.Body,{children:a.jsx(S,{as:"p",variant:"body",tone:"secondary",className:"leading-6",children:Kr({isDeleted:n,isConflict:t,hasDraft:s,source:r})})}),a.jsx(B.Footer,{children:a.jsx(je,{children:n?a.jsx(k,{type:"button",variant:"primary",size:"sm",onClick:d,children:"Open trash"}):t?a.jsxs(a.Fragment,{children:[a.jsx(k,{type:"button",variant:"subtle",size:"sm",isLoading:i,onClick:l,children:"Reload latest"}),s&&a.jsx(k,{type:"button",variant:"ghost",size:"sm",onClick:f,children:"Clone draft"}),a.jsx(k,{type:"button",variant:"danger",size:"sm",onClick:c,children:"Overwrite"})]}):a.jsx(k,{type:"button",variant:"primary",size:"sm",isLoading:i,onClick:l,children:"Reload latest"})})})]})}function qr({localDraftCreatedAt:e,hasSaveError:n,onRestoreDraft:t,onDiscardDraft:s,onRetrySave:r,onSaveAsNewNote:i}){return a.jsxs(a.Fragment,{children:[e&&a.jsx(nt,{tone:"danger",className:"mb-6",children:a.jsxs("div",{className:"flex w-full flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[a.jsxs("span",{children:["A draft from ",e," is saved only in this browser."]}),a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsx(k,{type:"button",size:"sm",variant:"subtle",className:"self-start",onClick:t,children:"Restore draft"}),a.jsx(k,{type:"button",size:"sm",variant:"ghost",className:"self-start",onClick:s,children:"Discard"})]})]})}),n&&a.jsx(nt,{tone:"danger",className:"mb-6",children:a.jsxs("div",{className:"flex w-full flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[a.jsx("span",{children:"Save failed. Your latest draft is still available here. Retry before leaving this note."}),a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsx(k,{type:"button",size:"sm",variant:"subtle",className:"self-start",onClick:r,children:"Retry save"}),a.jsx(k,{type:"button",size:"sm",variant:"ghost",className:"self-start",onClick:i,children:"Save as new note"})]})]})})]})}const it=(e,n)=>e||(n==="mobile"?"Mobile browser":n==="mcp"?"MCP":"Web browser");function Qr({isOpen:e,noteId:n,onClose:t,restoreSnapshot:s,onRestored:r}){const i=Re(),l=Ke(),[c,f]=o.useState(null),[d,m]=o.useState("diff"),g=o.useRef(null),b=Be({queryKey:L.notes.snapshots(n),queryFn:async()=>{const p=await jn(n);if(p.type==="error")throw p;return p.noteSnapshots},enabled:e}),u=$n({mutationFn:s,onSuccess:async p=>{if(p){if(p.type==="error"){i(p.errors[0].message);return}await Promise.all([l.invalidateQueries({queryKey:L.notes.detail(n),exact:!0}),l.invalidateQueries({queryKey:L.notes.listAll(),exact:!1}),l.invalidateQueries({queryKey:L.notes.tagListAll(),exact:!1}),l.invalidateQueries({queryKey:L.notes.tagNameListAll(),exact:!1}),l.invalidateQueries({queryKey:L.notes.pinned(),exact:!0}),l.invalidateQueries({queryKey:L.notes.backReferencesAll(),exact:!1}),l.invalidateQueries({queryKey:L.notes.graph(),exact:!0}),l.invalidateQueries({queryKey:L.notes.snapshots(n),exact:!1}),l.invalidateQueries({queryKey:L.views.sectionNotesAll(),exact:!1}),l.invalidateQueries({queryKey:L.tags.all(),exact:!1})]),i("Previous version restored."),r?.(p.restoreNoteSnapshot),f(null),t()}}}),h=b.data?.find(p=>p.id===c)??null,v=Be({queryKey:[...L.notes.snapshotDetail(c??"pending"),"diff"],queryFn:async()=>{if(!c)throw new Error("SNAPSHOT_NOT_SELECTED");const p=await An(c,"current");if(p.type==="error")throw p;if(!p.noteSnapshotDiff)throw new Error("SNAPSHOT_DIFF_NOT_FOUND");return p.noteSnapshotDiff},enabled:!!c&&d==="diff"}),N=Be({queryKey:L.notes.snapshotDetail(c??"pending"),queryFn:async()=>{if(!c)throw new Error("SNAPSHOT_NOT_SELECTED");const p=await En(c);if(p.type==="error")throw p;if(!p.noteSnapshot)throw new Error("SNAPSHOT_NOT_FOUND");return p.noteSnapshot},enabled:!!c&&d==="content"}),R=N.data?.contentAsMarkdown.trim()??"";o.useEffect(()=>{c&&g.current?.focus()},[c]);const A=(p,y)=>{m(y),f(p)},w=()=>{f(null),m("diff"),t()};return a.jsxs(B,{isOpen:e,onClose:w,variant:"inspect",children:[a.jsx(B.Header,{title:h?d==="diff"?"Snapshot Diff":"Snapshot Content":"Restore Previous Version",onClose:w}),a.jsx(B.Description,{className:"sr-only",children:h?d==="diff"?"Review the markdown diff between this snapshot and the current note.":"Read this snapshot content before restoring it.":"Choose a previous snapshot to restore."}),a.jsx(B.Body,{children:h?a.jsxs("div",{className:"flex flex-col gap-3",children:[a.jsxs("div",{className:"min-w-0",children:[a.jsx(S,{as:"p",variant:"body",weight:"semibold",truncate:!0,children:h.title}),a.jsxs(S,{as:"p",variant:"label",tone:"tertiary",children:["Before"," ",it(h.meta.label,h.meta.entrypoint)," ","edit - ",G(h.createdAt).format("YYYY-MM-DD HH:mm:ss")]})]}),a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsx(k,{variant:d==="diff"?"primary":"subtle",size:"sm",onClick:()=>m("diff"),children:"Show diff"}),a.jsx(k,{variant:d==="content"?"primary":"subtle",size:"sm",onClick:()=>m("content"),children:"View content"})]}),d==="diff"?v.isLoading?a.jsx(S,{as:"p",variant:"meta",tone:"secondary",className:"rounded-[14px] border border-border-subtle bg-hover-subtle/50 px-4 py-3",children:"Loading snapshot diff..."}):v.isError?a.jsx(S,{as:"p",variant:"meta",tone:"secondary",className:"rounded-[14px] border border-border-subtle bg-hover-subtle/50 px-4 py-3",children:"Snapshot diff could not be loaded."}):v.data?a.jsxs("div",{className:"flex flex-col gap-2",children:[a.jsx(S,{as:"p",variant:"meta",tone:"secondary",children:"Changes from this snapshot to the current note. Red lines were in the snapshot; green lines are in the current note."}),a.jsx("pre",{className:"max-h-[60vh] overflow-y-auto overflow-x-hidden whitespace-pre-wrap break-words rounded-[14px] border border-border-subtle bg-hover-subtle/50 px-0 py-3 text-xs leading-5 text-fg-secondary",children:v.data.diff.markdown.split(`
|
|
21
|
+
`).map((p,y)=>{const T=p.startsWith("+")&&!p.startsWith("+++")?"bg-emerald-500/12 text-emerald-700 dark:text-emerald-200":p.startsWith("-")&&!p.startsWith("---")?"bg-rose-500/12 text-rose-700 dark:text-rose-200":p.startsWith("@@")?"bg-sky-500/12 text-sky-700 dark:text-sky-200":"text-fg-secondary";return a.jsx("span",{className:`block min-w-full whitespace-pre-wrap break-words px-4 ${T}`,children:p||" "},`${y}-${p}`)})})]}):null:N.isLoading?a.jsx(S,{as:"p",variant:"meta",tone:"secondary",className:"rounded-[14px] border border-border-subtle bg-hover-subtle/50 px-4 py-3",children:"Loading snapshot content..."}):N.isError?a.jsx(S,{as:"p",variant:"meta",tone:"secondary",className:"rounded-[14px] border border-border-subtle bg-hover-subtle/50 px-4 py-3",children:"Snapshot content could not be loaded."}):R?a.jsx("pre",{className:"max-h-[60vh] overflow-auto whitespace-pre-wrap break-words rounded-[14px] border border-border-subtle bg-hover-subtle/50 px-4 py-3 text-sm leading-6 text-fg-secondary",children:R}):a.jsx(S,{as:"p",variant:"meta",tone:"secondary",className:"rounded-[14px] border border-border-subtle bg-hover-subtle/50 px-4 py-3",children:"No readable content was found for this snapshot."})]}):a.jsxs("div",{className:"flex flex-col gap-3",children:[a.jsx(S,{as:"p",variant:"meta",tone:"secondary",children:"Choose a previous snapshot to restore this note back to that state."}),b.isLoading&&a.jsx(S,{as:"div",variant:"meta",tone:"secondary",children:"Loading previous versions..."}),!b.isLoading&&b.data?.length===0&&a.jsx(S,{as:"div",variant:"meta",tone:"secondary",className:"rounded-[14px] border border-border-subtle bg-hover-subtle/50 px-4 py-3",children:"A recovery snapshot appears before the first edit in a session. Up to 10 recent snapshots are kept for 7 days, and identical versions are skipped."}),!b.isLoading&&b.data&&b.data.length>0&&a.jsx("div",{className:"flex flex-col gap-2",children:b.data.map(p=>a.jsx(Qn,{padding:"compact",children:a.jsxs("div",{className:"flex flex-col gap-3",children:[a.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[a.jsxs("div",{className:"min-w-0",children:[a.jsxs(S,{as:"p",variant:"body",weight:"semibold",children:["Before"," ",it(p.meta.label,p.meta.entrypoint)," ","edit"]}),a.jsx(S,{as:"p",variant:"meta",truncate:!0,tone:"secondary",children:p.title}),a.jsx(S,{as:"p",variant:"label",tone:"tertiary",children:G(p.createdAt).format("YYYY-MM-DD HH:mm:ss")})]}),a.jsxs("div",{className:"flex shrink-0 flex-wrap gap-2 sm:justify-end",children:[a.jsx(k,{variant:"subtle",size:"sm",onClick:()=>A(p.id,"diff"),children:"Compare"}),a.jsx(k,{size:"sm",isLoading:u.isPending,onClick:()=>u.mutate(p.id),children:"Restore"})]})]}),p.contentPreview&&a.jsx("div",{className:"rounded-[14px] border border-border-subtle bg-hover-subtle/50 px-3 py-2",children:a.jsx(S,{as:"p",variant:"meta",tone:"secondary",className:"line-clamp-4 whitespace-pre-wrap break-words",children:p.contentPreview})})]})},p.id))})]})}),h&&a.jsx(B.Footer,{children:a.jsxs(je,{children:[a.jsx(k,{ref:g,variant:"subtle",onClick:()=>{f(null),m("diff")},children:"Back"}),a.jsx(k,{isLoading:u.isPending,onClick:()=>u.mutate(h.id),children:"Restore this version"})]})})]})}function Gr({noteId:e}){const[n,t]=o.useState(!1),[s,r]=o.useState(!1),[i,l]=o.useState("create"),[c,f]=o.useState(void 0),{onCreate:d,onUpdate:m,onDelete:g}=Xn(),b=()=>{l("create"),f(void 0),r(!0)},u=w=>{l("edit"),f(w),r(!0)},h=(w,p,y)=>{i==="create"?d(e,w,p,()=>{r(!1)},y):i==="edit"&&c&&m(c.id,e,{reminderDate:w,priority:p,content:y},()=>{r(!1)})},v=w=>{m(w.id,e,{completed:!w.completed})},N=w=>{const p=G(Number(w)),y=G();return p.isSame(y,"day")?`Today at ${p.format("HH:mm")}`:p.isSame(y.add(1,"day"),"day")?`Tomorrow at ${p.format("HH:mm")}`:p.format("YYYY-MM-DD HH:mm")},R=w=>{const p=G(Number(w)),y=G(),T=p.diff(y,"hour");return T<=6?"high":T<=24?"medium":"low"},A=w=>{const p=G(Number(w)),y=G(),T=p.diff(y,"hour"),F=p.diff(y,"minute")%60;return T<0||F<0?"Overdue":T===0?`${F}m remaining`:`${T}h ${F}m remaining`};return a.jsxs(a.Fragment,{children:[a.jsx(At,{title:"Reminders",icon:a.jsx(In,{className:"h-3.5 w-3.5"}),action:a.jsxs(a.Fragment,{children:[!n&&a.jsxs(k,{size:"sm",variant:"ghost",onClick:b,children:[a.jsx(tr,{className:"w-3 h-3"}),a.jsx(S,{as:"span",variant:"label",className:"hidden sm:inline",children:"Add"})]}),a.jsxs(k,{type:"button",size:"sm",variant:"ghost","aria-label":n?"Expand reminders":"Collapse reminders","aria-expanded":!n,onClick:()=>t(!n),children:[n?a.jsx(kn,{className:"h-3.5 w-3.5"}):a.jsx(Tn,{className:"h-3.5 w-3.5"}),n?"Expand":"Collapse"]})]}),children:!n&&a.jsx(Nr,{noteId:e,searchParams:{offset:0,limit:9999},render:({reminders:w,totalCount:p})=>a.jsx("div",{className:"flex flex-col gap-2",children:w.length===0?a.jsx(S,{as:"p",variant:"meta",tone:"secondary",className:"py-3 text-center",children:p===0?"No reminders yet":"All reminders complete"}):a.jsx("div",{className:"flex flex-col",children:w.map(y=>{const T=y.priority||R(y.reminderDate),F=A(y.reminderDate),M=F==="Overdue";return a.jsxs("div",{className:W("flex items-center gap-2.5 px-2 py-1.5"),children:[a.jsx(yt,{checked:y.completed,onChange:()=>v(y),size:"sm","aria-label":`Reminder: ${y.content||N(y.reminderDate)}`}),a.jsx(S,{as:"div",variant:"body",weight:"medium",className:W("truncate flex-1 min-w-0",y.completed&&"line-through opacity-40"),children:y.content||N(y.reminderDate)}),a.jsxs("div",{className:W("shrink-0 flex items-center gap-1",y.completed&&"opacity-40"),children:[y.content&&a.jsx(S,{as:"span",variant:"meta",tone:"secondary",children:N(y.reminderDate)}),!y.completed&&a.jsx(S,{as:"span",variant:"label",weight:"medium",tone:M||T==="high"?"error":"tertiary",className:W(y.content&&'before:content-["·"] before:mr-1'),children:F})]}),a.jsx(bt,{button:a.jsx(Ct,{label:"Reminder actions"}),items:[{name:"Edit",onClick:()=>u(y)},{name:"Delete",onClick:()=>g(y.id,e)}]})]},y.id)})})})})}),a.jsx(er,{isOpen:s,onClose:()=>r(!1),onSave:h,reminder:c,mode:i})]})}const Jr=e=>[{title:"Diagram",subtext:"Create a flowchart or diagram with Mermaid syntax",onItemClick:()=>{rt(e,{type:"codeBlock",props:{language:"mermaid"}})},aliases:["mermaid","diagram","flowchart","sequence"],group:"Other",icon:a.jsx(Tt,{})},{title:"Math Formula",subtext:"Write a formula with KaTeX or LaTeX",onItemClick:()=>{rt(e,{type:"codeBlock",props:{language:"math"}})},aliases:["math","formula","equation","katex","latex"],group:"Other",icon:a.jsx(Dt,{})}],Xr=({editor:e})=>a.jsx(Ge,{triggerCharacter:"/",getItems:async n=>ir([...nr(e).filter(t=>t.title!=="Audio"&&t.title!=="Video"&&t.title!=="File"),...Jr(e),{title:"Table of Contents",subtext:"Insert a table of contents based on headings",onItemClick:()=>{e.insertBlocks([{type:"tableOfContents"}],e.getTextCursorPosition().block,"after")},aliases:["toc","table of contents","contents","outline","index"],group:"Other",icon:a.jsx(Nt,{})}],n)}),es=(e,n)=>n?e.filter(t=>t.id!==n):e,ts=({currentNoteId:e,onClick:n})=>a.jsx(Ge,{triggerCharacter:"[",getItems:async t=>{const s=await Mn({query:t,limit:5});return s.type==="error"?[]:es(s.allNotes.notes,e).map(i=>({title:i.title,onItemClick:()=>n({type:"reference",props:{id:i.id,title:i.title}})}))}}),Kt=["image/png","image/jpeg","image/gif","image/webp","image/bmp","image/avif"],ns=new Set(Kt),ct="Unsupported image type. Use PNG, JPEG, GIF, WebP, BMP, or AVIF.",rs="Failed to upload image.",ss=e=>ns.has(e);let lt,dt;const as=()=>(lt??=ze(async()=>{const{default:e}=await import("./mermaid.core-B528P54n.js").then(n=>n.bc);return{default:e}},__vite__mapDeps([0,1,2,3])).then(({default:e})=>e),lt),os=()=>(dt??=Promise.all([ze(()=>import("./katex-x288kqHd.js"),[]),ze(()=>Promise.resolve({}),__vite__mapDeps([4]))]).then(([{default:e}])=>e),dt),is=e=>{const n=e?.trim().toLowerCase();return n==="mermaid"?"mermaid":n==="math"||n==="katex"||n==="latex"?"math":null},cs=e=>`ocean-brain-mermaid-${e.replace(/[^a-zA-Z0-9_-]/g,"")||"diagram"}`,ls=async(e,n,t,s="light")=>{if(e==="mermaid"){const i=await as();i.initialize({securityLevel:"strict",startOnLoad:!1,suppressErrorRendering:!0,theme:s==="dark"?"dark":"default"});const l=await i.render(cs(t),n);return{html:l.svg,bindFunctions:l.bindFunctions}}return{html:(await os()).renderToString(n,{displayMode:!0,output:"htmlAndMathml",strict:"warn",throwOnError:!0,trust:!1})}},ds={floating:"pointer-events-auto inline-flex h-7 cursor-pointer select-none items-center gap-1.5 rounded-[8px] border border-white/10 bg-white/10 px-2.5 text-xs font-medium text-white/60 opacity-75 shadow-[0_8px_18px_-14px_rgba(0,0,0,0.45)] backdrop-blur-sm transition-colors hover:bg-white/20 hover:text-white/90 hover:opacity-100 focus-ring-soft focus:text-white/90 focus:opacity-100",toolbar:"focus-ring-soft inline-flex h-8 cursor-pointer select-none items-center gap-1.5 rounded-[8px] border border-transparent px-2.5 text-xs font-semibold text-fg-secondary outline-none transition-colors hover:border-border-subtle hover:bg-hover-subtle hover:text-fg-default"},us={idle:"",copied:"text-accent-success hover:text-accent-success focus:text-accent-success",failed:"text-fg-error hover:text-fg-error focus:text-fg-error"},fs={idle:"Copy",copied:"Copied",failed:"Copy failed"},ut=({getText:e,resetDelayMs:n=2e3,variant:t="floating"})=>{const[s,r]=o.useState("idle"),i=o.useRef(null),l=o.useCallback(()=>{i.current&&(clearTimeout(i.current),i.current=null)},[]),c=o.useCallback(()=>{l(),i.current=setTimeout(()=>{r("idle"),i.current=null},n)},[l,n]);o.useEffect(()=>l,[l]);const f=g=>{g.stopPropagation()},d=g=>{g.preventDefault(),g.stopPropagation()},m=async g=>{f(g);try{await navigator.clipboard.writeText(e()),r("copied")}catch{r("failed")}c()};return a.jsx("div",{className:W(t==="floating"&&"pointer-events-none absolute right-3 top-2 z-[1]"),contentEditable:!1,onMouseDown:d,children:a.jsxs("button",{type:"button",className:W(ds[t],us[s]),contentEditable:!1,onClick:m,children:[a.jsx(dr,{className:"h-3.5 w-3.5"}),a.jsx("span",{"aria-live":"polite",children:fs[s]})]})})},ps=({kind:e,source:n})=>{const t=o.useId(),s=o.useRef(null),r=vt(d=>d.theme),[i,l]=o.useState(()=>typeof IntersectionObserver>"u"),[c,f]=o.useState({status:"idle"});return o.useEffect(()=>{const d=s.current;if(i||!d||typeof IntersectionObserver>"u"){l(!0);return}const m=new IntersectionObserver(([g])=>{g?.isIntersecting&&(l(!0),m.disconnect())},{rootMargin:"240px"});return m.observe(d),()=>m.disconnect()},[i]),o.useEffect(()=>{if(!i)return;let d=!1;return f({status:"loading"}),ls(e,n,t,r).then(m=>{d||f({status:"success",...m})}).catch(()=>{d||f({status:"error"})}),()=>{d=!0}},[e,t,i,n,r]),o.useEffect(()=>{c.status==="success"&&c.bindFunctions&&s.current&&c.bindFunctions(s.current)},[c]),a.jsxs("div",{ref:s,"data-rich-code-preview":!0,className:"min-h-24 w-full overflow-auto bg-surface px-4 py-5 text-fg-default sm:px-6 sm:py-6",contentEditable:!1,"aria-label":e==="mermaid"?"Mermaid diagram preview":"Math formula preview",children:[c.status==="success"&&a.jsx("div",{className:"[&_.katex-display]:m-0 [&_svg]:mx-auto [&_svg]:block [&_svg]:h-auto [&_svg]:max-h-[min(68vh,640px)] [&_svg]:max-w-full",dangerouslySetInnerHTML:{__html:c.html}}),(c.status==="idle"||c.status==="loading")&&a.jsx("div",{className:"flex min-h-8 items-center justify-center text-sm text-black/55",children:"Rendering preview…"}),c.status==="error"&&a.jsxs("div",{className:"text-left",children:[a.jsx("p",{className:"mb-3 text-sm text-red-700",children:"Preview could not be rendered. The source is preserved."}),a.jsx("pre",{className:"overflow-x-auto whitespace-pre-wrap rounded-[6px] bg-black/5 p-4 text-sm text-black",children:a.jsx("code",{children:n})})]})]})},ft="focus-ring-soft inline-flex h-8 cursor-pointer select-none items-center gap-1.5 rounded-[8px] border px-2.5 text-xs font-semibold outline-none transition-colors",Ze=e=>typeof e=="string"?e:!e||typeof e!="object"?"":"text"in e&&typeof e.text=="string"?e.text:"content"in e?Array.isArray(e.content)?e.content.map(Ze).join(""):Ze(e.content):"",ms=({block:e,contentRef:n})=>{const t=o.useRef(null),s=is(e.props.language),r=e.content.map(Ze).join(""),[i,l]=o.useState(r),[c,f]=o.useState(r.length===0),d=s!==null&&!c,m=s==="mermaid"?"Diagram":"Math Formula",g=`${m} controls`,b=o.useCallback(h=>{t.current=h,n(h)},[n]);o.useEffect(()=>{const h=t.current;if(!h)return;const v=()=>l(h.textContent??""),N=new MutationObserver(v);return N.observe(h,{characterData:!0,childList:!0,subtree:!0}),()=>N.disconnect()},[]);const u=h=>{h.preventDefault(),h.stopPropagation()};return a.jsxs(a.Fragment,{children:[s&&a.jsxs("div",{role:"toolbar","aria-label":g,"data-rich-code-toolbar":!0,className:"flex min-h-11 w-full flex-wrap items-center justify-between gap-2 border-b border-border-subtle bg-elevated px-3 py-1.5 text-fg-secondary",contentEditable:!1,onMouseDown:u,children:[a.jsxs("div",{className:"flex min-w-0 items-center gap-2 px-1 text-xs font-semibold text-fg-secondary",children:[s==="mermaid"?a.jsx(Tt,{className:"h-4 w-4 shrink-0 text-fg-tertiary"}):a.jsx(Dt,{className:"h-4 w-4 shrink-0 text-fg-tertiary"}),a.jsx("span",{className:"truncate",children:m})]}),a.jsxs("div",{className:"flex items-center gap-1",children:[a.jsxs("div",{className:"flex items-center gap-0.5 rounded-[10px] border border-border-subtle bg-hover-subtle/55 p-0.5",children:[a.jsxs("button",{type:"button","aria-pressed":c,className:W(ft,c?"border-border-secondary/70 bg-elevated text-fg-default shadow-[0_8px_18px_-16px_rgba(15,18,24,0.28)]":"border-transparent text-fg-secondary hover:bg-hover-subtle hover:text-fg-default"),contentEditable:!1,onClick:h=>{h.stopPropagation(),f(!0)},children:[a.jsx(vr,{className:"h-3.5 w-3.5"}),"Edit"]}),a.jsxs("button",{type:"button","aria-pressed":d,className:W(ft,d?"border-border-secondary/70 bg-elevated text-fg-default shadow-[0_8px_18px_-16px_rgba(15,18,24,0.28)]":"border-transparent text-fg-secondary hover:bg-hover-subtle hover:text-fg-default"),contentEditable:!1,onClick:h=>{h.stopPropagation(),f(!1)},children:[a.jsx(Un,{className:"h-3.5 w-3.5"}),"Preview"]})]}),a.jsx(ut,{variant:"toolbar",getText:()=>t.current?.textContent?.trimEnd()??""})]})]}),a.jsx("pre",{className:W(d&&"hidden",s&&"bg-[#181b20]"),children:a.jsx("code",{ref:b})}),s&&d&&a.jsx(ps,{kind:s,source:i}),!s&&a.jsx(ut,{getText:()=>t.current?.textContent?.trimEnd()??""})]})},hs="focus-ring-soft inline-flex cursor-pointer items-center rounded-[8px] border border-border-subtle bg-[color-mix(in_srgb,var(--elevated)_72%,var(--hover-subtle))] px-2 py-0.5 text-xs font-semibold text-fg-secondary transition-colors hover:border-border-secondary hover:bg-elevated hover:text-fg-default dark:bg-[color-mix(in_srgb,var(--elevated)_82%,var(--hover-subtle))]",gs={type:"reference",propSchema:{id:{default:""},title:{default:"Unknown"}},content:"none"};function xs(e){const n=wt(),t=()=>{e.editor.blur(),n({to:Ae,params:{id:e.inlineContent.props.id}})},s=r=>{r.preventDefault(),r.stopPropagation()};return a.jsx("span",{role:"link",tabIndex:0,contentEditable:!1,className:hs,onMouseDown:s,onClick:r=>{s(r),t()},onKeyDown:r=>{r.key!=="Enter"&&r.key!==" "||(s(r),t())},children:a.jsxs("span",{children:["[",e.inlineContent.props.title,"]"]})})}const bs=Et(gs,{render:e=>a.jsx(xs,{...e})}),ys=()=>{const e=rr(),[n,t]=o.useState([]),s={1:"pl-3",2:"pl-[26px]",3:"pl-[40px]",4:"pl-[54px]",5:"pl-[68px]",6:"pl-[82px]"};o.useEffect(()=>{const l=()=>{const f=e.document,d=[],m=g=>{for(const b of g){if(b.type==="heading"){const u=b,h=u.props.level||1,v=u.content?.map(N=>N.text||"").join("")||"";v.trim()&&d.push({id:b.id,level:h,text:v})}b.children&&Array.isArray(b.children)&&m(b.children)}};m(f),t(d)};l();const c=e.onChange?.(l);return()=>{c&&c()}},[e]);const r=l=>{e.setTextCursorPosition(l);const c=document.querySelector(`[data-id="${l}"]`);if(c){const f=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1;c.scrollIntoView({behavior:f?"auto":"smooth",block:"center"})}},i=a.jsx(ur,{icon:a.jsx(Nt,{className:"h-3.5 w-3.5"}),title:"Table of Contents",className:"text-fg-tertiary"});return n.length===0?a.jsxs("div",{className:"surface-base w-full p-4",children:[i,a.jsx(S,{as:"p",variant:"meta",tone:"secondary",className:"mt-2",children:"Add headings to your document to generate a table of contents"})]}):a.jsxs("div",{className:"surface-base w-full p-4",children:[a.jsx("div",{className:"mb-2",children:i}),a.jsx("nav",{className:"space-y-0.5",children:n.map(l=>{const c=l.level===1;return a.jsxs("button",{type:"button",onClick:()=>r(l.id),className:W("focus-ring-soft","flex","w-full","items-center","gap-2","rounded-[10px]","px-2.5","py-1.5",s[l.level]??"pl-2.5","text-left","transition-colors","hover:bg-hover-subtle",c?"text-fg-default":"text-fg-secondary"),children:[a.jsxs(S,{as:"span",variant:"label",weight:"medium",tone:"tertiary",className:"min-w-[1.5rem]",children:["H",l.level]}),a.jsx(S,{as:"span",variant:"body",weight:c?"semibold":"medium",className:"line-clamp-2 text-current",children:l.text})]},l.id)})})]})},vs=kt({type:"tableOfContents",propSchema:{},content:"none"},{render:()=>a.jsx(ys,{})})(),ws="focus-ring-soft inline-flex cursor-pointer items-center rounded-[8px] border border-border-subtle bg-emphasis px-2 py-0.5 text-xs font-semibold text-fg-secondary transition-colors hover:border-border-secondary hover:bg-hover-subtle hover:text-fg-default dark:bg-emphasis",Cs={type:"tag",propSchema:{id:{default:""},tag:{default:"@Unknown"}},content:"none"};function Ns(e){const n=wt(),t=()=>{e.editor.blur(),n({to:Yn,params:{id:e.inlineContent.props.id},search:{page:1}})},s=r=>{r.preventDefault(),r.stopPropagation()};return a.jsx("span",{role:"link",tabIndex:0,contentEditable:!1,className:ws,onMouseDown:s,onClick:r=>{s(r),t()},onKeyDown:r=>{r.key!=="Enter"&&r.key!==" "||(s(r),t())},children:a.jsx("span",{children:e.inlineContent.props.tag})})}const Ss=Et(Cs,{render:e=>a.jsx(Ns,{...e})}),Rs=e=>e,js=e=>e,As=Rs({tag:Ss,reference:bs}),Es=js({tableOfContents:vs}),ce=he.codeBlock,pt=kt(ce.config,{meta:ce.implementation.meta,parse:ce.implementation.parse,parseContent:ce.implementation.parseContent,runsBefore:ce.implementation.runsBefore,render:ms})(),ks={...pt,extensions:ce.extensions,implementation:{...pt.implementation,toExternalHTML:ce.implementation.toExternalHTML}},Ts={...he.image,implementation:{...he.image.implementation,meta:{...he.image.implementation.meta,fileBlockAccept:[...Kt]}}},Ms=cr.create({inlineContentSpecs:{...lr,...As},blockSpecs:{...he,image:Ts,codeBlock:ks,...Es}}),Ds=(e,n)=>n.some(t=>t.name===`@${e}`),Ps=({onClick:e})=>a.jsx(Ge,{triggerCharacter:"@",getItems:async n=>{const t=await pr({query:n,limit:5});if(t.type==="error")return[];const{tags:s}=t.allTags,r=Ds(n,s),i=[{title:"Add a new tag",onItemClick:async()=>{const l=await mr({name:"@"+n});if(l.type==="error")return;const{id:c,name:f}=l.createTag;e({type:"tag",props:{id:c,tag:f}})}}];return s.length===0?i:s.map(l=>({title:l.name,onItemClick:()=>e({type:"tag",props:{id:l.id,tag:l.name}})})).concat(n&&!r?i:[])}}),Ls=/^ {0,3}(`{3,}|~{3,})/,_s=/<[^<>\n]*>/g,Yt=/~+/g,qt=/[\p{L}\p{M}\p{N}\p{Sc}%‰.,+\-/:°℃℉µμ·²³^]/u,We=new RegExp("^(?:[+-]?\\p{Sc}?|\\p{Sc}[+-]?)\\p{N}","u"),Qt=/&#(?:x[0-9a-f]+|\d+);/giu,Os=new Set(["Files","blocknote/html","vscode-editor-data"]),mt="OBTILDE",ht="",Bs=[/(^|\n) {0,3}#{1,6} {1,8}[^\n]{1,64}\r?\n\r?\n\s{0,32}\S/,/(_|__|\*|\*\*|~~|==|\+\+)(?!\s)(?:[^\s](?:.{0,62}[^\s])?|\S)(?=\1)/,/\[[^\]]{1,128}\]\(https?:\/\/\S{1,999}\)/,/(?:\s|^)`(?!\s)(?:[^\s`](?:[^`]{0,46}[^\s`])?|[^\s`])`([^\w]|$)/,/(?:^|\n)\s{0,5}-\s{1}[^\n]+\n\s{0,15}-\s/,/(?:^|\n)\s{0,5}\d+\.\s{1}[^\n]+\n\s{0,15}\d+\.\s/,/\n{2} {0,3}-{2,48}\n{2}/,/(?:\n|^)(```|~~~|\$\$)(?!`|~)[^\s]{0,64} {0,64}[^\n]{0,64}\n[\s\S]{0,9999}?\s*\1 {0,64}(?:\n+|$)/,/(?:\n|^)(?!\s)\w[^\n]{0,64}\n(-|=)\1{0,64}\n\n\s{0,64}(\w|$)/,/(?:^|(\r?\n\r?\n))( {0,3}>[^\n]{1,333}\n){1,999}($|(\r?\n))/],Hs=e=>e.split(`
|
|
22
|
+
`).some(n=>{const t=n.trim();return t.length>2&&t.startsWith("|")&&t.endsWith("|")}),Fs=e=>Bs.some(n=>n.test(e))||Hs(e),$s=e=>e.endsWith(`\r
|
|
23
|
+
`)?{body:e.slice(0,-2),ending:`\r
|
|
24
|
+
`}:e.endsWith(`
|
|
25
|
+
`)||e.endsWith("\r")?{body:e.slice(0,-1),ending:e.slice(-1)}:{body:e,ending:""},Gt=(e,n,t)=>{let s=n;for(;e[s]===t;)s+=1;return s-n},Jt=e=>{const n=e.slice(2,-1),t=n[0]?.toLowerCase()==="x",s=Number.parseInt(t?n.slice(1):n,t?16:10);return!Number.isSafeInteger(s)||s<0||s>1114111?e:String.fromCodePoint(s)},Is=e=>{const n=e.replace(Qt,Jt),t=e.toLowerCase();let s=0,r=`${mt}${s}${ht}`;for(;e.includes(r)||t.includes(encodeURIComponent(r).toLowerCase())||n.includes(r);)s+=1,r=`${mt}${s}${ht}`;return r},Us=(e,n,t)=>t-n>2?!1:Xt(e,n)&&Zs(e,t),gt=(e,n)=>{let t=n;for(;t>0&&qt.test(e[t-1]??"");)t-=1;return{start:t,token:e.slice(t,n)}},zs=(e,n)=>{let t=n;for(;t<e.length&&qt.test(e[t]??"");)t+=1;return e.slice(n,t)},Xt=(e,n)=>{const t=gt(e,n);if(We.test(t.token))return!0;if(!t.token)return!1;let s=t.start;for(;s>0&&(e[s-1]===" "||e[s-1]===" ");)s-=1;return s===t.start?!1:We.test(gt(e,s).token)},Zs=(e,n)=>We.test(zs(e,n)),en=e=>{const n=[],t=new Set;for(const s of e.matchAll(Yt)){const r=s.index,i=s[0].length,l=r+i;if(i>2)continue;const c=l<e.length&&!/\s/u.test(e[l]??""),f=r>0&&!/\s/u.test(e[r-1]??"");if(Us(e,r,l)){if(f&&t.delete(i))continue;n.push({length:i,start:r});continue}f&&t.delete(i)||c&&Xt(e,r)&&t.add(i)}return n},He=(e,n)=>{let t="",s=0;const r=new Set(en(e).map(i=>i.start));for(const i of e.matchAll(Yt)){const l=i.index,c=l+i[0].length;t+=e.slice(s,l),t+=r.has(l)?n.repeat(i[0].length):i[0],s=c}return t+e.slice(s)},Ws=e=>{const n=e.slice(1,-1),t=/^[a-z][a-z0-9.+-]{1,31}:[^\s<>]*$/i.test(n)||/^[^\s@<>]+@[^\s@<>]+\.[^\s@<>]+$/.test(n),s=/^<\/?[a-z][\w:-]*(?:\s[^<>]*)?\/?\s*>$/i.test(e)||/^<![^<>]*>$/.test(e);return t||s},Vs=(e,n)=>{let t="",s=0;for(const r of e.matchAll(_s)){const i=r.index;t+=He(e.slice(s,i),n),t+=Ws(r[0])?r[0]:He(r[0],n),s=i+r[0].length}return t+He(e.slice(s),n)},tn=e=>en(e).length>0,Ks=e=>{if(!tn(e))return st(e);const n=Is(e),t=Vs(e,n),s=encodeURIComponent(n);return st(t).split(n).join("~").split(s).join("~")},Ys=(e,n)=>{let t=0;for(let s=n-1;s>=0&&e[s]==="\\";s-=1)t+=1;return t%2===1},qs=(e,n,t)=>{let s=n+t;for(;s<e.length;){const r=e.indexOf("`",s);if(r===-1)return null;const i=Gt(e,r,"`");if(i===t)return r+i;s=r+i}return null},Qs=(e,n)=>{let t=e.indexOf("`",n);for(;t!==-1;){const s=Gt(e,t,"`");if(!Ys(e,t)){const r=qs(e,t,s);if(r!==null)return{start:t,end:r}}t=e.indexOf("`",t+s)}return null},Gs=(e,n)=>{let t="",s=0;for(;s<e.length;){const r=Qs(e,s);if(!r){t+=n(e.slice(s));break}t+=n(e.slice(s,r.start)),t+=e.slice(r.start,r.end),s=r.end}return t},nn=(e,n)=>{let t=null;return e.split(new RegExp("(?<=\\n)")).map(s=>{const{body:r,ending:i}=$s(s);if(t)return new RegExp(`^ {0,3}${t.marker}{${t.length},} *$`).test(r)&&(t=null),s;const l=r.match(Ls)?.[1];return l?(t={marker:l[0],length:l.length},s):`${Gs(r,n)}${i}`}).join("")},Js=(e,n)=>{let t=0;for(let s=n;s<e.length;s+=1){const r=e[s];if(r==="\\"){s+=1;continue}if(r==="("){t+=1;continue}if(r===")"){if(t>0){t-=1;continue}return s}}return null},rn=e=>{let n="",t=0;for(;t<e.length;){const s=e.indexOf("](",t);if(s===-1){n+=e.slice(t);break}const r=s+2,i=Js(e,r);if(i===null){n+=e.slice(t);break}n+=e.slice(t,r),n+=e.slice(r,i).split("\\&").join("&"),n+=")",t=i+1}return n},Xs=(e,n)=>{const t=e[n-1];if(t!=="*"&&t!=="_")return!1;let s=n-1;for(;s>0&&e[s-1]===t;)s-=1;const r=e.slice(s,n),i=e.lastIndexOf(r,s-1);return i!==-1&&i+r.length<s},ea=(e,n)=>{const t=e[n];if(t!=="*"&&t!=="_")return!1;let s=n+1;for(;s<e.length&&e[s]===t;)s+=1;const r=e.slice(n,s),i=e.indexOf(r,s);return i!==-1&&s<i},ta=(e,n,t)=>Xs(e,n)||ea(e,n+t),na=e=>nn(e,n=>{const t=n.replace(Qt,(s,r,i)=>ta(i,r,s.length)?Jt(s):s);return rn(t)}),ra=e=>nn(e,rn),sa=e=>{const n=e.getData("text/plain");n&&(e.setData("text/markdown",n),e.setData("text/plain",na(n)))},aa=({event:e,editor:n,defaultPasteHandler:t})=>{const s=e.clipboardData;if(!s||n.getTextCursorPosition().block.type==="codeBlock")return t();const r=Array.from(s.types);if(r.some(c=>Os.has(c)))return t();const i=r.includes("text/markdown"),l=s.getData(i?"text/markdown":"text/plain");return!l||!tn(l)||!i&&r.includes("text/html")&&!Fs(l)?t():(n.pasteHTML(Ks(l)),!0)},oa=new Set(["tableOfContents"]),ia="OCEAN_BRAIN_TAG_",ca="_TOKEN",la=e=>`${ia}${e}${ca}`,da=e=>!Array.isArray(e)&&e?.type==="tableContent",ua=(e,n)=>Array.isArray(e)?e.map(n):da(e)?{...e,rows:e.rows?.map(t=>({...t,cells:t.cells?.map(s=>({...s,content:s.content?.map(n)}))}))}:e,sn=(e,n)=>e.filter(t=>!oa.has(t.type)).map(t=>({...t,content:n(t.content),children:t.children?.length?sn(t.children,n):[]}));function fa(e){const n=new Map;let t=0;return{blocks:sn(e,r=>ua(r,i=>{if(i.type==="reference"){const l=String(i.props?.id||""),c=String(i.props?.title||i.props?.id||"");return{type:"text",text:l?`[[${c}]](note:${l})`:`[[${c}]]`,styles:{}}}if(i.type==="tag"){const l=i.props?.tag||"",c=la(t);return t+=1,n.set(c,l),{type:"text",text:c,styles:{}}}return i})),placeholderToTag:n}}function pa(e,n){let t=e;for(const[s,r]of n.entries())t=t.split(s).join(`[${r}]`);return t}async function ma(e){return new Promise((n,t)=>{const s=new FileReader;s.readAsDataURL(e),s.onload=()=>n(s.result),s.onerror=r=>t(r)})}const ha=o.forwardRef(({content:e,currentNoteId:n,editable:t,onChange:s},r)=>{const{theme:i}=vt(d=>d),l=Re(),c=sr({schema:Ms,initialContent:e&&JSON.parse(e)||void 0,pasteHandler:d=>aa(d),uploadFile:async(d,m)=>{const g=()=>{m&&c.getBlock(m)&&c.removeBlocks([m])};if(!ss(d.type))throw g(),l(ct),new Error(ct);try{return await or({base64:await ma(d)})}catch(b){throw g(),l(rs),b}}},[l]);o.useImperativeHandle(r,()=>({getContent:()=>JSON.stringify(c.document),getMarkdown:()=>{const d=fa(c.document),m=c.blocksToMarkdownLossy(d.blocks);return ra(pa(m,d.placeholderToTag))},getHtml:()=>c.blocksToHTMLLossy(c.document)}));const f=d=>{sa(d.clipboardData)};return a.jsxs(ar,{slashMenu:!1,theme:i,editor:c,editable:t,onChange:s,onCopy:f,onCut:f,children:[a.jsx(Xr,{editor:c}),a.jsx(ts,{currentNoteId:n,onClick:d=>{c.insertInlineContent([d," "])}}),a.jsx(Ps,{onClick:d=>{c.insertInlineContent([d," "])}})]})}),ga=({event:e,noteId:n,editSessionId:t,loadedUpdatedAt:s,acceptedUpdatedAt:r,hasUnsavedChanges:i})=>{if(e.noteId!==n||e.type==="mcp.note.created")return{type:"ignore"};if(e.source==="web"&&e.editSessionId===t)return{type:"ignore"};if(e.type==="mcp.note.deleted")return{type:"notify",change:{type:"deleted",source:e.source},shouldPauseSave:!1};const l=Ne(e.updatedAt,s),c=Ne(e.updatedAt,r);return l!==null&&l<=0||c!==null&&c<=0?{type:"ignore"}:{type:"notify",change:{type:"updated",updatedAt:e.updatedAt,source:e.source},shouldPauseSave:i}},xa=({change:e,isConflict:n,loadedUpdatedAt:t})=>e?!(e.type==="updated"&&!n&&e.updatedAt===t):!1;function ba({allowNextNavigationRef:e,hasExternalPendingChanges:n,saveStatus:t,flushPendingChanges:s,notify:r}){const i=o.useCallback(async()=>{if(e.current)return e.current=!1,!1;if(t==="conflict")return r("Resolve the note conflict before leaving."),!0;const l=await s();return l==="error"?(r("Save failed. Stay on this note and try again."),!0):l==="conflict"},[e,s,r,t]);xr({disabled:t==="saved"&&!n,enableBeforeUnload:!1,shouldBlockFn:i})}const Xe=e=>`ocean-brain.note-draft.${e}`,ya=e=>{if(typeof window>"u")return null;try{const n=window.localStorage.getItem(Xe(e));if(!n)return null;const t=JSON.parse(n);return typeof t.title!="string"||typeof t.content!="string"||typeof t.baseUpdatedAt!="string"?null:{title:t.title,content:t.content,baseUpdatedAt:t.baseUpdatedAt,createdAt:typeof t.createdAt=="number"?t.createdAt:Date.now(),...t.layout==="narrow"||t.layout==="wide"||t.layout==="full"?{layout:t.layout}:{}}}catch{return null}},Fe=(e,n)=>{if(!(typeof window>"u"))try{window.localStorage.setItem(Xe(e),JSON.stringify(n))}catch{}},$e=e=>{if(!(typeof window>"u"))try{window.localStorage.removeItem(Xe(e))}catch{}},va=1e3,wa="NOTE_UPDATE_CONFLICT";function Ca({noteId:e,initialContent:n,initialUpdatedAt:t,editSessionIdRef:s,getContent:r,beforeSave:i,hasExternalPendingChanges:l,serverVersionRef:c,executeWrite:f,onSaved:d,onConflict:m,onError:g}){const b=Ke(),u=o.useRef(null),h=o.useRef(null),v=o.useRef(!1),N=o.useRef(null),R=o.useRef(!1),A=o.useRef(t),w=c??A,p=o.useRef(0),y=o.useRef(!1),T=o.useRef(!0),F=o.useRef(d),M=o.useRef(m),V=o.useRef(g),xe=o.useRef(i),X=o.useRef(l),me=o.useRef(f),[re,ee]=o.useState("saved"),[ke,le]=o.useState(null),$=o.useCallback(()=>{u.current!==null&&(window.clearTimeout(u.current),u.current=null)},[]),_=o.useCallback(E=>{T.current&&ee(E)},[]),Te=o.useCallback(E=>{w.current=E},[]),be=o.useCallback((E,O={})=>({title:E,content:r()??n,createdAt:Date.now(),baseUpdatedAt:w.current,...O.layout?{layout:O.layout}:{}}),[r,n]),de=o.useCallback(()=>{h.current&&Fe(e,h.current)},[e]),se=o.useCallback(E=>{y.current=!0,_("conflict"),M.current(E??w.current)},[_]),P=o.useCallback(async({ignoreConflict:E=!1,silent:O=!1}={})=>{if(v.current)return R.current=!0,N.current??"idle";const De=h.current!==null,ae=X.current?.()??!1;if(!De&&!ae)return R.current=!1,"idle";const I=p.current;R.current=!1,$(),v.current=!0,O||_("saving");const H=(async()=>{const ue=await xe.current?.()??"idle";if(I!==p.current)return"idle";if(ue==="error")return v.current=!1,N.current=null,h.current?_("error"):_("saved"),"error";const D=h.current;if(!D)return v.current=!1,N.current=null,_("saved"),ue;h.current=null;const q=async()=>{if(I!==p.current)return"idle";let Z;try{Z=await Ue({id:e,title:D.title,content:D.content,...D.layout?{layout:D.layout}:{},editSessionId:s.current,...E?{force:!0}:{expectedUpdatedAt:w.current}})}catch{Z={type:"error",category:"network",errors:[{code:"NETWORK_ERROR",message:"Failed to save note."}]}}if(I!==p.current)return"idle";if(Z.type==="error"){v.current=!1,N.current=null,h.current||(h.current=D),de();const U=Z.errors[0];if(U.code===wa&&!E){const oe=U.details?.extensions?.currentUpdatedAt;return y.current=!0,!O&&T.current&&(_("conflict"),M.current(oe??w.current)),"conflict"}return!O&&T.current&&(_("error"),V.current(U.message)),"error"}const ve=!O&&T.current,J=L.notes.detail(e);if(await b.cancelQueries({queryKey:J,exact:!0}),I!==p.current)return"idle";v.current=!1,N.current=null,y.current=!1,w.current=Z.updateNote.updatedAt,ve&&F.current(Z.updateNote.updatedAt),b.setQueryData(J,U=>U&&{...U,title:Z.updateNote.title,content:D.content,...D.layout?{layout:D.layout}:{},updatedAt:Z.updateNote.updatedAt}),St({noteId:e,updatedAt:Z.updateNote.updatedAt,editSessionId:s.current});const fe=h.current;return fe?.baseUpdatedAt===D.baseUpdatedAt?(h.current={...fe,baseUpdatedAt:Z.updateNote.updatedAt},de()):fe||$e(e),h.current||Rt(b),ve&&(h.current?ee("pending"):ee("saved")),"saved"},z=me.current?await me.current(q):await q();return z?z==="saved"&&(h.current||R.current)?P({silent:O}):z:(h.current||(h.current=D),de(),v.current=!1,N.current=null,_("pending"),"idle")})();return N.current=H,H},[$,s,e,de,b,w,_]),te=o.useCallback((E,O={})=>{if(h.current=E,Fe(e,E),y.current){_("conflict");return}if(_("pending"),$(),O.immediate){P();return}u.current=window.setTimeout(()=>{P()},va)},[$,P,e,_]),ne=o.useCallback(E=>{if(h.current=E,Fe(e,E),le(null),E.baseUpdatedAt!==w.current){se(w.current);return}te(E)},[e,te,se]),ye=o.useCallback(()=>{p.current+=1,$(),h.current=null,v.current=!1,N.current=null,R.current=!1,y.current=!1,$e(e),le(null),ee("saved")},[$,e]),Me=o.useCallback(()=>{$(),N.current=null,R.current=!1,y.current=!1,_(h.current?"pending":"saved")},[$,_]),Q=o.useCallback(()=>{$e(e),le(null)},[e]),Y=o.useCallback(()=>h.current,[]),K=o.useCallback(E=>{$(),se(E)},[$,se]);return o.useEffect(()=>{xe.current=i,me.current=f,X.current=l,M.current=m,V.current=g,F.current=d},[i,f,l,m,g,d]),o.useEffect(()=>(T.current=!0,()=>{T.current=!1}),[]),o.useEffect(()=>{h.current||v.current||y.current||(w.current=t,ee("saved"))},[t]),o.useEffect(()=>{p.current+=1,h.current=null,v.current=!1,N.current=null,R.current=!1,y.current=!1,w.current=t,le(ya(e)),ee("saved")},[e]),o.useEffect(()=>{const E=O=>{!h.current&&!v.current&&!y.current&&!X.current?.()||(O.preventDefault(),O.returnValue="")};return window.addEventListener("beforeunload",E),()=>{window.removeEventListener("beforeunload",E)}},[]),o.useEffect(()=>()=>{$(),h.current&&!y.current&&P({silent:!0})},[$,P]),{saveStatus:re,localDraft:ke,serverUpdatedAtRef:w,hasUnsavedChanges:re!=="saved",buildDraft:be,queueSave:te,flushPendingSave:P,restoreLocalDraft:ne,discardLocalDraft:Q,clearDrafts:ye,resolveConflict:Me,pauseForConflict:K,getPendingDraft:Y,setServerUpdatedAt:Te}}function Na(){const e=o.useRef(Promise.resolve()),n=o.useRef(0),t=o.useRef(0),[s,r]=o.useState(!1),i=o.useCallback(d=>{t.current+=1,r(!0);const m=n.current,g=()=>m===n.current?d():void 0,b=e.current.then(g,g);e.current=b.then(()=>{},()=>{});const u=()=>{t.current-=1,t.current===0&&r(!1)};return b.then(u,u),b},[]),l=o.useCallback(()=>{n.current+=1},[]),c=o.useCallback(()=>e.current,[]),f=o.useCallback(()=>t.current>0,[]);return o.useMemo(()=>({execute:i,invalidatePending:l,drain:c,isBusy:s,hasPendingWrites:f}),[c,i,f,l,s])}const Sa="NOTE_UPDATE_CONFLICT",Ie=e=>{const n=ge(e);return G(n??Number(e)).format("YYYY-MM-DD HH:mm:ss")},Ra=e=>e?.extensions?.currentUpdatedAt;function ja({noteId:e,navigateToNote:n,notify:t}){const s=Ke(),r=o.useRef(null),i=o.useRef(null),[l]=o.useState(at),c=o.useRef(l),f=o.useRef(null),d=o.useRef(null),m=o.useRef(!1),g=o.useRef(0),b=Ve({queryKey:L.notes.detail(e),queryFn:async()=>{const x=await Dn(e);if(x.type==="error")throw x;return x.note},gcTime:0}),u=b.data,h=b.refetch,v=o.useRef(u.updatedAt),N=o.useRef(u.updatedAt),[R,A]=o.useState(u.title),[w,p]=o.useState(u.pinned),[y,T]=o.useState(u.layout||"wide"),F=o.useRef(y),[M,V]=o.useState(null),[xe,X]=o.useState(null),[me,re]=o.useState(0),[ee,ke]=o.useState(()=>Ie(u.updatedAt)),[le,$]=o.useState(u.updatedAt),[_,Te]=o.useState(0),[be,de]=o.useState(!1),se=o.useRef(!1),{execute:P,invalidatePending:te,drain:ne,isBusy:ye,hasPendingWrites:Me}=Na(),Q=o.useCallback(x=>{F.current=x,T(x)},[]),Y=o.useCallback((x,C={})=>{v.current=x,N.current=x,ke(Ie(x)),$(x),C.confirmSave&&Te(j=>j+1)},[]),K=o.useCallback(async({updatedAt:x,patch:C,confirmSave:j=!0})=>{const pe=L.notes.detail(e),_e=g.current;return await s.cancelQueries({queryKey:pe,exact:!0}),_e!==g.current?!1:(Y(x,{confirmSave:j}),s.setQueryData(pe,Oe=>Oe&&{...Oe,...C,updatedAt:x}),St({noteId:e,updatedAt:x,editSessionId:c.current}),Rt(s),!0)},[Y,e,s]),E=o.useCallback(x=>{se.current=x,de(x)},[]),O=o.useCallback(()=>f.current?.flushPendingSave({expectedUpdatedAt:v.current})??Promise.resolve("idle"),[]),De=Ca({noteId:e,initialContent:u.content,initialUpdatedAt:u.updatedAt,editSessionIdRef:c,serverVersionRef:v,executeWrite:P,getContent:()=>r.current?.getContent(),beforeSave:O,hasExternalPendingChanges:()=>se.current||Me(),onSaved:x=>{d.current=null,Y(x,{confirmSave:!0})},onConflict:x=>{V({type:"updated",updatedAt:x,source:"unknown"}),t("This note changed elsewhere. Choose how to resolve the draft.")},onError:t}),{saveStatus:ae,localDraft:I,serverUpdatedAtRef:H,hasUnsavedChanges:ue,buildDraft:D,queueSave:q,flushPendingSave:z,restoreLocalDraft:Z,discardLocalDraft:ve,clearDrafts:J,resolveConflict:fe,pauseForConflict:U,getPendingDraft:oe}=De,we=ue||be||ye,et=o.useCallback(async x=>{const C=await z(x);return C==="error"||C==="conflict"||await ne(),C},[ne,z]),on=o.useCallback(x=>P(async()=>{const C=await Pn({...x,expectedUpdatedAt:v.current});return C.type==="success"&&await K({updatedAt:C.updateNoteProperties.updatedAt,patch:{properties:C.updateNoteProperties.properties}}),C}),[K,P]);ba({allowNextNavigationRef:m,hasExternalPendingChanges:be||ye,saveStatus:ae,flushPendingChanges:et,notify:t}),o.useEffect(()=>{if(we){u.updatedAt!==H.current&&(Ne(u.updatedAt,H.current)??0)>0&&U(u.updatedAt);return}const x=N.current;if(!(x&&u.updatedAt!==x&&(Ne(u.updatedAt,x)??0)<0)&&(p(u.pinned),Q(u.layout||"wide"),A(u.title),x!==u.updatedAt)){const C=r.current?.getContent();Y(u.updatedAt),(C===void 0||C!==u.content)&&(X(null),re(j=>j+1))}},[Y,we,u.content,u.layout,u.pinned,u.title,u.updatedAt,U,H]),o.useEffect(()=>{M?.type!=="updated"||ae==="conflict"||M.updatedAt!==u.updatedAt||(Y(u.updatedAt),V(null))},[Y,M,u.updatedAt,ae]),o.useEffect(()=>zn(x=>{const C=ga({event:x,noteId:e,editSessionId:c.current,loadedUpdatedAt:u.updatedAt,acceptedUpdatedAt:H.current,hasUnsavedChanges:we});C.type!=="ignore"&&(C.shouldPauseSave&&C.change.type==="updated"&&U(C.change.updatedAt),V(C.change))}),[we,u.updatedAt,e,U,H]);const cn=o.useCallback(()=>{q(D(R))},[D,q,R]),ln=o.useCallback(x=>{A(x),q(D(x))},[D,q]),dn=o.useCallback(()=>{q(D(R),{immediate:!0})},[D,q,R]),un=o.useCallback(async x=>{if(ue){Q(x),q(D(R,{layout:x}),{immediate:!0}),t("Layout will be saved with your draft.");return}const C=await z();C==="error"||C==="conflict"||await P(async()=>{const j=await Ue({id:e,layout:x,editSessionId:c.current,expectedUpdatedAt:H.current});if(j.type==="error"){j.errors[0].code===Sa&&(d.current=x,Q(x),U(Ra(j.errors[0].details)??H.current)),t(j.errors[0].message);return}await K({updatedAt:j.updateNote.updatedAt,patch:{layout:x}})&&(d.current=null,Q(x),t("Layout has been updated."))})},[K,D,P,z,ue,e,t,U,q,H,R]),fn=o.useCallback(async()=>{const x=await z();if(x==="error"||x==="conflict")return;const C=!w;await P(async()=>{const j=await Ln(e,C);if(j.type==="error"){t(j.errors[0].message);return}await K({updatedAt:j.pinNote.updatedAt,patch:{pinned:C},confirmSave:!1})&&p(C)})},[K,P,z,w,e,t]),Pe=o.useCallback(()=>({id:e,title:R,createdAt:u.createdAt,updatedAt:H.current||u.updatedAt}),[u.createdAt,u.updatedAt,e,H,R]),pn=o.useCallback(async()=>{const x=r.current?.getMarkdown();if(x===void 0){t("Markdown is not ready yet.");return}try{await navigator.clipboard.writeText(Ut(x,Pe())),t("Copied note as Markdown.")}catch{t("Failed to copy Markdown.")}},[Pe,t]),mn=o.useCallback(async()=>{f.current?.invalidateInFlightSave(),te(),await ne(),g.current+=1;const x=await h();if(x.error||!x.data){t("Failed to reload the latest note state.");return}f.current?.discardPendingChanges(),J(),d.current=null,Y(x.data.updatedAt),A(x.data.title),Q(x.data.layout||"wide"),X(null),re(C=>C+1),V(null)},[J,Y,ne,te,t,h]),hn=o.useCallback(async()=>{if(oe()){d.current=null,V(null),await z({ignoreConflict:!0});return}const C=d.current;if(!C){V(null),await z({ignoreConflict:!0});return}await P(async()=>{const j=await Ue({id:e,layout:C,editSessionId:c.current,force:!0});if(j.type==="error"){t(j.errors[0].message);return}await K({updatedAt:j.updateNote.updatedAt,patch:{layout:C}})&&(d.current=null,fe(),V(null),Q(C))})},[K,P,z,oe,e,t,fe]),gn=o.useCallback(async()=>{const x=oe();if(!x||await O()==="error")return;const j=await _n({title:tt(x.title||"untitled"),content:tt(x.content),layout:x.layout??y});if(j.type==="error"){t(j.errors[0].message);return}m.current=!0,d.current=null,V(null),J(),Promise.resolve(n(j.createNote.id)).finally(()=>{m.current=!1})},[J,O,oe,y,n,t]),xn=o.useCallback(()=>{I&&(A(I.title),I.layout&&Q(I.layout),X(I.content),re(x=>x+1),Z(I))},[I,Z]),bn=o.useCallback(()=>{},[]),yn=o.useCallback(async x=>(f.current?.invalidateInFlightSave(),te(),await ne(),g.current+=1,P(async()=>{const C=await On(x,H.current);if(C.type==="error")return C;const j=C.restoreNoteSnapshot;return await K({updatedAt:j.updatedAt,patch:{title:j.title,content:j.content,layout:j.layout,pinned:j.pinned}})&&(c.current=at(),f.current?.discardPendingChanges(),J(),d.current=null,V(null),A(j.title),Q(j.layout||"wide"),p(j.pinned),X(j.content),re(_e=>_e+1)),C})),[K,J,ne,P,te]),Le=ae==="conflict"&&M?.type==="updated",vn=Le?oe():null;return{document:{title:R,titleRef:i,isPinned:w,layout:y,getLayout:()=>F.current,properties:u.properties,createdAt:Ie(u.createdAt),onTitleChange:ln,onLayoutSave:un,onTogglePinned:fn},editor:{ref:r,key:`${e}:${me}`,content:xe??u.content,getContent:()=>r.current?.getContent()??"",getHtml:()=>r.current?.getHtml(),getMarkdown:()=>r.current?.getMarkdown(),onChange:cn},save:{status:ae,lastSavedAt:ee,lastSavedVersion:le,confirmationRevision:_,onManualSave:dn,flushPendingChanges:et},recovery:{localDraftCreatedAt:I?G(I.createdAt).format("YYYY-MM-DD HH:mm:ss"):null,onRestoreLocalDraft:xn,onDiscardLocalDraft:ve,onClonePendingDraft:gn},externalChange:{value:M,isConflict:Le,hasConflictDraft:vn!==null,isBlocking:xa({change:M,isConflict:Le,loadedUpdatedAt:u.updatedAt}),isReloading:b.isRefetching,onReload:mn,onOverwrite:hn},properties:{ref:f,expectedUpdatedAt:H.current,editSessionId:c.current,saveProperties:on,onPendingChange:E,onSaved:bn},exportDocument:{metadata:Pe(),onCopyMarkdown:pn},snapshots:{restore:yn}}}const an=Bn(Ae),Aa={narrow:"max-w-[640px]",wide:"max-w-[896px]",full:"max-w-full px-4"},Ea=a.jsx(qe,{title:"Loading note",variant:"none",children:a.jsxs("main",{className:"mx-auto max-w-[896px]",children:[a.jsx(ie,{className:"mb-8",height:123}),a.jsxs("div",{className:"flex flex-col gap-5",children:[a.jsx(ie,{height:135}),a.jsx(ie,{className:"ml-12",height:320}),a.jsx(ie,{height:107}),a.jsx(ie,{height:100})]})]})});function ka({noteId:e}){return a.jsx(Ye,{fallback:a.jsx(ie,{height:107}),errorTitle:"Failed to load reminders",errorDescription:"Retry loading reminder details for this note.",renderError:({error:n,retry:t})=>a.jsx(Qe,{title:"Failed to load reminders",description:"Retry loading reminder details for this note.",error:n,onRetry:t,showBackAction:!1,showHomeAction:!1}),children:a.jsx(Gr,{noteId:e})})}function Ta({noteId:e}){return a.jsx(Ye,{fallback:a.jsx(ie,{height:100}),errorTitle:"Failed to load back references",errorDescription:"Retry loading notes that link back here.",renderError:({error:n,retry:t})=>a.jsx(Qe,{title:"Failed to load back references",description:"Retry loading notes that link back here.",error:n,onRetry:t,showBackAction:!1,showHomeAction:!1}),children:a.jsx(Cr,{noteId:e,render:n=>n?.length?a.jsx(At,{icon:a.jsx(fr,{className:"h-3.5 w-3.5"}),title:"Back References",children:a.jsx("ul",{className:"flex flex-col",children:n.map(t=>a.jsx("li",{children:a.jsxs(Hn,{to:Ae,params:{id:t.id},className:"flex items-center gap-2 rounded-[10px] px-2.5 py-1.5 text-fg-secondary transition-colors hover:bg-hover-subtle hover:text-fg-default",children:[a.jsx(hr,{className:"h-3.5 w-3.5 shrink-0 text-fg-tertiary"}),a.jsx(S,{as:"span",variant:"body",weight:"medium",className:"text-current",children:t.title})]})},t.id))})}):null})})}function Ma({id:e}){const n=Re(),t=an.useNavigate(),[s,r]=o.useState(!1),[i,l]=o.useState(!1),[c,f]=o.useState(!1),d=ja({noteId:e,notify:n,navigateToNote:M=>t({to:Ae,params:{id:M}})}),{onCreate:m,onDelete:g,deleteWarningDialog:b}=Zn(),{document:u,editor:h,save:v,recovery:N,externalChange:R,properties:A,exportDocument:w,snapshots:p}=d,y=()=>t({to:qn,search:{page:1}}),T=async()=>{const M=await v.flushPendingChanges();M==="error"||M==="conflict"||await g(e,y)},F=async()=>{const M=await v.flushPendingChanges();M==="error"||M==="conflict"||await m(u.titleRef.current?.value||"untitled",h.getContent(),u.getLayout())};return a.jsx(qe,{title:u.title,variant:"none",children:a.jsxs("main",{className:W("mx-auto",Aa[u.layout]),children:[a.jsx(Er,{title:u.title,titleRef:u.titleRef,isPinned:u.isPinned,createdAt:u.createdAt,saveStatus:v.status,savedAt:v.lastSavedAt,savedVersion:v.lastSavedVersion,saveConfirmationRevision:v.confirmationRevision,onTitleChange:u.onTitleChange,onCopyMarkdown:()=>{w.onCopyMarkdown()},onDownloadDocument:()=>f(!0),onTogglePinned:()=>{u.onTogglePinned()},onChangeLayout:()=>r(!0),onCloneNote:()=>{F()},onRestoreVersion:()=>l(!0),onDelete:()=>{T()},onSave:v.onManualSave}),a.jsx(qr,{localDraftCreatedAt:N.localDraftCreatedAt,hasSaveError:v.status==="error",onRestoreDraft:N.onRestoreLocalDraft,onDiscardDraft:N.onDiscardLocalDraft,onRetrySave:v.onManualSave,onSaveAsNewNote:()=>{N.onClonePendingDraft()}}),a.jsxs("div",{className:"flex flex-col gap-5",children:[a.jsx(Kn,{ref:A.ref,noteId:e,properties:u.properties,expectedUpdatedAt:A.expectedUpdatedAt,editSessionId:A.editSessionId,disabled:v.status!=="saved",saveProperties:A.saveProperties,onPendingChange:A.onPendingChange,onSaved:A.onSaved}),a.jsx(ha,{ref:h.ref,content:h.content,currentNoteId:e,onChange:h.onChange},h.key),a.jsx(ka,{noteId:e}),a.jsx(Ta,{noteId:e})]}),a.jsx(Rr,{isOpen:s,onClose:()=>r(!1),onSave:u.onLayoutSave,currentLayout:u.layout}),a.jsx(Yr,{isOpen:R.isBlocking,isDeleted:R.value?.type==="deleted",isConflict:R.isConflict,hasDraft:R.hasConflictDraft,source:R.value?.source??"unknown",isReloading:R.isReloading,onReload:()=>{R.onReload()},onOverwrite:()=>{R.onOverwrite()},onCloneDraft:()=>{N.onClonePendingDraft()},onOpenTrash:()=>{y()}}),a.jsx(Wr,{isOpen:c,metadata:w.metadata,getHtml:h.getHtml,getMarkdown:h.getMarkdown,onClose:()=>f(!1)}),a.jsx(Qr,{isOpen:i,noteId:e,onClose:()=>l(!1),restoreSnapshot:p.restore}),b]})})}function Ga(){const{id:e}=an.useParams();if(!e)throw new Error("Note id is required.");return a.jsx(Ye,{fallback:Ea,errorTitle:"Failed to load note",errorDescription:"Retry loading the note editor.",resetKeys:[e],renderError:({error:n,retry:t})=>a.jsx(qe,{title:"Note",variant:"none",children:a.jsx(Qe,{title:"Failed to load note",description:"Retry loading the note editor.",error:n,onRetry:t})}),children:a.jsx(Ma,{id:e},e)})}export{Ma as NoteContent,Ga as default};
|