ocean-brain 0.7.4 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +3 -3
- package/dist/mcp.js +180 -736
- package/package.json +4 -1
- package/server/client/dist/assets/ArrowRight.es-C4zlc54Z.js +1 -0
- package/server/client/dist/assets/{Calendar-Bz7jheg6.js → Calendar-COrN6Hjv.js} +2 -2
- package/server/client/dist/assets/Callout-BK0K9E74.js +1 -0
- package/server/client/dist/assets/Copy.es-zm8f_XXX.js +1 -0
- package/server/client/dist/assets/Graph-BH1fzhue.js +1 -0
- package/server/client/dist/assets/{Image-DxWhlIDG.js → Image-KXuHOG4b.js} +1 -1
- package/server/client/dist/assets/Image.es-BKahRbIm.js +1 -0
- package/server/client/dist/assets/Note-C143cKKw.js +12 -0
- package/server/client/dist/assets/Plus.es-BqeC8T8h.js +1 -0
- package/server/client/dist/assets/Reminders-BYG5rz1M.js +1 -0
- package/server/client/dist/assets/Search-DBWsIMDP.js +1 -0
- package/server/client/dist/assets/{SurfaceCard-CfL1jD-O.js → SurfaceCard-CNSQfYfM.js} +1 -1
- package/server/client/dist/assets/Tag-5aCfSO8Y.js +1 -0
- package/server/client/dist/assets/TagNotes-BPZjN-6l.js +1 -0
- package/server/client/dist/assets/Trash.es-CRQkTnXZ.js +1 -0
- package/server/client/dist/assets/ViewNotes-DGLNF96x.js +1 -0
- package/server/client/dist/assets/ViewSectionDialog-CzskgmMF.js +102 -0
- package/server/client/dist/assets/Views-DR5jT23G.js +1 -0
- package/server/client/dist/assets/{graph-vendor-CUxe67Lr.js → graph-vendor-UTvF2NS_.js} +2 -2
- package/server/client/dist/assets/image.api-8dlMwzMd.js +17 -0
- package/server/client/dist/assets/{index-C5BGzDgt.css → index-BEUqDuAZ.css} +1 -1
- package/server/client/dist/assets/{index-DiMt3Dz4.js → index-DGIAh3ZY.js} +1 -1
- package/server/client/dist/assets/index-VHp17GQX.js +342 -0
- package/server/client/dist/assets/manage-image-RqtWKas2.js +1 -0
- package/server/client/dist/assets/{manage-image-detail-Bqw8NURO.js → manage-image-detail-BTSIbLlQ.js} +1 -1
- package/server/client/dist/assets/mcp-EDurbggR.js +4 -0
- package/server/client/dist/assets/mcp-admin-adapter-DmGUo5G8.js +1 -0
- package/server/client/dist/assets/{note-core-Z6kqulGB.js → note-core-BklwyZHk.js} +1 -1
- package/server/client/dist/assets/{note-vendor-i1M2FSI2.js → note-vendor-DkYKUmLo.js} +1 -1
- package/server/client/dist/assets/{placeholder-Ro00byT7.js → placeholder-DeKgSBnC.js} +4 -4
- package/server/client/dist/assets/{properties-Tid6-ghT.js → properties-BjrZvOYn.js} +1 -1
- package/server/client/dist/assets/tag.api-Dl8DQd0m.js +21 -0
- package/server/client/dist/assets/trash-C5ntddLu.js +1 -0
- package/server/client/dist/assets/{useReminderMutate-BWymIujb.js → useReminderMutate-CoXXqJY2.js} +1 -1
- package/server/client/dist/index.html +5 -5
- package/server/dist/app.js +2 -2
- package/server/dist/app.js.map +1 -1
- package/server/dist/features/auth/http/api.js +5 -1
- package/server/dist/features/auth/http/api.js.map +1 -1
- package/server/dist/features/auth/http/login-page.js +1 -1
- package/server/dist/features/auth/http/pages.js +8 -1
- package/server/dist/features/auth/http/pages.js.map +1 -1
- package/server/dist/features/auth/service.js +16 -7
- package/server/dist/features/auth/service.js.map +1 -1
- package/server/dist/features/image/http/upload.js +34 -23
- package/server/dist/features/image/http/upload.js.map +1 -1
- package/server/dist/features/image/services/validation.js +111 -0
- package/server/dist/features/image/services/validation.js.map +1 -0
- package/server/dist/features/mcp-admin/http/handlers.js +11 -3
- package/server/dist/features/mcp-admin/http/handlers.js.map +1 -1
- package/server/dist/features/note/http/mcp.js +8 -43
- package/server/dist/features/note/http/mcp.js.map +1 -1
- package/server/dist/features/note/services/cleanup.js +2 -2
- package/server/dist/features/note/services/cleanup.js.map +1 -1
- package/server/dist/features/note/services/markdown-intent-write.js +11 -43
- package/server/dist/features/note/services/markdown-intent-write.js.map +1 -1
- package/server/dist/features/note/services/markdown-patch.js +4 -123
- package/server/dist/features/note/services/markdown-patch.js.map +1 -1
- package/server/dist/features/note/services/write.js +13 -13
- package/server/dist/features/note/services/write.js.map +1 -1
- package/server/dist/features/tag/graphql/tag.query.resolver.js +16 -1
- package/server/dist/features/tag/graphql/tag.query.resolver.js.map +1 -1
- package/server/dist/features/tag/graphql/tag.type-defs.js +2 -0
- package/server/dist/features/tag/graphql/tag.type-defs.js.map +1 -1
- package/server/dist/modules/app-version.js +105 -0
- package/server/dist/modules/app-version.js.map +1 -0
- package/server/dist/modules/auth-guard.js +21 -2
- package/server/dist/modules/auth-guard.js.map +1 -1
- package/server/dist/modules/auth-redirect.js +10 -0
- package/server/dist/modules/auth-redirect.js.map +1 -0
- package/server/dist/modules/mcp-auth.js +62 -1
- package/server/dist/modules/mcp-auth.js.map +1 -1
- package/server/dist/modules/rate-limit.js +15 -1
- package/server/dist/modules/rate-limit.js.map +1 -1
- package/server/dist/modules/server-events-handler.js +17 -0
- package/server/dist/modules/server-events-handler.js.map +1 -1
- package/server/dist/modules/session-store.js +149 -0
- package/server/dist/modules/session-store.js.map +1 -0
- package/server/dist/paths.js +1 -0
- package/server/dist/paths.js.map +1 -1
- package/server/dist/routes/api.js +39 -20
- package/server/dist/routes/api.js.map +1 -1
- package/server/dist/routes/auth-pages.js +13 -2
- package/server/dist/routes/auth-pages.js.map +1 -1
- package/server/dist/routes/client.js +63 -3
- package/server/dist/routes/client.js.map +1 -1
- package/server/dist/routes/graphql.js +23 -19
- package/server/dist/routes/graphql.js.map +1 -1
- package/server/client/dist/assets/Callout-DlFLkTCG.js +0 -1
- package/server/client/dist/assets/Graph-BdxtJvog.js +0 -1
- package/server/client/dist/assets/Image.es-BFodqKS5.js +0 -1
- package/server/client/dist/assets/Note-BgMxsWZT.js +0 -22
- package/server/client/dist/assets/Plus.es-Yq7J1Ur4.js +0 -1
- package/server/client/dist/assets/Reminders-CUsR56ff.js +0 -1
- package/server/client/dist/assets/Search-DncrGgOZ.js +0 -1
- package/server/client/dist/assets/Tag-CKDLs2Y6.js +0 -1
- package/server/client/dist/assets/TagNotes-ByX_Qias.js +0 -1
- package/server/client/dist/assets/Trash.es-BPrF6TPV.js +0 -1
- package/server/client/dist/assets/ViewNotes-r1kxKZ8O.js +0 -1
- package/server/client/dist/assets/ViewSectionTableRenderer-DQ4UeCnm.js +0 -102
- package/server/client/dist/assets/Views-FzFBtNT2.js +0 -1
- package/server/client/dist/assets/image.api-Bcg3TFCG.js +0 -17
- package/server/client/dist/assets/index-BFfQKAUY.js +0 -361
- package/server/client/dist/assets/manage-image-DzDlncCM.js +0 -1
- package/server/client/dist/assets/mcp-BqasqTWC.js +0 -1
- package/server/client/dist/assets/trash-bHK02-Up.js +0 -1
- package/server/dist/features/image/services/remote-fetch.js +0 -176
- package/server/dist/features/image/services/remote-fetch.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ocean-brain",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -42,6 +42,9 @@
|
|
|
42
42
|
"winston": "^3.19.0",
|
|
43
43
|
"zod": "^3.25.0"
|
|
44
44
|
},
|
|
45
|
+
"oceanBrain": {
|
|
46
|
+
"mcpCompatibilityVersion": "0.8.0"
|
|
47
|
+
},
|
|
45
48
|
"scripts": {
|
|
46
49
|
"dev": "tsx src/index.ts",
|
|
47
50
|
"build": "tsup",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./graph-vendor-UTvF2NS_.js";import{a7 as r}from"./index-VHp17GQX.js";const n=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M224.49,136.49l-72,72a12,12,0,0,1-17-17L187,140H40a12,12,0,0,1,0-24H187L135.51,64.48a12,12,0,0,1,17-17l72,72A12,12,0,0,1,224.49,136.49Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M216,128l-72,72V56Z",opacity:"0.2"}),e.createElement("path",{d:"M221.66,122.34l-72-72A8,8,0,0,0,136,56v64H40a8,8,0,0,0,0,16h96v64a8,8,0,0,0,13.66,5.66l72-72A8,8,0,0,0,221.66,122.34ZM152,180.69V75.31L204.69,128Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M221.66,133.66l-72,72A8,8,0,0,1,136,200V136H40a8,8,0,0,1,0-16h96V56a8,8,0,0,1,13.66-5.66l72,72A8,8,0,0,1,221.66,133.66Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M220.24,132.24l-72,72a6,6,0,0,1-8.48-8.48L201.51,134H40a6,6,0,0,1,0-12H201.51L139.76,60.24a6,6,0,0,1,8.48-8.48l72,72A6,6,0,0,1,220.24,132.24Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M218.83,130.83l-72,72a4,4,0,0,1-5.66-5.66L206.34,132H40a4,4,0,0,1,0-8H206.34L141.17,58.83a4,4,0,0,1,5.66-5.66l72,72A4,4,0,0,1,218.83,130.83Z"}))]]),a=e.forwardRef((t,l)=>e.createElement(r,{ref:l,...t,weights:n}));a.displayName="ArrowRightIcon";const o=a;export{o as s};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{j as e}from"./note-vendor-
|
|
1
|
+
import{j as e}from"./note-vendor-DkYKUmLo.js";import{T as b,L as te,N as se,c as q,d as f,s as ae,a as re,M as S,b as ne,S as oe,e as F,B as O,f as ie,g as le,u as H,q as z,h as K,P as ce,i as de,j as ue,C as me}from"./index-VHp17GQX.js";import{a as d}from"./graph-vendor-UTvF2NS_.js";import{C as he}from"./Callout-BK0K9E74.js";import"./note-core-BklwyZHk.js";const ge=({day:a,cellClassName:t,dayNumberClassName:s,isCurrentMonth:i,items:o,overflowCount:l,onOpenOverflow:m})=>e.jsxs("div",{className:`min-h-[196px] rounded-[16px] border p-2.5 ${t}`.trim(),children:[e.jsx("div",{className:"mb-2.5 flex justify-end",children:e.jsx(b,{as:"span",variant:"label",className:`flex h-7 w-7 items-center justify-center rounded-[10px] ${s}`.trim(),children:a})}),i&&o.length>0?e.jsxs("div",{className:"flex flex-col gap-1.5",children:[o,l>0?e.jsxs("button",{type:"button",onClick:m,className:"focus-ring-soft w-full rounded-[10px] border border-dashed border-border-subtle/70 bg-subtle/70 py-1 text-center text-micro font-semibold text-fg-tertiary outline-none transition-colors hover:border-border-secondary/70 hover:bg-hover-subtle hover:text-fg-secondary",children:["+",l," more"]}):null]}):null]}),V=({params:a,toneClassName:t="",header:s,title:i,meta:o,titleClassName:l=""})=>e.jsx(te,{to:se,params:a,className:"focus-ring-soft group block rounded-[8px] outline-none",children:e.jsxs("div",{className:q("flex items-start gap-1.5 rounded-[8px] px-1.5 py-1 transition-colors group-hover:bg-hover-subtle",t),children:[s?e.jsx("span",{className:"mt-[2px] flex h-4 w-4 shrink-0 items-center justify-center text-fg-tertiary",children:s}):e.jsx("span",{"aria-hidden":"true",className:"mt-[6px] h-1.5 w-1.5 shrink-0 rounded-full bg-fg-placeholder"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx(b,{as:"div",variant:"label",weight:"medium",tone:"secondary",className:q("line-clamp-1",l),children:i}),o?e.jsx(b,{as:"div",variant:"micro",weight:"medium",tone:"tertiary",className:"mt-0.5",children:o}):null]})]})}),xe=({note:a,type:t})=>e.jsx(V,{params:{id:a.id},header:e.jsx(ae,{size:12}),title:a.title,meta:f(Number(t==="create"?a.createdAt:a.updatedAt)).format("HH:mm")}),pe=({reminder:a})=>e.jsx(V,{params:{id:String(a.note?.id??a.noteId)},header:e.jsx(re,{size:12}),title:a.content||a.note?.title||"No title",titleClassName:a.completed?"line-through":"",meta:f(Number(a.reminderDate)).format("HH:mm")}),L=3,Q=(a,t)=>a.map(s=>s.type==="note"?e.jsx(xe,{note:s.item,type:t},`note-${s.item.id}`):e.jsx(pe,{reminder:s.item},`reminder-${s.item.id}`)),ye=({year:a,month:t,day:s,isCurrentMonth:i,isSunday:o,isToday:l,isPast:m,notes:h,reminders:g,type:N})=>{const[M,v]=d.useState(!1),p=d.useMemo(()=>{const r=h.map(u=>({type:"note",item:u})),c=g.map(u=>({type:"reminder",item:u}));return m?[...r,...c]:[...c,...r]},[m,h,g]),D=p.length>L,w=d.useMemo(()=>Q(p.slice(0,L),N),[p,N]),$=d.useMemo(()=>Q(p,N),[p,N]),k=d.useCallback(()=>v(!0),[]),C=d.useCallback(()=>v(!1),[]),E=()=>i?l?"border-border-secondary/70 bg-[color:color-mix(in_srgb,var(--surface)_88%,var(--accent-soft-primary)_12%)]":"bg-surface border-border-subtle":"bg-muted/18 border-border-subtle/70",I=()=>l?"bg-cta text-fg-on-filled font-semibold":i?o?"text-fg-weekend font-bold":"text-fg-secondary font-bold":"text-fg-disabled opacity-55";return e.jsxs(e.Fragment,{children:[e.jsx(ge,{day:s,cellClassName:E(),dayNumberClassName:I(),isCurrentMonth:i,items:w,overflowCount:D?p.length-L:0,onOpenOverflow:k}),D&&e.jsxs(S,{isOpen:M,onClose:C,variant:"inspect",children:[e.jsx(S.Header,{title:`${a}/${String(t).padStart(2,"0")}/${String(s).padStart(2,"0")}`,onClose:C}),e.jsxs(S.Body,{children:[e.jsxs(S.Description,{className:"sr-only",children:["View all notes and reminders scheduled for day ",s,"."]}),e.jsx("div",{className:"flex max-h-[60vh] flex-col gap-2 overflow-y-auto",children:$})]})]})]})},fe=d.memo(ye),be=["January","February","March","April","May","June","July","August","September","October","November","December"],je=({month:a,year:t,type:s,onPrevMonth:i,onNextMonth:o,onToday:l,onTypeChange:m})=>e.jsxs("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-end lg:justify-between",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("div",{className:"flex flex-wrap items-end gap-x-2.5 gap-y-1",children:[e.jsx(b,{as:"h1",variant:"display",weight:"bold",tracking:"tighter",className:"text-2xl leading-none sm:text-[2.15rem]",children:be[a-1]}),e.jsx(b,{as:"span",variant:"subheading",weight:"medium",tone:"secondary",tracking:"tight",className:"pb-0.5",children:t})]}),e.jsx(b,{as:"p",variant:"meta",weight:"medium",tone:"secondary",children:"Track note activity and reminders across the month"})]}),e.jsx("div",{className:"flex lg:justify-end",children:e.jsxs("div",{className:"surface-base inline-flex flex-wrap items-center gap-3 rounded-[16px] px-3.5 py-2.5",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ne,{className:"h-4 w-4 shrink-0 text-fg-tertiary"}),e.jsx(b,{id:"calendar-note-date-label",as:"span",variant:"label",weight:"medium",tone:"tertiary",children:"Note date"}),e.jsxs(oe,{value:s,"aria-labelledby":"calendar-note-date-label",onValueChange:g=>m(g),variant:"ghost",size:"sm",children:[e.jsx(F,{value:"create",children:"Created"}),e.jsx(F,{value:"update",children:"Updated"})]})]}),e.jsx("div",{className:"h-5 w-px bg-divider"}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(O,{variant:"ghost",size:"sm",onClick:l,children:"Today"}),e.jsx(O,{variant:"ghost",size:"icon-sm","aria-label":"Previous month",onClick:i,children:e.jsx(ie,{width:18,height:18})}),e.jsx(O,{variant:"ghost",size:"icon-sm","aria-label":"Next month",onClick:o,children:e.jsx(le,{width:18,height:18})})]})]})})]}),Ne=`
|
|
2
2
|
query NotesInDateRange($dateRange: DateRangeInput) {
|
|
3
3
|
notesInDateRange(dateRange: $dateRange) {
|
|
4
4
|
id
|
|
@@ -22,4 +22,4 @@ import{j as e}from"./note-vendor-i1M2FSI2.js";import{T as b,L as te,N as se,c as
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
`,Me=async
|
|
25
|
+
`,Me=async a=>{const t=await K(Ne,{dateRange:a});if(t.type==="error")throw t;return t.notesInDateRange},De=async a=>{const t=await K(ve,{dateRange:a});if(t.type==="error")throw t;return t.remindersInDateRange},Ce=({year:a,month:t})=>{const s=`${a}-${String(t).padStart(2,"0")}-01`,i=t===12?1:t+1,l=`${t===12?a+1:a}-${String(i).padStart(2,"0")}-01`,m={start:s,end:l},h=H({queryKey:z.calendar.notesInDateRange(a,t),queryFn:()=>Me(m)}),g=H({queryKey:z.reminders.inDateRange(a,t),queryFn:()=>De(m)});return{notes:h.data??[],reminders:g.data??[],isLoading:h.isLoading||g.isLoading,isError:h.isError||g.isError}},Re=["SUN","MON","TUE","WED","THU","FRI","SAT"],Se=[],we=[],B=ue(me);function Oe(){const a=B.useNavigate(),{year:t,month:s,type:i}=B.useSearch(),o=d.useRef(null),l=d.useRef(!1),m=d.useRef(0),h=d.useRef(0),g=d.useCallback(r=>{l.current=!0,m.current=r.pageX-(o.current?.offsetLeft??0),h.current=o.current?.scrollLeft??0,o.current&&(o.current.style.cursor="grabbing",o.current.style.userSelect="none")},[]),N=d.useCallback(r=>{if(!l.current||!o.current)return;r.preventDefault();const u=(r.pageX-o.current.offsetLeft-m.current)*1.2;o.current.scrollLeft=h.current-u},[]),M=d.useCallback(()=>{l.current=!1,o.current&&(o.current.style.cursor="grab",o.current.style.userSelect="")},[]),{notes:v,reminders:p,isLoading:D,isError:w}=Ce({year:t,month:s}),$=d.useMemo(()=>{const r=f(),c=`${r.year()}-${r.month()+1}-${r.date()}`,u=new Map;for(const n of v){const y=i==="create"?f(Number(n.createdAt)):f(Number(n.updatedAt)),x=`${y.year()}-${y.month()+1}-${y.date()}`,j=u.get(x)||[];j.push(n),u.set(x,j)}const T=new Map;for(const n of p){const y=f(Number(n.reminderDate)),x=`${y.year()}-${y.month()+1}-${y.date()}`,j=T.get(x)||[];j.push(n),T.set(x,j)}const W=new Date(t,s-1,1),X=new Date(t,s,0),A=W.getDay(),_=X.getDate(),R=[],Y=s===1?12:s-1,P=s===1?t-1:t,J=new Date(P,Y,0).getDate();for(let n=A-1;n>=0;n--)R.push({day:J-n,isCurrentMonth:!1,year:P,month:Y});for(let n=1;n<=_;n++)R.push({day:n,isCurrentMonth:!0,year:t,month:s});const U=(A+_)%7,G=U===0?0:7-U,Z=s===12?1:s+1,ee=s===12?t+1:t;for(let n=1;n<=G;n++)R.push({day:n,isCurrentMonth:!1,year:ee,month:Z});return R.map((n,y)=>{const x=`${n.year}-${n.month}-${n.day}`,j=f(`${n.year}-${String(n.month).padStart(2,"0")}-${String(n.day).padStart(2,"0")}`);return{key:x,year:n.year,month:n.month,day:n.day,isCurrentMonth:n.isCurrentMonth,isSunday:y%7===0,isToday:x===c,isPast:j.isBefore(r,"day"),notes:u.get(x)||Se,reminders:T.get(x)||we}})},[t,s,v,p,i]),k=()=>{const r=s===1?12:s-1,c=s===1?t-1:t;a({search:u=>({...u,month:r,year:c})})},C=()=>{const r=s===12?1:s+1,c=s===12?t+1:t;a({search:u=>({...u,month:r,year:c})})},E=()=>{a({search:r=>({...r,month:f().month()+1,year:f().year()})})},I=r=>{r&&a({search:c=>({...c,type:r})})};return e.jsx(ce,{title:"Calendar",variant:"none",children:w?e.jsx(he,{children:"Failed to load calendar data. Please try again later."}):e.jsxs("div",{className:"surface-base",children:[e.jsx("div",{className:"border-b border-border-subtle/80 px-4 py-4 sm:px-5",children:e.jsx(je,{month:s,year:t,type:i,onPrevMonth:k,onNextMonth:C,onToday:E,onTypeChange:I})}),e.jsx("div",{ref:o,className:"cursor-grab overflow-x-auto px-4 pb-4 pt-3 sm:px-5",onMouseDown:g,onMouseMove:N,onMouseUp:M,onMouseLeave:M,children:e.jsxs("div",{className:"min-w-[1260px]",children:[e.jsx("div",{className:"mb-2.5 grid grid-cols-7 gap-1.5",children:Re.map((r,c)=>e.jsx(b,{as:"div",variant:"label",weight:"semibold",tracking:"wider",transform:"uppercase",className:`py-2 text-center ${c===0?"text-fg-weekend":"text-fg-tertiary"}`,children:r},r))}),D?e.jsx("div",{className:"grid grid-cols-7 gap-1.5",children:Array.from({length:35}).map((r,c)=>e.jsx(de,{height:180},c))}):e.jsx("div",{className:"grid grid-cols-7 gap-1.5",children:$.map(r=>e.jsx(fe,{year:r.year,month:r.month,day:r.day,isCurrentMonth:r.isCurrentMonth,isSunday:r.isSunday,isToday:r.isToday,isPast:r.isPast,notes:r.notes,reminders:r.reminders,type:i},r.key))})]})})]})})}export{Oe as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as n}from"./note-vendor-DkYKUmLo.js";import{a7 as m,T as d}from"./index-VHp17GQX.js";import{a as e}from"./graph-vendor-UTvF2NS_.js";const p=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M108,84a16,16,0,1,1,16,16A16,16,0,0,1,108,84Zm128,44A108,108,0,1,1,128,20,108.12,108.12,0,0,1,236,128Zm-24,0a84,84,0,1,0-84,84A84.09,84.09,0,0,0,212,128Zm-72,36.68V132a20,20,0,0,0-20-20,12,12,0,0,0-4,23.32V168a20,20,0,0,0,20,20,12,12,0,0,0,4-23.32Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z",opacity:"0.2"}),e.createElement("path",{d:"M144,176a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176Zm88-48A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128ZM124,96a12,12,0,1,0-12-12A12,12,0,0,0,124,96Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-4,48a12,12,0,1,1-12,12A12,12,0,0,1,124,72Zm12,112a16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40a8,8,0,0,1,0,16Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M142,176a6,6,0,0,1-6,6,14,14,0,0,1-14-14V128a2,2,0,0,0-2-2,6,6,0,0,1,0-12,14,14,0,0,1,14,14v40a2,2,0,0,0,2,2A6,6,0,0,1,142,176ZM124,94a10,10,0,1,0-10-10A10,10,0,0,0,124,94Zm106,34A102,102,0,1,1,128,26,102.12,102.12,0,0,1,230,128Zm-12,0a90,90,0,1,0-90,90A90.1,90.1,0,0,0,218,128Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M140,176a4,4,0,0,1-4,4,12,12,0,0,1-12-12V128a4,4,0,0,0-4-4,4,4,0,0,1,0-8,12,12,0,0,1,12,12v40a4,4,0,0,0,4,4A4,4,0,0,1,140,176ZM124,92a8,8,0,1,0-8-8A8,8,0,0,0,124,92Zm104,36A100,100,0,1,1,128,28,100.11,100.11,0,0,1,228,128Zm-8,0a92,92,0,1,0-92,92A92.1,92.1,0,0,0,220,128Z"}))]]),g=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,192a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,212Zm-12-80V80a12,12,0,0,1,24,0v52a12,12,0,0,1-24,0Zm28,40a16,16,0,1,1-16-16A16,16,0,0,1,144,172Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z",opacity:"0.2"}),e.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm-8-80V80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,172Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-8,56a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm8,104a12,12,0,1,1,12-12A12,12,0,0,1,128,184Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm0,192a90,90,0,1,1,90-90A90.1,90.1,0,0,1,128,218Zm-6-82V80a6,6,0,0,1,12,0v56a6,6,0,0,1-12,0Zm16,36a10,10,0,1,1-10-10A10,10,0,0,1,138,172Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm-8-80V80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,172Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm0,192a92,92,0,1,1,92-92A92.1,92.1,0,0,1,128,220Zm-4-84V80a4,4,0,0,1,8,0v56a4,4,0,0,1-8,0Zm12,36a8,8,0,1,1-8-8A8,8,0,0,1,136,172Z"}))]]),l=e.forwardRef((a,t)=>e.createElement(m,{ref:t,...a,weights:p}));l.displayName="InfoIcon";const E=l,c=e.forwardRef((a,t)=>e.createElement(m,{ref:t,...a,weights:g}));c.displayName="WarningCircleIcon";const i=c,f=({children:a,className:t="",tone:r="info"})=>{const o=r==="danger"?i:E,Z=r==="danger"?"border-border-error/70 bg-accent-soft-danger/60":"border-border-subtle bg-hover-subtle/50",s=r==="danger"?"text-fg-error":"text-fg-tertiary",A=r==="danger"?"error":"secondary";return n.jsxs("div",{className:`flex items-center gap-2.5 rounded-[12px] border px-4 py-3 ${Z} ${t}`,children:[n.jsx(o,{className:`h-4 w-4 shrink-0 ${s}`}),n.jsx(d,{as:"div",variant:"meta",weight:"medium",tone:A,children:a})]})};export{f as C,E as c,i as m};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./graph-vendor-UTvF2NS_.js";import{a7 as V}from"./index-VHp17GQX.js";const n=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M216,40V168H168V88H88V40Z",opacity:"0.2"}),e.createElement("path",{d:"M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32ZM160,208H48V96H160Zm48-48H176V88a8,8,0,0,0-8-8H96V48H208Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32Zm-8,128H176V88a8,8,0,0,0-8-8H96V48H208Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M216,34H88a6,6,0,0,0-6,6V82H40a6,6,0,0,0-6,6V216a6,6,0,0,0,6,6H168a6,6,0,0,0,6-6V174h42a6,6,0,0,0,6-6V40A6,6,0,0,0,216,34ZM162,210H46V94H162Zm48-48H174V88a6,6,0,0,0-6-6H94V46H210Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32ZM160,208H48V96H160Zm48-48H176V88a8,8,0,0,0-8-8H96V48H208Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M216,36H88a4,4,0,0,0-4,4V84H40a4,4,0,0,0-4,4V216a4,4,0,0,0,4,4H168a4,4,0,0,0,4-4V172h44a4,4,0,0,0,4-4V40A4,4,0,0,0,216,36ZM164,212H44V92H164Zm48-48H172V88a4,4,0,0,0-4-4H92V44H212Z"}))]]),a=e.forwardRef((t,H)=>e.createElement(V,{ref:H,...t,weights:n}));a.displayName="CopyIcon";const m=a;export{m as s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as c,r as ce}from"./note-vendor-DkYKUmLo.js";import{$ as he,T as j,a0 as de,a1 as ue,I as fe,c as T,a2 as Y,L as X,N as U,j as me,a3 as ge,Y as pe,P as W,a4 as be,i as O,a5 as xe,a6 as ve,q as Se,Q as ye}from"./index-VHp17GQX.js";import{a as S,F as we}from"./graph-vendor-UTvF2NS_.js";import{s as ee}from"./ArrowRight.es-C4zlc54Z.js";import"./note-core-BklwyZHk.js";const Ee=i=>{let l=0;for(let e=0;e<i.length;e++)l+=i.charCodeAt(e);return l};function te(i){return i<=1?3.5:i<=3?4.5:i<=6?5.5:Math.min(7,5.5+Math.sqrt(i)*.5)}function Ce(i){if(i.nodes.length===0)return null;const l=i.nodes.filter(t=>t.connections>0);if(l.length===0)return null;const e=new Set(l.map(t=>t.id));return{nodes:l,links:i.links.filter(t=>e.has(t.source)&&e.has(t.target))}}function Me(i){const l=new Map;for(const e of i)l.has(e.source)||l.set(e.source,new Set),l.has(e.target)||l.set(e.target,new Set),l.get(e.source)?.add(e.target),l.get(e.target)?.add(e.source);return l}function ke(i){return[...i].sort((l,e)=>e.connections-l.connections||l.title.localeCompare(e.title))}function je(i,l){const e=l.trim().toLowerCase();return e?i.filter(t=>t.title.toLowerCase().includes(e)):i}function Ie(i,l){return l?i.find(e=>e.id===l)??null:null}function ze(i,l,e){if(!e)return[];const t=l.get(e);return t?i.filter(s=>t.has(s.id)):[]}const Oe={background:"#f4f6f8",nodeHub:"#2c2f36",nodeSelected:"#111318",nodeConnected:"#636b76",nodeDefault:["#d6dbe1","#c8ced6","#b7bec7","#a7afb9"],nodeDimmed:["rgba(214,219,225,0.28)","rgba(200,206,214,0.24)","rgba(183,190,199,0.24)","rgba(167,175,185,0.2)"],nodeHubDimmed:"rgba(44,47,54,0.16)",nodeStroke:"#eef1f4",nodeSelectedStroke:"#a6b0bc",labelBackground:"rgba(246,248,250,0.92)",labelText:"#222831",labelFontFamily:"Pretendard Variable, Pretendard, system-ui, sans-serif",linkIdle:"rgba(99, 107, 117, 0.34)",linkConnected:"#68717c",linkDimmed:"rgba(127, 136, 146, 0.12)",legendHub:"#2c2f36"},Te={background:"#121316",nodeHub:"#d6dce3",nodeSelected:"#eef1f5",nodeConnected:"#9099a4",nodeDefault:["#343a43","#2d333c","#262c35","#20262f"],nodeDimmed:["rgba(52,58,67,0.28)","rgba(45,51,60,0.24)","rgba(38,44,53,0.22)","rgba(32,38,47,0.2)"],nodeHubDimmed:"rgba(214,220,227,0.16)",nodeStroke:"#171c23",nodeSelectedStroke:"#7f8a97",labelBackground:"rgba(16,18,22,0.9)",labelText:"#eef2f6",labelFontFamily:"Pretendard Variable, Pretendard, system-ui, sans-serif",linkIdle:"rgba(118, 127, 138, 0.42)",linkConnected:"#a2abb6",linkDimmed:"rgba(118, 127, 138, 0.1)",legendHub:"#d6dce3"};function H(i){return i==="dark"?Te:Oe}function _e(i,l){const e=H(i),{connections:t,colorIndex:s,selectedNodeId:n,nodeId:r,isConnected:o}=l,a=n===r;return n!==null&&!a&&!o?t>3?e.nodeHubDimmed:e.nodeDimmed[s%e.nodeDimmed.length]:a?e.nodeSelected:o?e.nodeConnected:t>3?e.nodeHub:e.nodeDefault[s%e.nodeDefault.length]}function Ne(i,l){const e=H(i);return l.selectedNodeId!==null&&!l.isConnected?e.linkDimmed:l.isConnected?e.linkConnected:e.linkIdle}function Ae(i,l){const e=H(i);return`${l.emphasize?"700":"400"} ${l.fontSize}px ${e.labelFontFamily}`}function Re({adjacencyMap:i,graphData:l,onClearSelection:e,onOpenNode:t,onSelectNode:s,selectedNodeId:n}){const r=S.useRef(null),o=S.useRef(null),[a,d]=S.useState({width:0,height:420}),{theme:h}=he(v=>v),f=H(h),u=S.useRef(f);u.current=f;const w=S.useRef(n);w.current=n;const m=S.useRef(i);m.current=i,S.useEffect(()=>{const v=()=>{if(!r.current)return;const C=r.current.getBoundingClientRect();C.width<=0||C.height<=0||d({width:C.width,height:C.height})};v();const b=typeof ResizeObserver=="function"?new ResizeObserver(v):null;return b&&r.current&&b.observe(r.current),window.addEventListener("resize",v),()=>{b?.disconnect(),window.removeEventListener("resize",v)}},[]),S.useEffect(()=>{const v=window.setTimeout(()=>{o.current?.zoomToFit(400,a.width<768?80:50)},500);return()=>window.clearTimeout(v)},[a.width,l]);const E=S.useCallback(v=>{if(w.current===v.id){t(v.id);return}s(v.id)},[t,s]),g=S.useCallback(v=>{r.current&&(r.current.style.cursor=v?"pointer":"default")},[]),p=S.useRef(!1),y=S.useCallback(()=>{p.current||(p.current=!0,o.current?.enableZoomInteraction(!1))},[]),x=S.useCallback(()=>{p.current=!1,o.current?.enableZoomInteraction(!0)},[]),k=S.useCallback((v,b,C)=>{const I=u.current,z=n,R=m.current,_=te(v.connections),L=v.x||0,V=v.y||0,D=z===v.id,$=z?R.get(z)?.has(v.id)??!1:!1,re=z!==null&&!D&&!$,le=Ee(v.id);if(b.beginPath(),b.arc(L,V,_,0,Math.PI*2),b.fillStyle=_e(h,{connections:v.connections,colorIndex:le,selectedNodeId:z,nodeId:v.id,isConnected:$}),b.fill(),re)return;b.strokeStyle=I.nodeStroke,b.lineWidth=(D?2:1)/C,b.stroke(),D&&(b.beginPath(),b.arc(L,V,_+2/C,0,Math.PI*2),b.strokeStyle=I.nodeSelectedStroke,b.lineWidth=1.5/C,b.stroke());const ae=$&&v.connections>=4;if(D||ae||C>2.5){const q=v.title||"Untitled",J=Math.max(10/C,2.5);b.font=Ae(h,{fontSize:J,emphasize:D}),b.textAlign="center",b.textBaseline="top";const Z=b.measureText(q).width,P=2/C,Q=V+_+3/C;b.fillStyle=I.labelBackground,b.fillRect(L-Z/2-P,Q,Z+P*2,J+P*2),b.fillStyle=I.labelText,b.fillText(q,L,Q+P)}},[n,h]),M=S.useCallback((v,b,C)=>{const I=n,z=v.source,R=v.target,_=I?z.id===I||R.id===I:!1;b.beginPath(),b.moveTo(z.x||0,z.y||0),b.lineTo(R.x||0,R.y||0),b.strokeStyle=Ne(h,{selectedNodeId:I,isConnected:_}),b.lineWidth=_?2/C:.5/C,b.stroke()},[n,h]);return c.jsxs("div",{ref:r,className:"surface-base graph-canvas relative h-[min(34rem,calc(100dvh-12rem))] min-h-[420px] w-full max-w-full overflow-hidden md:h-[520px] xl:h-[min(44rem,calc(100vh-10rem))]",style:{"--graph-bg":f.background},children:[c.jsxs("div",{className:"surface-floating absolute top-3 right-3 z-10 flex flex-col gap-1.5 px-3 py-2.5",children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("span",{className:"legend-dot h-2.5 w-2.5 shrink-0 rounded-full",style:{"--legend-color":f.legendHub}}),c.jsx(j,{as:"span",variant:"label",weight:"medium",tone:"secondary",children:"Hub notes (4+ connections)"})]}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("span",{className:"legend-dot h-2.5 w-2.5 shrink-0 rounded-full",style:{"--legend-color":f.nodeConnected}}),c.jsx(j,{as:"span",variant:"label",weight:"medium",tone:"secondary",children:"Connected notes"})]})]}),c.jsx("div",{"aria-hidden":"true",children:c.jsx(we,{ref:o,graphData:l,width:a.width,height:a.height,nodeId:"id",nodeLabel:"",nodeCanvasObject:k,nodePointerAreaPaint:(v,b,C)=>{C.beginPath(),C.arc(v.x||0,v.y||0,Math.max(te(v.connections)+4,10),0,2*Math.PI),C.fillStyle=b,C.fill()},linkCanvasObject:M,linkCanvasObjectMode:()=>"replace",linkDirectionalParticles:0,onNodeClick:E,onNodeHover:g,onBackgroundClick:e,onNodeDrag:y,onNodeDragEnd:x,warmupTicks:30,cooldownTicks:80,d3AlphaDecay:.05,d3VelocityDecay:.3,enableZoomInteraction:!0,enablePanInteraction:!0,minZoom:.3,maxZoom:5})})]})}function De(i,l,e){const t=new Array(i);return new Proxy(t,{get(s,n,r){if(typeof n=="string"){const o=n.charCodeAt(0);if(o>=48&&o<=57){const a=+n;if(Number.isInteger(a)&&a>=0&&a<i){let d=s[a];if(!d){const h=l[a*2];d=s[a]={index:a,key:e(a),start:h,size:l[a*2+1],end:h+l[a*2+1],lane:0}}return d}}if(n==="length")return i}return Reflect.get(s,n,r)}})}function N(i,l,e){let t=e.initialDeps??[],s,n=!0;function r(){const o=i();return(o.length!==t.length||o.some((d,h)=>t[h]!==d))&&(t=o,s=l(...o),e?.onChange&&!(n&&e.skipInitialOnChange)&&e.onChange(s),n=!1),s}return r.updateDeps=o=>{t=o},r}function se(i,l){if(i===void 0)throw new Error("Unexpected undefined");return i}const Fe=(i,l)=>Math.abs(i-l)<1.01,Le=(i,l,e)=>{let t;return function(...s){i.clearTimeout(t),t=i.setTimeout(()=>l.apply(this,s),e)}};let F;const G=()=>{if(F!==void 0)return F;if(typeof navigator>"u")return F=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return F=!0;const i=navigator.maxTouchPoints;return F=navigator.platform==="MacIntel"&&i!==void 0&&i>0},ne=i=>{const{offsetWidth:l,offsetHeight:e}=i;return{width:l,height:e}},Pe=i=>i,We=i=>{const l=Math.max(i.startIndex-i.overscan,0),t=Math.min(i.endIndex+i.overscan,i.count-1)-l+1,s=new Array(t);for(let n=0;n<t;n++)s[n]=l+n;return s},Ke=(i,l)=>{const e=i.scrollElement;if(!e)return;const t=i.targetWindow;if(!t)return;const s=r=>{const{width:o,height:a}=r;l({width:Math.round(o),height:Math.round(a)})};if(s(ne(e)),!t.ResizeObserver)return()=>{};const n=new t.ResizeObserver(r=>{const o=()=>{const a=r[0];if(a?.borderBoxSize){const d=a.borderBoxSize[0];if(d){s({width:d.inlineSize,height:d.blockSize});return}}s(ne(e))};i.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(o):o()});return n.observe(e,{box:"border-box"}),()=>{n.unobserve(e)}},K={passive:!0},He=typeof window>"u"?!0:"onscrollend"in window,Ve=(i,l,e)=>{const t=i.scrollElement;if(!t)return;const s=i.targetWindow;if(!s)return;const n=i.options.useScrollendEvent&&He;let r=0;const o=n?null:Le(s,()=>l(r,!1),i.options.isScrollingResetDelay),a=f=>()=>{r=e(t),o?.(),l(r,f)},d=a(!0),h=a(!1);return t.addEventListener("scroll",d,K),n&&t.addEventListener("scrollend",h,K),()=>{t.removeEventListener("scroll",d),n&&t.removeEventListener("scrollend",h)}},$e=(i,l)=>Ve(i,l,e=>{const{horizontal:t,isRtl:s}=i.options;return t?e.scrollLeft*(s&&-1||1):e.scrollTop}),Ge=(i,l,e)=>{if(e.options.useCachedMeasurements){const t=e.indexFromElement(i),s=e.options.getItemKey(t);return e.itemSizeCache.get(s)??e.options.estimateSize(t)}if(l?.borderBoxSize){const t=l.borderBoxSize[0];if(t)return Math.round(t[e.options.horizontal?"inlineSize":"blockSize"])}if(!l){const t=e.indexFromElement(i),s=e.options.getItemKey(t),n=e.itemSizeCache.get(s);if(n!==void 0)return n}return i[e.options.horizontal?"offsetWidth":"offsetHeight"]},Be=(i,{adjustments:l=0,behavior:e},t)=>{var s,n;(n=(s=t.scrollElement)==null?void 0:s.scrollTo)==null||n.call(s,{[t.options.horizontal?"left":"top"]:i+l,behavior:e})},Ue=Be;class qe{constructor(l){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var e,t,s;return((s=(t=(e=this.targetWindow)==null?void 0:e.performance)==null?void 0:t.now)==null?void 0:s.call(t))??Date.now()},this.observer=(()=>{let e=null;const t=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(s=>{s.forEach(n=>{const r=()=>{const o=n.target,a=this.indexFromElement(o);if(!o.isConnected){this.observer.unobserve(o);for(const[d,h]of this.elementsCache)if(h===o){this.elementsCache.delete(d);break}return}this.shouldMeasureDuringScroll(a)&&this.resizeItem(a,this.options.measureElement(o,n,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()})}));return{disconnect:()=>{var s;(s=t())==null||s.disconnect(),e=null},observe:s=>{var n;return(n=t())==null?void 0:n.observe(s,{box:"border-box"})},unobserve:s=>{var n;return(n=t())==null?void 0:n.unobserve(s)}}})(),this.range=null,this.setOptions=e=>{var t,s;const n={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:Pe,rangeExtractor:We,onChange:()=>{},measureElement:Ge,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,anchorTo:"start",followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",useCachedMeasurements:!1};for(const u in e){const w=e[u];w!==void 0&&(n[u]=w)}const r=this.options;let o=null,a=null,d=!1;if(r!==void 0&&r.enabled&&n.enabled&&n.anchorTo==="end"&&this.scrollElement!==null){const u=r.count,w=n.count,m=this.getMeasurements(),E=u>0?((t=m[0])==null?void 0:t.key)??r.getItemKey(0):null,g=u>0?((s=m[u-1])==null?void 0:s.key)??r.getItemKey(u-1):null;if(w!==u||u>0&&w>0&&(n.getItemKey(0)!==E||n.getItemKey(w-1)!==g)){d=!0;const x=u>0?this.getVirtualItemForOffset(this.getScrollOffset())??m[0]:null;x&&(o=[x.key,this.getScrollOffset()-x.start]);const k=n.followOnAppend===!0?"auto":n.followOnAppend||null;k&&w>u&&this.isAtEnd(r.scrollEndThreshold)&&(u===0||n.getItemKey(w-1)!==g)&&(a=k)}}this.options=n,d&&(this.pendingMin=0,this.itemSizeCacheVersion++);let h=!1,f=0;if(o&&this.scrollOffset!==null){const[u,w]=o,m=this.getMeasurements(),{count:E,getItemKey:g}=this.options;let p=0;for(;p<E&&g(p)!==u;)p++;if(p<E){const y=m[p];if(y){const x=y.start+w;x!==this.scrollOffset&&(f=x-this.scrollOffset,this.scrollOffset=x,h=!0)}}}(h||a)&&(this.pendingScrollAnchor=[h?o[0]:null,h?o[1]:0,a,f])},this.notify=e=>{var t,s;(s=(t=this.options).onChange)==null||s.call(t,this,e)},this.maybeNotify=N(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var e;const t=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==t){if(this.cleanup(),!t){this.maybeNotify();return}if(this.scrollElement=t,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((e=this.scrollElement)==null?void 0:e.window)??null,this.elementsCache.forEach(n=>{this.observer.observe(n)}),this.unsubs.push(this.options.observeElementRect(this,n=>{this.scrollRect=n,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(n,r)=>{this._intendedScrollOffset!==null&&Math.abs(n-this._intendedScrollOffset)<1.5&&(n=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0,this.scrollDirection=r?this.getScrollOffset()<n?"forward":"backward":null,this.scrollOffset=n,this.isScrolling=r,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),"addEventListener"in this.scrollElement){const n=this.scrollElement,r=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},o=()=>{this._iosTouching=!1,!(!G()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};n.addEventListener("touchstart",r,K),n.addEventListener("touchend",o,K),this.unsubs.push(()=>{n.removeEventListener("touchstart",r),n.removeEventListener("touchend",o),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}const s=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,s&&this.scrollElement&&this.options.enabled){const[n,r,o,a]=s;n!==null&&!o&&(G()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?a!==0&&(this._iosDeferredAdjustment+=a):this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),o&&this.scrollToEnd({behavior:o})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;const e=this.getScrollOffset(),t=this.getMaxScrollOffset();if(e<0||e>t)return;const s=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(e,{adjustments:this.scrollAdjustments+=s,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(e,t)=>{const s=new Map,n=new Map;for(let r=t-1;r>=0;r--){const o=e[r];if(s.has(o.lane))continue;const a=n.get(o.lane);if(a==null||o.end>a.end?n.set(o.lane,o):o.end<a.end&&s.set(o.lane,!0),s.size===this.options.lanes)break}return n.size===this.options.lanes?Array.from(n.values()).sort((r,o)=>r.end===o.end?r.index-o.index:r.end-o.end)[0]:void 0},this.getMeasurementOptions=N(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode],(e,t,s,n,r,o,a)=>(this.prevLanes!==void 0&&this.prevLanes!==o&&(this.lanesChangedFlag=!0),this.prevLanes=o,this.pendingMin=null,{count:e,paddingStart:t,scrollMargin:s,getItemKey:n,enabled:r,lanes:o,laneAssignmentMode:a}),{key:!1}),this.getMeasurements=N(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:e,paddingStart:t,scrollMargin:s,getItemKey:n,enabled:r,lanes:o,laneAssignmentMode:a},d)=>{const h=this.itemSizeCache;if(!r)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(const m of this.laneAssignments.keys())m>=e&&this.laneAssignments.delete(m);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(m=>{this.itemSizeCache.set(m.key,m.size)}));const f=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1),o===1){const m=this.options.gap,E=e*2;let g=this._flatMeasurements;if(!g||g.length<E){const x=new Float64Array(E);g&&f>0&&x.set(g.subarray(0,f*2)),g=x,this._flatMeasurements=g}let p;if(f===0)p=t+s;else{const x=f-1;p=g[x*2]+g[x*2+1]+m}for(let x=f;x<e;x++){const k=n(x),M=h.get(k),v=typeof M=="number"?M:this.options.estimateSize(x);g[x*2]=p,g[x*2+1]=v,p+=v+m}const y=De(e,g,n);return this.measurementsCache=y,y}const u=this.measurementsCache.slice(0,f),w=new Array(o).fill(void 0);for(let m=0;m<f;m++){const E=u[m];E&&(w[E.lane]=m)}for(let m=f;m<e;m++){const E=n(m),g=this.laneAssignments.get(m);let p,y;const x=a==="estimate"||h.has(E);if(g!==void 0&&this.options.lanes>1){p=g;const b=w[p],C=b!==void 0?u[b]:void 0;y=C?C.end+this.options.gap:t+s}else{const b=this.options.lanes===1?u[m-1]:this.getFurthestMeasurement(u,m);y=b?b.end+this.options.gap:t+s,p=b?b.lane:m%this.options.lanes,this.options.lanes>1&&x&&this.laneAssignments.set(m,p)}const k=h.get(E),M=typeof k=="number"?k:this.options.estimateSize(m),v=y+M;u[m]={index:m,start:y,size:M,end:v,key:E,lane:p},w[p]=m}return this.measurementsCache=u,u},{key:!1,debug:()=>this.options.debug}),this.calculateRange=N(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,s,n)=>this.range=e.length>0&&t>0?Je({measurements:e,outerSize:t,scrollOffset:s,lanes:n,flat:n===1&&this._flatMeasurements!=null?this._flatMeasurements:null}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=N(()=>{let e=null,t=null;const s=this.calculateRange();return s&&(e=s.startIndex,t=s.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,s,n,r)=>n===null||r===null?[]:e({startIndex:n,endIndex:r,overscan:t,count:s}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{const t=this.options.indexAttribute,s=e.getAttribute(t);return s?parseInt(s,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{var t;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;const s=this.scrollState.index??((t=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:t.index);if(s!==void 0&&this.range){const n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,s-n),o=Math.min(this.options.count-1,s+n);return e>=r&&e<=o}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((r,o)=>{r.isConnected||(this.observer.unobserve(r),this.elementsCache.delete(o))});return}const t=this.indexFromElement(e),s=this.options.getItemKey(t),n=this.elementsCache.get(s);n!==e&&(n&&this.observer.unobserve(n),this.observer.observe(e),this.elementsCache.set(s,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{var s,n;if(e<0||e>=this.options.count)return;let r,o,a;const d=this._flatMeasurements;if(this.options.lanes===1&&d!==null)a=this.options.getItemKey(e),o=d[e*2],r=d[e*2+1];else{const u=this.measurementsCache[e];if(!u)return;a=u.key,o=u.start,r=u.size}const h=this.itemSizeCache.get(a)??r,f=t-h;if(f!==0){const u=this.options.anchorTo==="end"&&((s=this.scrollState)==null?void 0:s.behavior)!=="smooth"&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,w=u?this.getTotalSize():0,m=((n=this.scrollState)==null?void 0:n.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[e]??{index:e,key:a,start:o,size:r,end:o+r,lane:0},f,this):o<this.getScrollOffset()+this.scrollAdjustments&&(!this.itemSizeCache.has(a)||this.scrollDirection!=="backward"));(this.pendingMin===null||e<this.pendingMin)&&(this.pendingMin=e),this.itemSizeCache.set(a,t),this.itemSizeCacheVersion++,u?this.applyScrollAdjustment(this.getTotalSize()-w):m&&this.applyScrollAdjustment(f),this.notify(!1)}},this.getVirtualItems=N(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{const s=[];for(let n=0,r=e.length;n<r;n++){const o=e[n],a=t[o];s.push(a)}return s},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{const t=this.getMeasurements();if(t.length===0)return;const s=this._flatMeasurements,n=this.options.lanes===1&&s!=null,r=oe(0,t.length-1,n?o=>s[o*2]:o=>se(t[o]).start,e);return se(t[r])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(e=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=e,this.getOffsetForAlignment=(e,t,s=0)=>{if(!this.scrollElement)return 0;const n=this.getSize(),r=this.getScrollOffset();t==="auto"&&(t=e>=r+n?"end":"start"),t==="center"?e+=(s-n)/2:t==="end"&&(e-=n);const o=this.getMaxScrollOffset();return Math.max(Math.min(o,e),0)},this.getOffsetForIndex=(e,t="auto")=>{e=Math.max(0,Math.min(e,this.options.count-1));const s=this.getSize(),n=this.getScrollOffset(),r=this.measurementsCache[e];if(!r)return;if(t==="auto")if(r.end>=n+s-this.options.scrollPaddingEnd)t="end";else if(r.start<=n+this.options.scrollPaddingStart)t="start";else return[n,t];if(t==="end"&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];const o=t==="end"?r.end+this.options.scrollPaddingEnd:r.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(o,t,r.size),t]},this.scrollToOffset=(e,{align:t="start",behavior:s="auto"}={})=>{const n=this.getOffsetForAlignment(e,t),r=this.now();this.scrollState={index:null,align:t,behavior:s,startedAt:r,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t="auto",behavior:s="auto"}={})=>{e=Math.max(0,Math.min(e,this.options.count-1));const n=this.getOffsetForIndex(e,t);if(!n)return;const[r,o]=n,a=this.now();this.scrollState={index:e,align:o,behavior:s,startedAt:a,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t="auto"}={})=>{const s=this.getScrollOffset()+e,n=this.now();this.scrollState={index:null,align:"start",behavior:t,startedAt:n,lastTargetOffset:s,stableFrames:0},this._scrollToOffset(s,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:e="auto"}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:"end",behavior:e});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:e})},this.getTotalSize=()=>{var e;const t=this.getMeasurements();let s;if(t.length===0)s=this.options.paddingStart;else if(this.options.lanes===1){const n=t.length-1,r=this._flatMeasurements;r!=null?s=r[n*2]+r[n*2+1]:s=((e=t[n])==null?void 0:e.end)??0}else{const n=Array(this.options.lanes).fill(null);let r=t.length-1;for(;r>=0&&n.some(o=>o===null);){const o=t[r];n[o.lane]===null&&(n[o.lane]=o.end),r--}s=Math.max(...n.filter(o=>o!==null))}return Math.max(s-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{const e=[];if(this.itemSizeCache.size===0)return e;const t=this.getMeasurements();for(const s of t)s&&this.itemSizeCache.has(s.key)&&e.push({index:s.index,key:s.key,start:s.start,size:s.size,end:s.end,lane:s.lane});return e},this._scrollToOffset=(e,{adjustments:t,behavior:s})=>{this._intendedScrollOffset=e+(t??0),this.options.scrollToFn(e,{behavior:s,adjustments:t},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(l)}applyScrollAdjustment(l,e){l!==0&&(G()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?this._iosDeferredAdjustment+=l:this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=l,behavior:e}))}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}const t=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,s=t?t[0]:this.scrollState.lastTargetOffset,n=1,r=s!==this.scrollState.lastTargetOffset;if(!r&&Fe(s,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=n){this.getScrollOffset()!==s&&this._scrollToOffset(s,{adjustments:void 0,behavior:"auto"}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,r){const o=this.getSize()||600,a=Math.abs(s-this.getScrollOffset()),d=this.scrollState.behavior==="smooth"&&a>o;this.scrollState.lastTargetOffset=s,d||(this.scrollState.behavior="auto"),this._scrollToOffset(s,{adjustments:void 0,behavior:d?"smooth":"auto"})}this.scheduleScrollReconcile()}}const oe=(i,l,e,t)=>{for(;i<=l;){const s=(i+l)/2|0,n=e(s);if(n<t)i=s+1;else if(n>t)l=s-1;else return s}return i>0?i-1:0};function Je({measurements:i,outerSize:l,scrollOffset:e,lanes:t,flat:s}){const n=i.length-1,r=s?h=>s[h*2]:h=>i[h].start,o=s?h=>s[h*2]+s[h*2+1]:h=>i[h].end;if(i.length<=t)return{startIndex:0,endIndex:n};let a=oe(0,n,r,e),d=a;if(t===1)for(;d<n&&o(d)<e+l;)d++;else if(t>1){const h=Array(t).fill(0);for(;d<n&&h.some(u=>u<e+l);){const u=i[d];h[u.lane]=u.end,d++}const f=Array(t).fill(e+l);for(;a>=0&&f.some(u=>u>=e);){const u=i[a];f[u.lane]=u.start,a--}a=Math.max(0,a-a%t),d=Math.min(n,d+(t-1-d%t))}return{startIndex:a,endIndex:d}}const B=typeof document<"u"?S.useLayoutEffect:S.useEffect;function Ze({useFlushSync:i=!0,directDomUpdates:l=!1,directDomUpdatesMode:e="transform",...t}){const s=S.useReducer(d=>d+1,0)[1],n=S.useRef({enabled:l,mode:e,container:null,lastSize:null,lastPositions:new WeakMap,prevRange:null});n.current.enabled=l,n.current.mode=e;const r=d=>{const h=n.current;if(!h.enabled||!h.container)return;const f=d.getTotalSize();if(f!==h.lastSize){h.lastSize=f;const p=d.options.horizontal?"width":"height";h.container.style[p]=`${f}px`}const u=!!d.options.horizontal,w=h.mode==="transform",m=u?"left":"top",E=d.options.scrollMargin,g=d.getVirtualItems();for(const p of g){const y=p.start-E,x=d.elementsCache.get(p.key);x&&h.lastPositions.get(x)!==y&&(h.lastPositions.set(x,y),w?x.style.transform=u?`translate3d(${y}px, 0, 0)`:`translate3d(0, ${y}px, 0)`:x.style[m]=`${y}px`)}},o={...t,onChange:(d,h)=>{var f;const u=n.current;let w=!0;if(u.enabled){r(d);const m=d.range,E=u.prevRange;w=!E||E.isScrolling!==d.isScrolling||E.startIndex!==m?.startIndex||E.endIndex!==m?.endIndex,w&&(u.prevRange=m?{startIndex:m.startIndex,endIndex:m.endIndex,isScrolling:d.isScrolling}:null)}w&&(i&&h?ce.flushSync(s):s()),(f=t.onChange)==null||f.call(t,d,h)}},[a]=S.useState(()=>{const d=new qe(o);return Object.assign(d,{containerRef:h=>{const f=n.current;if(f.container=h,f.lastSize=null,h&&f.enabled){const u=d.getTotalSize();f.lastSize=u;const w=d.options.horizontal?"width":"height";h.style[w]=`${u}px`}}})});return a.setOptions(o),B(()=>a._didMount(),[]),B(()=>a._willUpdate()),B(()=>{r(a)}),a}function Qe(i){return Ze({observeElementRect:Ke,observeElementOffset:$e,scrollToFn:Ue,...i})}const A=57;function Ye({filteredGraphNodes:i,graphNodes:l,nodeSearchQuery:e,onClearSelection:t,onNodeSearchQueryChange:s,onSelectNode:n,selectedConnectedNodes:r,selectedNode:o,selectedNodeId:a}){const d=S.useRef(null),h=S.useRef(e),f=Qe({count:i.length,estimateSize:()=>A,getItemKey:g=>i[g]?.id??g,getScrollElement:()=>d.current,initialRect:{width:360,height:480},overscan:8}),u=o?`${o.title||"Untitled"} selected, ${o.connections} links`:"No graph node selected",w=`${i.length} graph notes shown`,m=f.getVirtualItems(),E=S.useCallback(g=>{if(g.currentTarget!==g.target||g.altKey||g.ctrlKey||g.metaKey)return;const p=d.current?.clientHeight||A*8,y=d.current?.scrollTop??0,x=Math.max(0,f.getTotalSize()-p),k=Math.max(A,p-A);let M=null;switch(g.key){case"ArrowDown":M=y+A;break;case"ArrowUp":M=y-A;break;case"PageDown":M=y+k;break;case"PageUp":M=y-k;break;case"Home":M=0;break;case"End":M=x;break;default:return}g.preventDefault(),f.scrollToOffset(Math.min(x,Math.max(0,M)),{behavior:"auto"})},[f]);return S.useEffect(()=>{const g=h.current!==e;if(h.current=e,g){f.scrollToOffset(0,{behavior:"auto"});return}if(!a)return;const p=i.findIndex(x=>x.id===a);if(p<0)return;const y=typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;f.scrollToIndex(p,{align:"auto",behavior:y?"auto":"smooth"})},[i,e,f,a]),c.jsxs("section",{className:"surface-base flex h-[min(34rem,calc(100dvh-12rem))] min-h-[420px] w-full max-w-full flex-col overflow-hidden md:h-[520px] xl:h-[min(44rem,calc(100vh-10rem))]","aria-labelledby":"graph-explorer-heading",children:[c.jsxs("div",{className:"border-b border-border-subtle/80 px-4 py-3",children:[c.jsxs("div",{className:"flex items-center justify-between gap-3",children:[c.jsxs("div",{className:"flex min-w-0 items-center gap-2 text-fg-tertiary",children:[c.jsx(de,{className:"h-3.5 w-3.5 shrink-0","aria-hidden":"true"}),c.jsx(j,{id:"graph-explorer-heading",as:"h2",variant:"label",weight:"semibold",className:"text-current",children:"Graph Explorer"})]}),c.jsx(j,{id:"graph-node-results-summary",as:"span","aria-live":"polite","aria-atomic":"true",variant:"meta",tone:"tertiary",className:"shrink-0",children:w})]}),c.jsxs("div",{className:"relative mt-2.5",children:[c.jsx(ue,{className:"pointer-events-none absolute top-1/2 left-3 h-4 w-4 -translate-y-1/2 text-fg-tertiary","aria-hidden":"true"}),c.jsx(fe,{id:"graph-node-search",size:"sm",value:e,onChange:g=>s(g.target.value),placeholder:"Find graph notes","aria-label":"Search graph notes","aria-describedby":"graph-node-results-summary",className:T("pl-9",e&&"pr-9")}),e&&c.jsx("button",{type:"button",onClick:()=>s(""),className:"focus-ring-soft absolute top-1/2 right-1.5 inline-flex h-6 w-6 -translate-y-1/2 items-center justify-center rounded-[8px] text-fg-tertiary outline-none transition-colors hover:bg-hover-subtle hover:text-fg-default","aria-label":"Clear graph search",children:c.jsx(Y,{className:"h-3.5 w-3.5","aria-hidden":"true"})})]})]}),c.jsx(j,{id:"graph-selection-status",as:"p",role:"status","aria-live":"polite",className:"sr-only",children:o?`${u}${r.length>0?`. Linked to ${r.map(g=>g.title||"Untitled").join(", ")}`:""}`:u}),c.jsx("div",{className:"flex h-[76px] shrink-0 items-center overflow-hidden border-b border-border-subtle/80 px-4 py-2.5",children:o?c.jsxs("div",{className:"flex min-w-0 flex-1 items-center justify-between gap-3 overflow-hidden",children:[c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsx(j,{as:"p",variant:"body",weight:"semibold",truncate:!0,children:o.title||"Untitled"}),c.jsxs(j,{as:"p",variant:"meta",tone:"tertiary",className:"mt-0.5",children:[o.connections," links",r.length>0?` · ${r.length} connected notes`:""]})]}),c.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[c.jsx("button",{type:"button",onClick:t,className:"focus-ring-soft inline-flex h-8 w-8 items-center justify-center rounded-[10px] text-fg-secondary outline-none transition-colors hover:bg-hover-subtle hover:text-fg-default","aria-label":"Deselect node",children:c.jsx(Y,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),c.jsx(X,{to:U,params:{id:o.id},"aria-label":`Open ${o.title||"Untitled"}`,className:"focus-ring-soft inline-flex h-8 w-8 items-center justify-center rounded-[10px] text-fg-secondary outline-none transition-colors hover:bg-hover-subtle hover:text-fg-default",children:c.jsx(ee,{className:"h-4 w-4","aria-hidden":"true"})})]})]}):c.jsx(j,{as:"p",variant:"meta",tone:"secondary",className:"line-clamp-2",children:l[0]?.title?`Select a node to preview links. Most linked: ${l[0].title}`:"Select a node to preview links."})}),c.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[c.jsx(j,{id:"graph-node-list-keyboard-help",as:"p",className:"sr-only",children:"Focus the graph notes list and use arrow, page, home, or end keys to browse more results."}),i.length>0?c.jsx("div",{ref:d,role:"list","aria-label":"Graph notes","aria-describedby":"graph-node-results-summary graph-node-list-keyboard-help",tabIndex:0,onKeyDown:E,className:"focus-ring-soft min-h-0 flex-1 overflow-x-hidden overflow-y-auto outline-none",children:c.jsx("div",{className:"relative w-full",style:{height:`${f.getTotalSize()}px`},children:m.map(g=>{const p=i[g.index];if(!p)return null;const y=a===p.id,x=p.title||"Untitled";return c.jsx("div",{ref:f.measureElement,role:"listitem","aria-posinset":g.index+1,"aria-setsize":i.length,"data-index":g.index,className:T("absolute top-0 left-0 w-full min-w-0 overflow-hidden border-b border-border-subtle/60",g.index===i.length-1&&"border-b-0"),style:{transform:`translateY(${g.start}px)`},children:c.jsxs("div",{className:T("grid min-w-0 grid-cols-[minmax(0,1fr)_3.5rem] items-center overflow-hidden transition-colors",y?"bg-elevated text-fg-default":"text-fg-secondary hover:bg-hover-subtle hover:text-fg-default"),children:[c.jsxs("button",{type:"button","aria-pressed":y,"aria-describedby":y?"graph-selection-status":void 0,onClick:()=>n(p.id),className:"focus-ring-soft group grid min-w-0 grid-cols-[3px_minmax(0,1fr)_2.75rem] items-center gap-3 overflow-hidden px-4 py-3 text-left outline-none",children:[c.jsx("span",{className:T("h-8 rounded-full transition-colors",y?"bg-fg-default":"bg-border-subtle group-hover:bg-border-secondary"),"aria-hidden":"true"}),c.jsx("span",{className:"min-w-0 overflow-hidden",children:c.jsx(j,{as:"span",variant:"meta",weight:y?"semibold":"medium",truncate:!0,className:"block min-w-0",children:x})}),c.jsxs(j,{as:"span",variant:"label",weight:"medium",tone:y?"secondary":"tertiary",className:"min-w-8 justify-self-end text-right tabular-nums",children:[c.jsx("span",{"aria-hidden":"true",children:p.connections}),c.jsxs("span",{className:"sr-only",children:[p.connections," links"]})]})]}),c.jsx(X,{to:U,params:{id:p.id},"aria-label":`Open ${x}`,className:"focus-ring-soft inline-flex h-9 w-9 shrink-0 items-center justify-center justify-self-center rounded-[10px] text-fg-secondary outline-none transition-colors hover:bg-hover-subtle hover:text-fg-default",children:c.jsx(ee,{className:"h-4 w-4","aria-hidden":"true"})})]})},g.key)})})}):c.jsx(j,{as:"p",variant:"meta",tone:"tertiary",className:"px-4 py-5 text-center",children:"No matching graph nodes"})]})]})}const ie=me(ge);function Xe(){const i=ie.useNavigate(),{selected:l}=ie.useSearch(),e=l??null,t=S.useCallback(n=>{i({search:r=>({...r,selected:n??void 0}),replace:!0})},[i]),s=S.useCallback(n=>{i({to:U,params:{id:n}})},[i]);return{selectedNodeId:e,selectNode:t,clearSelection:()=>t(null),openNode:s}}const et=c.jsxs(W,{title:"Knowledge Graph",description:c.jsx(O,{width:184,height:16,className:"rounded-full"}),children:[c.jsxs("div",{className:"mb-3 grid min-w-0 grid-cols-2 gap-2 xl:hidden","aria-hidden":"true",children:[c.jsx(O,{width:"100%",height:36,className:"rounded-[12px]"}),c.jsx(O,{width:"100%",height:36,className:"rounded-[12px]"})]}),c.jsxs("div",{className:"grid min-w-0 gap-4 xl:grid-cols-[minmax(0,1fr)_23rem]",children:[c.jsx("div",{className:"surface-base h-[min(34rem,calc(100dvh-12rem))] min-h-[420px] w-full max-w-full overflow-hidden md:h-[520px] xl:order-1 xl:h-[min(44rem,calc(100vh-10rem))]",children:c.jsx(O,{width:"100%",height:"100%"})}),c.jsxs("div",{className:"surface-base hidden h-[min(34rem,calc(100dvh-12rem))] min-h-[420px] w-full max-w-full flex-col gap-3 p-4 md:h-[520px] xl:order-2 xl:flex xl:h-[min(44rem,calc(100vh-10rem))]",children:[c.jsxs("div",{className:"flex items-center justify-between gap-3",children:[c.jsx(O,{width:120,height:14,className:"rounded-full"}),c.jsx(O,{width:92,height:12,className:"rounded-full"})]}),c.jsx(O,{width:"100%",height:34,className:"rounded-[12px]"}),c.jsx(O,{width:"78%",height:12,className:"rounded-full"}),c.jsx("div",{className:"flex min-h-0 flex-1 flex-col gap-2",children:Array.from({length:6}).map((i,l)=>c.jsx(O,{width:"100%",height:40,className:"rounded-[12px]"},l))})]})]})]});function tt(){const[i,l]=S.useState(()=>typeof window>"u"?!1:window.matchMedia("(max-width: 1279px)").matches);return S.useEffect(()=>{const e=window.matchMedia("(max-width: 1279px)"),t=()=>l(e.matches);return t(),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),i}function st(){const[i,l]=S.useState(""),[e,t]=S.useState("graph"),s=tt(),{clearSelection:n,openNode:r,selectNode:o,selectedNodeId:a}=Xe(),{data:d}=xe({queryKey:Se.notes.graph(),queryFn:async()=>{const g=await ve();if(g.type==="error")throw g;return g.noteGraph}}),h=S.useMemo(()=>Ce(d),[d]),f=S.useMemo(()=>h?Me(h.links):new Map,[h]),u=S.useMemo(()=>h?ke(h.nodes):[],[h]),w=S.useMemo(()=>je(u,i),[u,i]),m=S.useMemo(()=>Ie(u,a),[u,a]),E=S.useMemo(()=>ze(u,f,a),[f,u,a]);return h?c.jsxs(W,{title:"Knowledge Graph",description:`${h.nodes.length} linked notes, ${h.links.length} connections`,children:[c.jsxs("div",{role:"tablist","aria-label":"Graph mobile view",className:"surface-base mb-3 grid min-w-0 grid-cols-2 gap-1 p-1 xl:hidden",children:[c.jsx("button",{type:"button",role:"tab",id:"graph-mobile-tab-graph","aria-controls":"graph-mobile-panel-graph","aria-selected":e==="graph",onClick:()=>t("graph"),className:T("focus-ring-soft rounded-[10px] px-3 py-2 text-sm font-semibold outline-none transition-colors",e==="graph"?"bg-elevated text-fg-default shadow-sm":"text-fg-secondary hover:bg-hover-subtle hover:text-fg-default"),children:"Graph"}),c.jsx("button",{type:"button",role:"tab",id:"graph-mobile-tab-list","aria-controls":"graph-mobile-panel-list","aria-selected":e==="list",onClick:()=>t("list"),className:T("focus-ring-soft rounded-[10px] px-3 py-2 text-sm font-semibold outline-none transition-colors",e==="list"?"bg-elevated text-fg-default shadow-sm":"text-fg-secondary hover:bg-hover-subtle hover:text-fg-default"),children:"List"})]}),c.jsxs("div",{className:"grid min-w-0 gap-4 xl:grid-cols-[minmax(0,1fr)_23rem]",children:[c.jsx("div",{id:"graph-mobile-panel-graph",role:"tabpanel","aria-labelledby":"graph-mobile-tab-graph","aria-hidden":s&&e!=="graph",inert:s&&e!=="graph"?!0:void 0,className:T("col-start-1 row-start-1 min-w-0 xl:col-auto xl:row-auto xl:order-1 xl:pointer-events-auto xl:visible",e==="graph"?"pointer-events-auto visible":"pointer-events-none invisible"),children:c.jsx(Re,{adjacencyMap:f,graphData:h,onClearSelection:n,onOpenNode:r,onSelectNode:o,selectedNodeId:a})}),c.jsx("div",{id:"graph-mobile-panel-list",role:"tabpanel","aria-labelledby":"graph-mobile-tab-list","aria-hidden":s&&e!=="list",inert:s&&e!=="list"?!0:void 0,className:T("col-start-1 row-start-1 min-w-0 xl:col-auto xl:row-auto xl:order-2 xl:pointer-events-auto xl:visible",e==="list"?"pointer-events-auto visible":"pointer-events-none invisible"),children:c.jsx(Ye,{filteredGraphNodes:w,graphNodes:u,nodeSearchQuery:i,onClearSelection:n,onNodeSearchQueryChange:l,onSelectNode:o,selectedConnectedNodes:E,selectedNode:m,selectedNodeId:a})})]})]}):c.jsx(W,{title:"Knowledge Graph",description:"0 linked notes, 0 connections",children:c.jsx(ye,{title:"No constellations yet",description:"Link your notes together and watch your own starry sky unfold"})})}function at(){return c.jsx(pe,{fallback:et,errorTitle:"Failed to load graph",errorDescription:"Retry loading your linked note constellation",renderError:({error:i,retry:l})=>c.jsx(W,{title:"Knowledge Graph",children:c.jsx(be,{title:"Failed to load graph",description:"Retry loading your linked note constellation",error:i,onRetry:l})}),children:c.jsx(st,{})})}export{at as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e}from"./note-vendor-
|
|
1
|
+
import{j as e}from"./note-vendor-DkYKUmLo.js";import{a as g}from"./graph-vendor-UTvF2NS_.js";function u({src:r,alt:n,loading:t="lazy",className:i}){const s=g.useRef(null);return g.useEffect(()=>{if(!s.current||t!=="lazy"||!r)return;const a=new IntersectionObserver(([c])=>{if(c.isIntersecting){const A=c.target;A.src=A.dataset.src,a.unobserve(A)}});return a.observe(s.current),()=>{a.disconnect()}},[t,r]),e.jsx(e.Fragment,{children:t!=="lazy"?e.jsx("img",{src:r,alt:n,className:`${i??""} dark:brightness-[0.85] dark:saturate-[0.9]`.trim()}):e.jsx("img",{ref:s,src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2O4evXqfwAIgQN/QHwrfwAAAABJRU5ErkJggg==",alt:n,"data-src":r,className:`${i??""} dark:brightness-[0.85] dark:saturate-[0.9]`.trim()})})}export{u as I};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a}from"./graph-vendor-UTvF2NS_.js";import{a7 as m}from"./index-VHp17GQX.js";const n=new Map([["bold",a.createElement(a.Fragment,null,a.createElement("path",{d:"M144,96a16,16,0,1,1,16,16A16,16,0,0,1,144,96Zm92-40V200a20,20,0,0,1-20,20H40a20,20,0,0,1-20-20V56A20,20,0,0,1,40,36H216A20,20,0,0,1,236,56ZM44,60v79.72l33.86-33.86a20,20,0,0,1,28.28,0L147.31,147l17.18-17.17a20,20,0,0,1,28.28,0L212,149.09V60Zm0,136H162.34L92,125.66l-48,48Zm168,0V183l-33.37-33.37L164.28,164l32,32Z"}))],["duotone",a.createElement(a.Fragment,null,a.createElement("path",{d:"M224,56V178.06l-39.72-39.72a8,8,0,0,0-11.31,0L147.31,164,97.66,114.34a8,8,0,0,0-11.32,0L32,168.69V56a8,8,0,0,1,8-8H216A8,8,0,0,1,224,56Z",opacity:"0.2"}),a.createElement("path",{d:"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40Zm0,16V158.75l-26.07-26.06a16,16,0,0,0-22.63,0l-20,20-44-44a16,16,0,0,0-22.62,0L40,149.37V56ZM40,172l52-52,80,80H40Zm176,28H194.63l-36-36,20-20L216,181.38V200ZM144,100a12,12,0,1,1,12,12A12,12,0,0,1,144,100Z"}))],["fill",a.createElement(a.Fragment,null,a.createElement("path",{d:"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM156,88a12,12,0,1,1-12,12A12,12,0,0,1,156,88Zm60,112H40V160.69l46.34-46.35a8,8,0,0,1,11.32,0h0L165,181.66a8,8,0,0,0,11.32-11.32l-17.66-17.65L173,138.34a8,8,0,0,1,11.31,0L216,170.07V200Z"}))],["light",a.createElement(a.Fragment,null,a.createElement("path",{d:"M216,42H40A14,14,0,0,0,26,56V200a14,14,0,0,0,14,14H216a14,14,0,0,0,14-14V56A14,14,0,0,0,216,42ZM40,54H216a2,2,0,0,1,2,2V163.57L188.53,134.1a14,14,0,0,0-19.8,0l-21.42,21.42L101.9,110.1a14,14,0,0,0-19.8,0L38,154.2V56A2,2,0,0,1,40,54ZM38,200V171.17l52.58-52.58a2,2,0,0,1,2.84,0L176.83,202H40A2,2,0,0,1,38,200Zm178,2H193.8l-38-38,21.41-21.42a2,2,0,0,1,2.83,0l38,38V200A2,2,0,0,1,216,202ZM146,100a10,10,0,1,1,10,10A10,10,0,0,1,146,100Z"}))],["regular",a.createElement(a.Fragment,null,a.createElement("path",{d:"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40Zm0,16V158.75l-26.07-26.06a16,16,0,0,0-22.63,0l-20,20-44-44a16,16,0,0,0-22.62,0L40,149.37V56ZM40,172l52-52,80,80H40Zm176,28H194.63l-36-36,20-20L216,181.38V200ZM144,100a12,12,0,1,1,12,12A12,12,0,0,1,144,100Z"}))],["thin",a.createElement(a.Fragment,null,a.createElement("path",{d:"M216,44H40A12,12,0,0,0,28,56V200a12,12,0,0,0,12,12H216a12,12,0,0,0,12-12V56A12,12,0,0,0,216,44ZM40,52H216a4,4,0,0,1,4,4V168.4l-32.89-32.89a12,12,0,0,0-17,0l-22.83,22.83-46.82-46.83a12,12,0,0,0-17,0L36,159V56A4,4,0,0,1,40,52ZM36,200V170.34l53.17-53.17a4,4,0,0,1,5.66,0L181.66,204H40A4,4,0,0,1,36,200Zm180,4H193l-40-40,22.83-22.83a4,4,0,0,1,5.66,0L220,179.71V200A4,4,0,0,1,216,204ZM148,100a8,8,0,1,1,8,8A8,8,0,0,1,148,100Z"}))]]),e=a.forwardRef((l,t)=>a.createElement(m,{ref:t,...l,weights:n}));e.displayName="ImageIcon";const Z=e;export{Z as I};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import{j as t,i as Ue,k as ia,U as st,y as ot,v as ca,X as da,F as ua}from"./note-vendor-DkYKUmLo.js";import{aj as pa,a7 as lt,T as y,c as Y,a5 as it,ak as fa,q as T,M as L,F as ue,B as S,al as ct,X as dt,am as ma,m as pe,k as ve,u as he,an as ha,ao as xa,ap as ga,aq as ya,ar as va,d as J,E as ke,I as Le,as as ba,at as wa,au as Ee,D as ut,l as pt,g as ja,av as Na,a as Ca,aw as ft,ax as Aa,ay as mt,N as ge,ah as Sa,$ as ka,az as Be,aA as xe,Y as Fe,P as He,a4 as _e,aB as Ea,aC as Ra,aD as Ta,aE as Ma,aF as Qe,aG as Da,i as ne,L as Ie,j as Pa,aH as Oa,aI as La,aJ as qe,O as Ba,aK as Fa,S as Ge,e as Re,a2 as _a,aL as Ia,aM as $a,aN as Ua,aO as Ha,aP as Va,aQ as za,aR as We,aS as Ka,aT as Za}from"./index-VHp17GQX.js";import{a as o}from"./graph-vendor-UTvF2NS_.js";import{c as Ya,C as Je,m as Qa}from"./Callout-BK0K9E74.js";import{S as qa}from"./SurfaceCard-CNSQfYfM.js";import{u as Ga,R as Wa}from"./useReminderMutate-CoXXqJY2.js";import{n as $e}from"./Plus.es-BqeC8T8h.js";import{u as Ja}from"./image.api-8dlMwzMd.js";import{A as Xa,G as en,a3 as ce,a4 as tn}from"./note-core-BklwyZHk.js";import{s as an}from"./Copy.es-zm8f_XXX.js";import{f as nn,c as rn}from"./tag.api-Dl8DQd0m.js";function sn(e,a){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 n=!!(e.condition??!0),s=e.blockerFn;return{shouldBlockFn:async()=>n&&s!==void 0?await s():n,enableBeforeUnload:n,withResolver:s===void 0}}function on(e,a){const{shouldBlockFn:n,enableBeforeUnload:s=!0,disabled:r=!1,withResolver:c=!1}=sn(e),i=pa(),{history:d}=i,[l,m]=o.useState({status:"idle",current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0});return o.useEffect(()=>{const p=async g=>{function v(M){const f=i.parseLocation(M),w=i.getMatchedRoutes(f.pathname);return w.foundRoute===void 0?{routeId:"__notFound__",fullPath:f.pathname,pathname:f.pathname,params:w.routeParams,search:i.options.parseSearch(M.search)}:{routeId:w.foundRoute.id,fullPath:w.foundRoute.fullPath,pathname:f.pathname,params:w.routeParams,search:i.options.parseSearch(M.search)}}const h=v(g.currentLocation),A=v(g.nextLocation);if(h.routeId==="__notFound__"&&A.routeId!=="__notFound__")return!1;const C=await n({action:g.action,current:h,next:A});if(!c)return C;if(!C)return!1;const _=await new Promise(M=>{m({status:"blocked",current:h,next:A,action:g.action,proceed:()=>M(!1),reset:()=>M(!0)})});return m({status:"idle",current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0}),_};return r?void 0:d.block({blockerFn:p,enableBeforeUnload:s})},[n,s,r,c,d,i]),l}const ln=new Map([["bold",o.createElement(o.Fragment,null,o.createElement("path",{d:"M216.49,79.52l-56-56A12,12,0,0,0,152,20H56A20,20,0,0,0,36,40V216a20,20,0,0,0,20,20H200a20,20,0,0,0,20-20V88A12,12,0,0,0,216.49,79.52ZM160,57l23,23H160ZM60,212V44h76V92a12,12,0,0,0,12,12h48V212Z"}))],["duotone",o.createElement(o.Fragment,null,o.createElement("path",{d:"M208,88H152V32Z",opacity:"0.2"}),o.createElement("path",{d:"M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Z"}))],["fill",o.createElement(o.Fragment,null,o.createElement("path",{d:"M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM152,88V44l44,44Z"}))],["light",o.createElement(o.Fragment,null,o.createElement("path",{d:"M212.24,83.76l-56-56A6,6,0,0,0,152,26H56A14,14,0,0,0,42,40V216a14,14,0,0,0,14,14H200a14,14,0,0,0,14-14V88A6,6,0,0,0,212.24,83.76ZM158,46.48,193.52,82H158ZM200,218H56a2,2,0,0,1-2-2V40a2,2,0,0,1,2-2h90V88a6,6,0,0,0,6,6h50V216A2,2,0,0,1,200,218Z"}))],["regular",o.createElement(o.Fragment,null,o.createElement("path",{d:"M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Z"}))],["thin",o.createElement(o.Fragment,null,o.createElement("path",{d:"M210.83,85.17l-56-56A4,4,0,0,0,152,28H56A12,12,0,0,0,44,40V216a12,12,0,0,0,12,12H200a12,12,0,0,0,12-12V88A4,4,0,0,0,210.83,85.17ZM156,41.65,198.34,84H156ZM200,220H56a4,4,0,0,1-4-4V40a4,4,0,0,1,4-4h92V88a4,4,0,0,0,4,4h52V216A4,4,0,0,1,200,220Z"}))]]),cn=new Map([["bold",o.createElement(o.Fragment,null,o.createElement("path",{d:"M87.5,151.52l64-64a12,12,0,0,1,17,17l-64,64a12,12,0,0,1-17-17Zm131-114a60.08,60.08,0,0,0-84.87,0L103.51,67.61a12,12,0,0,0,17,17l30.07-30.06a36,36,0,0,1,50.93,50.92L171.4,135.52a12,12,0,1,0,17,17l30.08-30.06A60.09,60.09,0,0,0,218.45,37.55ZM135.52,171.4l-30.07,30.08a36,36,0,0,1-50.92-50.93l30.06-30.07a12,12,0,0,0-17-17L37.55,133.58a60,60,0,0,0,84.88,84.87l30.06-30.07a12,12,0,0,0-17-17Z"}))],["duotone",o.createElement(o.Fragment,null,o.createElement("path",{d:"M209.94,113.94l-96,96a48,48,0,0,1-67.88-67.88l96-96a48,48,0,0,1,67.88,67.88Z",opacity:"0.2"}),o.createElement("path",{d:"M165.66,90.34a8,8,0,0,1,0,11.32l-64,64a8,8,0,0,1-11.32-11.32l64-64A8,8,0,0,1,165.66,90.34ZM215.6,40.4a56,56,0,0,0-79.2,0L106.34,70.45a8,8,0,0,0,11.32,11.32l30.06-30a40,40,0,0,1,56.57,56.56l-30.07,30.06a8,8,0,0,0,11.31,11.32L215.6,119.6a56,56,0,0,0,0-79.2ZM138.34,174.22l-30.06,30.06a40,40,0,1,1-56.56-56.57l30.05-30.05a8,8,0,0,0-11.32-11.32L40.4,136.4a56,56,0,0,0,79.2,79.2l30.06-30.07a8,8,0,0,0-11.32-11.31Z"}))],["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,32ZM144.56,173.66l-21.45,21.45a44,44,0,0,1-62.22-62.22l21.45-21.46a8,8,0,0,1,11.32,11.31L72.2,144.2a28,28,0,0,0,39.6,39.6l21.45-21.46a8,8,0,0,1,11.31,11.32Zm-34.9-16a8,8,0,0,1-11.32-11.32l48-48a8,8,0,0,1,11.32,11.32Zm85.45-34.55-21.45,21.45a8,8,0,0,1-11.32-11.31L183.8,111.8a28,28,0,0,0-39.6-39.6L122.74,93.66a8,8,0,0,1-11.31-11.32l21.46-21.45a44,44,0,0,1,62.22,62.22Z"}))],["light",o.createElement(o.Fragment,null,o.createElement("path",{d:"M164.25,91.75a6,6,0,0,1,0,8.49l-64,64a6,6,0,0,1-8.49-8.48l64-64A6,6,0,0,1,164.25,91.75ZM214.2,41.8a54.07,54.07,0,0,0-76.38,0L107.75,71.85a6,6,0,0,0,8.49,8.49l30.07-30.06a42,42,0,0,1,59.41,59.41l-30.08,30.07a6,6,0,1,0,8.49,8.49l30.07-30.07A54,54,0,0,0,214.2,41.8ZM139.76,175.64l-30.07,30.08a42,42,0,0,1-59.41-59.41l30.06-30.07a6,6,0,0,0-8.49-8.49l-30,30.07a54,54,0,0,0,76.38,76.39l30.07-30.08a6,6,0,0,0-8.49-8.49Z"}))],["regular",o.createElement(o.Fragment,null,o.createElement("path",{d:"M165.66,90.34a8,8,0,0,1,0,11.32l-64,64a8,8,0,0,1-11.32-11.32l64-64A8,8,0,0,1,165.66,90.34ZM215.6,40.4a56,56,0,0,0-79.2,0L106.34,70.45a8,8,0,0,0,11.32,11.32l30.06-30a40,40,0,0,1,56.57,56.56l-30.07,30.06a8,8,0,0,0,11.31,11.32L215.6,119.6a56,56,0,0,0,0-79.2ZM138.34,174.22l-30.06,30.06a40,40,0,1,1-56.56-56.57l30.05-30.05a8,8,0,0,0-11.32-11.32L40.4,136.4a56,56,0,0,0,79.2,79.2l30.06-30.07a8,8,0,0,0-11.32-11.31Z"}))],["thin",o.createElement(o.Fragment,null,o.createElement("path",{d:"M162.84,93.16a4,4,0,0,1,0,5.66l-64,64a4,4,0,0,1-5.66-5.66l64-64A4,4,0,0,1,162.84,93.16Zm49.95-49.95a52.07,52.07,0,0,0-73.56,0L109.17,73.27a4,4,0,0,0,5.65,5.66l30.07-30.06a44,44,0,0,1,62.24,62.24l-30.07,30.06a4,4,0,0,0,5.66,5.66l30.07-30.06A52.07,52.07,0,0,0,212.79,43.21ZM141.17,177.06l-30.06,30.07a44,44,0,0,1-62.24-62.24l30.06-30.06a4,4,0,0,0-5.66-5.66L43.21,139.23a52,52,0,0,0,73.56,73.56l30.06-30.07a4,4,0,1,0-5.66-5.66Z"}))]]),ht=o.forwardRef((e,a)=>o.createElement(lt,{ref:a,...e,weights:ln}));ht.displayName="FileIcon";const dn=ht,xt=o.forwardRef((e,a)=>o.createElement(lt,{ref:a,...e,weights:cn}));xt.displayName="LinkSimpleIcon";const gt=xt;function yt({icon:e,title:a,className:n}){return t.jsxs("div",{className:Y("flex items-center gap-2",n),children:[t.jsx("div",{className:"flex h-3.5 w-3.5 shrink-0 items-center justify-center text-current",children:e}),t.jsx(y,{as:"span",variant:"label",weight:"semibold",className:"text-current",children:a})]})}function Ve({title:e,icon:a,action:n,titleButtonProps:s,ariaLabel:r,className:c,children:i}){const d=i!=null&&i!==!1,l=n!=null&&n!==!1,m=t.jsx(yt,{icon:a,title:e,className:"text-fg-tertiary"});return t.jsxs("section",{className:Y("surface-base p-4",c),"aria-label":r??e,children:[t.jsxs("div",{className:Y("relative",l&&"pr-44 sm:pr-48",d&&"mb-3"),children:[s?t.jsx("button",{...s,type:"button",className:Y("focus-ring-soft -m-1 flex items-center gap-2 rounded-[10px] p-1 text-fg-tertiary transition-colors hover:bg-hover-subtle hover:text-fg-default",s.className),children:m}):m,l&&t.jsx("div",{className:"absolute top-1/2 right-0 flex -translate-y-1/2 items-center gap-2",children:n})]}),i]})}function un({title:e,description:a,selected:n=!1,onClick:s,children:r}){return t.jsxs("button",{type:"button","aria-pressed":n,className:`focus-ring-soft flex w-full items-start justify-between gap-3 p-3 text-left transition-colors sm:p-4 ${n?"surface-floating bg-elevated":"rounded-[14px] border border-border-subtle bg-transparent hover:border-border-secondary hover:bg-hover-subtle"}`,onClick:s,children:[t.jsxs("div",{className:"min-w-0",children:[t.jsx(y,{as:"div",variant:"body",weight:"semibold",tone:n?"default":"secondary",children:e}),t.jsx(y,{as:"div",variant:"meta",weight:"medium",tone:n?"secondary":"tertiary",className:"mt-1",children:a})]}),r?t.jsx("div",{className:"shrink-0",children:r}):null]})}const pn=e=>{const{data:a}=it({queryKey:T.notes.backReferences(e.noteId),async queryFn(){const n=await fa(e.noteId);if(n.type==="error")throw n;return n.backReferences}});return e.render(a)},fn=[{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 mn({isOpen:e,onClose:a,onSave:n,currentLayout:s="wide"}){const[r,c]=o.useState(s);o.useEffect(()=>{e&&c(s)},[e,s]);const i=()=>{n(r),a()};return t.jsxs(L,{isOpen:e,onClose:a,variant:"compact",children:[t.jsx(L.Header,{title:"Layout Settings",onClose:a}),t.jsx(L.Body,{children:t.jsx("div",{className:"flex flex-col gap-3 sm:gap-4",children:t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsx(y,{as:"div",variant:"body",weight:"semibold",tone:"secondary",children:"Note layout"}),t.jsx("div",{className:"flex flex-col gap-2",children:fn.map(d=>t.jsx(un,{title:d.label,description:d.description,selected:r===d.value,onClick:()=>c(d.value)},d.value))})]})})}),t.jsx(L.Footer,{children:t.jsxs(ue,{children:[t.jsx(S,{variant:"ghost",size:"sm",onClick:a,children:"Cancel"}),t.jsx(S,{variant:"primary",size:"sm",onClick:i,children:"Apply"})]})})]})}const hn=/[:{}[\],&*#?|<>=!%@`-]/,xn="/assets/images/",vt="<!-- Local Ocean Brain image omitted from document-only export. -->",gn=e=>e.trim().toLowerCase().replace(/\s+/g,"-").replace(/[\\/:*?"<>|]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")||"untitled-note",me=e=>e?hn.test(e)||/^\s|\s$/.test(e)?JSON.stringify(e):e:'""',ye=e=>{if(!e)return;const a=Number(e);return Number.isFinite(a)?new Date(a).toISOString():e},ze=()=>typeof window>"u"||!window.location?.origin?"http://localhost":window.location.origin,be=(e,a=ze())=>{try{const n=new URL(e,a);return n.origin===a&&n.pathname.startsWith(xn)}catch{return!1}},bt=(e,a=ze())=>{const n=new URL(e,a);return`${n.pathname}${n.search}`},wt=e=>e.headers.get("content-type")?.split(";")[0]?.trim().toLowerCase()??"",yn=e=>e.trim().replace(/[\\/:*?"<>|]/g,"-").split("").map(s=>s.charCodeAt(0)<32?"-":s).join("").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")||"image",vn=e=>{const a=e.lastIndexOf(".");return a<=0||a===e.length-1?{baseName:e,extension:""}:{baseName:e.slice(0,a),extension:e.slice(a)}},jt=(e,a,n)=>{const r=new URL(e,ze()).pathname.split("/").filter(Boolean),c=decodeURIComponent(r[r.length-1]??""),i=`image-${a+1}`,{baseName:d,extension:l}=vn(yn(c||i));let m=`${d}${l}`,p=2;for(;n.has(m);)m=`${d}-${p}${l}`,p+=1;return n.add(m),`assets/${m}`},bn=(e,a)=>{let n=null;for(let s=a;s<e.length;s+=1){const r=e[s];if(n){r===n&&(n=null);continue}if(r==='"'||r==="'"){n=r;continue}if(r===">")return s}return-1},wn=(e,a)=>{let n=a;for(;n<e.length;){const s=e.toLowerCase().indexOf("<img",n);if(s===-1)return-1;const r=e[s+4],c=s===0?-1:e.lastIndexOf("<",s-1),i=s===0?-1:e.lastIndexOf(">",s-1);if(c<=i&&(!r||/[\s/>]/.test(r)))return s;n=s+4}return-1},jn=(e,a,n,s)=>{let r=a;for(;r<n;){for(;r<n&&/[\s/]/.test(e[r]);)r+=1;const c=r;for(;r<n&&/[^\s=/>]/.test(e[r]);)r+=1;const i=e.slice(c,r).toLowerCase();for(;r<n&&/\s/.test(e[r]);)r+=1;if(e[r]!=="=")continue;for(r+=1;r<n&&/\s/.test(e[r]);)r+=1;const d=e[r];if(d==='"'||d==="'"){const m=r+1,p=e.indexOf(d,m);if(p===-1||p>n)return;if(r=p+1,i===s)return{end:p,start:m,value:e.slice(m,p)};continue}const l=r;for(;r<n&&/[^\s>]/.test(e[r]);)r+=1;if(i===s)return{end:r,start:l,value:e.slice(l,r)}}},Nt=e=>{const a=[];let n=0;for(;n<e.length;){const s=wn(e,n);if(s===-1)break;const r=bn(e,s+4);if(r===-1)break;const c=jn(e,s+4,r,"src");c&&a.push({end:r+1,source:c,start:s}),n=r+1}return a},Ct=(e,a)=>{let n=e;for(const s of[...a].sort((r,c)=>c.start-r.start))n=`${n.slice(0,s.start)}${s.value}${n.slice(s.end)}`;return n},At=(e,a)=>{let n=e;for(const s of[...a].sort((r,c)=>c.start-r.start))n=`${n.slice(0,s.start)}${s.value}${n.slice(s.end)}`;return n},St=e=>{const a=/!\[[^\]\n]*\]\([^)]+?\)/g,n=[];for(const s of e.matchAll(a)){if(s.index===void 0)continue;const r=s[0],c=r.indexOf("("),i=r.lastIndexOf(")");if(c<0||i<0||i<=c)continue;let d=c+1;for(;d<i&&/\s/.test(r[d]);)d+=1;if(d>=i)continue;let l=d,m=d,p=d;if(r[d]==="<"){const g=r.indexOf(">",d+1);if(g===-1||g>i)continue;l=g+1,m=d+1,p=g}else{for(;l<i&&!/\s/.test(r[l]);)l+=1;m=d,p=l}n.push({end:s.index+r.length,source:{end:s.index+l,start:s.index+d,value:r.slice(m,p)},start:s.index})}return n},Nn=(e,a)=>`${gn(e)}.${a}`,Cn=({id:e,title:a,createdAt:n,updatedAt:s})=>{const r=["---",`title: ${me(a)}`,`note_id: ${me(e)}`],c=ye(n),i=ye(s);return c&&r.push(`created_at: ${me(c)}`),i&&r.push(`updated_at: ${me(i)}`),r.push("source: ocean-brain","---"),r.join(`
|
|
2
|
+
`)},kt=(e,a,n=!1)=>n?`${Cn(a)}
|
|
3
|
+
|
|
4
|
+
${e}`:e,An=(e,a,{includeMetadata:n=!1}={})=>{const s=kt(e,a,n),r=St(s).filter(c=>be(c.source.value)).map(c=>({end:c.end,start:c.start,value:vt}));return At(s,r)},Et=(e,a,{includeMetadata:n=!1}={})=>`${n?`<!--
|
|
5
|
+
source: ocean-brain
|
|
6
|
+
note_id: ${a.id}
|
|
7
|
+
title: ${a.title}
|
|
8
|
+
created_at: ${ye(a.createdAt)??""}
|
|
9
|
+
updated_at: ${ye(a.updatedAt)??""}
|
|
10
|
+
-->
|
|
11
|
+
`:""}${e}`,Sn=(e,a,{includeMetadata:n=!1}={})=>{const s=Et(e,a,{includeMetadata:n}),r=Nt(s).filter(c=>be(c.source.value)).map(c=>({end:c.end,start:c.start,value:vt}));return Ct(s,r)},kn=async(e,a,{fetchImpl:n=fetch,includeMetadata:s=!1}={})=>{const r=new ct,c=Et(e,a,{includeMetadata:s}),i=Nt(c),d=[],l=new Set,m=new Map;for(const{source:p}of i){if(!be(p.value))continue;const g=bt(p.value);let v=m.get(g);if(!v){v=jt(g,m.size,l),m.set(g,v);const h=await n(g,{credentials:"same-origin"});if(!h.ok)throw new Error(`Failed to fetch image asset: ${g}`);if(!wt(h).startsWith("image/"))throw new Error(`Image asset did not return image content: ${g}`);r.file(v,new Uint8Array(await h.arrayBuffer()))}d.push({end:p.end,start:p.start,value:`./${v}`})}return r.file("note.html",Ct(c,d)),r.generateAsync({type:"blob"})},En=async(e,a,{fetchImpl:n=fetch,includeMetadata:s=!1}={})=>{const r=new ct,c=kt(e,a,s),i=St(c),d=[],l=new Set,m=new Map;for(const{source:p}of i){if(!be(p.value))continue;const g=bt(p.value);let v=m.get(g);if(!v){v=jt(g,m.size,l),m.set(g,v);const h=await n(g,{credentials:"same-origin"});if(!h.ok)throw new Error(`Failed to fetch image asset: ${g}`);if(!wt(h).startsWith("image/"))throw new Error(`Image asset did not return image content: ${g}`);r.file(v,new Uint8Array(await h.arrayBuffer()))}d.push({end:p.end,start:p.start,value:`./${v}`})}return r.file("note.md",At(c,d)),r.generateAsync({type:"blob"})},Rn=(e,a)=>{const n=URL.createObjectURL(e),s=document.createElement("a");s.href=n,s.download=a,document.body.appendChild(s),s.click(),s.remove(),URL.revokeObjectURL(n)},Rt={html:{extension:"html",getContent:e=>e.getHtml(),createDocumentBlob:(e,a)=>new Blob([Sn(e,a.metadata,{includeMetadata:a.includeMetadata})],{type:"text/html;charset=utf-8"}),createZipBlob:(e,a)=>kn(e,a.metadata,{fetchImpl:a.fetchImpl,includeMetadata:a.includeMetadata})},markdown:{extension:"md",getContent:e=>e.getMarkdown(),createDocumentBlob:(e,a)=>new Blob([An(e,a.metadata,{includeMetadata:a.includeMetadata})],{type:"text/markdown;charset=utf-8"}),createZipBlob:(e,a)=>En(e,a.metadata,{fetchImpl:a.fetchImpl,includeMetadata:a.includeMetadata})}},Tt=(e,a)=>a?"zip":Rt[e].extension,Tn=async e=>{const a=Rt[e.format],n=a.getContent(e.source);if(n===void 0)return{type:"not-ready",format:e.format};const s=Tt(e.format,e.includeAssets);return{type:"success",blob:e.includeAssets?await a.createZipBlob(n,e):a.createDocumentBlob(n,e),filename:Nn(e.metadata.title,s)}},Mn=e=>e==="markdown"?"Markdown is not ready yet.":"HTML is not ready yet.",Xe=({checked:e,description:a,id:n,label:s,onChange:r})=>{const c=`${n}-label`;return t.jsxs("div",{className:"flex min-h-6 items-center gap-2",children:[t.jsx(dt,{id:n,size:"sm",checked:e,onChange:i=>r(i.target.checked),"aria-labelledby":c}),t.jsx("label",{id:c,htmlFor:n,className:"min-w-0 cursor-pointer",children:t.jsx(y,{as:"span",variant:"label",weight:"medium",tone:"secondary",className:"block",children:s})}),t.jsx(ma,{content:t.jsx("span",{className:"block max-w-[240px] leading-4",children:a}),side:"top",children:t.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:t.jsx(Ya,{className:"h-3.5 w-3.5"})})})]})};function Dn({isOpen:e,metadata:a,getHtml:n,getMarkdown:s,onClose:r}){const c=pe(),[i,d]=o.useState("html"),[l,m]=o.useState(!0),[p,g]=o.useState(!1),[v,h]=o.useState(!1),A=Tt(i,l),C=async()=>{h(!0);try{const k=await Tn({format:i,includeAssets:l,includeMetadata:p,metadata:a,source:{getHtml:n,getMarkdown:s}});if(k.type==="not-ready"){c(Mn(k.format));return}Rn(k.blob,k.filename),r(),c("Downloaded note.")}catch{c("Failed to download note.")}finally{h(!1)}};return t.jsxs(L,{isOpen:e,onClose:r,variant:"compact",children:[t.jsx(L.Header,{title:"Download document",onClose:r}),t.jsx(L.Body,{children:t.jsxs("div",{className:"flex flex-col gap-5",children:[t.jsxs("div",{className:"flex flex-col gap-3",role:"radiogroup","aria-label":"Format",children:[t.jsx(y,{as:"span",variant:"meta",weight:"bold",tone:"muted",children:"Format"}),t.jsxs("div",{className:"flex flex-wrap gap-4",children:[t.jsxs("label",{className:"flex cursor-pointer items-center gap-2",children:[t.jsx("input",{type:"radio",name:"note-export-format",value:"html",checked:i==="html",onChange:()=>d("html"),className:"h-4 w-4 accent-cta"}),t.jsx(y,{as:"span",variant:"label",weight:"medium",tone:"secondary",children:".html"})]}),t.jsxs("label",{className:"flex cursor-pointer items-center gap-2",children:[t.jsx("input",{type:"radio",name:"note-export-format",value:"markdown",checked:i==="markdown",onChange:()=>d("markdown"),className:"h-4 w-4 accent-cta"}),t.jsx(y,{as:"span",variant:"label",weight:"medium",tone:"secondary",children:".md"})]})]})]}),t.jsxs("div",{className:"flex flex-col gap-3",role:"group","aria-label":"Options",children:[t.jsx(y,{as:"span",variant:"meta",weight:"bold",tone:"muted",children:"Options"}),t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsx(Xe,{id:"note-export-include-assets",label:"Include local image assets",checked:l,onChange:m,description:"Bundle uploaded Ocean Brain images with the document. Without assets, local images are omitted."}),t.jsx(Xe,{id:"note-export-include-metadata",label:"Include metadata",checked:p,onChange:g,description:"Add the note title, note id, timestamps, and Ocean Brain source information."})]})]})]})}),t.jsx(L.Footer,{children:t.jsxs(ue,{children:[t.jsx(S,{variant:"ghost",size:"sm",onClick:r,children:"Cancel"}),t.jsx(S,{variant:"primary",size:"sm",onClick:C,disabled:v,children:v?"Downloading...":`Download .${A}`})]})})]})}const Mt=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"},Pn=({isDeleted:e,isConflict:a,source:n})=>{const s=Mt(n);return e?`This note was moved to trash ${s.place}`:a?`Save paused: note changed ${s.place}`:`This note changed ${s.place}`},On=({isDeleted:e,isConflict:a,hasDraft:n,source:s})=>{const r=Mt(s);return e?`${r.actor} moved this note to trash. Open trash to review or restore it.`:a&&n?`Your draft is saved locally. Reload the latest note, overwrite ${r.target}, or clone your draft into a new note.`:a?`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 Ln({isOpen:e,isDeleted:a,isConflict:n,hasDraft:s,source:r,isReloading:c,onReload:i,onOverwrite:d,onCloneDraft:l,onOpenTrash:m}){return t.jsxs(L,{isOpen:e,onClose:()=>{},variant:"inspect",children:[t.jsx(L.Header,{title:Pn({isDeleted:a,isConflict:n,source:r})}),t.jsx(L.Body,{children:t.jsx(y,{as:"p",variant:"body",tone:"secondary",className:"leading-6",children:On({isDeleted:a,isConflict:n,hasDraft:s,source:r})})}),t.jsx(L.Footer,{children:t.jsx(ue,{children:a?t.jsx(S,{type:"button",variant:"primary",size:"sm",onClick:m,children:"Open trash"}):n?t.jsxs(t.Fragment,{children:[t.jsx(S,{type:"button",variant:"subtle",size:"sm",isLoading:c,onClick:i,children:"Reload latest"}),s&&t.jsx(S,{type:"button",variant:"ghost",size:"sm",onClick:l,children:"Clone draft"}),t.jsx(S,{type:"button",variant:"danger",size:"sm",onClick:d,children:"Overwrite"})]}):t.jsx(S,{type:"button",variant:"primary",size:"sm",isLoading:c,onClick:i,children:"Reload latest"})})})]})}const et=(e,a)=>e||(a==="mobile"?"Mobile browser":a==="mcp"?"MCP":"Web browser");function Bn({isOpen:e,noteId:a,onClose:n,onRestored:s}){const r=pe(),c=ve(),[i,d]=o.useState(null),[l,m]=o.useState("diff"),p=o.useRef(null),g=he({queryKey:T.notes.snapshots(a),queryFn:async()=>{const f=await ha(a);if(f.type==="error")throw f;return f.noteSnapshots},enabled:e}),v=xa({mutationFn:ga,onSuccess:async f=>{if(f.type==="error"){r(f.errors[0].message);return}await Promise.all([c.invalidateQueries({queryKey:T.notes.detail(a),exact:!0}),c.invalidateQueries({queryKey:T.notes.listAll(),exact:!1}),c.invalidateQueries({queryKey:T.notes.tagListAll(),exact:!1}),c.invalidateQueries({queryKey:T.notes.tagNameListAll(),exact:!1}),c.invalidateQueries({queryKey:T.notes.pinned(),exact:!0}),c.invalidateQueries({queryKey:T.notes.backReferencesAll(),exact:!1}),c.invalidateQueries({queryKey:T.notes.graph(),exact:!0}),c.invalidateQueries({queryKey:T.notes.snapshots(a),exact:!1}),c.invalidateQueries({queryKey:T.views.sectionNotesAll(),exact:!1}),c.invalidateQueries({queryKey:T.tags.all(),exact:!1})]),r("Previous version restored."),s?.(f.restoreNoteSnapshot),d(null),n()}}),h=g.data?.find(f=>f.id===i)??null,A=he({queryKey:[...T.notes.snapshotDetail(i??"pending"),"diff"],queryFn:async()=>{if(!i)throw new Error("SNAPSHOT_NOT_SELECTED");const f=await ya(i,"current");if(f.type==="error")throw f;if(!f.noteSnapshotDiff)throw new Error("SNAPSHOT_DIFF_NOT_FOUND");return f.noteSnapshotDiff},enabled:!!i&&l==="diff"}),C=he({queryKey:T.notes.snapshotDetail(i??"pending"),queryFn:async()=>{if(!i)throw new Error("SNAPSHOT_NOT_SELECTED");const f=await va(i);if(f.type==="error")throw f;if(!f.noteSnapshot)throw new Error("SNAPSHOT_NOT_FOUND");return f.noteSnapshot},enabled:!!i&&l==="content"}),k=C.data?.contentAsMarkdown.trim()??"";o.useEffect(()=>{i&&p.current?.focus()},[i]);const _=(f,w)=>{m(w),d(f)},M=()=>{d(null),m("diff"),n()};return t.jsxs(L,{isOpen:e,onClose:M,variant:"inspect",children:[t.jsx(L.Header,{title:h?l==="diff"?"Snapshot Diff":"Snapshot Content":"Restore Previous Version",onClose:M}),t.jsx(L.Description,{className:"sr-only",children:h?l==="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."}),t.jsx(L.Body,{children:h?t.jsxs("div",{className:"flex flex-col gap-3",children:[t.jsxs("div",{className:"min-w-0",children:[t.jsx(y,{as:"p",variant:"body",weight:"semibold",truncate:!0,children:h.title}),t.jsxs(y,{as:"p",variant:"label",tone:"tertiary",children:["Before"," ",et(h.meta.label,h.meta.entrypoint)," ","edit - ",J(h.createdAt).format("YYYY-MM-DD HH:mm:ss")]})]}),t.jsxs("div",{className:"flex flex-wrap gap-2",children:[t.jsx(S,{variant:l==="diff"?"primary":"subtle",size:"sm",onClick:()=>m("diff"),children:"Show diff"}),t.jsx(S,{variant:l==="content"?"primary":"subtle",size:"sm",onClick:()=>m("content"),children:"View content"})]}),l==="diff"?A.isLoading?t.jsx(y,{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..."}):A.isError?t.jsx(y,{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."}):A.data?t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsx(y,{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."}),t.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:A.data.diff.markdown.split(`
|
|
12
|
+
`).map((f,w)=>{const b=f.startsWith("+")&&!f.startsWith("+++")?"bg-emerald-500/12 text-emerald-700 dark:text-emerald-200":f.startsWith("-")&&!f.startsWith("---")?"bg-rose-500/12 text-rose-700 dark:text-rose-200":f.startsWith("@@")?"bg-sky-500/12 text-sky-700 dark:text-sky-200":"text-fg-secondary";return t.jsx("span",{className:`block min-w-full whitespace-pre-wrap break-words px-4 ${b}`,children:f||" "},`${w}-${f}`)})})]}):null:C.isLoading?t.jsx(y,{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..."}):C.isError?t.jsx(y,{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."}):k?t.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:k}):t.jsx(y,{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."})]}):t.jsxs("div",{className:"flex flex-col gap-3",children:[t.jsx(y,{as:"p",variant:"meta",tone:"secondary",children:"Choose a previous snapshot to restore this note back to that state."}),g.isLoading&&t.jsx(y,{as:"div",variant:"meta",tone:"secondary",children:"Loading previous versions..."}),!g.isLoading&&g.data?.length===0&&t.jsx(y,{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."}),!g.isLoading&&g.data&&g.data.length>0&&t.jsx("div",{className:"flex flex-col gap-2",children:g.data.map(f=>t.jsx(qa,{padding:"compact",children:t.jsxs("div",{className:"flex flex-col gap-3",children:[t.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[t.jsxs("div",{className:"min-w-0",children:[t.jsxs(y,{as:"p",variant:"body",weight:"semibold",children:["Before"," ",et(f.meta.label,f.meta.entrypoint)," ","edit"]}),t.jsx(y,{as:"p",variant:"meta",truncate:!0,tone:"secondary",children:f.title}),t.jsx(y,{as:"p",variant:"label",tone:"tertiary",children:J(f.createdAt).format("YYYY-MM-DD HH:mm:ss")})]}),t.jsxs("div",{className:"flex shrink-0 flex-wrap gap-2 sm:justify-end",children:[t.jsx(S,{variant:"subtle",size:"sm",onClick:()=>_(f.id,"diff"),children:"Compare"}),t.jsx(S,{size:"sm",isLoading:v.isPending,onClick:()=>v.mutate(f.id),children:"Restore"})]})]}),f.contentPreview&&t.jsx("div",{className:"rounded-[14px] border border-border-subtle bg-hover-subtle/50 px-3 py-2",children:t.jsx(y,{as:"p",variant:"meta",tone:"secondary",className:"line-clamp-4 whitespace-pre-wrap break-words",children:f.contentPreview})})]})},f.id))})]})}),h&&t.jsx(L.Footer,{children:t.jsxs(ue,{children:[t.jsx(S,{ref:p,variant:"subtle",onClick:()=>{d(null),m("diff")},children:"Back"}),t.jsx(S,{isLoading:v.isPending,onClick:()=>v.mutate(h.id),children:"Restore this version"})]})})]})}let Fn="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",_n=(e=21)=>{let a="",n=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)a+=Fn[n[e]&63];return a};const tt={low:{active:"border-border-secondary bg-elevated text-fg-default",inactive:"border-transparent bg-transparent text-fg-muted hover:bg-hover-subtle"},medium:{active:"border-border-secondary bg-elevated text-fg-default",inactive:"border-transparent bg-transparent text-fg-muted hover:bg-hover-subtle"},high:{active:"border-border-secondary bg-elevated text-fg-default",inactive:"border-transparent bg-transparent text-fg-muted hover:bg-hover-subtle"}};function In({isOpen:e,onClose:a,onSave:n,reminder:s,mode:r}){const[c,i]=o.useState(new Date),[d,l]=o.useState("medium"),[m,p]=o.useState("");o.useEffect(()=>{e&&r==="edit"&&s?(i(new Date(Number(s.reminderDate))),l(s.priority||"medium"),p(s.content||"")):e&&r==="create"&&(i(new Date),l("medium"),p(""))},[e,r,s]);const g=()=>{n(c,d,m||void 0),a()},v=h=>d===h?tt[h].active:tt[h].inactive;return t.jsxs(L,{isOpen:e,onClose:a,variant:"form",children:[t.jsx(L.Header,{title:r==="create"?"Create Reminder":"Edit Reminder",onClose:a}),t.jsx(L.Body,{children:t.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsx(ke,{children:"Date & Time"}),t.jsx(Le,{type:"datetime-local",size:"sm",value:J(c).format("YYYY-MM-DDTHH:mm"),onChange:h=>i(new Date(h.target.value))})]}),t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsx(ke,{children:"Content"}),t.jsx(ba,{size:"sm",placeholder:"Enter reminder content (optional)",value:m,onChange:h=>p(h.target.value)})]}),t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsx(ke,{children:"Priority"}),t.jsxs(wa,{type:"single",variant:"quiet",value:d,onValueChange:h=>h&&l(h),className:"gap-1.5 border-none rounded-[14px] bg-muted/70 p-1 sm:gap-2",children:[t.jsx(Ee,{value:"low",className:`flex-1 rounded-[10px] border ${v("low")}`,children:t.jsx(y,{as:"span",weight:"medium",className:"text-current",children:"Low"})}),t.jsx(Ee,{value:"medium",className:`flex-1 rounded-[10px] border ${v("medium")}`,children:t.jsx(y,{as:"span",weight:"medium",className:"text-current",children:"Medium"})}),t.jsx(Ee,{value:"high",className:`flex-1 rounded-[10px] border ${v("high")}`,children:t.jsx(y,{as:"span",weight:"medium",className:"text-current",children:"High"})})]})]})]})}),t.jsx(L.Footer,{children:t.jsxs(ue,{children:[t.jsx(S,{variant:"ghost",size:"sm",onClick:a,children:"Cancel"}),t.jsx(S,{variant:"primary",size:"sm",onClick:g,children:r==="create"?"Create":"Save"})]})})]})}function $n({noteId:e}){const[a,n]=o.useState(!1),[s,r]=o.useState(!1),[c,i]=o.useState("create"),[d,l]=o.useState(void 0),{onCreate:m,onUpdate:p,onDelete:g}=Ga(),v=()=>{i("create"),l(void 0),r(!0)},h=f=>{i("edit"),l(f),r(!0)},A=(f,w,b)=>{c==="create"?m(e,f,w,()=>{r(!1)},b):c==="edit"&&d&&p(d.id,e,{reminderDate:f,priority:w,content:b},()=>{r(!1)})},C=f=>{p(f.id,e,{completed:!f.completed})},k=f=>{const w=J(Number(f)),b=J();return w.isSame(b,"day")?`Today at ${w.format("HH:mm")}`:w.isSame(b.add(1,"day"),"day")?`Tomorrow at ${w.format("HH:mm")}`:w.format("YYYY-MM-DD HH:mm")},_=f=>{const w=J(Number(f)),b=J(),$=w.diff(b,"hour");return $<=6?"high":$<=24?"medium":"low"},M=f=>{const w=J(Number(f)),b=J(),$=w.diff(b,"hour"),H=w.diff(b,"minute")%60;return $<0||H<0?"Overdue":$===0?`${H}m remaining`:`${$}h ${H}m remaining`};return t.jsxs(t.Fragment,{children:[t.jsx(Ve,{title:"Reminders",icon:t.jsx(Ca,{className:"h-3.5 w-3.5"}),action:t.jsxs(t.Fragment,{children:[!a&&t.jsxs(S,{size:"sm",variant:"ghost",onClick:v,children:[t.jsx($e,{className:"w-3 h-3"}),t.jsx(y,{as:"span",variant:"label",className:"hidden sm:inline",children:"Add"})]}),t.jsxs(S,{type:"button",size:"sm",variant:"ghost","aria-label":a?"Expand reminders":"Collapse reminders","aria-expanded":!a,onClick:()=>n(!a),children:[a?t.jsx(ja,{className:"h-3.5 w-3.5"}):t.jsx(Na,{className:"h-3.5 w-3.5"}),a?"Expand":"Collapse"]})]}),children:!a&&t.jsx(Wa,{noteId:e,searchParams:{offset:0,limit:9999},render:({reminders:f,totalCount:w})=>t.jsx("div",{className:"flex flex-col gap-2",children:f.length===0?t.jsx(y,{as:"p",variant:"meta",tone:"secondary",className:"py-3 text-center",children:w===0?"No reminders yet":"All reminders complete"}):t.jsx("div",{className:"flex flex-col",children:f.map(b=>{const $=b.priority||_(b.reminderDate),H=M(b.reminderDate),B=H==="Overdue";return t.jsxs("div",{className:Y("flex items-center gap-2.5 px-2 py-1.5"),children:[t.jsx(dt,{checked:b.completed,onChange:()=>C(b),size:"sm","aria-label":`Reminder: ${b.content||k(b.reminderDate)}`}),t.jsx(y,{as:"div",variant:"body",weight:"medium",className:Y("truncate flex-1 min-w-0",b.completed&&"line-through opacity-40"),children:b.content||k(b.reminderDate)}),t.jsxs("div",{className:Y("shrink-0 flex items-center gap-1",b.completed&&"opacity-40"),children:[b.content&&t.jsx(y,{as:"span",variant:"meta",tone:"secondary",children:k(b.reminderDate)}),!b.completed&&t.jsx(y,{as:"span",variant:"label",weight:"medium",tone:B||$==="high"?"error":"tertiary",className:Y(b.content&&'before:content-["·"] before:mr-1'),children:H})]}),t.jsx(ut,{button:t.jsx(pt,{label:"Reminder actions"}),items:[{name:"Edit",onClick:()=>h(b)},{name:"Delete",onClick:()=>g(b.id,e)}]})]},b.id)})})})})}),t.jsx(In,{isOpen:s,onClose:()=>r(!1),onSave:A,reminder:d,mode:c})]})}const Un=({editor:e})=>t.jsx(Ue,{triggerCharacter:"/",getItems:async a=>Xa([...ia(e).filter(n=>n.title!=="Audio"&&n.title!=="Video"&&n.title!=="File"),{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:t.jsx(ft,{})}],a)}),Hn=(e,a)=>a?e.filter(n=>n.id!==a):e,Vn=({currentNoteId:e,onClick:a})=>t.jsx(Ue,{triggerCharacter:"[",getItems:async n=>{const s=await Aa({query:n,limit:5});return s.type==="error"?[]:Hn(s.allNotes.notes,e).map(c=>({title:c.title,onItemClick:()=>a({type:"reference",props:{id:c.id,title:c.title}})}))}}),Dt=["image/png","image/jpeg","image/gif","image/webp","image/bmp","image/avif"],zn=new Set(Dt),at="Unsupported image type. Use PNG, JPEG, GIF, WebP, BMP, or AVIF.",Kn="Failed to upload image.",Zn=e=>zn.has(e),Yn="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",Qn={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"},qn={idle:"Copy",copied:"Copied",failed:"Copy failed"},Gn=({getText:e,resetDelayMs:a=2e3})=>{const[n,s]=o.useState("idle"),r=o.useRef(null),c=o.useCallback(()=>{r.current&&(clearTimeout(r.current),r.current=null)},[]),i=o.useCallback(()=>{c(),r.current=setTimeout(()=>{s("idle"),r.current=null},a)},[c,a]);o.useEffect(()=>c,[c]);const d=p=>{p.stopPropagation()},l=p=>{p.preventDefault(),p.stopPropagation()},m=async p=>{d(p);try{await navigator.clipboard.writeText(e()),s("copied")}catch{s("failed")}i()};return t.jsx("div",{className:"pointer-events-none absolute right-3 top-2 z-[1]",contentEditable:!1,onMouseDown:l,children:t.jsxs("button",{type:"button",className:Y(Yn,Qn[n]),contentEditable:!1,onClick:m,children:[t.jsx(an,{className:"h-3.5 w-3.5"}),t.jsx("span",{"aria-live":"polite",children:qn[n]})]})})},Wn=({contentRef:e})=>{const a=o.useRef(null),n=o.useCallback(s=>{a.current=s,e(s)},[e]);return t.jsxs(t.Fragment,{children:[t.jsx("pre",{children:t.jsx("code",{ref:n})}),t.jsx(Gn,{getText:()=>a.current?.textContent?.trimEnd()??""})]})},Jn="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))]",Xn={type:"reference",propSchema:{id:{default:""},title:{default:"Unknown"}},content:"none"};function er(e){const a=mt(),n=()=>{e.editor.blur(),a({to:ge,params:{id:e.inlineContent.props.id}})},s=r=>{r.preventDefault(),r.stopPropagation()};return t.jsx("span",{role:"link",tabIndex:0,contentEditable:!1,className:Jn,onMouseDown:s,onClick:r=>{s(r),n()},onKeyDown:r=>{r.key!=="Enter"&&r.key!==" "||(s(r),n())},children:t.jsxs("span",{children:["[",e.inlineContent.props.title,"]"]})})}const tr=st(Xn,{render:e=>t.jsx(er,{...e})}),ar=()=>{const e=ca(),[a,n]=o.useState([]),s={1:"pl-3",2:"pl-[26px]",3:"pl-[40px]",4:"pl-[54px]",5:"pl-[68px]",6:"pl-[82px]"};o.useEffect(()=>{const i=()=>{const l=e.document,m=[],p=g=>{for(const v of g){if(v.type==="heading"){const h=v,A=h.props.level||1,C=h.content?.map(k=>k.text||"").join("")||"";C.trim()&&m.push({id:v.id,level:A,text:C})}v.children&&Array.isArray(v.children)&&p(v.children)}};p(l),n(m)};i();const d=e.onChange?.(i);return()=>{d&&d()}},[e]);const r=i=>{e.setTextCursorPosition(i);const d=document.querySelector(`[data-id="${i}"]`);if(d){const l=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1;d.scrollIntoView({behavior:l?"auto":"smooth",block:"center"})}},c=t.jsx(yt,{icon:t.jsx(ft,{className:"h-3.5 w-3.5"}),title:"Table of Contents",className:"text-fg-tertiary"});return a.length===0?t.jsxs("div",{className:"surface-base w-full p-4",children:[c,t.jsx(y,{as:"p",variant:"meta",tone:"secondary",className:"mt-2",children:"Add headings to your document to generate a table of contents"})]}):t.jsxs("div",{className:"surface-base w-full p-4",children:[t.jsx("div",{className:"mb-2",children:c}),t.jsx("nav",{className:"space-y-0.5",children:a.map(i=>{const d=i.level===1;return t.jsxs("button",{type:"button",onClick:()=>r(i.id),className:Y("focus-ring-soft","flex","w-full","items-center","gap-2","rounded-[10px]","px-2.5","py-1.5",s[i.level]??"pl-2.5","text-left","transition-colors","hover:bg-hover-subtle",d?"text-fg-default":"text-fg-secondary"),children:[t.jsxs(y,{as:"span",variant:"label",weight:"medium",tone:"tertiary",className:"min-w-[1.5rem]",children:["H",i.level]}),t.jsx(y,{as:"span",variant:"body",weight:d?"semibold":"medium",className:"line-clamp-2 text-current",children:i.text})]},i.id)})})]})},nr=ot({type:"tableOfContents",propSchema:{},content:"none"},{render:()=>t.jsx(ar,{})})(),rr="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",sr={type:"tag",propSchema:{id:{default:""},tag:{default:"@Unknown"}},content:"none"};function or(e){const a=mt(),n=()=>{e.editor.blur(),a({to:Sa,params:{id:e.inlineContent.props.id},search:{page:1}})},s=r=>{r.preventDefault(),r.stopPropagation()};return t.jsx("span",{role:"link",tabIndex:0,contentEditable:!1,className:rr,onMouseDown:s,onClick:r=>{s(r),n()},onKeyDown:r=>{r.key!=="Enter"&&r.key!==" "||(s(r),n())},children:t.jsx("span",{children:e.inlineContent.props.tag})})}const lr=st(sr,{render:e=>t.jsx(or,{...e})}),ir=e=>e,cr=e=>e,dr=ir({tag:lr,reference:tr}),ur=cr({tableOfContents:nr}),re=ce.codeBlock,nt=ot(re.config,{meta:re.implementation.meta,parse:re.implementation.parse,parseContent:re.implementation.parseContent,runsBefore:re.implementation.runsBefore,render:Wn})(),pr={...nt,extensions:re.extensions,implementation:{...nt.implementation,toExternalHTML:re.implementation.toExternalHTML}},fr={...ce.image,implementation:{...ce.image.implementation,meta:{...ce.image.implementation.meta,fileBlockAccept:[...Dt]}}},mr=en.create({inlineContentSpecs:{...tn,...dr},blockSpecs:{...ce,image:fr,codeBlock:pr,...ur}}),hr=(e,a)=>a.some(n=>n.name===`@${e}`),xr=({onClick:e})=>t.jsx(Ue,{triggerCharacter:"@",getItems:async a=>{const n=await nn({query:a,limit:5});if(n.type==="error")return[];const{tags:s}=n.allTags,r=hr(a,s),c=[{title:"Add a new tag",onItemClick:async()=>{const i=await rn({name:"@"+a});if(i.type==="error")return;const{id:d,name:l}=i.createTag;e({type:"tag",props:{id:d,tag:l}})}}];return s.length===0?c:s.map(i=>({title:i.name,onItemClick:()=>e({type:"tag",props:{id:i.id,tag:i.name}})})).concat(a&&!r?c:[])}}),gr=new Set(["tableOfContents"]),yr="OCEAN_BRAIN_TAG_",vr="_TOKEN",br=e=>`${yr}${e}${vr}`,wr=e=>!Array.isArray(e)&&e?.type==="tableContent",jr=(e,a)=>Array.isArray(e)?e.map(a):wr(e)?{...e,rows:e.rows?.map(n=>({...n,cells:n.cells?.map(s=>({...s,content:s.content?.map(a)}))}))}:e,Pt=(e,a)=>e.filter(n=>!gr.has(n.type)).map(n=>({...n,content:a(n.content),children:n.children?.length?Pt(n.children,a):[]}));function Nr(e){const a=new Map;let n=0;return{blocks:Pt(e,r=>jr(r,c=>{if(c.type==="reference"){const i=String(c.props?.id||""),d=String(c.props?.title||c.props?.id||"");return{type:"text",text:i?`[[${d}]](note:${i})`:`[[${d}]]`,styles:{}}}if(c.type==="tag"){const i=c.props?.tag||"",d=br(n);return n+=1,a.set(d,i),{type:"text",text:d,styles:{}}}return c})),placeholderToTag:a}}function Cr(e,a){let n=e;for(const[s,r]of a.entries())n=n.split(s).join(`[${r}]`);return n}async function Ar(e){return new Promise((a,n)=>{const s=new FileReader;s.readAsDataURL(e),s.onload=()=>a(s.result),s.onerror=r=>n(r)})}const Sr=o.forwardRef(({content:e,currentNoteId:a,editable:n,onChange:s},r)=>{const{theme:c}=ka(l=>l),i=pe(),d=da({schema:mr,initialContent:e&&JSON.parse(e)||void 0,uploadFile:async(l,m)=>{const p=()=>{m&&d.getBlock(m)&&d.removeBlocks([m])};if(!Zn(l.type))throw p(),i(at),new Error(at);try{return await Ja({base64:await Ar(l)})}catch(g){throw p(),i(Kn),g}}},[i]);return o.useImperativeHandle(r,()=>({getContent:()=>JSON.stringify(d.document),getMarkdown:()=>{const l=Nr(d.document),m=d.blocksToMarkdownLossy(l.blocks);return Cr(m,l.placeholderToTag)},getHtml:()=>d.blocksToHTMLLossy(d.document)})),t.jsxs(ua,{slashMenu:!1,theme:c,editor:d,editable:n,onChange:s,children:[t.jsx(Un,{editor:d}),t.jsx(Vn,{currentNoteId:a,onClick:l=>{d.insertInlineContent([l," "])}}),t.jsx(xr,{onClick:l=>{d.insertInlineContent([l," "])}})]})}),Ke=e=>`ocean-brain.note-draft.${e}`,kr=e=>{if(typeof window>"u")return null;try{const a=window.localStorage.getItem(Ke(e));if(!a)return null;const n=JSON.parse(a);return typeof n.title!="string"||typeof n.content!="string"||typeof n.baseUpdatedAt!="string"?null:{title:n.title,content:n.content,baseUpdatedAt:n.baseUpdatedAt,createdAt:typeof n.createdAt=="number"?n.createdAt:Date.now(),...n.layout==="narrow"||n.layout==="wide"||n.layout==="full"?{layout:n.layout}:{}}}catch{return null}},Te=(e,a)=>{if(!(typeof window>"u"))try{window.localStorage.setItem(Ke(e),JSON.stringify(a))}catch{}},Me=e=>{if(!(typeof window>"u"))try{window.localStorage.removeItem(Ke(e))}catch{}},Er=1e3,Rr="NOTE_UPDATE_CONFLICT";function Tr({noteId:e,initialContent:a,initialUpdatedAt:n,editSessionIdRef:s,getContent:r,onSaved:c,onConflict:i,onError:d}){const l=ve(),m=o.useRef(null),p=o.useRef(null),g=o.useRef(!1),v=o.useRef(null),h=o.useRef(!1),A=o.useRef(n),C=o.useRef(!1),k=o.useRef(!0),_=o.useRef(c),M=o.useRef(i),f=o.useRef(d),[w,b]=o.useState("saved"),[$,H]=o.useState(null),B=o.useCallback(()=>{m.current!==null&&(window.clearTimeout(m.current),m.current=null)},[]),U=o.useCallback(E=>{k.current&&b(E)},[]),se=o.useCallback(E=>{A.current=E},[]),V=o.useCallback((E,P={})=>({title:E,content:r()??a,createdAt:Date.now(),baseUpdatedAt:A.current,...P.layout?{layout:P.layout}:{}}),[r,a]),I=o.useCallback(()=>{p.current&&Te(e,p.current)},[e]),X=o.useCallback(E=>{C.current=!0,U("conflict"),M.current(E??A.current)},[U]),z=o.useCallback(async({ignoreConflict:E=!1,silent:P=!1}={})=>{if(g.current)return h.current=!0,v.current??"idle";const K=p.current;if(!K)return h.current=!1,"idle";p.current=null,h.current=!1,B(),g.current=!0,P||U("saving");const N=(async()=>{let F;try{F=await Be({id:e,title:K.title,content:K.content,...K.layout?{layout:K.layout}:{},editSessionId:s.current,...E?{force:!0}:{expectedUpdatedAt:K.baseUpdatedAt}})}catch{F={type:"error",category:"network",errors:[{code:"NETWORK_ERROR",message:"Failed to save note."}]}}if(g.current=!1,v.current=null,F.type==="error"){p.current||(p.current=K),I();const W=F.errors[0];if(W.code===Rr&&!E){const oe=W.details?.extensions?.currentUpdatedAt;return C.current=!0,!P&&k.current&&(U("conflict"),M.current(oe??A.current)),"conflict"}return!P&&k.current&&(U("error"),f.current(W.message)),"error"}C.current=!1,A.current=F.updateNote.updatedAt;const G=!P&&k.current,te=T.notes.detail(e);await l.cancelQueries({queryKey:te,exact:!0}),G&&_.current(F.updateNote.updatedAt),l.setQueryData(te,W=>W&&{...W,title:F.updateNote.title,content:K.content,...K.layout?{layout:K.layout}:{},updatedAt:F.updateNote.updatedAt}),xe({noteId:e,updatedAt:F.updateNote.updatedAt,editSessionId:s.current});const ae=p.current;return ae?.baseUpdatedAt===K.baseUpdatedAt?(p.current={...ae,baseUpdatedAt:F.updateNote.updatedAt},I()):ae||Me(e),G&&(p.current?b("pending"):(b("saved"),l.invalidateQueries({queryKey:T.notes.listAll(),exact:!1}),l.invalidateQueries({queryKey:T.notes.tagListAll(),exact:!1}),l.invalidateQueries({queryKey:T.notes.backReferencesAll(),exact:!1}),l.invalidateQueries({queryKey:T.notes.graph(),exact:!0}))),p.current||h.current?z({silent:P}):"saved"})();return v.current=N,N},[B,s,e,I,l,U]),x=o.useCallback((E,P={})=>{if(p.current=E,Te(e,E),C.current){U("conflict");return}if(U("pending"),B(),P.immediate){z();return}m.current=window.setTimeout(()=>{z()},Er)},[B,z,e,U]),R=o.useCallback(E=>{if(p.current=E,Te(e,E),H(null),E.baseUpdatedAt!==A.current){X(A.current);return}x(E)},[e,x,X]),O=o.useCallback(()=>{B(),p.current=null,v.current=null,h.current=!1,C.current=!1,Me(e),H(null),b("saved")},[B,e]),D=o.useCallback(()=>{B(),v.current=null,h.current=!1,C.current=!1,U(p.current?"pending":"saved")},[B,U]),Q=o.useCallback(()=>{Me(e),H(null)},[e]),fe=o.useCallback(()=>p.current,[]),q=o.useCallback(E=>{B(),X(E)},[B,X]);return o.useEffect(()=>{M.current=i,f.current=d,_.current=c},[i,d,c]),o.useEffect(()=>(k.current=!0,()=>{k.current=!1}),[]),o.useEffect(()=>{p.current||g.current||C.current||(A.current=n,b("saved"))},[n]),o.useEffect(()=>{p.current=null,g.current=!1,v.current=null,h.current=!1,C.current=!1,A.current=n,H(kr(e)),b("saved")},[e]),o.useEffect(()=>{const E=P=>{!p.current&&!g.current&&!C.current||(P.preventDefault(),P.returnValue="")};return window.addEventListener("beforeunload",E),()=>{window.removeEventListener("beforeunload",E)}},[]),o.useEffect(()=>()=>{B(),p.current&&!C.current&&z({silent:!0})},[B,z]),{saveStatus:w,localDraft:$,serverUpdatedAtRef:A,hasUnsavedChanges:w!=="saved",buildDraft:V,queueSave:x,flushPendingSave:z,restoreLocalDraft:R,discardLocalDraft:Q,clearDrafts:O,resolveConflict:D,pauseForConflict:q,getPendingDraft:fe,setServerUpdatedAt:se}}const Ot=Pa(ge),de=e=>{const a=/^\d+$/.test(e)?Number(e):Date.parse(e);return Number.isFinite(a)?a:null},De=e=>{const a=de(e);return J(a??Number(e)).format("YYYY-MM-DD HH:mm:ss")},Mr=(e,a)=>Oa(de(e),a),Pe=()=>_n(),Dr="NOTE_UPDATE_CONFLICT",Pr=2200,Or=e=>e?.extensions?.currentUpdatedAt,rt=(e,a)=>{const n=de(e),s=de(a);return n===null||s===null?e===a?0:1:n-s},Lr=e=>{const a=e.trim();if(!a)return null;try{const n=new URL(a);return n.protocol==="http:"||n.protocol==="https:"?n.toString():null}catch{return null}},Br={narrow:"max-w-[640px]",wide:"max-w-[896px]",full:"max-w-full px-4"},Fr=t.jsx(He,{title:"Loading note",variant:"none",children:t.jsxs("main",{className:"mx-auto max-w-[896px]",children:[t.jsx(ne,{className:"mb-8",height:123}),t.jsxs("div",{className:"flex flex-col gap-5",children:[t.jsx(ne,{height:135}),t.jsx(ne,{className:"ml-12",height:320}),t.jsx(ne,{height:107}),t.jsx(ne,{height:100})]})]})}),_r=e=>({id:e?.key??"",key:e?.key??"",name:e?.name??"",value:e?.value??"",valueType:e?.valueType??"text",persistedKey:e?.key}),Ir=e=>{if(Array.isArray(e))return e;const a=e?.keys;return Array.isArray(a)?a:[]},Oe=(e=[])=>e.map(_r),Lt=(e,a)=>{const n=[],s=new Set(a);for(const r of e){const c=r.key.trim();if(!c)continue;const i=r.value.trim(),d=!!r.persistedKey&&(r.valueType==="number"||r.valueType==="date"||r.valueType==="select"||r.valueType==="url");if(!i&&d){s.add(r.persistedKey);continue}!i&&r.valueType!=="text"&&r.valueType!=="boolean"||n.push({key:c,name:r.name.trim()||c,value:r.valueType==="boolean"?i||"false":i,valueType:r.valueType})}return{set:n.sort((r,c)=>r.key.localeCompare(c.key)),deleteKeys:Array.from(s).sort()}},le=(e,a=[])=>JSON.stringify(Lt(e,a)),$r=({noteId:e,properties:a=[],expectedUpdatedAt:n,editSessionId:s,disabled:r,onSaved:c})=>{const i=pe(),d=ve(),[l,m]=o.useState(()=>Oe(a)),[p,g]=o.useState([]),[v,h]=o.useState("idle"),A=o.useRef(l),C=o.useRef(p),k=o.useRef(n),_=o.useRef(le(l)),M=o.useRef(null),f=o.useRef(!1),w=o.useRef(!1),b=he({queryKey:T.notes.propertyKeys({limit:50}),queryFn:async()=>{const x=await Ba({limit:50});if(x.type==="error")throw x;return x.notePropertyKeys.keys}});o.useEffect(()=>{const x=Oe(a);m(x),g([]),_.current=le(x),h("idle")},[a]),o.useEffect(()=>{A.current=l},[l]),o.useEffect(()=>{C.current=p},[p]),o.useEffect(()=>{k.current=n},[n]);const $=Ir(b.data),H=$.filter(x=>!l.some(R=>R.key===x.key)),B=$.length>0,U=o.useCallback(async()=>{const x=le(A.current,C.current);if(r||x===_.current)return;if(f.current){w.current=!0;return}const R=Lt(A.current,C.current);if(!(R.set.length===0&&R.deleteKeys.length===0)){f.current=!0,w.current=!1,h("saving");try{const O=await Fa({id:e,set:R.set,deleteKeys:R.deleteKeys,editSessionId:s,expectedUpdatedAt:k.current});if(O.type==="error"){h("error"),i(O.errors[0]?.message??"Failed to save properties.");return}k.current=O.updateNoteProperties.updatedAt,_.current=le(Oe(O.updateNoteProperties.properties??[])),c(O.updateNoteProperties),d.invalidateQueries({queryKey:T.notes.propertyKeysAll(),exact:!1}),h("saved")}catch{h("error"),i("Failed to save properties.")}finally{f.current=!1,w.current&&(w.current=!1,U())}}},[r,s,e,c,d,i]);o.useEffect(()=>{if(M.current&&clearTimeout(M.current),!(r||le(l,p)===_.current))return M.current=setTimeout(()=>{U()},500),()=>{M.current&&clearTimeout(M.current)}},[p,r,l,U]);const se=x=>{m(R=>[...R,{id:x.key,key:x.key,name:x.name,value:"",valueType:x.valueType,persistedKey:void 0}]),g(R=>R.filter(O=>O!==x.key))},V=(x,R)=>{m(O=>O.map(D=>D.id===x?{...D,...R}:D))},I=x=>{x.persistedKey&&g(R=>[...new Set([...R,x.persistedKey])]),m(R=>R.filter(O=>O.id!==x.id))},X=le(l,p)!==_.current,z=r||!X&&v==="idle"?null:v==="saving"?"Saving...":v==="error"?"Save failed":X?"Waiting...":"Saved";return t.jsxs(Ve,{title:"Properties",icon:t.jsx(Za,{className:"h-3.5 w-3.5"}),ariaLabel:"Note properties",action:t.jsxs(t.Fragment,{children:[z&&t.jsx(y,{as:"span",variant:"micro",tone:v==="error"?"error":"tertiary",className:"px-1",children:z}),B&&t.jsx(S,{asChild:!0,size:"sm",variant:"ghost",children:t.jsxs(Ie,{to:We,search:{page:1},children:[t.jsx(Ka,{className:"h-3 w-3"}),"Manage"]})})]}),children:[l.length===0?t.jsx(y,{as:"p",variant:"label",tone:"tertiary",className:"px-1 py-2",children:"No properties yet."}):t.jsx("div",{className:"divide-y divide-border-subtle",children:l.map(x=>{const R=`note-property-${x.id}-label`,O=x.valueType==="url"?Lr(x.value):null;return t.jsxs("div",{className:"group grid gap-2 py-2 sm:grid-cols-[minmax(0,180px)_minmax(0,1fr)_auto] sm:items-center",children:[t.jsxs("div",{className:"flex min-w-0 items-center gap-2 px-1",children:[t.jsx(y,{id:R,as:"span",variant:"label",tone:"secondary",className:"truncate",children:x.name}),t.jsx(y,{as:"span",variant:"micro",tone:"tertiary",className:"hidden truncate font-mono sm:inline",children:x.key})]}),x.valueType==="boolean"?t.jsxs(Ge,{size:"sm",variant:"ghost",value:x.value||"false",disabled:r,"aria-labelledby":R,onValueChange:D=>V(x.id,{value:D}),children:[t.jsx(Re,{value:"false",children:"False"}),t.jsx(Re,{value:"true",children:"True"})]}):x.valueType==="select"?t.jsx(Ge,{size:"sm",variant:"ghost",value:x.value,placeholder:"Select option",disabled:r,"aria-labelledby":R,onValueChange:D=>V(x.id,{value:D}),children:($.find(D=>D.key===x.key)?.options??[]).map(D=>t.jsx(Re,{value:D.value,children:D.label},D.id))}):x.valueType==="url"?t.jsxs("div",{className:"flex min-w-0 items-center gap-1",children:[t.jsx(Le,{className:"min-w-0",size:"sm",variant:"ghost",type:"url","aria-label":"Property value",placeholder:"https://example.com",value:x.value,disabled:r,onChange:D=>V(x.id,{value:D.target.value})}),O?t.jsx(S,{asChild:!0,size:"icon-sm",variant:"ghost","aria-label":`Open ${x.name}`,className:"shrink-0 text-fg-tertiary",children:t.jsx("a",{href:O,target:"_blank",rel:"noopener noreferrer",title:O,children:t.jsx(gt,{className:"h-4 w-4"})})}):null]}):t.jsx(Le,{size:"sm",variant:"ghost",type:x.valueType==="date"?"date":x.valueType==="number"?"number":"text","aria-label":"Property value",placeholder:"Value",value:x.value,disabled:r,onChange:D=>V(x.id,{value:D.target.value})}),t.jsx(S,{type:"button",size:"icon-sm",variant:"ghost","aria-label":`Remove ${x.name}`,disabled:r,className:"justify-self-end text-fg-tertiary sm:opacity-0 sm:group-hover:opacity-100 sm:focus-visible:opacity-100",onClick:()=>I(x),children:t.jsx(_a,{className:"h-4 w-4"})})]},x.id)})}),t.jsx("div",{className:"mt-2 flex flex-wrap items-center gap-2",children:b.isLoading?t.jsx(S,{type:"button",size:"sm",variant:"ghost",disabled:!0,children:"Loading properties..."}):H.length>0?t.jsxs(Ia,{children:[t.jsx($a,{asChild:!0,children:t.jsxs(S,{type:"button",size:"sm",variant:"ghost",disabled:r,children:[t.jsx($e,{className:"h-4 w-4"}),"Add property"]})}),t.jsxs(Ua,{align:"start",sideOffset:6,className:"max-h-80 w-[min(22rem,calc(100vw-2rem))]",style:{overflowY:"auto"},children:[t.jsx(Ha,{children:t.jsx(y,{as:"span",variant:"label",weight:"semibold",children:"Add property"})}),t.jsx(Va,{}),H.map(x=>t.jsxs(za,{className:"flex-col items-start gap-0.5 whitespace-normal",onClick:()=>se(x),children:[t.jsxs("span",{className:"flex w-full min-w-0 items-center justify-between gap-3",children:[t.jsx(y,{as:"span",variant:"label",weight:"medium",className:"truncate",children:x.name}),t.jsx(y,{as:"span",variant:"micro",tone:"tertiary",className:"shrink-0 capitalize",children:x.valueType})]}),t.jsx(y,{as:"span",variant:"micro",tone:"tertiary",className:"font-mono",children:x.key})]},x.key))]})]}):B?t.jsx(y,{as:"span",variant:"micro",tone:"tertiary",className:"px-1",children:"All shared properties are attached."}):t.jsxs(Ie,{to:We,search:{page:1},className:"focus-ring-soft inline-flex items-center gap-2 rounded-[12px] px-2.5 py-1.5 text-sm font-medium text-fg-secondary outline-none hover:bg-hover-subtle hover:text-fg-default",children:[t.jsx($e,{className:"h-4 w-4"}),"Create property definition"]})})]})};function Ur({id:e}){const a=pe(),n=Ot.useNavigate(),s=ve(),r=o.useRef(null),c=o.useRef(null),i=o.useRef(Pe()),d=it({queryKey:T.notes.detail(e),queryFn:async()=>{const u=await Ea(e);if(u.type==="error")throw u;return u.note},gcTime:0}),l=d.data,[m,p]=o.useState(l.title),[g,v]=o.useState(()=>De(l.updatedAt)),[h,A]=o.useState(l.updatedAt),[C,k]=o.useState(()=>Date.now()),[_,M]=o.useState(l.pinned),[f,w]=o.useState(l.layout||"wide"),[b,$]=o.useState(!1),[H,B]=o.useState(!1),[U,se]=o.useState(!1),[V,I]=o.useState(null),[X,z]=o.useState(null),[x,R]=o.useState(0),[O,D]=o.useState(!1),Q=o.useRef(l.updatedAt),fe=o.useRef(e),q=o.useRef(null),E=o.useRef(!1),P=o.useCallback(u=>{v(De(u)),A(u),k(Date.now())},[]),K=Tr({noteId:e,initialContent:l.content,initialUpdatedAt:l.updatedAt,editSessionIdRef:i,getContent:()=>r.current?.getContent(),onSaved:u=>{q.current=null,Q.current=u,P(u),D(!0)},onConflict:u=>{I({type:"updated",updatedAt:u,source:"unknown"}),a("This note changed elsewhere. Choose how to resolve the draft.")},onError:a}),{saveStatus:N,localDraft:F,serverUpdatedAtRef:G,hasUnsavedChanges:te,buildDraft:ae,queueSave:W,flushPendingSave:oe,restoreLocalDraft:Bt,discardLocalDraft:Ft,clearDrafts:we,resolveConflict:_t,pauseForConflict:ie,getPendingDraft:je,setServerUpdatedAt:ee}=K,It=o.useCallback(async()=>{if(E.current)return E.current=!1,!1;if(N==="conflict")return a("Resolve the note conflict before leaving."),!0;const u=await oe();return u==="error"?(a("Save failed. Stay on this note and try again."),!0):u==="conflict"},[oe,N,a]);on({disabled:N==="saved",enableBeforeUnload:!1,shouldBlockFn:It}),o.useEffect(()=>{if(te){l.updatedAt!==G.current&&rt(l.updatedAt,G.current)>0&&ie(l.updatedAt);return}const u=Q.current;if(!(l.updatedAt!==u&&rt(l.updatedAt,u)<0)&&(M(l.pinned),w(l.layout||"wide"),ee(l.updatedAt),p(l.title),P(l.updatedAt),u!==l.updatedAt)){const j=r.current?.getContent();Q.current=l.updatedAt,(j===void 0||j!==l.content)&&(z(null),R(Z=>Z+1))}},[te,l.layout,l.pinned,l.title,l.updatedAt,ie,G,ee,P]),o.useEffect(()=>{fe.current!==e&&(fe.current=e,i.current=Pe(),Q.current=l.updatedAt,q.current=null,I(null),z(null),R(u=>u+1),D(!1))},[e,l.updatedAt]),o.useEffect(()=>{if(N!=="saved")return;const u=window.setTimeout(()=>{k(Date.now())},Ra(de(h),C));return()=>window.clearTimeout(u)},[h,C,N]),o.useEffect(()=>{if(!O)return;const u=window.setTimeout(()=>{D(!1)},Pr);return()=>window.clearTimeout(u)},[O]),o.useEffect(()=>{V?.type!=="updated"||N==="conflict"||V.updatedAt!==l.updatedAt||(Q.current=l.updatedAt,ee(l.updatedAt),P(l.updatedAt),I(null))},[V,l.updatedAt,N,ee,P]),o.useEffect(()=>Ta(u=>{if(u.noteId===e&&!(u.source==="web"&&u.editSessionId===i.current)){if(u.type==="mcp.note.updated"||u.type==="web.note.updated"){if(u.updatedAt===l.updatedAt||u.updatedAt===G.current)return;if(te){ie(u.updatedAt),I({type:"updated",updatedAt:u.updatedAt,source:u.source});return}I({type:"updated",updatedAt:u.updatedAt,source:u.source});return}u.type==="mcp.note.deleted"&&I({type:"deleted",source:u.source})}}),[te,e,l.updatedAt,ie,G]);const{onCreate:$t,onDelete:Ut,onPinned:Ht,deleteWarningDialog:Vt}=Ma(),zt=()=>{W(ae(m))},Kt=u=>{p(u),W(ae(u))},Ze=()=>{W(ae(m),{immediate:!0})},Zt=async u=>{if(te){w(u),W(ae(m,{layout:u}),{immediate:!0}),a("Layout will be saved with your draft.");return}const j=await Be({id:e,layout:u,editSessionId:i.current,expectedUpdatedAt:G.current});if(j.type==="error"){j.errors[0].code===Dr&&(q.current=u,w(u),ie(Or(j.errors[0].details)??G.current)),a(j.errors[0].message);return}q.current=null,await s.cancelQueries({queryKey:T.notes.detail(e),exact:!0}),Q.current=j.updateNote.updatedAt,ee(j.updateNote.updatedAt),s.setQueryData(T.notes.detail(e),Z=>Z&&{...Z,layout:u,updatedAt:j.updateNote.updatedAt}),xe({noteId:e,updatedAt:j.updateNote.updatedAt,editSessionId:i.current}),P(j.updateNote.updatedAt),w(u),a("Layout has been updated.")},Yt=()=>({id:e,title:m,createdAt:l.createdAt,updatedAt:G.current||l.updatedAt}),Qt=async()=>{const u=r.current?.getMarkdown();if(u===void 0){a("Markdown is not ready yet.");return}try{await navigator.clipboard.writeText(u),a("Copied note as Markdown.")}catch{a("Failed to copy Markdown.")}},qt=async()=>{const u=await d.refetch();if(u.error||!u.data){a("Failed to reload the latest note state.");return}we(),q.current=null,Q.current=u.data.updatedAt,ee(u.data.updatedAt),p(u.data.title),w(u.data.layout||"wide"),P(u.data.updatedAt),z(null),R(j=>j+1),I(null)},Gt=async()=>{if(je()){q.current=null,I(null),await oe({ignoreConflict:!0});return}const j=q.current;if(j){const Z=await Be({id:e,layout:j,editSessionId:i.current,force:!0});if(Z.type==="error"){a(Z.errors[0].message);return}q.current=null,await s.cancelQueries({queryKey:T.notes.detail(e),exact:!0}),Q.current=Z.updateNote.updatedAt,_t(),I(null),ee(Z.updateNote.updatedAt),s.setQueryData(T.notes.detail(e),Se=>Se&&{...Se,layout:j,updatedAt:Z.updateNote.updatedAt}),xe({noteId:e,updatedAt:Z.updateNote.updatedAt,editSessionId:i.current}),P(Z.updateNote.updatedAt),w(j);return}I(null),await oe({ignoreConflict:!0})},Ye=async()=>{const u=je();if(!u)return;const j=await La({title:qe(u.title||"untitled"),content:qe(u.content),layout:u.layout??f});if(j.type==="error"){a(j.errors[0].message);return}E.current=!0,q.current=null,I(null),we(),Promise.resolve(n({to:ge,params:{id:j.createNote.id}})).finally(()=>{E.current=!1})},Wt=()=>{F&&(p(F.title),F.layout&&w(F.layout),z(F.content),R(u=>u+1),Bt(F))},Jt=()=>{Ft()},Xt=F?J(F.createdAt).format("YYYY-MM-DD HH:mm:ss"):null,Ne=N==="saved"&&O,ea=Mr(h,C),ta=De(l.createdAt),aa=N==="pending"?"Saving...":N==="saving"?"Saving now...":N==="error"?"Save failed. Try again.":N==="conflict"?"Save paused: changed elsewhere":`Saved ${ea}`,na=Y("inline-flex items-center gap-2 transition-colors",N==="saved"&&!Ne&&"text-fg-secondary",Ne&&"text-accent-success",(N==="pending"||N==="saving")&&"text-fg-default",(N==="error"||N==="conflict")&&"text-fg-error"),Ce=Y("save-progress-ring flex h-4 w-4 shrink-0 items-center justify-center rounded-full",(N==="pending"||N==="saving")&&"save-progress-ring-active",N==="saved"&&Ne&&"save-progress-ring-complete",(N==="error"||N==="conflict")&&"save-progress-ring-error"),ra=N==="saving"?t.jsx("span",{className:Ce,"aria-hidden":!0,children:t.jsx("span",{className:"h-2 w-2 rounded-full bg-elevated"})}):N==="pending"?t.jsx("span",{className:Ce,"aria-hidden":!0,children:t.jsx("span",{className:"h-2 w-2 rounded-full bg-elevated"})}):N==="error"||N==="conflict"?t.jsx(Qa,{className:"h-3.5 w-3.5",weight:"fill"}):t.jsx("span",{className:Ce,"aria-hidden":!0,children:t.jsx("span",{className:"h-2 w-2 rounded-full bg-elevated"})}),sa=t.jsxs(y,{as:"span",variant:"label",weight:"medium",className:na,role:"status","aria-live":"polite",title:g,children:[ra,aa]}),Ae=N==="conflict"&&V?.type==="updated",oa=Ae?je():null,la=V!==null&&!(V.type==="updated"&&!Ae&&V.updatedAt===l.updatedAt);return t.jsx(He,{title:m,variant:"none",children:t.jsxs("main",{className:Y("mx-auto",Br[f]),children:[t.jsx("div",{className:"surface-floating sticky top-20 z-[1001] mb-7 px-5 pt-4 pb-3.5",children:t.jsxs("div",{className:"flex flex-col gap-3.5",children:[t.jsxs("div",{className:"flex items-start justify-between gap-5",children:[t.jsxs("div",{className:"min-w-0 flex-1 pt-0.5",children:[t.jsx(y,{as:"div",variant:"micro",weight:"semibold",tracking:"widest",transform:"uppercase",tone:"tertiary",className:"mb-1.5",children:"Thought in progress"}),t.jsx("input",{ref:c,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:m,onChange:u=>Kt(u.target.value)})]}),t.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[t.jsx(ut,{button:t.jsx(pt,{label:"Note actions",size:"lg"}),items:[{name:"Copy Markdown",onClick:Qt},{name:"Download document",onClick:()=>se(!0)},{type:"separator",key:"export-separator"},{name:_?"Unpin":"Pin",onClick:()=>Ht(e,_,()=>{M(u=>!u)})},{name:"Change layout",onClick:()=>$(!0)},{type:"separator"},{name:"Clone this note",onClick:()=>$t(c.current?.value||"untitled",r.current?.getContent()||"",f)},{name:"Restore previous version",onClick:()=>B(!0)},{type:"separator"},{name:"Delete",onClick:()=>Ut(e,()=>{n({to:Qe,search:{page:1}})})}]}),t.jsx(S,{size:"sm",variant:"subtle",isLoading:N==="saving",disabled:N==="conflict",onClick:Ze,children:"Save"})]})]}),t.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.jsxs(y,{as:"span",variant:"label",weight:"medium",tone:"secondary",className:"inline-flex items-center gap-1.5",children:[t.jsx(Da,{className:"h-3 w-3",weight:"fill"}),"Pinned"]}),_&&t.jsx("span",{className:"h-1 w-1 rounded-full bg-border-secondary"}),sa,t.jsx("span",{className:"h-1 w-1 rounded-full bg-border-secondary"}),t.jsxs(y,{as:"span",variant:"micro",weight:"medium",tone:"tertiary",children:["Created ",ta]})]})]})}),F&&t.jsx(Je,{tone:"danger",className:"mb-6",children:t.jsxs("div",{className:"flex w-full flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[t.jsxs("span",{children:["A draft from ",Xt," is saved only in this browser."]}),t.jsxs("div",{className:"flex flex-wrap gap-2",children:[t.jsx(S,{type:"button",size:"sm",variant:"subtle",className:"self-start",onClick:Wt,children:"Restore draft"}),t.jsx(S,{type:"button",size:"sm",variant:"ghost",className:"self-start",onClick:Jt,children:"Discard"})]})]})}),N==="error"&&t.jsx(Je,{tone:"danger",className:"mb-6",children:t.jsxs("div",{className:"flex w-full flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[t.jsx("span",{children:"Save failed. Your latest draft is still available here. Retry before leaving this note."}),t.jsxs("div",{className:"flex flex-wrap gap-2",children:[t.jsx(S,{type:"button",size:"sm",variant:"subtle",className:"self-start",onClick:Ze,children:"Retry save"}),t.jsx(S,{type:"button",size:"sm",variant:"ghost",className:"self-start",onClick:()=>{Ye()},children:"Save as new note"})]})]})}),t.jsxs("div",{className:"flex flex-col gap-5",children:[t.jsx($r,{noteId:e,properties:l.properties,expectedUpdatedAt:G.current,editSessionId:i.current,disabled:N!=="saved",onSaved:u=>{Q.current=u.updatedAt,ee(u.updatedAt),P(u.updatedAt),D(!0),s.setQueryData(T.notes.detail(e),j=>j&&{...j,updatedAt:u.updatedAt,properties:u.properties}),xe({noteId:e,updatedAt:u.updatedAt,editSessionId:i.current})}}),t.jsx(Sr,{ref:r,content:X??l.content,currentNoteId:e,onChange:zt},`${e}:${x}`),t.jsx(Fe,{fallback:t.jsx(ne,{height:107}),errorTitle:"Failed to load reminders",errorDescription:"Retry loading reminder details for this note.",renderError:({error:u,retry:j})=>t.jsx(_e,{title:"Failed to load reminders",description:"Retry loading reminder details for this note.",error:u,onRetry:j,showBackAction:!1,showHomeAction:!1}),children:t.jsx($n,{noteId:e})}),t.jsx(Fe,{fallback:t.jsx(ne,{height:100}),errorTitle:"Failed to load back references",errorDescription:"Retry loading notes that link back here.",renderError:({error:u,retry:j})=>t.jsx(_e,{title:"Failed to load back references",description:"Retry loading notes that link back here.",error:u,onRetry:j,showBackAction:!1,showHomeAction:!1}),children:t.jsx(pn,{noteId:e,render:u=>u&&u.length>0&&t.jsx(Ve,{icon:t.jsx(gt,{className:"h-3.5 w-3.5"}),title:"Back References",children:t.jsx("ul",{className:"flex flex-col",children:u.map(j=>t.jsx("li",{children:t.jsxs(Ie,{to:ge,params:{id:j.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:[t.jsx(dn,{className:"h-3.5 w-3.5 shrink-0 text-fg-tertiary"}),t.jsx(y,{as:"span",variant:"body",weight:"medium",className:"text-current",children:j.title})]})},j.id))})})})})]}),t.jsx(mn,{isOpen:b,onClose:()=>$(!1),onSave:Zt,currentLayout:f}),t.jsx(Ln,{isOpen:la,isDeleted:V?.type==="deleted",isConflict:Ae,hasDraft:oa!==null,source:V?.source??"unknown",isReloading:d.isRefetching,onReload:qt,onOverwrite:()=>{Gt()},onCloneDraft:()=>{Ye()},onOpenTrash:()=>n({to:Qe,search:{page:1}})}),t.jsx(Dn,{isOpen:U,metadata:Yt(),getHtml:()=>r.current?.getHtml(),getMarkdown:()=>r.current?.getMarkdown(),onClose:()=>se(!1)}),t.jsx(Bn,{isOpen:H,noteId:e,onClose:()=>B(!1),onRestored:u=>{i.current=Pe(),we(),q.current=null,Q.current=u.updatedAt,I(null),ee(u.updatedAt),P(u.updatedAt)}}),Vt]})})}function Xr(){const{id:e}=Ot.useParams();if(!e)throw new Error("Note id is required.");return t.jsx(Fe,{fallback:Fr,errorTitle:"Failed to load note",errorDescription:"Retry loading the note editor.",resetKeys:[e],renderError:({error:a,retry:n})=>t.jsx(He,{title:"Note",variant:"none",children:t.jsx(_e,{title:"Failed to load note",description:"Retry loading the note editor.",error:a,onRetry:n})}),children:t.jsx(Ur,{id:e},e)})}export{Ur as NoteContent,Xr as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./graph-vendor-UTvF2NS_.js";import{a7 as l}from"./index-VHp17GQX.js";const r=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M228,128a12,12,0,0,1-12,12H140v76a12,12,0,0,1-24,0V140H40a12,12,0,0,1,0-24h76V40a12,12,0,0,1,24,0v76h76A12,12,0,0,1,228,128Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z",opacity:"0.2"}),e.createElement("path",{d:"M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z"}))],["fill",e.createElement(e.Fragment,null,e.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,32ZM184,136H136v48a8,8,0,0,1-16,0V136H72a8,8,0,0,1,0-16h48V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M222,128a6,6,0,0,1-6,6H134v82a6,6,0,0,1-12,0V134H40a6,6,0,0,1,0-12h82V40a6,6,0,0,1,12,0v82h82A6,6,0,0,1,222,128Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M220,128a4,4,0,0,1-4,4H132v84a4,4,0,0,1-8,0V132H40a4,4,0,0,1,0-8h84V40a4,4,0,0,1,8,0v84h84A4,4,0,0,1,220,128Z"}))]]),a=e.forwardRef((t,n)=>e.createElement(l,{ref:n,...t,weights:r}));a.displayName="PlusIcon";const c=a;export{c as n};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e}from"./note-vendor-DkYKUmLo.js";import{X as k,T as h,L as H,N as M,D as E,l as L,d as u,Y as S,P as w,Q as O,Z as C,i as o,j as U,_ as Y}from"./index-VHp17GQX.js";import"./graph-vendor-UTvF2NS_.js";import{u as I,R as P}from"./useReminderMutate-CoXXqJY2.js";import"./note-core-BklwyZHk.js";const g={high:"bg-priority-high",medium:"bg-priority-medium",low:"bg-priority-low"};function B({reminder:t,onUpdate:l,onDelete:f}){const j=y=>{const r=u(Number(y)),m=u();return r.isSame(m,"day")?`Today at ${r.format("HH:mm")}`:r.isSame(m.add(1,"day"),"day")?`Tomorrow at ${r.format("HH:mm")}`:r.format("YYYY-MM-DD HH:mm")},a=y=>{const r=u(Number(y)),m=u(),N=r.diff(m,"hour"),b=r.diff(m,"minute")%60;return N<0||b<0?"Overdue":N===0?`${b}m remaining`:`${N}h ${b}m remaining`},d=a(t.reminderDate)==="Overdue",i=t.priority||"low",s=i==="high"?"High":i==="medium"?"Medium":"Low",p=g[i],c=t.noteId.toString(),n=d?"text-fg-error":"text-fg-tertiary",x=t.content?.trim()||t.note?.title||"Untitled reminder",R=t.note?.title||"Untitled note",T=!!(t.content?.trim()&&t.note?.title),D=a(t.reminderDate),$=j(t.reminderDate);return e.jsxs("div",{className:"surface-base flex flex-col gap-2.5 px-4 py-3 sm:flex-row sm:items-center sm:gap-4",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-start gap-2.5 sm:items-center",children:[e.jsx(k,{checked:t.completed,onChange:()=>l(t.id,c,{completed:!t.completed}),size:"sm","aria-label":`Reminder: ${x}`}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx(h,{as:"p",variant:"body",weight:"semibold",className:t.completed?"truncate line-through opacity-45":"truncate",children:x}),T&&e.jsx(h,{as:"div",variant:"meta",tone:"secondary",className:t.completed?"mt-0.5 truncate opacity-45":"mt-0.5 truncate",children:e.jsx(H,{to:M,params:{id:String(t.note?.id??t.noteId)},className:"transition-colors hover:text-fg-default hover:underline",children:R})})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1 sm:shrink-0",children:[e.jsx("span",{className:`h-3 w-3 shrink-0 rounded-full border border-border-subtle ${p}`,"aria-label":`${s} priority`,title:`${s} priority`}),e.jsx(h,{as:"span",variant:"meta",weight:"medium",tone:"secondary",className:t.completed?"opacity-45":void 0,children:$}),e.jsx("span",{className:"h-1 w-1 rounded-full bg-border-secondary"}),e.jsx(h,{as:"span",variant:"label",weight:"medium",className:t.completed?"opacity-45":n,children:D})]}),e.jsx("div",{className:"flex items-center justify-end gap-1.5 sm:shrink-0",children:e.jsx(E,{button:e.jsx(L,{label:"Reminder actions",iconClassName:"h-5 w-5 text-current"}),items:[{name:"Delete",onClick:()=>f(t.id,c)}]})})]})}const v=U(Y),_=[{label:"High",className:g.high},{label:"Medium",className:g.medium},{label:"Low",className:g.low}];function X(){const t=v.useNavigate(),{page:l}=v.useSearch(),{onUpdate:f,onDelete:j}=I(),a=25,d=e.jsx("div",{className:"flex flex-wrap items-center gap-3",children:_.map(({label:i,className:s})=>e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:`h-2.5 w-2.5 rounded-full border border-border-subtle ${s}`,"aria-hidden":"true"}),e.jsx(h,{as:"span",variant:"label",weight:"medium",tone:"tertiary",children:i})]},i))});return e.jsx(S,{fallback:e.jsx(w,{title:"Reminders",heading:e.jsx(o,{width:164,height:24,className:"rounded-full"}),description:e.jsx(o,{width:224,height:16,className:"rounded-full"}),headerRight:d,children:e.jsxs("div",{className:"flex flex-col gap-2.5",children:[e.jsx(o,{height:"60px"}),e.jsx(o,{height:"60px"}),e.jsx(o,{height:"60px"}),e.jsx(o,{height:"60px"})]})}),errorTitle:"Failed to load reminders",errorDescription:"Retry loading the upcoming reminder list",resetKeys:[l,a],children:e.jsx(P,{searchParams:{offset:(l-1)*a,limit:a},render:({reminders:i,totalCount:s})=>{const p=s>0?`Reminders (${s})`:void 0,c="Review reminders created from notes and mark them complete here";return i.length===0?e.jsx(w,{title:"Reminders",heading:p,description:c,headerRight:d,children:e.jsx(O,{title:"No upcoming reminders",description:"Add a reminder inside any note to see it here"})}):e.jsx(w,{title:"Reminders",heading:p,description:c,headerRight:d,children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx("div",{className:"flex flex-col gap-2.5",children:i.map(n=>e.jsx(B,{reminder:n,onUpdate:f,onDelete:j},n.id))}),s&&a<s&&e.jsx(C,{page:l,last:Math.ceil(s/a),onChange:n=>{t({search:x=>({...x,page:n})})}})]})})}})})}export{X as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e}from"./note-vendor-DkYKUmLo.js";import{P as m,Q as f,Y as N,a8 as b,T as h,L as w,N as S,Z as k,j as E,a9 as $,i as d}from"./index-VHp17GQX.js";import{a as R}from"./graph-vendor-UTvF2NS_.js";import"./note-core-BklwyZHk.js";const L=t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),g=({children:t,match:s})=>{const r=s.trim();if(!r)return e.jsx("span",{children:t});const a=L(r),n=new RegExp(`(${a})`,"gi"),c=new RegExp(`^${a}$`,"i"),l=t.split(n);return e.jsx("span",{children:l.map((i,o)=>c.test(i)?e.jsx("mark",{children:i},o):e.jsx(R.Fragment,{children:i},o))})},j=E($),v=180,x=t=>t.replace(/\s+/g," ").trim(),T=(t,s)=>{const r=x(t),a=x(s).toLowerCase();if(!a)return r;const n=r.toLowerCase().indexOf(a);if(n===-1)return r.length>v?`${r.slice(0,v-1).trimEnd()}…`:r;const c=Math.max(0,n-56),l=Math.min(r.length,n+a.length+84);let i=r.slice(c,l).trim();return c>0&&(i=`…${i}`),l<r.length&&(i=`${i}…`),i},A=t=>Array.isArray(t)?t.map(s=>{if(!s||typeof s!="object")return"";const r=s.text;return typeof r=="string"?r:""}).join(""):"",B=(t,s)=>t==="heading"?`Heading ${typeof s?.level=="number"?s.level:1}`:t==="bulletListItem"?"Bullet":t==="numberedListItem"?"Numbered":t==="checkListItem"?"Checklist":t==="quote"?"Quote":t==="codeBlock"?"Code":"Content",y=(t,s)=>{Array.isArray(t)&&t.forEach(r=>{if(!r||typeof r!="object")return;const a=typeof r.type=="string"?r.type:void 0,n=typeof r.props=="object"&&r.props?r.props:void 0,c=x(A(r.content));c&&s.push({label:B(a,n),text:c});const l=r.children;Array.isArray(l)&&y(l,s)})},C=(t,s)=>{try{const r=JSON.parse(t),a=[];if(y(r,a),a.length===0)return[];const n=x(s).toLowerCase(),c=n?a.filter(i=>i.text.toLowerCase().includes(n)):a;return(c.length>0?c:a).slice(0,2).map(i=>({...i,text:T(i.text,s)}))}catch{return[]}},P=t=>t===1?"1 result":`${t} results`,M=()=>"Open the note to inspect matching content.",z=(t,s)=>`${P(s)} for "${t}"`,I=()=>e.jsx(m,{title:"Search",variant:"default",description:e.jsx(d,{width:208,height:16,className:"rounded-full"}),children:e.jsx("main",{className:"flex flex-col gap-3",children:Array.from({length:2},(t,s)=>e.jsxs("div",{className:"surface-base flex flex-col gap-3 p-4",children:[e.jsx(d,{width:"34%",height:18,className:"rounded-full"}),e.jsx("div",{className:"rounded-[14px] bg-muted px-3 py-3",children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{children:[e.jsx(d,{width:84,height:12,className:"rounded-full"}),e.jsx(d,{width:"100%",height:14,className:"mt-2 rounded-full"}),e.jsx(d,{width:"82%",height:14,className:"mt-1.5 rounded-full"})]}),e.jsxs("div",{className:"border-t border-border-subtle pt-2",children:[e.jsx(d,{width:72,height:12,className:"rounded-full"}),e.jsx(d,{width:"94%",height:14,className:"mt-2 rounded-full"})]})]})})]},s))})});function F(){const t=j.useNavigate(),{page:s,query:r}=j.useSearch(),a=r.trim(),n=10;return a?e.jsx(N,{fallback:e.jsx(I,{}),errorTitle:"Failed to load search results",errorDescription:`Retry loading results for "${a}".`,resetKeys:[a,s],children:e.jsx(b,{searchParams:{query:a,limit:n,offset:(s-1)*n,fields:["content"]},render:({notes:c,totalCount:l})=>e.jsx(m,{title:"Search",description:z(a,l),variant:"default",children:e.jsxs("main",{className:"flex flex-col gap-4",children:[c.length>0?e.jsx("div",{className:"flex flex-col gap-3",children:c.map(i=>{const o=C(i.content,a);return e.jsxs("article",{className:"surface-base flex flex-col gap-3 p-4",children:[e.jsx(h,{as:"h2",variant:"body",weight:"semibold",tracking:"tight",children:e.jsx(w,{to:S,params:{id:i.id},className:"transition-colors hover:text-fg-default/85",children:e.jsx(g,{match:a,children:i.title||"Untitled"})})}),o.length>0?e.jsx("div",{className:"rounded-[14px] bg-muted px-3 py-3",children:e.jsx("div",{className:"flex flex-col gap-2",children:o.map((u,p)=>e.jsxs("div",{className:p>0?"border-t border-border-subtle pt-2":void 0,children:[e.jsx(h,{as:"div",variant:"micro",weight:"semibold",tracking:"wider",transform:"uppercase",tone:"tertiary",children:u.label}),e.jsx(h,{as:"p",variant:"meta",tone:"secondary",className:"mt-1 leading-[1.65]",children:e.jsx(g,{match:a,children:u.text})})]},`${i.id}:${u.label}:${p}`))})}):e.jsx(h,{as:"p",variant:"meta",tone:"secondary",className:"leading-[1.65]",children:M()})]},i.id)})}):e.jsx(f,{title:"No results found",description:"Try searching for a different word or phrase"}),l>n&&e.jsx(k,{page:s,last:Math.ceil(l/n),onChange:i=>{t({search:o=>({...o,page:i})})}})]})})})}):e.jsx(m,{title:"Search",description:"Search note titles and matching sections across your workspace",variant:"default",children:e.jsx("main",{children:e.jsx(f,{title:"Start searching",description:"Enter a keyword to look through note titles and matching content"})})})}export{F as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as f}from"./note-vendor-
|
|
1
|
+
import{j as f}from"./note-vendor-DkYKUmLo.js";import{bg as o}from"./index-VHp17GQX.js";const n=o("surface-base",{variants:{tone:{default:"",elevated:"surface-elevated"},padding:{default:"p-4",compact:"px-3 py-2.5",roomy:"p-6",flush:"overflow-hidden"}},defaultVariants:{tone:"default",padding:"default"}});function i({children:a,className:e,flush:t=!1,padding:d="default",tone:s="default"}){const r=t?"flush":d;return f.jsx("div",{className:n({tone:s,padding:r,className:e}),children:a})}export{i as S};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e}from"./note-vendor-DkYKUmLo.js";import{a5 as T,q as S,aa as P,P as k,a1 as q,T as o,a2 as E,ab as A,S as p,ac as L,e as x,ad as O,ae as C,af as I,Y as Q,ag as v,L as R,ah as _,Z as B,Q as D,i as h,j as F,ai as z}from"./index-VHp17GQX.js";import{a as y}from"./graph-vendor-UTvF2NS_.js";import{f as G}from"./tag.api-Dl8DQd0m.js";import"./note-core-BklwyZHk.js";const M=s=>{const{data:d}=T({queryKey:S.tags.list(s.searchParams),async queryFn(){const t=await G({query:s.searchParams.query,offset:s.searchParams.offset,limit:s.searchParams.limit,sortBy:s.searchParams.sortBy,sortOrder:s.searchParams.sortOrder});if(t.type==="error")throw t;return t.allTags}});return s.render(d)},b=F(z);function $(){const s=b.useNavigate(),{page:d,query:t,limit:n,sortBy:l,sortOrder:m}=b.useSearch(),[u,f]=y.useState(t),[,j]=P(350),i=t.trim();y.useEffect(()=>{f(t)},[t]),y.useEffect(()=>{const a=u.trim();a!==i&&j(()=>{s({search:r=>({...r,page:1,query:a})})})},[u,s,i,j]);const g=a=>{s({search:r=>({...r,...a})})},w=()=>{f(""),g({page:1,query:""})};return e.jsxs(k,{title:"Tags",description:"Find tags you added with @ across your notes",children:[e.jsxs("div",{className:"mb-5 flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between",children:[e.jsxs("div",{className:"surface-base flex min-w-0 items-center gap-2 rounded-[16px] px-3.5 py-2.5 lg:w-72",children:[e.jsx(q,{className:"h-4 w-4 shrink-0 text-fg-tertiary"}),e.jsx(o,{as:"span",variant:"label",weight:"medium",tone:"tertiary",children:"Search"}),e.jsx("div",{className:"h-5 w-px bg-divider"}),e.jsx("input",{"aria-label":"Search tags",placeholder:"Search tags",value:u,onChange:a=>f(a.target.value),className:"h-8 min-w-0 flex-1 bg-transparent text-sm font-medium text-fg-default outline-none placeholder:text-xs placeholder:font-medium placeholder:text-fg-placeholder"}),(u||i)&&e.jsx("button",{type:"button","aria-label":"Clear tag search",className:"focus-ring-soft flex h-7 w-7 shrink-0 items-center justify-center rounded-[10px] text-fg-tertiary outline-none transition-colors hover:bg-hover-subtle hover:text-fg-default",onClick:w,children:e.jsx(E,{className:"h-3.5 w-3.5",weight:"bold"})})]}),e.jsxs("div",{className:"surface-base inline-flex flex-wrap items-center gap-3 rounded-[16px] px-3.5 py-2.5",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(A,{className:"h-4 w-4 shrink-0 text-fg-tertiary"}),e.jsx(o,{as:"span",variant:"label",weight:"medium",tone:"tertiary",children:"Items"}),e.jsx(p,{value:String(n),onValueChange:a=>{const r=Number(a);C(r)&&g({limit:r,page:1})},variant:"ghost",size:"sm",children:L.map(a=>e.jsx(x,{value:String(a),children:a===O?`Default (${a})`:a},a))})]}),e.jsx("div",{className:"h-5 w-px bg-divider"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(I,{className:"h-4 w-4 shrink-0 text-fg-tertiary"}),e.jsx(o,{as:"span",variant:"label",weight:"medium",tone:"tertiary",children:"Sort"}),e.jsxs(p,{value:l,onValueChange:a=>g({sortBy:a,page:1}),variant:"ghost",size:"sm",children:[e.jsx(x,{value:"referenceCount",children:"Usage"}),e.jsx(x,{value:"name",children:"Name"})]}),e.jsxs(p,{value:m,onValueChange:a=>g({sortOrder:a,page:1}),variant:"ghost",size:"sm",children:[e.jsx(x,{value:"desc",children:l==="name"?"Z to A":"Most used"}),e.jsx(x,{value:"asc",children:l==="name"?"A to Z":"Least used"})]})]})]})]}),e.jsx(Q,{fallback:e.jsxs("div",{className:"flex flex-wrap gap-2.5",children:[e.jsx(h,{width:"90px",height:"36px"}),e.jsx(h,{width:"120px",height:"36px"}),e.jsx(h,{width:"80px",height:"36px"}),e.jsx(h,{width:"100px",height:"36px"}),e.jsx(h,{width:"110px",height:"36px"}),e.jsx(h,{width:"70px",height:"36px"})]}),errorTitle:"Failed to load tags",errorDescription:"Retry loading the tag catalog",resetKeys:[d,n,i,l,m],children:e.jsx(M,{searchParams:{query:i,offset:(d-1)*n,limit:n,sortBy:l,sortOrder:m},render:({tags:a,totalCount:r})=>e.jsx(v,{fallback:e.jsx(D,{title:i?"No matching tags":"No tags yet",description:i?"Try another tag name":"Add @tags inside notes and they will appear here"}),children:a.length>0&&e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx("div",{className:"flex flex-wrap gap-2.5",children:a.map(c=>e.jsxs(R,{to:_,params:{id:c.id},search:{page:1},className:"inline-flex items-center gap-1.5 rounded-full border border-border-subtle bg-hover-subtle px-3 py-1.5 text-fg-secondary transition-colors hover:border-border-secondary hover:bg-hover hover:text-fg-default",children:[e.jsx(o,{as:"span",variant:"meta",weight:"medium",className:"text-current",children:c.name}),e.jsx(o,{as:"span",variant:"label",weight:"medium",tone:"tertiary",className:"text-current/70",children:c.referenceCount})]},c.id))}),e.jsx(v,{fallback:null,children:r&&n<r&&e.jsx(B,{page:d,last:Math.ceil(r/n),onChange:c=>{s({search:N=>({...N,page:c,query:i,limit:n,sortBy:l,sortOrder:m})})}})})]})})})})]})}export{$ as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e}from"./note-vendor-DkYKUmLo.js";import{a5 as j,aU as p,q as y,aE as N,Y as P,P as c,ag as h,aV as T,Z as v,Q as q,i as d,j as w,ah as k}from"./index-VHp17GQX.js";import"./graph-vendor-UTvF2NS_.js";import"./note-core-BklwyZHk.js";const R=s=>{const{data:r}=j({queryKey:y.notes.tagList(s.searchParams),async queryFn(){const t=await p({query:s.searchParams.query,offset:s.searchParams.offset,limit:s.searchParams.limit});if(t.type==="error")throw t;return t.tagNotes}});return s.render(r)},g=w(k);function F(){const s=g.useNavigate(),{id:r}=g.useParams(),{page:t}=g.useSearch(),i=25,{onDelete:u,onPinned:m,deleteWarningDialog:x}=N();return e.jsxs(P,{fallback:e.jsx(c,{title:"Tagged Notes",heading:e.jsx(d,{width:148,height:24,className:"rounded-full"}),description:e.jsx(d,{width:196,height:16,className:"rounded-full"}),variant:"default",children:e.jsxs("div",{className:"grid-auto-cards grid gap-5",children:[e.jsx(d,{height:"112px"}),e.jsx(d,{height:"112px"}),e.jsx(d,{height:"112px"})]})}),errorTitle:"Failed to load tagged notes",errorDescription:"Retry loading notes for this tag",resetKeys:[r,t,i],children:[e.jsx(R,{searchParams:{query:r,offset:(t-1)*i,limit:i},render:({notes:o,totalCount:n})=>{const l=o.flatMap(a=>a.tags).find(a=>a.id===r)?.name;return e.jsx(c,{title:l??"Tagged Notes",heading:l?n>0?`${l} (${n})`:l:"Tagged Notes",description:"Browse every note linked to this tag",variant:"default",children:e.jsx(h,{fallback:e.jsx(q,{title:"No tagged notes yet",description:"Notes tagged with this label will appear here"}),children:o.length>0&&e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx("div",{className:"grid-auto-cards grid gap-5",children:o.map(a=>e.jsx(T,{...a,onPinned:()=>m(a.id,a.pinned),onDelete:()=>u(a.id)},a.id))}),e.jsx(h,{fallback:null,children:n&&i<n&&e.jsx(v,{page:t,last:Math.ceil(n/i),onChange:a=>{s({search:f=>({...f,page:a})})}})})]})})})}}),x]})}export{F as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a}from"./graph-vendor-UTvF2NS_.js";import{a7 as l}from"./index-VHp17GQX.js";const r=new Map([["bold",a.createElement(a.Fragment,null,a.createElement("path",{d:"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z"}))],["duotone",a.createElement(a.Fragment,null,a.createElement("path",{d:"M218.34,119.6,183.6,154.34a46.58,46.58,0,0,1-44.31,12.26c-.31.34-.62.67-.95,1L103.6,202.34A46.63,46.63,0,1,1,37.66,136.4L72.4,101.66A46.6,46.6,0,0,1,116.71,89.4c.31-.34.62-.67,1-1L152.4,53.66a46.63,46.63,0,0,1,65.94,65.94Z",opacity:"0.2"}),a.createElement("path",{d:"M240,88.23a54.43,54.43,0,0,1-16,37L189.25,160a54.27,54.27,0,0,1-38.63,16h-.05A54.63,54.63,0,0,1,96,119.84a8,8,0,0,1,16,.45A38.62,38.62,0,0,0,150.58,160h0a38.39,38.39,0,0,0,27.31-11.31l34.75-34.75a38.63,38.63,0,0,0-54.63-54.63l-11,11A8,8,0,0,1,135.7,59l11-11A54.65,54.65,0,0,1,224,48,54.86,54.86,0,0,1,240,88.23ZM109,185.66l-11,11A38.41,38.41,0,0,1,70.6,208h0a38.63,38.63,0,0,1-27.29-65.94L78,107.31A38.63,38.63,0,0,1,144,135.71a8,8,0,0,0,7.78,8.22H152a8,8,0,0,0,8-7.78A54.86,54.86,0,0,0,144,96a54.65,54.65,0,0,0-77.27,0L32,130.75A54.62,54.62,0,0,0,70.56,224h0a54.28,54.28,0,0,0,38.64-16l11-11A8,8,0,0,0,109,185.66Z"}))],["fill",a.createElement(a.Fragment,null,a.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,32ZM115.7,192.49a43.31,43.31,0,0,1-55-66.43l25.37-25.37a43.35,43.35,0,0,1,61.25,0,42.9,42.9,0,0,1,9.95,15.43,8,8,0,1,1-15,5.6A27.33,27.33,0,0,0,97.37,112L72,137.37a27.32,27.32,0,0,0,34.68,41.91,8,8,0,1,1,9,13.21Zm79.61-62.55-25.37,25.37A43,43,0,0,1,139.32,168h0a43.35,43.35,0,0,1-40.53-28.12,8,8,0,1,1,15-5.6A27.35,27.35,0,0,0,139.28,152h0a27.14,27.14,0,0,0,19.32-8L184,118.63a27.32,27.32,0,0,0-34.68-41.91,8,8,0,1,1-9-13.21,43.32,43.32,0,0,1,55,66.43Z"}))],["light",a.createElement(a.Fragment,null,a.createElement("path",{d:"M238,88.18a52.42,52.42,0,0,1-15.4,35.66l-34.75,34.75A52.28,52.28,0,0,1,150.62,174h-.05A52.63,52.63,0,0,1,98,119.9a6,6,0,0,1,6-5.84h.17a6,6,0,0,1,5.83,6.16A40.62,40.62,0,0,0,150.58,162h0a40.4,40.4,0,0,0,28.73-11.9l34.75-34.74A40.63,40.63,0,0,0,156.63,57.9l-11,11a6,6,0,0,1-8.49-8.49l11-11a52.62,52.62,0,0,1,74.43,0A52.83,52.83,0,0,1,238,88.18Zm-127.62,98.9-11,11A40.36,40.36,0,0,1,70.6,210h0a40.63,40.63,0,0,1-28.7-69.36L76.62,105.9A40.63,40.63,0,0,1,146,135.77a6,6,0,0,0,5.83,6.16H152a6,6,0,0,0,6-5.84A52.63,52.63,0,0,0,68.14,97.42L33.38,132.16A52.63,52.63,0,0,0,70.56,222h0a52.26,52.26,0,0,0,37.22-15.42l11-11a6,6,0,1,0-8.49-8.48Z"}))],["regular",a.createElement(a.Fragment,null,a.createElement("path",{d:"M240,88.23a54.43,54.43,0,0,1-16,37L189.25,160a54.27,54.27,0,0,1-38.63,16h-.05A54.63,54.63,0,0,1,96,119.84a8,8,0,0,1,16,.45A38.62,38.62,0,0,0,150.58,160h0a38.39,38.39,0,0,0,27.31-11.31l34.75-34.75a38.63,38.63,0,0,0-54.63-54.63l-11,11A8,8,0,0,1,135.7,59l11-11A54.65,54.65,0,0,1,224,48,54.86,54.86,0,0,1,240,88.23ZM109,185.66l-11,11A38.41,38.41,0,0,1,70.6,208h0a38.63,38.63,0,0,1-27.29-65.94L78,107.31A38.63,38.63,0,0,1,144,135.71a8,8,0,0,0,16,.45A54.86,54.86,0,0,0,144,96a54.65,54.65,0,0,0-77.27,0L32,130.75A54.62,54.62,0,0,0,70.56,224h0a54.28,54.28,0,0,0,38.64-16l11-11A8,8,0,0,0,109,185.66Z"}))],["thin",a.createElement(a.Fragment,null,a.createElement("path",{d:"M236,88.12a50.44,50.44,0,0,1-14.81,34.31l-34.75,34.74A50.33,50.33,0,0,1,150.62,172h-.05A50.63,50.63,0,0,1,100,120a4,4,0,0,1,4-3.89h.11a4,4,0,0,1,3.89,4.11A42.64,42.64,0,0,0,150.58,164h0a42.32,42.32,0,0,0,30.14-12.49l34.75-34.74a42.63,42.63,0,1,0-60.29-60.28l-11,11a4,4,0,0,1-5.66-5.65l11-11A50.64,50.64,0,0,1,236,88.12ZM111.78,188.49l-11,11A42.33,42.33,0,0,1,70.6,212h0a42.63,42.63,0,0,1-30.11-72.77l34.75-34.74A42.63,42.63,0,0,1,148,135.82a4,4,0,0,0,8,.23A50.64,50.64,0,0,0,69.55,98.83L34.8,133.57A50.63,50.63,0,0,0,70.56,220h0a50.33,50.33,0,0,0,35.81-14.83l11-11a4,4,0,1,0-5.65-5.66Z"}))]]),m=new Map([["bold",a.createElement(a.Fragment,null,a.createElement("path",{d:"M216,48H180V36A28,28,0,0,0,152,8H104A28,28,0,0,0,76,36V48H40a12,12,0,0,0,0,24h4V208a20,20,0,0,0,20,20H192a20,20,0,0,0,20-20V72h4a12,12,0,0,0,0-24ZM100,36a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4V48H100Zm88,168H68V72H188ZM116,104v64a12,12,0,0,1-24,0V104a12,12,0,0,1,24,0Zm48,0v64a12,12,0,0,1-24,0V104a12,12,0,0,1,24,0Z"}))],["duotone",a.createElement(a.Fragment,null,a.createElement("path",{d:"M200,56V208a8,8,0,0,1-8,8H64a8,8,0,0,1-8-8V56Z",opacity:"0.2"}),a.createElement("path",{d:"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z"}))],["fill",a.createElement(a.Fragment,null,a.createElement("path",{d:"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM112,168a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm0-120H96V40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8Z"}))],["light",a.createElement(a.Fragment,null,a.createElement("path",{d:"M216,50H174V40a22,22,0,0,0-22-22H104A22,22,0,0,0,82,40V50H40a6,6,0,0,0,0,12H50V208a14,14,0,0,0,14,14H192a14,14,0,0,0,14-14V62h10a6,6,0,0,0,0-12ZM94,40a10,10,0,0,1,10-10h48a10,10,0,0,1,10,10V50H94ZM194,208a2,2,0,0,1-2,2H64a2,2,0,0,1-2-2V62H194ZM110,104v64a6,6,0,0,1-12,0V104a6,6,0,0,1,12,0Zm48,0v64a6,6,0,0,1-12,0V104a6,6,0,0,1,12,0Z"}))],["regular",a.createElement(a.Fragment,null,a.createElement("path",{d:"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z"}))],["thin",a.createElement(a.Fragment,null,a.createElement("path",{d:"M216,52H172V40a20,20,0,0,0-20-20H104A20,20,0,0,0,84,40V52H40a4,4,0,0,0,0,8H52V208a12,12,0,0,0,12,12H192a12,12,0,0,0,12-12V60h12a4,4,0,0,0,0-8ZM92,40a12,12,0,0,1,12-12h48a12,12,0,0,1,12,12V52H92ZM196,208a4,4,0,0,1-4,4H64a4,4,0,0,1-4-4V60H196ZM108,104v64a4,4,0,0,1-8,0V104a4,4,0,0,1,8,0Zm48,0v64a4,4,0,0,1-8,0V104a4,4,0,0,1,8,0Z"}))]]),n=a.forwardRef((e,t)=>a.createElement(l,{ref:t,...e,weights:r}));n.displayName="LinkIcon";const V=n,h=a.forwardRef((e,t)=>a.createElement(l,{ref:t,...e,weights:m}));h.displayName="TrashIcon";const Z=h;export{V as c,Z as n};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as a}from"./note-vendor-DkYKUmLo.js";import{a7 as P,P as v,Q as T,Y as G,i as u,j as J,V as X,k as ee,aE as te,a5 as N,q as o,u as S,O as ae,ag as A,Z as se,aV as ne,B as F,L as re,aW as le,T as ie,m as oe}from"./index-VHp17GQX.js";import{a as e}from"./graph-vendor-UTvF2NS_.js";import{f as ce}from"./tag.api-Dl8DQd0m.js";import{w as de,f as ue,x as me,a as pe,V as j,d as he,j as ge,u as H,e as fe}from"./ViewSectionDialog-CzskgmMF.js";import"./note-core-BklwyZHk.js";const ye=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M228,128a12,12,0,0,1-12,12H69l51.52,51.51a12,12,0,0,1-17,17l-72-72a12,12,0,0,1,0-17l72-72a12,12,0,0,1,17,17L69,116H216A12,12,0,0,1,228,128Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M112,56V200L40,128Z",opacity:"0.2"}),e.createElement("path",{d:"M216,120H120V56a8,8,0,0,0-13.66-5.66l-72,72a8,8,0,0,0,0,11.32l72,72A8,8,0,0,0,120,200V136h96a8,8,0,0,0,0-16ZM104,180.69,51.31,128,104,75.31Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M224,128a8,8,0,0,1-8,8H120v64a8,8,0,0,1-13.66,5.66l-72-72a8,8,0,0,1,0-11.32l72-72A8,8,0,0,1,120,56v64h96A8,8,0,0,1,224,128Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M222,128a6,6,0,0,1-6,6H54.49l61.75,61.76a6,6,0,1,1-8.48,8.48l-72-72a6,6,0,0,1,0-8.48l72-72a6,6,0,0,1,8.48,8.48L54.49,122H216A6,6,0,0,1,222,128Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M224,128a8,8,0,0,1-8,8H59.31l58.35,58.34a8,8,0,0,1-11.32,11.32l-72-72a8,8,0,0,1,0-11.32l72-72a8,8,0,0,1,11.32,11.32L59.31,120H216A8,8,0,0,1,224,128Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M220,128a4,4,0,0,1-4,4H49.66l65.17,65.17a4,4,0,0,1-5.66,5.66l-72-72a4,4,0,0,1,0-5.66l72-72a4,4,0,0,1,5.66,5.66L49.66,124H216A4,4,0,0,1,220,128Z"}))]]),xe=new Map([["bold",e.createElement(e.Fragment,null,e.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",e.createElement(e.Fragment,null,e.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"}),e.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",e.createElement(e.Fragment,null,e.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",e.createElement(e.Fragment,null,e.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",e.createElement(e.Fragment,null,e.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",e.createElement(e.Fragment,null,e.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"}))]]),q=e.forwardRef((n,r)=>e.createElement(P,{ref:r,...n,weights:ye}));q.displayName="ArrowLeftIcon";const we=q,C=e.forwardRef((n,r)=>e.createElement(P,{ref:r,...n,weights:xe}));C.displayName="PencilLineIcon";const je=C,E=J(X);function ve(){const n=E.useNavigate(),r=ee(),L=oe(),{page:m,sectionId:d}=E.useSearch(),{onDelete:K,onPinned:R,deleteWarningDialog:k}=te(),[Z,g]=e.useState(!1),[f,y]=e.useState(!1),i=25,{data:s}=N({queryKey:o.views.section(d),async queryFn(){const t=await de(d);if(t.type==="error")throw t;if(!t.viewSection)throw new Error("View section not found.");return t.viewSection}}),{data:l}=N({queryKey:o.views.sectionNotes(d,{limit:i,offset:(m-1)*i}),async queryFn(){const t=await ue(d,{limit:i,offset:(m-1)*i});if(t.type==="error")throw t;return t.viewSectionNotes}}),{data:D,isPending:I}=S({queryKey:o.tags.list({limit:200}),enabled:f,async queryFn(){const t=await ce({limit:200});if(t.type==="error")throw t;return t.allTags}}),{data:O,isPending:$}=S({queryKey:o.notes.propertyKeys({limit:100}),enabled:f,async queryFn(){const t=await ae({limit:100});if(t.type==="error")throw t;return t.notePropertyKeys}}),x=s.title,p=s.tagNames,Q=s.mode,w=s.propertyFilters,W=p.length>0,M=w.length>0,V=p.length>1?` · ${me(Q)}`:"",B=W?M?`Property and tag filters${V}`:`Tag filters${V}`:M?"Property filters":"All notes",b=a.jsx(A,{fallback:null,children:l.totalCount&&i<l.totalCount&&a.jsx(se,{page:m,last:Math.ceil(l.totalCount/i),onChange:t=>{n({search:c=>({...c,page:t})})}})}),U=D?.tags??[],_=O?.keys??[],z=async t=>{if(Z)return;const c=s.sortBy===t?s.sortOrder==="asc"?"desc":"asc":t==="title"?"asc":"desc";g(!0);const h=await H(s.id,fe(s,{sortBy:t,sortOrder:c}));if(h.type==="error"){L(h.errors[0]?.message??"Failed to update table sort."),g(!1);return}await r.invalidateQueries({queryKey:o.views.all(),exact:!1}),g(!1)},Y=async t=>{const c=await H(s.id,t);if(c.type==="error"){L(c.errors[0]?.message??"Failed to update section.");return}await r.invalidateQueries({queryKey:o.views.all(),exact:!1}),n({search:h=>({...h,page:1})}),y(!1)};return a.jsxs(a.Fragment,{children:[a.jsxs(v,{title:x,heading:l.totalCount>0?`${x} (${l.totalCount})`:x,description:a.jsxs("div",{className:"flex flex-col gap-2",children:[a.jsx(ie,{as:"span",variant:"meta",tone:"tertiary",children:B}),a.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[p.map(t=>a.jsx(j,{className:"max-w-full border-border-subtle bg-hover-subtle text-fg-secondary",children:t},t)),w.map(t=>a.jsx(j,{className:"max-w-full border-border-subtle bg-hover-subtle text-fg-secondary",children:he(t)},`${t.key}-${t.operator}-${t.value??""}`)),p.length===0&&w.length===0&&a.jsx(j,{className:"max-w-full border-border-subtle bg-hover-subtle text-fg-secondary",children:"All notes"})]})]}),headerRight:a.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[a.jsx(F,{asChild:!0,variant:"ghost",size:"sm",children:a.jsxs(re,{to:le,children:[a.jsx(we,{className:"h-4 w-4"}),"Back to Views"]})}),a.jsxs(F,{type:"button",variant:"subtle",size:"sm",onClick:()=>y(!0),children:[a.jsx(je,{className:"h-4 w-4"}),"Edit section"]})]}),children:[a.jsx(A,{fallback:a.jsx(T,{title:"No notes match this saved view",description:"Adjust this view's filters or keep writing until matching notes appear."}),children:l.notes.length>0&&s.displayType==="table"?a.jsxs("div",{className:"flex flex-col gap-4",children:[a.jsx(pe,{section:s,notes:l.notes,isPending:!1,isError:!1,surface:"card",onRetry:()=>{r.invalidateQueries({queryKey:o.views.sectionNotes(d,{limit:i,offset:(m-1)*i})})},onSortChange:z,isSortPending:Z}),b]}):l.notes.length>0?a.jsxs("div",{className:"flex flex-col gap-4",children:[a.jsx("div",{className:"grid-auto-cards grid gap-5",children:l.notes.map(t=>a.jsx(ne,{...t,onPinned:()=>R(t.id,t.pinned),onDelete:()=>K(t.id)},t.id))}),b]}):null}),k]}),a.jsx(ge,{open:f,mode:"edit",initialSection:s,availableTags:U,availableProperties:_,isTagsLoading:I,isPropertiesLoading:$,onClose:()=>y(!1),onSubmit:Y})]})}function Ne(){const{sectionId:n,page:r}=E.useSearch();return n?a.jsx(G,{fallback:a.jsx(v,{title:"View Notes",heading:a.jsx(u,{width:180,height:24,className:"rounded-full"}),description:a.jsx(u,{width:220,height:16,className:"rounded-full"}),children:a.jsxs("div",{className:"grid-auto-cards grid gap-5",children:[a.jsx(u,{height:"112px"}),a.jsx(u,{height:"112px"}),a.jsx(u,{height:"112px"})]})}),errorTitle:"Failed to load view notes",errorDescription:"Retry loading notes for this saved view section",resetKeys:[r,n],children:a.jsx(ve,{})}):a.jsx(v,{title:"View Notes",description:"Saved view note lists require a section id.",children:a.jsx(T,{title:"No section selected",description:"Return to Views and open a section from there."})})}export{Ne as default};
|