ocean-brain 0.8.2 → 0.11.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.
Files changed (244) hide show
  1. package/README.md +2 -0
  2. package/dist/mcp.js +103 -105
  3. package/package.json +3 -2
  4. package/server/client/dist/assets/{ArrowRight.es-g2YZTklZ.js → ArrowRight.es-BEhnlwfe.js} +1 -1
  5. package/server/client/dist/assets/AuxiliaryPanelHeader-B1k7pZpn.js +1 -0
  6. package/server/client/dist/assets/Calendar-D7QJsAlg.js +25 -0
  7. package/server/client/dist/assets/{Callout-B_IPSF_5.js → Callout-BTd1BYtV.js} +1 -1
  8. package/server/client/dist/assets/{Copy.es-CNxe4ujr.js → Copy.es-BoLjilxv.js} +1 -1
  9. package/server/client/dist/assets/File.es-Ct7fscBg.js +1 -0
  10. package/server/client/dist/assets/Graph-DYUb7gQb.js +46 -0
  11. package/server/client/dist/assets/{Graph-D9GeO71k.js → Graph-LY_IgMYy.js} +1 -1
  12. package/server/client/dist/assets/{Image.es-DnON8cv2.js → Image.es-OYyN3BYt.js} +1 -1
  13. package/server/client/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  14. package/server/client/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  15. package/server/client/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  16. package/server/client/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  17. package/server/client/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  18. package/server/client/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  19. package/server/client/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  20. package/server/client/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  21. package/server/client/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  22. package/server/client/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  23. package/server/client/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  24. package/server/client/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  25. package/server/client/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  26. package/server/client/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  27. package/server/client/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  28. package/server/client/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  29. package/server/client/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  30. package/server/client/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  31. package/server/client/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  32. package/server/client/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  33. package/server/client/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  34. package/server/client/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  35. package/server/client/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  36. package/server/client/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  37. package/server/client/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  38. package/server/client/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  39. package/server/client/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  40. package/server/client/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  41. package/server/client/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  42. package/server/client/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  43. package/server/client/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  44. package/server/client/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  45. package/server/client/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  46. package/server/client/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  47. package/server/client/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  48. package/server/client/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  49. package/server/client/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  50. package/server/client/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  51. package/server/client/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  52. package/server/client/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  53. package/server/client/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  54. package/server/client/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  55. package/server/client/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  56. package/server/client/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  57. package/server/client/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  58. package/server/client/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  59. package/server/client/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  60. package/server/client/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  61. package/server/client/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  62. package/server/client/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  63. package/server/client/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  64. package/server/client/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  65. package/server/client/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  66. package/server/client/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  67. package/server/client/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  68. package/server/client/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  69. package/server/client/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  70. package/server/client/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  71. package/server/client/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  72. package/server/client/dist/assets/Note-DsMhwrHw.js +25 -0
  73. package/server/client/dist/assets/NotePropertiesPanel-aCKXAe5F.js +2 -0
  74. package/server/client/dist/assets/PencilLine.es-0JpEgxFY.js +1 -0
  75. package/server/client/dist/assets/{Plus.es-CQ8wn2is.js → Plus.es-DRfLW_bI.js} +1 -1
  76. package/server/client/dist/assets/Reminders-COr1OHvF.js +1 -0
  77. package/server/client/dist/assets/Search-Ctkx0BQk.js +31 -0
  78. package/server/client/dist/assets/SurfaceCard-t7pdfhEe.js +1 -0
  79. package/server/client/dist/assets/Tag-BjxtrIQW.js +1 -0
  80. package/server/client/dist/assets/TagNotes-DV_fdRbg.js +1 -0
  81. package/server/client/dist/assets/{Trash.es-0aPpA-3S.js → Trash.es-Bo1VyK9Q.js} +1 -1
  82. package/server/client/dist/assets/ViewChip-DlCkL4z4.js +1 -0
  83. package/server/client/dist/assets/ViewNotes-wWWeFJyU.js +1 -0
  84. package/server/client/dist/assets/ViewSectionDialog-DhH8harC.js +102 -0
  85. package/server/client/dist/assets/Views-CWE99SnI.js +1 -0
  86. package/server/client/dist/assets/abnfDiagram-VRR7QNED-CWlV5dXw.js +1 -0
  87. package/server/client/dist/assets/app-B9WZRrAH.css +1 -0
  88. package/server/client/dist/assets/app-BpSMjzET.js +26 -0
  89. package/server/client/dist/assets/arc-BV-n6RUX.js +1 -0
  90. package/server/client/dist/assets/architectureDiagram-ZJ3FMSHR-CekzMXdu.js +36 -0
  91. package/server/client/dist/assets/blockDiagram-677ZJIJ3-B49yHoxq.js +132 -0
  92. package/server/client/dist/assets/c4Diagram-LMCZKHZV-0AfB9NBC.js +10 -0
  93. package/server/client/dist/assets/channel-CigOulR-.js +1 -0
  94. package/server/client/dist/assets/chunk-2Q5K7J3B-DaPQAU1q.js +1 -0
  95. package/server/client/dist/assets/chunk-32BRIVSS-CfL3kZAg.js +1 -0
  96. package/server/client/dist/assets/chunk-5VM5RSS4-DeOwWPE_.js +15 -0
  97. package/server/client/dist/assets/chunk-EX3LRPZG-C3W1oc9y.js +231 -0
  98. package/server/client/dist/assets/chunk-JWPE2WC7-_Oqh79OY.js +1 -0
  99. package/server/client/dist/assets/chunk-MOJQB5TN-DDKNNzI6.js +88 -0
  100. package/server/client/dist/assets/chunk-RYQCIY6F-DCHah7CC.js +1 -0
  101. package/server/client/dist/assets/chunk-V7JOEXUC-uUOIzgxj.js +206 -0
  102. package/server/client/dist/assets/chunk-VR4S4FIN-DDVw2WPs.js +1 -0
  103. package/server/client/dist/assets/chunk-XXDRQBXY-Coo4UFm2.js +1 -0
  104. package/server/client/dist/assets/classDiagram-OUVF2IWQ-D13ISIOW.js +1 -0
  105. package/server/client/dist/assets/classDiagram-v2-EOCWNBFH-D13ISIOW.js +1 -0
  106. package/server/client/dist/assets/colors-Cc3OSVma.js +1 -0
  107. package/server/client/dist/assets/cose-bilkent-JH36ORCC-C3pHmHpD.js +1 -0
  108. package/server/client/dist/assets/cynefin-VYW2F7L2-DU_G4Atc.js +166 -0
  109. package/server/client/dist/assets/cynefinDiagram-TSTJHNR4-DZ6iiJFo.js +62 -0
  110. package/server/client/dist/assets/cytoscape.esm-D3_iZ_3b.js +321 -0
  111. package/server/client/dist/assets/dagre-VKFMJZFB-DNELbhwC.js +4 -0
  112. package/server/client/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
  113. package/server/client/dist/assets/diagram-FQU43EPY-CMEvZJ61.js +3 -0
  114. package/server/client/dist/assets/diagram-G47NLZAW-BYDtf6j9.js +24 -0
  115. package/server/client/dist/assets/diagram-NH7WQ7WH-CmXfcCQA.js +24 -0
  116. package/server/client/dist/assets/diagram-OA4YK3LP-BflTKJxU.js +30 -0
  117. package/server/client/dist/assets/diagram-WEI45ONY-KW3fKqna.js +41 -0
  118. package/server/client/dist/assets/ebnfDiagram-CCIWWBDH-CbyhY5Nj.js +1 -0
  119. package/server/client/dist/assets/erDiagram-Q63AITRT-CC2eZV8g.js +85 -0
  120. package/server/client/dist/assets/{floating-ui.react-dom-wWLZ1CdM.js → floating-ui.react-dom-BWTnA00G.js} +1 -1
  121. package/server/client/dist/assets/flowDiagram-23GEKE2U-unplo7Qm.js +156 -0
  122. package/server/client/dist/assets/ganttDiagram-NO4QXBWP-BcBK5HcZ.js +292 -0
  123. package/server/client/dist/assets/gitGraphDiagram-IHSO6WYX-DgVbbb5k.js +106 -0
  124. package/server/client/dist/assets/graph-C5DFNLrC.js +1 -0
  125. package/server/client/dist/assets/image-delete-confirmation-D7xrODQV.js +1 -0
  126. package/server/client/dist/assets/image.api-CyQisInP.js +17 -0
  127. package/server/client/dist/assets/index-B-E1Ilh9.js +1 -0
  128. package/server/client/dist/assets/infoDiagram-FWYZ7A6U-N_D9RdfG.js +2 -0
  129. package/server/client/dist/assets/init-Gi6I4Gst.js +1 -0
  130. package/server/client/dist/assets/isObject-U9U2HXiq.js +1 -0
  131. package/server/client/dist/assets/ishikawaDiagram-FXEZZL3T-BBKrzmB2.js +70 -0
  132. package/server/client/dist/assets/journeyDiagram-5HDEW3XC-NdCxLmQB.js +139 -0
  133. package/server/client/dist/assets/kanban-definition-HUTT4EX6-Ck7t4-tt.js +89 -0
  134. package/server/client/dist/assets/katex-DywYRkvg.css +1 -0
  135. package/server/client/dist/assets/katex-HP8lGamR.js +257 -0
  136. package/server/client/dist/assets/katex-x288kqHd.js +257 -0
  137. package/server/client/dist/assets/layout-Cz0MDlGi.js +1 -0
  138. package/server/client/dist/assets/linear-D6yRgDLq.js +1 -0
  139. package/server/client/dist/assets/manage-image-azmo5iVw.js +1 -0
  140. package/server/client/dist/assets/manage-image-detail-BF-uSqb_.js +1 -0
  141. package/server/client/dist/assets/map-Mm1V-_Na.js +1 -0
  142. package/server/client/dist/assets/{mcp-CT_9IV2c.js → mcp-CCaFd0zm.js} +4 -4
  143. package/server/client/dist/assets/{mcp-admin-adapter-xAuyZc_M.js → mcp-admin-adapter-PMmgPupc.js} +1 -1
  144. package/server/client/dist/assets/mermaid.core-B14ZAmWA.js +308 -0
  145. package/server/client/dist/assets/min-tv6RD-6E.js +1 -0
  146. package/server/client/dist/assets/mindmap-definition-LN4V7U3C-BTUqSdcP.js +96 -0
  147. package/server/client/dist/assets/{note-core-Buwzyxi7.js → note-core-DUTqUh5N.js} +2 -2
  148. package/server/client/dist/assets/{note-runtime-CPDVOFEo.js → note-runtime-zN5ddTba.js} +1 -1
  149. package/server/client/dist/assets/{note-ui-CHI-tzj-.js → note-ui-CtijppHK.js} +1 -1
  150. package/server/client/dist/assets/{note.api-D_00ZzJC.js → note.api-D3oJmG3q.js} +6 -6
  151. package/server/client/dist/assets/ordinal-Cboi1Yqb.js +1 -0
  152. package/server/client/dist/assets/pegDiagram-2B236MQR-Cjcu3mVz.js +1 -0
  153. package/server/client/dist/assets/pieDiagram-ENE6RG2P-BxI_c22Z.js +39 -0
  154. package/server/client/dist/assets/{placeholder-DbdGiYGL.js → placeholder-AusSo8p9.js} +4 -4
  155. package/server/client/dist/assets/properties-BrNJLkxR.js +1 -0
  156. package/server/client/dist/assets/quadrantDiagram-ABIIQ3AL-DGm0a-yR.js +7 -0
  157. package/server/client/dist/assets/railroadDiagram-RFXS5EU6-DmCDu89O.js +1 -0
  158. package/server/client/dist/assets/requirementDiagram-TGXJPOKE-CBpUt7Ig.js +84 -0
  159. package/server/client/dist/assets/route-preload.js +2 -2
  160. package/server/client/dist/assets/sankeyDiagram-HTMAVEWB-BjGnDZlp.js +40 -0
  161. package/server/client/dist/assets/search-D-xKTPdO.js +1 -0
  162. package/server/client/dist/assets/search-admin-adapter-CJnJmL6w.js +1 -0
  163. package/server/client/dist/assets/sequenceDiagram-DBY2YBRQ-B7rpCfS6.js +162 -0
  164. package/server/client/dist/assets/sizeCapture-X5ZJPWSS-CUJhD0uW.js +1 -0
  165. package/server/client/dist/assets/stateDiagram-2N3HPSRC-Y9-3XqRX.js +1 -0
  166. package/server/client/dist/assets/stateDiagram-v2-6OUMAXLB-DbHXhT02.js +1 -0
  167. package/server/client/dist/assets/swimlanes-5IMT3BWC-Cs1NO9ng.js +2 -0
  168. package/server/client/dist/assets/swimlanesDiagram-G3AALYLV-DQnrq2ZC.js +8 -0
  169. package/server/client/dist/assets/{tag.api-CX0SE06J.js → tag.api-DNSQpqwk.js} +3 -3
  170. package/server/client/dist/assets/time-D5LRMumI.js +9 -0
  171. package/server/client/dist/assets/timeline-definition-FHXFAJF6-8fqD4WNL.js +120 -0
  172. package/server/client/dist/assets/toNumber-DE3J3kMD.js +1 -0
  173. package/server/client/dist/assets/transform-BUB79_za.js +1 -0
  174. package/server/client/dist/assets/trash-D4-9sv8q.js +1 -0
  175. package/server/client/dist/assets/url-9nrbQs7Z.js +1 -0
  176. package/server/client/dist/assets/{useReminderMutate-CLK1tHvT.js → useReminderMutate-BrGO9M0o.js} +4 -4
  177. package/server/client/dist/assets/vennDiagram-L72KCM5P-BPqKkd5a.js +34 -0
  178. package/server/client/dist/assets/wardleyDiagram-EHGQE667-Cq11kU2M.js +78 -0
  179. package/server/client/dist/assets/xychartDiagram-FW5EYKEG-DJ6UzFj-.js +7 -0
  180. package/server/client/dist/index.html +7 -7
  181. package/server/dist/features/image/services/delete.js +25 -1
  182. package/server/dist/features/note/graphql/note.field.resolver.js +2 -0
  183. package/server/dist/features/note/graphql/note.mutation.resolver.js +54 -23
  184. package/server/dist/features/note/graphql/note.query.resolver.js +15 -5
  185. package/server/dist/features/note/graphql/note.type-defs.js +2 -1
  186. package/server/dist/features/note/http/mcp.js +1 -60
  187. package/server/dist/features/note/services/authoring.js +17 -80
  188. package/server/dist/features/note/services/markdown-patch.js +80 -8
  189. package/server/dist/features/note/services/note-reference-index.js +98 -0
  190. package/server/dist/features/note/services/properties.js +21 -1
  191. package/server/dist/features/note/services/property-restore.js +26 -0
  192. package/server/dist/features/note/services/search.js +5 -0
  193. package/server/dist/features/note/services/snapshot.js +82 -58
  194. package/server/dist/features/note/services/trash.js +18 -31
  195. package/server/dist/features/note/services/write.js +10 -3
  196. package/server/dist/features/search/embedding-api-key-store.js +57 -0
  197. package/server/dist/features/search/embedding-client.js +179 -0
  198. package/server/dist/features/search/graphql/index.js +6 -0
  199. package/server/dist/features/search/graphql/resolver.js +32 -0
  200. package/server/dist/features/search/graphql/type-defs.js +37 -0
  201. package/server/dist/features/search/http/handlers.js +108 -0
  202. package/server/dist/features/search/hybrid-ranking.js +57 -0
  203. package/server/dist/features/search/hybrid-search.js +176 -0
  204. package/server/dist/features/search/note-change.js +16 -0
  205. package/server/dist/features/search/note-chunking.js +75 -0
  206. package/server/dist/features/search/related-notes.js +186 -0
  207. package/server/dist/features/search/search-config.js +150 -0
  208. package/server/dist/features/search/search-manager.js +431 -0
  209. package/server/dist/features/search/semantic-indexer.js +138 -0
  210. package/server/dist/features/search/sqlite-vector-index.js +636 -0
  211. package/server/dist/features/search/url-normalization.js +10 -0
  212. package/server/dist/features/tag/services/organization.js +3 -0
  213. package/server/dist/features/view/services/workspace.js +1 -1
  214. package/server/dist/main.js +12 -3
  215. package/server/dist/modules/blocknote.js +4 -5
  216. package/server/dist/paths.js +7 -2
  217. package/server/dist/routes/api.js +37 -0
  218. package/server/dist/routes/mcp.js +0 -5
  219. package/server/dist/schema/index.js +3 -0
  220. package/server/prisma/migrations/20260728090000_0019_note_reference_index/migration.sql +15 -0
  221. package/server/prisma/schema.prisma +16 -0
  222. package/server/client/dist/assets/Calendar-BP6HTuSn.js +0 -25
  223. package/server/client/dist/assets/Graph-Xha3fwhp.js +0 -46
  224. package/server/client/dist/assets/Image-BLEjLUqd.js +0 -1
  225. package/server/client/dist/assets/Note-DjrCYtat.js +0 -24
  226. package/server/client/dist/assets/NotePropertiesPanel-2DgXEM4B.js +0 -2
  227. package/server/client/dist/assets/Reminders-B4l3KdlK.js +0 -1
  228. package/server/client/dist/assets/Search-BN5sf7bE.js +0 -1
  229. package/server/client/dist/assets/SurfaceCard-BZm73nyS.js +0 -1
  230. package/server/client/dist/assets/Tag-oSnmViVp.js +0 -1
  231. package/server/client/dist/assets/TagNotes-BDTCcJcL.js +0 -1
  232. package/server/client/dist/assets/ViewNotes-CiZtGJNE.js +0 -1
  233. package/server/client/dist/assets/ViewSectionDialog-Ctl_694Y.js +0 -102
  234. package/server/client/dist/assets/Views-D-zlatYD.js +0 -1
  235. package/server/client/dist/assets/app-DmqIOMWF.css +0 -1
  236. package/server/client/dist/assets/app-cTRcKMGc.js +0 -26
  237. package/server/client/dist/assets/image.api-CVuuvTBk.js +0 -17
  238. package/server/client/dist/assets/index-DKJChPr4.js +0 -1
  239. package/server/client/dist/assets/manage-image-BZjaxp-f.js +0 -1
  240. package/server/client/dist/assets/manage-image-detail-DPv0FQ2m.js +0 -1
  241. package/server/client/dist/assets/properties-D447wsWk.js +0 -1
  242. package/server/client/dist/assets/time-B3pt8vt4.js +0 -9
  243. package/server/client/dist/assets/trash-8sH7EZgc.js +0 -1
  244. package/server/client/dist/assets/url-BSnWpmJx.js +0 -1
@@ -0,0 +1,25 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mermaid.core-B14ZAmWA.js","assets/preload-helper-BXl3LOEh.js","assets/floating-ui.react-dom-BWTnA00G.js","assets/transform-BUB79_za.js","assets/katex-DywYRkvg.css"])))=>i.map(i=>d[i]);
2
+ import{r as o,j as a}from"./floating-ui.react-dom-BWTnA00G.js";import{af as jn,A as vt,T as j,i as yt,m as Sn,q as B,M as D,B as k,c as K,G as wt,D as Ct,R as Rn,e as Re,u as Ze,ag as An,ah as En,ai as kn,L as Be,I as Tn,d as Dn,a as Mn,b as Fe,a0 as Pn,s as _n,aj as Ln,$ as Nt,ab as jt,ak as We,al as On,U as Bn,ac as Fn,ad as Hn,am as $n,Q as qe,P as Ge,an as Qe,h as In,l as ie,F as Un}from"./note.api-D3oJmG3q.js";import{M as xe,k as zn,r as Wn,f as St,m as Kn,a as He,b as Vn,d as G,s as Yn,l as Rt,o as Zn,p as At,q as Et,v as qn,w as nt,e as Gn}from"./time-D5LRMumI.js";import{m as Qn,c as Jn,C as rt}from"./Callout-BTd1BYtV.js";import{J as kt,A as Tt,N as Xn}from"./NotePropertiesPanel-aCKXAe5F.js";import{N as Ae,T as er,S as tr}from"./url-9nrbQs7Z.js";import{S as nr}from"./SurfaceCard-t7pdfhEe.js";import{u as rr,R as ar}from"./useReminderMutate-BrGO9M0o.js";import{n as sr}from"./Plus.es-DRfLW_bI.js";import{h as Je,m as or,L as Dt,Z as Mt,M as ir,K as cr,a as lr}from"./note-ui-CtijppHK.js";import{u as dr}from"./image.api-CyQisInP.js";import{L as ur,t as at,q as fr,B as he,G as pr,y as st}from"./note-core-DUTqUh5N.js";import{_ as Ke}from"./preload-helper-BXl3LOEh.js";import{s as mr}from"./Copy.es-BoLjilxv.js";import{m as hr}from"./PencilLine.es-0JpEgxFY.js";import{A as gr,p as xr}from"./AuxiliaryPanelHeader-B1k7pZpn.js";import{f as br,c as vr}from"./tag.api-DNSQpqwk.js";import{cn as ot}from"./note-runtime-zN5ddTba.js";import{s as yr}from"./File.es-Ct7fscBg.js";function wr(e,n){if(e===void 0)return{shouldBlockFn:()=>!0,withResolver:!1};if("shouldBlockFn"in e)return e;if(typeof e=="function")return{shouldBlockFn:async()=>await e(),enableBeforeUnload:!0,withResolver:!1};const t=!!(e.condition??!0),s=e.blockerFn;return{shouldBlockFn:async()=>t&&s!==void 0?await s():t,enableBeforeUnload:t,withResolver:s===void 0}}function Cr(e,n){const{shouldBlockFn:t,enableBeforeUnload:s=!0,disabled:r=!1,withResolver:i=!1}=wr(e),l=jn(),{history:c}=l,[f,u]=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 x(A){const w=l.parseLocation(A),m=l.getMatchedRoutes(w.pathname);return m.foundRoute===void 0?{routeId:"__notFound__",fullPath:w.pathname,pathname:w.pathname,params:m.routeParams,search:l.options.parseSearch(A.search)}:{routeId:m.foundRoute.id,fullPath:m.foundRoute.fullPath,pathname:w.pathname,params:m.routeParams,search:l.options.parseSearch(A.search)}}const d=x(g.currentLocation),h=x(g.nextLocation);if(d.routeId==="__notFound__"&&h.routeId!=="__notFound__")return!1;const y=await t({action:g.action,current:d,next:h});if(!i)return y;if(!y)return!1;const S=await new Promise(A=>{u({status:"blocked",current:d,next:h,action:g.action,proceed:()=>A(!1),reset:()=>A(!0)})});return u({status:"idle",current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0}),S};return r?void 0:c.block({blockerFn:p,enableBeforeUnload:s})},[t,s,r,i,c,l]),f}const Nr=new Map([["bold",o.createElement(o.Fragment,null,o.createElement("path",{d:"M248.49,71.51l-32-32a12,12,0,0,0-17,17L211,68h-3c-52,0-64.8,30.71-75.08,55.38-8.82,21.17-15.45,37.05-42.75,40.09a44,44,0,1,0,.28,24.08c43.34-3.87,55.07-32,64.63-54.93C164.9,109,172,92,208,92h3l-11.52,11.51a12,12,0,0,0,17,17l32-32A12,12,0,0,0,248.49,71.51ZM48,196a20,20,0,1,1,20-20A20,20,0,0,1,48,196Z"}))],["duotone",o.createElement(o.Fragment,null,o.createElement("path",{d:"M80,176a32,32,0,1,1-32-32A32,32,0,0,1,80,176Z",opacity:"0.2"}),o.createElement("path",{d:"M245.66,74.34l-32-32a8,8,0,0,0-11.32,11.32L220.69,72H208c-49.33,0-61.05,28.12-71.38,52.92-9.38,22.51-16.92,40.59-49.48,42.84a40,40,0,1,0,.1,16c43.26-2.65,54.34-29.15,64.14-52.69C161.41,107,169.33,88,208,88h12.69l-18.35,18.34a8,8,0,0,0,11.32,11.32l32-32A8,8,0,0,0,245.66,74.34ZM48,200a24,24,0,1,1,24-24A24,24,0,0,1,48,200Z"}))],["fill",o.createElement(o.Fragment,null,o.createElement("path",{d:"M245.66,85.66l-32,32a8,8,0,0,1-11.32-11.32L220.69,88H208c-38.67,0-46.59,19-56.62,43.08C141.05,155.88,129.33,184,80,184H79a32,32,0,1,1,0-16h1c38.67,0,46.59-19,56.62-43.08C147,100.12,158.67,72,208,72h12.69L202.34,53.66a8,8,0,0,1,11.32-11.32l32,32A8,8,0,0,1,245.66,85.66Z"}))],["light",o.createElement(o.Fragment,null,o.createElement("path",{d:"M244.24,75.76l-32-32a6,6,0,0,0-8.48,8.48L225.51,74H208c-48,0-59.44,27.46-69.54,51.69-9.43,22.64-17.66,42.33-53,44.16a38,38,0,1,0,.06,12c43.34-2.06,54.29-28.29,64-51.55C159.44,106.53,168,86,208,86h17.51l-21.75,21.76a6,6,0,1,0,8.48,8.48l32-32A6,6,0,0,0,244.24,75.76ZM48,202a26,26,0,1,1,26-26A26,26,0,0,1,48,202Z"}))],["regular",o.createElement(o.Fragment,null,o.createElement("path",{d:"M245.66,74.34l-32-32a8,8,0,0,0-11.32,11.32L220.69,72H208c-49.33,0-61.05,28.12-71.38,52.92-9.38,22.51-16.92,40.59-49.48,42.84a40,40,0,1,0,.1,16c43.26-2.65,54.34-29.15,64.14-52.69C161.41,107,169.33,88,208,88h12.69l-18.35,18.34a8,8,0,0,0,11.32,11.32l32-32A8,8,0,0,0,245.66,74.34ZM48,200a24,24,0,1,1,24-24A24,24,0,0,1,48,200Z"}))],["thin",o.createElement(o.Fragment,null,o.createElement("path",{d:"M242.83,77.17l-32-32a4,4,0,0,0-5.66,5.66L230.34,76H208c-46.67,0-57.84,26.81-67.69,50.46-9.46,22.69-18.4,44.16-56.55,45.48a36,36,0,1,0,0,8c43.49-1.42,54.33-27.39,63.91-50.39C157.45,106.12,166.67,84,208,84h22.34l-25.17,25.17a4,4,0,0,0,5.66,5.66l32-32A4,4,0,0,0,242.83,77.17ZM48,204a28,28,0,1,1,28-28A28,28,0,0,1,48,204Z"}))]]),jr=new Map([["bold",o.createElement(o.Fragment,null,o.createElement("path",{d:"M212,40a12,12,0,0,1-12,12H170.71A20,20,0,0,0,151,68.42L142.38,116H184a12,12,0,0,1,0,24H138l-9.44,51.87A44,44,0,0,1,85.29,228H56a12,12,0,0,1,0-24H85.29A20,20,0,0,0,105,187.58L113.62,140H72a12,12,0,0,1,0-24h46l9.44-51.87A44,44,0,0,1,170.71,28H200A12,12,0,0,1,212,40Z"}))],["duotone",o.createElement(o.Fragment,null,o.createElement("path",{d:"M200,40V200a16,16,0,0,1-16,16H56V56A16,16,0,0,1,72,40Z",opacity:"0.2"}),o.createElement("path",{d:"M208,40a8,8,0,0,1-8,8H170.71a24,24,0,0,0-23.62,19.71L137.59,120H184a8,8,0,0,1,0,16H134.68l-10,55.16A40,40,0,0,1,85.29,224H56a8,8,0,0,1,0-16H85.29a24,24,0,0,0,23.62-19.71l9.5-52.29H72a8,8,0,0,1,0-16h49.32l10-55.16A40,40,0,0,1,170.71,32H200A8,8,0,0,1,208,40Z"}))],["fill",o.createElement(o.Fragment,null,o.createElement("path",{d:"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM176,72H159.92a16,16,0,0,0-15.73,13l-6.55,35H168a8,8,0,0,1,0,16H134.64l-7.11,37.9A32,32,0,0,1,96.08,200H80a8,8,0,0,1,0-16H96.08A16,16,0,0,0,111.81,171L118.36,136H88a8,8,0,0,1,0-16h33.36l7.11-37.9A32,32,0,0,1,159.92,56H176a8,8,0,0,1,0,16Z"}))],["light",o.createElement(o.Fragment,null,o.createElement("path",{d:"M206,40a6,6,0,0,1-6,6H170.71a26,26,0,0,0-25.58,21.35L135.19,122H184a6,6,0,0,1,0,12H133l-10.33,56.8A38,38,0,0,1,85.29,222H56a6,6,0,0,1,0-12H85.29a26,26,0,0,0,25.58-21.35L120.81,134H72a6,6,0,0,1,0-12h51l10.33-56.8A38,38,0,0,1,170.71,34H200A6,6,0,0,1,206,40Z"}))],["regular",o.createElement(o.Fragment,null,o.createElement("path",{d:"M208,40a8,8,0,0,1-8,8H170.71a24,24,0,0,0-23.62,19.71L137.59,120H184a8,8,0,0,1,0,16H134.68l-10,55.16A40,40,0,0,1,85.29,224H56a8,8,0,0,1,0-16H85.29a24,24,0,0,0,23.62-19.71l9.5-52.29H72a8,8,0,0,1,0-16h49.32l10-55.16A40,40,0,0,1,170.71,32H200A8,8,0,0,1,208,40Z"}))],["thin",o.createElement(o.Fragment,null,o.createElement("path",{d:"M204,40a4,4,0,0,1-4,4H170.71a28,28,0,0,0-27.55,23l-10.37,57H184a4,4,0,0,1,0,8H131.34l-10.63,58.44A36,36,0,0,1,85.29,220H56a4,4,0,0,1,0-8H85.29a28,28,0,0,0,27.55-23l10.37-57H72a4,4,0,0,1,0-8h52.66l10.63-58.44A36,36,0,0,1,170.71,36H200A4,4,0,0,1,204,40Z"}))]]),Pt=o.forwardRef((e,n)=>o.createElement(vt,{ref:n,...e,weights:Nr}));Pt.displayName="FlowArrowIcon";const _t=Pt,Lt=o.forwardRef((e,n)=>o.createElement(vt,{ref:n,...e,weights:jr}));Lt.displayName="FunctionIcon";const Ot=Lt;function Sr({title:e,description:n,selected:t=!1,onClick:s,children:r}){return a.jsxs("button",{type:"button","aria-pressed":t,className:`focus-ring-soft flex w-full items-start justify-between gap-3 p-3 text-left transition-colors sm:p-4 ${t?"surface-floating bg-elevated":"rounded-[14px] border border-border-subtle bg-transparent hover:border-border-secondary hover:bg-hover-subtle"}`,onClick:s,children:[a.jsxs("div",{className:"min-w-0",children:[a.jsx(j,{as:"div",variant:"body",weight:"semibold",tone:t?"default":"secondary",children:e}),a.jsx(j,{as:"div",variant:"meta",weight:"medium",tone:t?"secondary":"tertiary",className:"mt-1",children:n})]}),r?a.jsx("div",{className:"shrink-0",children:r}):null]})}const Rr=e=>{const{data:n}=yt({queryKey:B.notes.backReferences(e.noteId),async queryFn(){const t=await Sn(e.noteId);if(t.type==="error")throw t;return t.backReferences}});return e.render(n)},Ar=[{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 Er({isOpen:e,onClose:n,onSave:t,currentLayout:s="wide"}){const[r,i]=o.useState(s);o.useEffect(()=>{e&&i(s)},[e,s]);const l=()=>{t(r),n()};return a.jsxs(D,{isOpen:e,onClose:n,variant:"compact",children:[a.jsx(D.Header,{title:"Layout Settings",onClose:n}),a.jsx(D.Body,{children:a.jsx("div",{className:"flex flex-col gap-3 sm:gap-4",children:a.jsxs("div",{className:"flex flex-col gap-2",children:[a.jsx(j,{as:"div",variant:"body",weight:"semibold",tone:"secondary",children:"Note layout"}),a.jsx("div",{className:"flex flex-col gap-2",children:Ar.map(c=>a.jsx(Sr,{title:c.label,description:c.description,selected:r===c.value,onClick:()=>i(c.value)},c.value))})]})})}),a.jsx(D.Footer,{children:a.jsxs(xe,{children:[a.jsx(k,{variant:"ghost",size:"sm",onClick:n,children:"Cancel"}),a.jsx(k,{variant:"primary",size:"sm",onClick:l,children:"Apply"})]})})]})}const ge=e=>{const n=/^\d+$/.test(e)?Number(e):Date.parse(e);return Number.isFinite(n)?n:null},je=(e,n)=>{const t=ge(e),s=ge(n);return t===null||s===null?e===n?0:null:t===s?0:t<s?-1:1},kr=2200;function Tr({status:e,savedAt:n,savedVersion:t,confirmationRevision:s}){const[r,i]=o.useState(()=>Date.now()),[l,c]=o.useState(!1);o.useEffect(()=>{if(e!=="saved")return;const d=window.setTimeout(()=>i(Date.now()),zn(ge(t),r));return()=>window.clearTimeout(d)},[r,t,e]),o.useEffect(()=>{if(s===0)return;c(!0);const d=window.setTimeout(()=>c(!1),kr);return()=>window.clearTimeout(d)},[s]);const f=e==="saved"&&l,u=e==="pending"?"Saving...":e==="saving"?"Saving now...":e==="error"?"Save failed. Try again.":e==="conflict"?"Save paused: changed elsewhere":`Saved ${Wn(ge(t),r)}`,p=K("inline-flex items-center gap-2 transition-colors",e==="saved"&&!f&&"text-fg-secondary",f&&"text-accent-success",(e==="pending"||e==="saving")&&"text-fg-default",(e==="error"||e==="conflict")&&"text-fg-error"),g=K("save-progress-ring flex h-4 w-4 shrink-0 items-center justify-center rounded-full",(e==="pending"||e==="saving")&&"save-progress-ring-active",e==="saved"&&f&&"save-progress-ring-complete",(e==="error"||e==="conflict")&&"save-progress-ring-error"),x=e==="error"||e==="conflict"?a.jsx(Qn,{className:"h-3.5 w-3.5",weight:"fill"}):a.jsx("span",{className:g,"aria-hidden":!0,children:a.jsx("span",{className:"h-2 w-2 rounded-full bg-elevated"})});return a.jsxs(j,{as:"span",variant:"label",weight:"medium",className:p,role:"status","aria-live":"polite",title:n,children:[x,u]})}function Dr({title:e,titleRef:n,isPinned:t,createdAt:s,saveStatus:r,savedAt:i,savedVersion:l,saveConfirmationRevision:c,onTitleChange:f,onCopyMarkdown:u,onDownloadDocument:p,onTogglePinned:g,onChangeLayout:x,onCloneNote:d,onRestoreVersion:h,onDelete:y,onSave:N}){return a.jsx("div",{className:"surface-floating sticky top-20 z-[1001] mb-7 px-5 pt-4 pb-3.5",children:a.jsxs("div",{className:"flex flex-col gap-3.5",children:[a.jsxs("div",{className:"flex items-start justify-between gap-5",children:[a.jsxs("div",{className:"min-w-0 flex-1 pt-0.5",children:[a.jsx(j,{as:"div",variant:"micro",weight:"semibold",tracking:"widest",transform:"uppercase",tone:"tertiary",className:"mb-1.5",children:"Thought in progress"}),a.jsx("input",{ref:n,"aria-label":"Note title",placeholder:"Title",className:"text-heading sm:text-display w-full bg-transparent font-semibold leading-[1.25] tracking-[-0.02em] outline-none",type:"text",value:e,onChange:S=>f(S.target.value)})]}),a.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[a.jsx(wt,{button:a.jsx(St,{label:"Note actions",size:"lg"}),items:[{name:"Copy Markdown",onClick:u},{name:"Download document",onClick:p},{type:"separator",key:"export-separator"},{name:t?"Unpin":"Pin",onClick:g},{name:"Change layout",onClick:x},{type:"separator"},{name:"Clone this note",onClick:d},{name:"Restore previous version",onClick:h},{type:"separator"},{name:"Delete",onClick:y}]}),a.jsx(k,{size:"sm",variant:"subtle",isLoading:r==="saving",disabled:r==="conflict",onClick:N,children:"Save"})]})]}),a.jsxs("div",{className:"flex flex-wrap items-center gap-x-2.5 gap-y-1.5 border-t border-border-subtle/80 pt-3",children:[t&&a.jsxs(j,{as:"span",variant:"label",weight:"medium",tone:"secondary",className:"inline-flex items-center gap-1.5",children:[a.jsx(Kn,{className:"h-3 w-3",weight:"fill"}),"Pinned"]}),t&&a.jsx("span",{className:"h-1 w-1 rounded-full bg-border-secondary"}),a.jsx(Tr,{status:r,savedAt:i,savedVersion:l,confirmationRevision:c}),a.jsx("span",{className:"h-1 w-1 rounded-full bg-border-secondary"}),a.jsxs(j,{as:"span",variant:"micro",weight:"medium",tone:"tertiary",children:["Created ",s]})]})]})})}const Mr=/[:{}[\],&*#?|<>=!%@`-]/,Pr="/assets/images/",_r=e=>e.trim().toLowerCase().replace(/\s+/g,"-").replace(/[\\/:*?"<>|]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")||"untitled-note",Ne=e=>e?Mr.test(e)||/^\s|\s$/.test(e)?JSON.stringify(e):e:'""',Se=e=>{if(!e)return;const n=Number(e);return Number.isFinite(n)?new Date(n).toISOString():e},Xe=()=>typeof window>"u"||!window.location?.origin?"http://localhost":window.location.origin,Ee=(e,n=Xe())=>{try{const t=new URL(e,n);return t.origin===n&&t.pathname.startsWith(Pr)}catch{return!1}},Bt=(e,n=Xe())=>{const t=new URL(e,n);return`${t.pathname}${t.search}`},Ft=e=>e.headers.get("content-type")?.split(";")[0]?.trim().toLowerCase()??"",Lr=e=>e.trim().replace(/[\\/:*?"<>|]/g,"-").split("").map(s=>s.charCodeAt(0)<32?"-":s).join("").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")||"image",Or=e=>{const n=e.lastIndexOf(".");return n<=0||n===e.length-1?{baseName:e,extension:""}:{baseName:e.slice(0,n),extension:e.slice(n)}},Ht=(e,n,t)=>{const r=new URL(e,Xe()).pathname.split("/").filter(Boolean),i=decodeURIComponent(r[r.length-1]??""),l=`image-${n+1}`,{baseName:c,extension:f}=Or(Lr(i||l));let u=`${c}${f}`,p=2;for(;t.has(u);)u=`${c}-${p}${f}`,p+=1;return t.add(u),`assets/${u}`},Br=(e,n)=>{let t=null;for(let s=n;s<e.length;s+=1){const r=e[s];if(t){r===t&&(t=null);continue}if(r==='"'||r==="'"){t=r;continue}if(r===">")return s}return-1},Fr=(e,n)=>{let t=n;for(;t<e.length;){const s=e.toLowerCase().indexOf("<img",t);if(s===-1)return-1;const r=e[s+4],i=s===0?-1:e.lastIndexOf("<",s-1),l=s===0?-1:e.lastIndexOf(">",s-1);if(i<=l&&(!r||/[\s/>]/.test(r)))return s;t=s+4}return-1},Hr=(e,n,t,s)=>{let r=n;for(;r<t;){for(;r<t&&/[\s/]/.test(e[r]);)r+=1;const i=r;for(;r<t&&/[^\s=/>]/.test(e[r]);)r+=1;const l=e.slice(i,r).toLowerCase();for(;r<t&&/\s/.test(e[r]);)r+=1;if(e[r]!=="=")continue;for(r+=1;r<t&&/\s/.test(e[r]);)r+=1;const c=e[r];if(c==='"'||c==="'"){const u=r+1,p=e.indexOf(c,u);if(p===-1||p>t)return;if(r=p+1,l===s)return{end:p,start:u,value:e.slice(u,p)};continue}const f=r;for(;r<t&&/[^\s>]/.test(e[r]);)r+=1;if(l===s)return{end:r,start:f,value:e.slice(f,r)}}},$t=e=>{const n=[];let t=0;for(;t<e.length;){const s=Fr(e,t);if(s===-1)break;const r=Br(e,s+4);if(r===-1)break;const i=Hr(e,s+4,r,"src");i&&n.push({end:r+1,source:i,start:s}),t=r+1}return n},It=(e,n)=>{let t=e;for(const s of[...n].sort((r,i)=>i.start-r.start))t=`${t.slice(0,s.start)}${s.value}${t.slice(s.end)}`;return t},Ut=(e,n)=>{let t=e;for(const s of[...n].sort((r,i)=>i.start-r.start))t=`${t.slice(0,s.start)}${s.value}${t.slice(s.end)}`;return t},zt=e=>{const n=[];let t=0;for(;t<e.length;){const s=e.indexOf("![",t);if(s===-1)break;let r=s+2,i=1;for(;r<e.length&&i>0&&e[r]!==`
3
+ `;){if(e[r]==="\\"){r+=2;continue}e[r]==="["?i+=1:e[r]==="]"&&(i-=1),r+=1}if(i!==0||e[r]!=="("){t=s+2;continue}const l=r+1;let c=l;for(;c<e.length&&e[c]!==`
4
+ `&&/\s/.test(e[c]);)c+=1;if(c>=e.length||e[c]===`
5
+ `){t=s+2;continue}let f=c,u=c,p=c;if(e[c]==="<"){for(r=c+1;r<e.length&&e[r]!==">"&&e[r]!==`
6
+ `;)r+=e[r]==="\\"?2:1;if(e[r]!==">"){t=s+2;continue}f=r+1,u=c+1,p=r}else{let g=0;for(r=c;r<e.length&&e[r]!==`
7
+ `;){const x=e[r];if(x==="\\"){r+=2;continue}if(/\s/.test(x)&&g===0)break;if(x==="(")g+=1;else if(x===")"){if(g===0)break;g-=1}r+=1}f=r,u=c,p=f}if(p<=u){t=s+2;continue}for(r=f;r<e.length&&e[r]!==`
8
+ `&&/\s/.test(e[r]);)r+=1;if(e[r]==='"'||e[r]==="'"){const g=e[r];for(r+=1;r<e.length&&e[r]!==`
9
+ `;){if(e[r]==="\\"){r+=2;continue}if(e[r]===g){r+=1;break}r+=1}}for(;r<e.length&&e[r]!==`
10
+ `&&/\s/.test(e[r]);)r+=1;if(e[r]!==")"){t=s+2;continue}n.push({end:r+1,source:{end:f,start:l,value:e.slice(u,p)},start:s}),t=r+1}return n},$r=(e,n)=>`${_r(e)}.${n}`,Ir=({id:e,title:n,createdAt:t,updatedAt:s})=>{const r=["---",`title: ${Ne(n)}`,`note_id: ${Ne(e)}`],i=Se(t),l=Se(s);return i&&r.push(`created_at: ${Ne(i)}`),l&&r.push(`updated_at: ${Ne(l)}`),r.push("source: ocean-brain","---"),r.join(`
11
+ `)},Wt=(e,n,t=!1)=>t?`${Ir(n)}
12
+
13
+ ${e}`:e,Kt=(e,n,{includeMetadata:t=!1}={})=>{const s=Wt(e,n,t),r=zt(s).filter(i=>Ee(i.source.value)).map(i=>({end:i.end,start:i.start,value:""}));return Ut(s,r)},Vt=(e,n,{includeMetadata:t=!1}={})=>`${t?`<!--
14
+ source: ocean-brain
15
+ note_id: ${n.id}
16
+ title: ${n.title}
17
+ created_at: ${Se(n.createdAt)??""}
18
+ updated_at: ${Se(n.updatedAt)??""}
19
+ -->
20
+ `:""}${e}`,Ur=(e,n,{includeMetadata:t=!1}={})=>{const s=Vt(e,n,{includeMetadata:t}),r=$t(s).filter(i=>Ee(i.source.value)).map(i=>({end:i.end,start:i.start,value:""}));return It(s,r)},zr=async(e,n,{fetchImpl:t=fetch,includeMetadata:s=!1}={})=>{const r=new kt,i=Vt(e,n,{includeMetadata:s}),l=$t(i),c=[],f=new Set,u=new Map;for(const{source:p}of l){if(!Ee(p.value))continue;const g=Bt(p.value);let x=u.get(g);if(!x){x=Ht(g,u.size,f),u.set(g,x);const d=await t(g,{credentials:"same-origin"});if(!d.ok)throw new Error(`Failed to fetch image asset: ${g}`);if(!Ft(d).startsWith("image/"))throw new Error(`Image asset did not return image content: ${g}`);r.file(x,new Uint8Array(await d.arrayBuffer()))}c.push({end:p.end,start:p.start,value:`./${x}`})}return r.file("note.html",It(i,c)),r.generateAsync({type:"blob"})},Wr=async(e,n,{fetchImpl:t=fetch,includeMetadata:s=!1}={})=>{const r=new kt,i=Wt(e,n,s),l=zt(i),c=[],f=new Set,u=new Map;for(const{source:p}of l){if(!Ee(p.value))continue;const g=Bt(p.value);let x=u.get(g);if(!x){x=Ht(g,u.size,f),u.set(g,x);const d=await t(g,{credentials:"same-origin"});if(!d.ok)throw new Error(`Failed to fetch image asset: ${g}`);if(!Ft(d).startsWith("image/"))throw new Error(`Image asset did not return image content: ${g}`);r.file(x,new Uint8Array(await d.arrayBuffer()))}c.push({end:p.end,start:p.start,value:`./${x}`})}return r.file("note.md",Ut(i,c)),r.generateAsync({type:"blob"})},Kr=(e,n)=>{const t=URL.createObjectURL(e),s=document.createElement("a");s.href=t,s.download=n,document.body.appendChild(s),s.click(),s.remove(),URL.revokeObjectURL(t)},Yt={html:{extension:"html",getContent:e=>e.getHtml(),createDocumentBlob:(e,n)=>new Blob([Ur(e,n.metadata,{includeMetadata:n.includeMetadata})],{type:"text/html;charset=utf-8"}),createZipBlob:(e,n)=>zr(e,n.metadata,{fetchImpl:n.fetchImpl,includeMetadata:n.includeMetadata})},markdown:{extension:"md",getContent:e=>e.getMarkdown(),createDocumentBlob:(e,n)=>new Blob([Kt(e,n.metadata,{includeMetadata:n.includeMetadata})],{type:"text/markdown;charset=utf-8"}),createZipBlob:(e,n)=>Wr(e,n.metadata,{fetchImpl:n.fetchImpl,includeMetadata:n.includeMetadata})}},Zt=(e,n)=>n?"zip":Yt[e].extension,Vr=async e=>{const n=Yt[e.format],t=n.getContent(e.source);if(t===void 0)return{type:"not-ready",format:e.format};const s=Zt(e.format,e.includeAssets);return{type:"success",blob:e.includeAssets?await n.createZipBlob(t,e):n.createDocumentBlob(t,e),filename:$r(e.metadata.title,s)}},Yr=e=>e==="markdown"?"Markdown is not ready yet.":"HTML is not ready yet.",it=({checked:e,description:n,id:t,label:s,onChange:r})=>{const i=`${t}-label`;return a.jsxs("div",{className:"flex min-h-6 items-center gap-2",children:[a.jsx(Ct,{id:t,size:"sm",checked:e,onChange:l=>r(l.target.checked),"aria-labelledby":i}),a.jsx("label",{id:i,htmlFor:t,className:"min-w-0 cursor-pointer",children:a.jsx(j,{as:"span",variant:"label",weight:"medium",tone:"secondary",className:"block",children:s})}),a.jsx(Rn,{content:a.jsx("span",{className:"block max-w-[240px] leading-4",children:n}),side:"top",children:a.jsx("button",{type:"button",className:"focus-ring-soft inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full text-fg-tertiary transition-colors hover:bg-hover-subtle hover:text-fg-secondary","aria-label":`${s} help`,children:a.jsx(Jn,{className:"h-3.5 w-3.5"})})})]})};function Zr({isOpen:e,metadata:n,getHtml:t,getMarkdown:s,onClose:r}){const i=Re(),[l,c]=o.useState("html"),[f,u]=o.useState(!0),[p,g]=o.useState(!1),[x,d]=o.useState(!1),h=Zt(l,f),y=async()=>{d(!0);try{const N=await Vr({format:l,includeAssets:f,includeMetadata:p,metadata:n,source:{getHtml:t,getMarkdown:s}});if(N.type==="not-ready"){i(Yr(N.format));return}Kr(N.blob,N.filename),r(),i("Downloaded note.")}catch{i("Failed to download note.")}finally{d(!1)}};return a.jsxs(D,{isOpen:e,onClose:r,variant:"compact",children:[a.jsx(D.Header,{title:"Download document",onClose:r}),a.jsx(D.Body,{children:a.jsxs("div",{className:"flex flex-col gap-5",children:[a.jsxs("div",{className:"flex flex-col gap-3",role:"radiogroup","aria-label":"Format",children:[a.jsx(j,{as:"span",variant:"meta",weight:"bold",tone:"muted",children:"Format"}),a.jsxs("div",{className:"flex flex-wrap gap-4",children:[a.jsxs("label",{className:"flex cursor-pointer items-center gap-2",children:[a.jsx("input",{type:"radio",name:"note-export-format",value:"html",checked:l==="html",onChange:()=>c("html"),className:"h-4 w-4 accent-cta"}),a.jsx(j,{as:"span",variant:"label",weight:"medium",tone:"secondary",children:".html"})]}),a.jsxs("label",{className:"flex cursor-pointer items-center gap-2",children:[a.jsx("input",{type:"radio",name:"note-export-format",value:"markdown",checked:l==="markdown",onChange:()=>c("markdown"),className:"h-4 w-4 accent-cta"}),a.jsx(j,{as:"span",variant:"label",weight:"medium",tone:"secondary",children:".md"})]})]})]}),a.jsxs("div",{className:"flex flex-col gap-3",role:"group","aria-label":"Options",children:[a.jsx(j,{as:"span",variant:"meta",weight:"bold",tone:"muted",children:"Options"}),a.jsxs("div",{className:"flex flex-col gap-2",children:[a.jsx(it,{id:"note-export-include-assets",label:"Include local image assets",checked:f,onChange:u,description:"Bundle uploaded Ocean Brain images with the document. Without assets, local images are omitted."}),a.jsx(it,{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."})]})]})]})}),a.jsx(D.Footer,{children:a.jsxs(xe,{children:[a.jsx(k,{variant:"ghost",size:"sm",onClick:r,children:"Cancel"}),a.jsx(k,{variant:"primary",size:"sm",onClick:y,disabled:x,children:x?"Downloading...":`Download .${h}`})]})})]})}const qt=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"},qr=({isDeleted:e,isConflict:n,source:t})=>{const s=qt(t);return e?`This note was moved to trash ${s.place}`:n?`Save paused: note changed ${s.place}`:`This note changed ${s.place}`},Gr=({isDeleted:e,isConflict:n,hasDraft:t,source:s})=>{const r=qt(s);return e?`${r.actor} moved this note to trash. Open trash to review or restore it.`:n&&t?`Your draft is saved locally. Reload the latest note, overwrite ${r.target}, or clone your draft into a new note.`:n?`The layout change is paused because the note changed ${r.place}. Reload the latest note or overwrite only the layout.`:`${r.actor} changed this note while it was open here. Reload the latest version before continuing.`};function Qr({isOpen:e,isDeleted:n,isConflict:t,hasDraft:s,source:r,isReloading:i,onReload:l,onOverwrite:c,onCloneDraft:f,onOpenTrash:u}){return a.jsxs(D,{isOpen:e,onClose:()=>{},variant:"inspect",children:[a.jsx(D.Header,{title:qr({isDeleted:n,isConflict:t,source:r})}),a.jsx(D.Body,{children:a.jsx(j,{as:"p",variant:"body",tone:"secondary",className:"leading-6",children:Gr({isDeleted:n,isConflict:t,hasDraft:s,source:r})})}),a.jsx(D.Footer,{children:a.jsx(xe,{children:n?a.jsx(k,{type:"button",variant:"primary",size:"sm",onClick:u,children:"Open trash"}):t?a.jsxs(a.Fragment,{children:[a.jsx(k,{type:"button",variant:"subtle",size:"sm",isLoading:i,onClick:l,children:"Reload latest"}),s&&a.jsx(k,{type:"button",variant:"ghost",size:"sm",onClick:f,children:"Clone draft"}),a.jsx(k,{type:"button",variant:"danger",size:"sm",onClick:c,children:"Overwrite"})]}):a.jsx(k,{type:"button",variant:"primary",size:"sm",isLoading:i,onClick:l,children:"Reload latest"})})})]})}function Jr({localDraftCreatedAt:e,hasSaveError:n,onRestoreDraft:t,onDiscardDraft:s,onRetrySave:r,onSaveAsNewNote:i}){return a.jsxs(a.Fragment,{children:[e&&a.jsx(rt,{tone:"danger",className:"mb-6",children:a.jsxs("div",{className:"flex w-full flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[a.jsxs("span",{children:["A draft from ",e," is saved only in this browser."]}),a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsx(k,{type:"button",size:"sm",variant:"subtle",className:"self-start",onClick:t,children:"Restore draft"}),a.jsx(k,{type:"button",size:"sm",variant:"ghost",className:"self-start",onClick:s,children:"Discard"})]})]})}),n&&a.jsx(rt,{tone:"danger",className:"mb-6",children:a.jsxs("div",{className:"flex w-full flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[a.jsx("span",{children:"Save failed. Your latest draft is still available here. Retry before leaving this note."}),a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsx(k,{type:"button",size:"sm",variant:"subtle",className:"self-start",onClick:r,children:"Retry save"}),a.jsx(k,{type:"button",size:"sm",variant:"ghost",className:"self-start",onClick:i,children:"Save as new note"})]})]})})]})}const ct=(e,n)=>e||(n==="mobile"?"Mobile browser":n==="mcp"?"MCP":"Web browser");function Xr({isOpen:e,noteId:n,onClose:t,restoreSnapshot:s,onRestored:r}){const i=Re(),l=Ze(),[c,f]=o.useState(null),[u,p]=o.useState("diff"),g=o.useRef(null),x=He({queryKey:B.notes.snapshots(n),queryFn:async()=>{const m=await An(n);if(m.type==="error")throw m;return m.noteSnapshots},enabled:e}),d=Vn({mutationFn:s,onSuccess:async m=>{if(m){if(m.type==="error"){i(m.errors[0].message);return}await Promise.all([l.invalidateQueries({queryKey:B.notes.detail(n),exact:!0}),l.invalidateQueries({queryKey:B.notes.listAll(),exact:!1}),l.invalidateQueries({queryKey:B.notes.tagListAll(),exact:!1}),l.invalidateQueries({queryKey:B.notes.tagNameListAll(),exact:!1}),l.invalidateQueries({queryKey:B.notes.pinned(),exact:!0}),l.invalidateQueries({queryKey:B.notes.backReferencesAll(),exact:!1}),l.invalidateQueries({queryKey:B.notes.graph(),exact:!0}),l.invalidateQueries({queryKey:B.notes.snapshots(n),exact:!1}),l.invalidateQueries({queryKey:B.views.sectionNotesAll(),exact:!1}),l.invalidateQueries({queryKey:B.tags.all(),exact:!1})]),i("Previous version restored."),r?.(m.restoreNoteSnapshot),f(null),t()}}}),h=x.data?.find(m=>m.id===c)??null,y=He({queryKey:[...B.notes.snapshotDetail(c??"pending"),"diff"],queryFn:async()=>{if(!c)throw new Error("SNAPSHOT_NOT_SELECTED");const m=await En(c,"current");if(m.type==="error")throw m;if(!m.noteSnapshotDiff)throw new Error("SNAPSHOT_DIFF_NOT_FOUND");return m.noteSnapshotDiff},enabled:!!c&&u==="diff"}),N=He({queryKey:B.notes.snapshotDetail(c??"pending"),queryFn:async()=>{if(!c)throw new Error("SNAPSHOT_NOT_SELECTED");const m=await kn(c);if(m.type==="error")throw m;if(!m.noteSnapshot)throw new Error("SNAPSHOT_NOT_FOUND");return m.noteSnapshot},enabled:!!c&&u==="content"}),S=N.data?.contentAsMarkdown.trim()??"";o.useEffect(()=>{c&&g.current?.focus()},[c]);const A=(m,v)=>{p(v),f(m)},w=()=>{f(null),p("diff"),t()};return a.jsxs(D,{isOpen:e,onClose:w,variant:"inspect",children:[a.jsx(D.Header,{title:h?u==="diff"?"Snapshot Diff":"Snapshot Content":"Restore Previous Version",onClose:w}),a.jsx(D.Description,{className:"sr-only",children:h?u==="diff"?"Review the markdown diff between this snapshot and the current note.":"Read this snapshot content before restoring it.":"Choose a previous snapshot to restore."}),a.jsx(D.Body,{children:h?a.jsxs("div",{className:"flex flex-col gap-3",children:[a.jsxs("div",{className:"min-w-0",children:[a.jsx(j,{as:"p",variant:"body",weight:"semibold",truncate:!0,children:h.title}),a.jsxs(j,{as:"p",variant:"label",tone:"tertiary",children:["Before"," ",ct(h.meta.label,h.meta.entrypoint)," ","edit - ",G(h.createdAt).format("YYYY-MM-DD HH:mm:ss")]})]}),a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsx(k,{variant:u==="diff"?"primary":"subtle",size:"sm",onClick:()=>p("diff"),children:"Show diff"}),a.jsx(k,{variant:u==="content"?"primary":"subtle",size:"sm",onClick:()=>p("content"),children:"View content"})]}),u==="diff"?y.isLoading?a.jsx(j,{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..."}):y.isError?a.jsx(j,{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."}):y.data?a.jsxs("div",{className:"flex flex-col gap-2",children:[a.jsx(j,{as:"p",variant:"meta",tone:"secondary",children:"Changes from this snapshot to the current note. Red lines were in the snapshot; green lines are in the current note."}),a.jsx("pre",{className:"max-h-[60vh] overflow-y-auto overflow-x-hidden whitespace-pre-wrap break-words rounded-[14px] border border-border-subtle bg-hover-subtle/50 px-0 py-3 text-xs leading-5 text-fg-secondary",children:y.data.diff.markdown.split(`
21
+ `).map((m,v)=>{const T=m.startsWith("+")&&!m.startsWith("+++")?"bg-emerald-500/12 text-emerald-700 dark:text-emerald-200":m.startsWith("-")&&!m.startsWith("---")?"bg-rose-500/12 text-rose-700 dark:text-rose-200":m.startsWith("@@")?"bg-sky-500/12 text-sky-700 dark:text-sky-200":"text-fg-secondary";return a.jsx("span",{className:`block min-w-full whitespace-pre-wrap break-words px-4 ${T}`,children:m||" "},`${v}-${m}`)})})]}):null:N.isLoading?a.jsx(j,{as:"p",variant:"meta",tone:"secondary",className:"rounded-[14px] border border-border-subtle bg-hover-subtle/50 px-4 py-3",children:"Loading snapshot content..."}):N.isError?a.jsx(j,{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."}):S?a.jsx("pre",{className:"max-h-[60vh] overflow-auto whitespace-pre-wrap break-words rounded-[14px] border border-border-subtle bg-hover-subtle/50 px-4 py-3 text-sm leading-6 text-fg-secondary",children:S}):a.jsx(j,{as:"p",variant:"meta",tone:"secondary",className:"rounded-[14px] border border-border-subtle bg-hover-subtle/50 px-4 py-3",children:"No readable content was found for this snapshot."})]}):a.jsxs("div",{className:"flex flex-col gap-3",children:[a.jsx(j,{as:"p",variant:"meta",tone:"secondary",children:"Choose a previous snapshot to restore this note back to that state."}),x.isLoading&&a.jsx(j,{as:"div",variant:"meta",tone:"secondary",children:"Loading previous versions..."}),!x.isLoading&&x.data?.length===0&&a.jsx(j,{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."}),!x.isLoading&&x.data&&x.data.length>0&&a.jsx("div",{className:"flex flex-col gap-2",children:x.data.map(m=>a.jsx(nr,{padding:"compact",children:a.jsxs("div",{className:"flex flex-col gap-3",children:[a.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[a.jsxs("div",{className:"min-w-0",children:[a.jsxs(j,{as:"p",variant:"body",weight:"semibold",children:["Before"," ",ct(m.meta.label,m.meta.entrypoint)," ","edit"]}),a.jsx(j,{as:"p",variant:"meta",truncate:!0,tone:"secondary",children:m.title}),a.jsx(j,{as:"p",variant:"label",tone:"tertiary",children:G(m.createdAt).format("YYYY-MM-DD HH:mm:ss")})]}),a.jsxs("div",{className:"flex shrink-0 flex-wrap gap-2 sm:justify-end",children:[a.jsx(k,{variant:"subtle",size:"sm",onClick:()=>A(m.id,"diff"),children:"Compare"}),a.jsx(k,{size:"sm",isLoading:d.isPending,onClick:()=>d.mutate(m.id),children:"Restore"})]})]}),m.contentPreview&&a.jsx("div",{className:"rounded-[14px] border border-border-subtle bg-hover-subtle/50 px-3 py-2",children:a.jsx(j,{as:"p",variant:"meta",tone:"secondary",className:"line-clamp-4 whitespace-pre-wrap break-words",children:m.contentPreview})})]})},m.id))})]})}),h&&a.jsx(D.Footer,{children:a.jsxs(xe,{children:[a.jsx(k,{ref:g,variant:"subtle",onClick:()=>{f(null),p("diff")},children:"Back"}),a.jsx(k,{isLoading:d.isPending,onClick:()=>d.mutate(h.id),children:"Restore this version"})]})})]})}const lt={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 ea({isOpen:e,onClose:n,onSave:t,reminder:s,mode:r}){const[i,l]=o.useState(new Date),[c,f]=o.useState("medium"),[u,p]=o.useState("");o.useEffect(()=>{e&&r==="edit"&&s?(l(new Date(Number(s.reminderDate))),f(s.priority||"medium"),p(s.content||"")):e&&r==="create"&&(l(new Date),f("medium"),p(""))},[e,r,s]);const g=()=>{t(i,c,u||void 0),n()},x=d=>c===d?lt[d].active:lt[d].inactive;return a.jsxs(D,{isOpen:e,onClose:n,variant:"form",children:[a.jsx(D.Header,{title:r==="create"?"Create Reminder":"Edit Reminder",onClose:n}),a.jsx(D.Body,{children:a.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[a.jsxs("div",{className:"flex flex-col gap-2",children:[a.jsx(Be,{children:"Date & Time"}),a.jsx(Tn,{type:"datetime-local",size:"sm",value:G(i).format("YYYY-MM-DDTHH:mm"),onChange:d=>l(new Date(d.target.value))})]}),a.jsxs("div",{className:"flex flex-col gap-2",children:[a.jsx(Be,{children:"Content"}),a.jsx(Dn,{size:"sm",placeholder:"Enter reminder content (optional)",value:u,onChange:d=>p(d.target.value)})]}),a.jsxs("div",{className:"flex flex-col gap-2",children:[a.jsx(Be,{children:"Priority"}),a.jsxs(Mn,{type:"single",variant:"quiet",value:c,onValueChange:d=>d&&f(d),className:"gap-1.5 border-none rounded-[14px] bg-muted/70 p-1 sm:gap-2",children:[a.jsx(Fe,{value:"low",className:`flex-1 rounded-[10px] border ${x("low")}`,children:a.jsx(j,{as:"span",weight:"medium",className:"text-current",children:"Low"})}),a.jsx(Fe,{value:"medium",className:`flex-1 rounded-[10px] border ${x("medium")}`,children:a.jsx(j,{as:"span",weight:"medium",className:"text-current",children:"Medium"})}),a.jsx(Fe,{value:"high",className:`flex-1 rounded-[10px] border ${x("high")}`,children:a.jsx(j,{as:"span",weight:"medium",className:"text-current",children:"High"})})]})]})]})}),a.jsx(D.Footer,{children:a.jsxs(xe,{children:[a.jsx(k,{variant:"ghost",size:"sm",onClick:n,children:"Cancel"}),a.jsx(k,{variant:"primary",size:"sm",onClick:g,children:r==="create"?"Create":"Save"})]})})]})}function ta({noteId:e}){const[n,t]=o.useState(!1),[s,r]=o.useState(!1),[i,l]=o.useState("create"),[c,f]=o.useState(void 0),{onCreate:u,onUpdate:p,onDelete:g}=rr(),x=()=>{l("create"),f(void 0),r(!0)},d=w=>{l("edit"),f(w),r(!0)},h=(w,m,v)=>{i==="create"?u(e,w,m,()=>{r(!1)},v):i==="edit"&&c&&p(c.id,e,{reminderDate:w,priority:m,content:v},()=>{r(!1)})},y=w=>{p(w.id,e,{completed:!w.completed})},N=w=>{const m=G(Number(w)),v=G();return m.isSame(v,"day")?`Today at ${m.format("HH:mm")}`:m.isSame(v.add(1,"day"),"day")?`Tomorrow at ${m.format("HH:mm")}`:m.format("YYYY-MM-DD HH:mm")},S=w=>{const m=G(Number(w)),v=G(),T=m.diff(v,"hour");return T<=6?"high":T<=24?"medium":"low"},A=w=>{const m=G(Number(w)),v=G(),T=m.diff(v,"hour"),H=m.diff(v,"minute")%60;return T<0||H<0?"Overdue":T===0?`${H}m remaining`:`${T}h ${H}m remaining`};return a.jsxs(a.Fragment,{children:[a.jsx(Tt,{title:"Reminders",icon:a.jsx(Yn,{className:"h-3.5 w-3.5"}),action:a.jsxs(a.Fragment,{children:[!n&&a.jsxs(k,{size:"sm",variant:"ghost",onClick:x,children:[a.jsx(sr,{className:"w-3 h-3"}),a.jsx(j,{as:"span",variant:"label",className:"hidden sm:inline",children:"Add"})]}),a.jsxs(k,{type:"button",size:"sm",variant:"ghost","aria-label":n?"Expand reminders":"Collapse reminders","aria-expanded":!n,onClick:()=>t(!n),children:[n?a.jsx(Pn,{className:"h-3.5 w-3.5"}):a.jsx(_n,{className:"h-3.5 w-3.5"}),n?"Expand":"Collapse"]})]}),children:!n&&a.jsx(ar,{noteId:e,searchParams:{offset:0,limit:9999},render:({reminders:w,totalCount:m})=>a.jsx("div",{className:"flex flex-col gap-2",children:w.length===0?a.jsx(j,{as:"p",variant:"meta",tone:"secondary",className:"py-3 text-center",children:m===0?"No reminders yet":"All reminders complete"}):a.jsx("div",{className:"flex flex-col",children:w.map(v=>{const T=v.priority||S(v.reminderDate),H=A(v.reminderDate),M=H==="Overdue";return a.jsxs("div",{className:K("flex items-center gap-2.5 px-2 py-1.5"),children:[a.jsx(Ct,{checked:v.completed,onChange:()=>y(v),size:"sm","aria-label":`Reminder: ${v.content||N(v.reminderDate)}`}),a.jsx(j,{as:"div",variant:"body",weight:"medium",className:K("truncate flex-1 min-w-0",v.completed&&"line-through opacity-40"),children:v.content||N(v.reminderDate)}),a.jsxs("div",{className:K("shrink-0 flex items-center gap-1",v.completed&&"opacity-40"),children:[v.content&&a.jsx(j,{as:"span",variant:"meta",tone:"secondary",children:N(v.reminderDate)}),!v.completed&&a.jsx(j,{as:"span",variant:"label",weight:"medium",tone:M||T==="high"?"error":"tertiary",className:K(v.content&&'before:content-["·"] before:mr-1'),children:H})]}),a.jsx(wt,{button:a.jsx(St,{label:"Reminder actions"}),items:[{name:"Edit",onClick:()=>d(v)},{name:"Delete",onClick:()=>g(v.id,e)}]})]},v.id)})})})})}),a.jsx(ea,{isOpen:s,onClose:()=>r(!1),onSave:h,reminder:c,mode:i})]})}const na=e=>[{title:"Diagram",subtext:"Create a flowchart or diagram with Mermaid syntax",onItemClick:()=>{at(e,{type:"codeBlock",props:{language:"mermaid"}})},aliases:["mermaid","diagram","flowchart","sequence"],group:"Other",icon:a.jsx(_t,{})},{title:"Math Formula",subtext:"Write a formula with KaTeX or LaTeX",onItemClick:()=>{at(e,{type:"codeBlock",props:{language:"math"}})},aliases:["math","formula","equation","katex","latex"],group:"Other",icon:a.jsx(Ot,{})}],ra=({editor:e})=>a.jsx(Je,{triggerCharacter:"/",getItems:async n=>ur([...or(e).filter(t=>t.title!=="Audio"&&t.title!=="Video"&&t.title!=="File"),...na(e),{title:"Table of Contents",subtext:"Insert a table of contents based on headings",onItemClick:()=>{e.insertBlocks([{type:"tableOfContents"}],e.getTextCursorPosition().block,"after")},aliases:["toc","table of contents","contents","outline","index"],group:"Other",icon:a.jsx(Rt,{})}],n)}),aa=(e,n)=>n?e.filter(t=>t.id!==n):e,sa=({currentNoteId:e,onClick:n})=>a.jsx(Je,{triggerCharacter:"[",getItems:async t=>{const s=await Ln({query:t,limit:5});return s.type==="error"?[]:aa(s.allNotes.notes,e).map(i=>({title:i.title,onItemClick:()=>n({type:"reference",props:{id:i.id,title:i.title}})}))}}),Gt=["image/png","image/jpeg","image/gif","image/webp","image/bmp","image/avif"],oa=new Set(Gt),dt="Unsupported image type. Use PNG, JPEG, GIF, WebP, BMP, or AVIF.",ia="Failed to upload image.",ca=e=>oa.has(e);let ut,ft;const la=()=>(ut??=Ke(async()=>{const{default:e}=await import("./mermaid.core-B14ZAmWA.js").then(n=>n.bc);return{default:e}},__vite__mapDeps([0,1,2,3])).then(({default:e})=>e),ut),da=()=>(ft??=Promise.all([Ke(()=>import("./katex-x288kqHd.js"),[]),Ke(()=>Promise.resolve({}),__vite__mapDeps([4]))]).then(([{default:e}])=>e),ft),ua=e=>{const n=e?.trim().toLowerCase();return n==="mermaid"?"mermaid":n==="math"||n==="katex"||n==="latex"?"math":null},fa=e=>`ocean-brain-mermaid-${e.replace(/[^a-zA-Z0-9_-]/g,"")||"diagram"}`,pa=async(e,n,t,s="light")=>{if(e==="mermaid"){const i=await la();i.initialize({securityLevel:"strict",startOnLoad:!1,suppressErrorRendering:!0,theme:s==="dark"?"dark":"default"});const l=await i.render(fa(t),n);return{html:l.svg,bindFunctions:l.bindFunctions}}return{html:(await da()).renderToString(n,{displayMode:!0,output:"htmlAndMathml",strict:"warn",throwOnError:!0,trust:!1})}},ma={floating:"pointer-events-auto inline-flex h-7 cursor-pointer select-none items-center gap-1.5 rounded-[8px] border border-white/10 bg-white/10 px-2.5 text-xs font-medium text-white/60 opacity-75 shadow-[0_8px_18px_-14px_rgba(0,0,0,0.45)] backdrop-blur-sm transition-colors hover:bg-white/20 hover:text-white/90 hover:opacity-100 focus-ring-soft focus:text-white/90 focus:opacity-100",toolbar:"focus-ring-soft inline-flex h-8 cursor-pointer select-none items-center gap-1.5 rounded-[8px] border border-transparent px-2.5 text-xs font-semibold text-fg-secondary outline-none transition-colors hover:border-border-subtle hover:bg-hover-subtle hover:text-fg-default"},ha={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"},ga={idle:"Copy",copied:"Copied",failed:"Copy failed"},pt=({getText:e,resetDelayMs:n=2e3,variant:t="floating"})=>{const[s,r]=o.useState("idle"),i=o.useRef(null),l=o.useCallback(()=>{i.current&&(clearTimeout(i.current),i.current=null)},[]),c=o.useCallback(()=>{l(),i.current=setTimeout(()=>{r("idle"),i.current=null},n)},[l,n]);o.useEffect(()=>l,[l]);const f=g=>{g.stopPropagation()},u=g=>{g.preventDefault(),g.stopPropagation()},p=async g=>{f(g);try{await navigator.clipboard.writeText(e()),r("copied")}catch{r("failed")}c()};return a.jsx("div",{className:K(t==="floating"&&"pointer-events-none absolute right-3 top-2 z-[1]"),contentEditable:!1,onMouseDown:u,children:a.jsxs("button",{type:"button",className:K(ma[t],ha[s]),contentEditable:!1,onClick:p,children:[a.jsx(mr,{className:"h-3.5 w-3.5"}),a.jsx("span",{"aria-live":"polite",children:ga[s]})]})})},xa=({kind:e,source:n})=>{const t=o.useId(),s=o.useRef(null),r=Nt(u=>u.theme),[i,l]=o.useState(()=>typeof IntersectionObserver>"u"),[c,f]=o.useState({status:"idle"});return o.useEffect(()=>{const u=s.current;if(i||!u||typeof IntersectionObserver>"u"){l(!0);return}const p=new IntersectionObserver(([g])=>{g?.isIntersecting&&(l(!0),p.disconnect())},{rootMargin:"240px"});return p.observe(u),()=>p.disconnect()},[i]),o.useEffect(()=>{if(!i)return;let u=!1;return f({status:"loading"}),pa(e,n,t,r).then(p=>{u||f({status:"success",...p})}).catch(()=>{u||f({status:"error"})}),()=>{u=!0}},[e,t,i,n,r]),o.useEffect(()=>{c.status==="success"&&c.bindFunctions&&s.current&&c.bindFunctions(s.current)},[c]),a.jsxs("div",{ref:s,"data-rich-code-preview":!0,className:"min-h-24 w-full overflow-auto bg-surface px-4 py-5 text-fg-default sm:px-6 sm:py-6",contentEditable:!1,"aria-label":e==="mermaid"?"Mermaid diagram preview":"Math formula preview",children:[c.status==="success"&&a.jsx("div",{className:"[&_.katex-display]:m-0 [&_svg]:mx-auto [&_svg]:block [&_svg]:h-auto [&_svg]:max-h-[min(68vh,640px)] [&_svg]:max-w-full",dangerouslySetInnerHTML:{__html:c.html}}),(c.status==="idle"||c.status==="loading")&&a.jsx("div",{className:"flex min-h-8 items-center justify-center text-sm text-black/55",children:"Rendering preview…"}),c.status==="error"&&a.jsxs("div",{className:"text-left",children:[a.jsx("p",{className:"mb-3 text-sm text-red-700",children:"Preview could not be rendered. The source is preserved."}),a.jsx("pre",{className:"overflow-x-auto whitespace-pre-wrap rounded-[6px] bg-black/5 p-4 text-sm text-black",children:a.jsx("code",{children:n})})]})]})},mt="focus-ring-soft inline-flex h-8 cursor-pointer select-none items-center gap-1.5 rounded-[8px] border px-2.5 text-xs font-semibold outline-none transition-colors",Ve=e=>typeof e=="string"?e:!e||typeof e!="object"?"":"text"in e&&typeof e.text=="string"?e.text:"content"in e?Array.isArray(e.content)?e.content.map(Ve).join(""):Ve(e.content):"",ba=({block:e,contentRef:n})=>{const t=o.useRef(null),s=ua(e.props.language),r=e.content.map(Ve).join(""),[i,l]=o.useState(r),[c,f]=o.useState(r.length===0),u=s!==null&&!c,p=s==="mermaid"?"Diagram":"Math Formula",g=`${p} controls`,x=o.useCallback(h=>{t.current=h,n(h)},[n]);o.useEffect(()=>{const h=t.current;if(!h)return;const y=()=>l(h.textContent??""),N=new MutationObserver(y);return N.observe(h,{characterData:!0,childList:!0,subtree:!0}),()=>N.disconnect()},[]);const d=h=>{h.preventDefault(),h.stopPropagation()};return a.jsxs(a.Fragment,{children:[s&&a.jsxs("div",{role:"toolbar","aria-label":g,"data-rich-code-toolbar":!0,className:"flex min-h-11 w-full flex-wrap items-center justify-between gap-2 border-b border-border-subtle bg-elevated px-3 py-1.5 text-fg-secondary",contentEditable:!1,onMouseDown:d,children:[a.jsxs("div",{className:"flex min-w-0 items-center gap-2 px-1 text-xs font-semibold text-fg-secondary",children:[s==="mermaid"?a.jsx(_t,{className:"h-4 w-4 shrink-0 text-fg-tertiary"}):a.jsx(Ot,{className:"h-4 w-4 shrink-0 text-fg-tertiary"}),a.jsx("span",{className:"truncate",children:p})]}),a.jsxs("div",{className:"flex items-center gap-1",children:[a.jsxs("div",{className:"flex items-center gap-0.5 rounded-[10px] border border-border-subtle bg-hover-subtle/55 p-0.5",children:[a.jsxs("button",{type:"button","aria-pressed":c,className:K(mt,c?"border-border-secondary/70 bg-elevated text-fg-default shadow-[0_8px_18px_-16px_rgba(15,18,24,0.28)]":"border-transparent text-fg-secondary hover:bg-hover-subtle hover:text-fg-default"),contentEditable:!1,onClick:h=>{h.stopPropagation(),f(!0)},children:[a.jsx(hr,{className:"h-3.5 w-3.5"}),"Edit"]}),a.jsxs("button",{type:"button","aria-pressed":u,className:K(mt,u?"border-border-secondary/70 bg-elevated text-fg-default shadow-[0_8px_18px_-16px_rgba(15,18,24,0.28)]":"border-transparent text-fg-secondary hover:bg-hover-subtle hover:text-fg-default"),contentEditable:!1,onClick:h=>{h.stopPropagation(),f(!1)},children:[a.jsx(Zn,{className:"h-3.5 w-3.5"}),"Preview"]})]}),a.jsx(pt,{variant:"toolbar",getText:()=>t.current?.textContent?.trimEnd()??""})]})]}),a.jsx("pre",{className:K(u&&"hidden",s&&"bg-[#181b20]"),children:a.jsx("code",{ref:x})}),s&&u&&a.jsx(xa,{kind:s,source:i}),!s&&a.jsx(pt,{getText:()=>t.current?.textContent?.trimEnd()??""})]})},va="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))]",ya={type:"reference",propSchema:{id:{default:""},title:{default:"Unknown"}},content:"none"};function wa(e){const n=jt(),t=()=>{e.editor.blur(),n({to:Ae,params:{id:e.inlineContent.props.id}})},s=r=>{r.preventDefault(),r.stopPropagation()};return a.jsx("span",{role:"link",tabIndex:0,contentEditable:!1,className:va,onMouseDown:s,onClick:r=>{s(r),t()},onKeyDown:r=>{r.key!=="Enter"&&r.key!==" "||(s(r),t())},children:a.jsxs("span",{children:["[",e.inlineContent.props.title,"]"]})})}const Ca=Dt(ya,{render:e=>a.jsx(wa,{...e})}),Na=()=>{const e=ir(),[n,t]=o.useState([]),s={1:"pl-3",2:"pl-[26px]",3:"pl-[40px]",4:"pl-[54px]",5:"pl-[68px]",6:"pl-[82px]"};o.useEffect(()=>{const l=()=>{const f=e.document,u=[],p=g=>{for(const x of g){if(x.type==="heading"){const d=x,h=d.props.level||1,y=d.content?.map(N=>N.text||"").join("")||"";y.trim()&&u.push({id:x.id,level:h,text:y})}x.children&&Array.isArray(x.children)&&p(x.children)}};p(f),t(u)};l();const c=e.onChange?.(l);return()=>{c&&c()}},[e]);const r=l=>{e.setTextCursorPosition(l);const c=document.querySelector(`[data-id="${l}"]`);if(c){const f=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1;c.scrollIntoView({behavior:f?"auto":"smooth",block:"center"})}},i=a.jsx(gr,{icon:a.jsx(Rt,{className:"h-3.5 w-3.5"}),title:"Table of Contents",className:"text-fg-tertiary"});return n.length===0?a.jsxs("div",{className:"surface-base w-full p-4",children:[i,a.jsx(j,{as:"p",variant:"meta",tone:"secondary",className:"mt-2",children:"Add headings to your document to generate a table of contents"})]}):a.jsxs("div",{className:"surface-base w-full p-4",children:[a.jsx("div",{className:"mb-2",children:i}),a.jsx("nav",{className:"space-y-0.5",children:n.map(l=>{const c=l.level===1;return a.jsxs("button",{type:"button",onClick:()=>r(l.id),className:K("focus-ring-soft","flex","w-full","items-center","gap-2","rounded-[10px]","px-2.5","py-1.5",s[l.level]??"pl-2.5","text-left","transition-colors","hover:bg-hover-subtle",c?"text-fg-default":"text-fg-secondary"),children:[a.jsxs(j,{as:"span",variant:"label",weight:"medium",tone:"tertiary",className:"min-w-[1.5rem]",children:["H",l.level]}),a.jsx(j,{as:"span",variant:"body",weight:c?"semibold":"medium",className:"line-clamp-2 text-current",children:l.text})]},l.id)})})]})},ja=Mt({type:"tableOfContents",propSchema:{},content:"none"},{render:()=>a.jsx(Na,{})})(),Sa="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",Ra={type:"tag",propSchema:{id:{default:""},tag:{default:"@Unknown"}},content:"none"};function Aa(e){const n=jt(),t=()=>{e.editor.blur(),n({to:er,params:{id:e.inlineContent.props.id},search:{page:1}})},s=r=>{r.preventDefault(),r.stopPropagation()};return a.jsx("span",{role:"link",tabIndex:0,contentEditable:!1,className:Sa,onMouseDown:s,onClick:r=>{s(r),t()},onKeyDown:r=>{r.key!=="Enter"&&r.key!==" "||(s(r),t())},children:a.jsx("span",{children:e.inlineContent.props.tag})})}const Ea=Dt(Ra,{render:e=>a.jsx(Aa,{...e})}),ka=e=>e,Ta=e=>e,Da=ka({tag:Ea,reference:Ca}),Ma=Ta({tableOfContents:ja}),ce=he.codeBlock,ht=Mt(ce.config,{meta:ce.implementation.meta,parse:ce.implementation.parse,parseContent:ce.implementation.parseContent,runsBefore:ce.implementation.runsBefore,render:ba})(),Pa={...ht,extensions:ce.extensions,implementation:{...ht.implementation,toExternalHTML:ce.implementation.toExternalHTML}},_a={...he.image,implementation:{...he.image.implementation,meta:{...he.image.implementation.meta,fileBlockAccept:[...Gt]}}},La=fr.create({inlineContentSpecs:{...pr,...Da},blockSpecs:{...he,image:_a,codeBlock:Pa,...Ma}}),Oa=(e,n)=>n.some(t=>t.name===`@${e}`),Ba=({onClick:e})=>a.jsx(Je,{triggerCharacter:"@",getItems:async n=>{const t=await br({query:n,limit:5});if(t.type==="error")return[];const{tags:s}=t.allTags,r=Oa(n,s),i=[{title:"Add a new tag",onItemClick:async()=>{const l=await vr({name:"@"+n});if(l.type==="error")return;const{id:c,name:f}=l.createTag;e({type:"tag",props:{id:c,tag:f}})}}];return s.length===0?i:s.map(l=>({title:l.name,onItemClick:()=>e({type:"tag",props:{id:l.id,tag:l.name}})})).concat(n&&!r?i:[])}}),Fa=/^ {0,3}(`{3,}|~{3,})/,Ha=/<[^<>\n]*>/g,Qt=/~+/g,Jt=/[\p{L}\p{M}\p{N}\p{Sc}%‰.,+\-/:°℃℉µμ·²³^]/u,Ye=new RegExp("^(?:[+-]?\\p{Sc}?|\\p{Sc}[+-]?)\\p{N}","u"),Xt=/&#(?:x[0-9a-f]+|\d+);/giu,$a=new Set(["Files","blocknote/html","vscode-editor-data"]),gt="OBTILDE",xt="",Ia=[/(^|\n) {0,3}#{1,6} {1,8}[^\n]{1,64}\r?\n\r?\n\s{0,32}\S/,/(_|__|\*|\*\*|~~|==|\+\+)(?!\s)(?:[^\s](?:.{0,62}[^\s])?|\S)(?=\1)/,/\[[^\]]{1,128}\]\(https?:\/\/\S{1,999}\)/,/(?:\s|^)`(?!\s)(?:[^\s`](?:[^`]{0,46}[^\s`])?|[^\s`])`([^\w]|$)/,/(?:^|\n)\s{0,5}-\s{1}[^\n]+\n\s{0,15}-\s/,/(?:^|\n)\s{0,5}\d+\.\s{1}[^\n]+\n\s{0,15}\d+\.\s/,/\n{2} {0,3}-{2,48}\n{2}/,/(?:\n|^)(```|~~~|\$\$)(?!`|~)[^\s]{0,64} {0,64}[^\n]{0,64}\n[\s\S]{0,9999}?\s*\1 {0,64}(?:\n+|$)/,/(?:\n|^)(?!\s)\w[^\n]{0,64}\n(-|=)\1{0,64}\n\n\s{0,64}(\w|$)/,/(?:^|(\r?\n\r?\n))( {0,3}>[^\n]{1,333}\n){1,999}($|(\r?\n))/],Ua=e=>e.split(`
22
+ `).some(n=>{const t=n.trim();return t.length>2&&t.startsWith("|")&&t.endsWith("|")}),za=e=>Ia.some(n=>n.test(e))||Ua(e),Wa=e=>e.endsWith(`\r
23
+ `)?{body:e.slice(0,-2),ending:`\r
24
+ `}:e.endsWith(`
25
+ `)||e.endsWith("\r")?{body:e.slice(0,-1),ending:e.slice(-1)}:{body:e,ending:""},en=(e,n,t)=>{let s=n;for(;e[s]===t;)s+=1;return s-n},tn=e=>{const n=e.slice(2,-1),t=n[0]?.toLowerCase()==="x",s=Number.parseInt(t?n.slice(1):n,t?16:10);return!Number.isSafeInteger(s)||s<0||s>1114111?e:String.fromCodePoint(s)},Ka=e=>{const n=e.replace(Xt,tn),t=e.toLowerCase();let s=0,r=`${gt}${s}${xt}`;for(;e.includes(r)||t.includes(encodeURIComponent(r).toLowerCase())||n.includes(r);)s+=1,r=`${gt}${s}${xt}`;return r},Va=(e,n,t)=>t-n>2?!1:nn(e,n)&&Za(e,t),bt=(e,n)=>{let t=n;for(;t>0&&Jt.test(e[t-1]??"");)t-=1;return{start:t,token:e.slice(t,n)}},Ya=(e,n)=>{let t=n;for(;t<e.length&&Jt.test(e[t]??"");)t+=1;return e.slice(n,t)},nn=(e,n)=>{const t=bt(e,n);if(Ye.test(t.token))return!0;if(!t.token)return!1;let s=t.start;for(;s>0&&(e[s-1]===" "||e[s-1]===" ");)s-=1;return s===t.start?!1:Ye.test(bt(e,s).token)},Za=(e,n)=>Ye.test(Ya(e,n)),rn=e=>{const n=[],t=new Set;for(const s of e.matchAll(Qt)){const r=s.index,i=s[0].length,l=r+i;if(i>2)continue;const c=l<e.length&&!/\s/u.test(e[l]??""),f=r>0&&!/\s/u.test(e[r-1]??"");if(Va(e,r,l)){if(f&&t.delete(i))continue;n.push({length:i,start:r});continue}f&&t.delete(i)||c&&nn(e,r)&&t.add(i)}return n},$e=(e,n)=>{let t="",s=0;const r=new Set(rn(e).map(i=>i.start));for(const i of e.matchAll(Qt)){const l=i.index,c=l+i[0].length;t+=e.slice(s,l),t+=r.has(l)?n.repeat(i[0].length):i[0],s=c}return t+e.slice(s)},qa=e=>{const n=e.slice(1,-1),t=/^[a-z][a-z0-9.+-]{1,31}:[^\s<>]*$/i.test(n)||/^[^\s@<>]+@[^\s@<>]+\.[^\s@<>]+$/.test(n),s=/^<\/?[a-z][\w:-]*(?:\s[^<>]*)?\/?\s*>$/i.test(e)||/^<![^<>]*>$/.test(e);return t||s},Ga=(e,n)=>{let t="",s=0;for(const r of e.matchAll(Ha)){const i=r.index;t+=$e(e.slice(s,i),n),t+=qa(r[0])?r[0]:$e(r[0],n),s=i+r[0].length}return t+$e(e.slice(s),n)},an=e=>rn(e).length>0,Qa=e=>{if(!an(e))return st(e);const n=Ka(e),t=Ga(e,n),s=encodeURIComponent(n);return st(t).split(n).join("~").split(s).join("~")},Ja=(e,n)=>{let t=0;for(let s=n-1;s>=0&&e[s]==="\\";s-=1)t+=1;return t%2===1},Xa=(e,n,t)=>{let s=n+t;for(;s<e.length;){const r=e.indexOf("`",s);if(r===-1)return null;const i=en(e,r,"`");if(i===t)return r+i;s=r+i}return null},es=(e,n)=>{let t=e.indexOf("`",n);for(;t!==-1;){const s=en(e,t,"`");if(!Ja(e,t)){const r=Xa(e,t,s);if(r!==null)return{start:t,end:r}}t=e.indexOf("`",t+s)}return null},ts=(e,n)=>{let t="",s=0;for(;s<e.length;){const r=es(e,s);if(!r){t+=n(e.slice(s));break}t+=n(e.slice(s,r.start)),t+=e.slice(r.start,r.end),s=r.end}return t},sn=(e,n)=>{let t=null;return e.split(new RegExp("(?<=\\n)")).map(s=>{const{body:r,ending:i}=Wa(s);if(t)return new RegExp(`^ {0,3}${t.marker}{${t.length},} *$`).test(r)&&(t=null),s;const l=r.match(Fa)?.[1];return l?(t={marker:l[0],length:l.length},s):`${ts(r,n)}${i}`}).join("")},ns=(e,n)=>{let t=0;for(let s=n;s<e.length;s+=1){const r=e[s];if(r==="\\"){s+=1;continue}if(r==="("){t+=1;continue}if(r===")"){if(t>0){t-=1;continue}return s}}return null},on=e=>{let n="",t=0;for(;t<e.length;){const s=e.indexOf("](",t);if(s===-1){n+=e.slice(t);break}const r=s+2,i=ns(e,r);if(i===null){n+=e.slice(t);break}n+=e.slice(t,r),n+=e.slice(r,i).split("\\&").join("&"),n+=")",t=i+1}return n},rs=(e,n)=>{const t=e[n-1];if(t!=="*"&&t!=="_")return!1;let s=n-1;for(;s>0&&e[s-1]===t;)s-=1;const r=e.slice(s,n),i=e.lastIndexOf(r,s-1);return i!==-1&&i+r.length<s},as=(e,n)=>{const t=e[n];if(t!=="*"&&t!=="_")return!1;let s=n+1;for(;s<e.length&&e[s]===t;)s+=1;const r=e.slice(n,s),i=e.indexOf(r,s);return i!==-1&&s<i},ss=(e,n,t)=>rs(e,n)||as(e,n+t),os=e=>sn(e,n=>{const t=n.replace(Xt,(s,r,i)=>ss(i,r,s.length)?tn(s):s);return on(t)}),is=e=>sn(e,on),cs=e=>{const n=e.getData("text/plain");n&&(e.setData("text/markdown",n),e.setData("text/plain",os(n)))},ls=({event:e,editor:n,defaultPasteHandler:t})=>{const s=e.clipboardData;if(!s||n.getTextCursorPosition().block.type==="codeBlock")return t();const r=Array.from(s.types);if(r.some(c=>$a.has(c)))return t();const i=r.includes("text/markdown"),l=s.getData(i?"text/markdown":"text/plain");return!l||!an(l)||!i&&r.includes("text/html")&&!za(l)?t():(n.pasteHTML(Qa(l)),!0)},ds=new Set(["tableOfContents"]),us="OCEAN_BRAIN_TAG_",fs="_TOKEN",ps=e=>`${us}${e}${fs}`,ms=e=>!Array.isArray(e)&&e?.type==="tableContent",hs=(e,n)=>Array.isArray(e)?e.map(n):ms(e)?{...e,rows:e.rows?.map(t=>({...t,cells:t.cells?.map(s=>({...s,content:s.content?.map(n)}))}))}:e,cn=(e,n)=>e.filter(t=>!ds.has(t.type)).map(t=>({...t,content:n(t.content),children:t.children?.length?cn(t.children,n):[]}));function gs(e){const n=new Map;let t=0;return{blocks:cn(e,r=>hs(r,i=>{if(i.type==="reference"){const l=String(i.props?.id||""),c=String(i.props?.title||i.props?.id||"");return{type:"text",text:l?`[[${c}]](note:${l})`:`[[${c}]]`,styles:{}}}if(i.type==="tag"){const l=i.props?.tag||"",c=ps(t);return t+=1,n.set(c,l),{type:"text",text:c,styles:{}}}return i})),placeholderToTag:n}}function xs(e,n){let t=e;for(const[s,r]of n.entries())t=t.split(s).join(`[${r}]`);return t}async function bs(e){return new Promise((n,t)=>{const s=new FileReader;s.readAsDataURL(e),s.onload=()=>n(s.result),s.onerror=r=>t(r)})}const vs=o.forwardRef(({content:e,currentNoteId:n,editable:t,onChange:s},r)=>{const{theme:i}=Nt(u=>u),l=Re(),c=cr({schema:La,initialContent:e&&JSON.parse(e)||void 0,pasteHandler:u=>ls(u),uploadFile:async(u,p)=>{const g=()=>{p&&c.getBlock(p)&&c.removeBlocks([p])};if(!ca(u.type))throw g(),l(dt),new Error(dt);try{return await dr({base64:await bs(u)})}catch(x){throw g(),l(ia),x}}},[l]);o.useImperativeHandle(r,()=>({getContent:()=>JSON.stringify(c.document),getMarkdown:()=>{const u=gs(c.document),p=c.blocksToMarkdownLossy(u.blocks);return is(xs(p,u.placeholderToTag))},getHtml:()=>c.blocksToHTMLLossy(c.document)}));const f=u=>{cs(u.clipboardData)};return a.jsxs(lr,{slashMenu:!1,theme:i,editor:c,editable:t,onChange:s,onCopy:f,onCut:f,children:[a.jsx(ra,{editor:c}),a.jsx(sa,{currentNoteId:n,onClick:u=>{c.insertInlineContent([u," "])}}),a.jsx(Ba,{onClick:u=>{c.insertInlineContent([u," "])}})]})}),ys=({event:e,noteId:n,editSessionId:t,loadedUpdatedAt:s,acceptedUpdatedAt:r,hasUnsavedChanges:i})=>{if(e.noteId!==n||e.type==="mcp.note.created")return{type:"ignore"};if(e.source==="web"&&e.editSessionId===t)return{type:"ignore"};if(e.type==="mcp.note.deleted")return{type:"notify",change:{type:"deleted",source:e.source},shouldPauseSave:!1};const l=je(e.updatedAt,s),c=je(e.updatedAt,r);return l!==null&&l<=0||c!==null&&c<=0?{type:"ignore"}:{type:"notify",change:{type:"updated",updatedAt:e.updatedAt,source:e.source},shouldPauseSave:i}},ws=({change:e,isConflict:n,loadedUpdatedAt:t})=>e?!(e.type==="updated"&&!n&&e.updatedAt===t):!1;function Cs({allowNextNavigationRef:e,hasExternalPendingChanges:n,saveStatus:t,flushPendingChanges:s,notify:r}){const i=o.useCallback(async()=>{if(e.current)return e.current=!1,!1;if(t==="conflict")return r("Resolve the note conflict before leaving."),!0;const l=await s();return l==="error"?(r("Save failed. Stay on this note and try again."),!0):l==="conflict"},[e,s,r,t]);Cr({disabled:t==="saved"&&!n,enableBeforeUnload:!1,shouldBlockFn:i})}const et=e=>`ocean-brain.note-draft.${e}`,Ns=e=>{if(typeof window>"u")return null;try{const n=window.localStorage.getItem(et(e));if(!n)return null;const t=JSON.parse(n);return typeof t.title!="string"||typeof t.content!="string"||typeof t.baseUpdatedAt!="string"?null:{title:t.title,content:t.content,baseUpdatedAt:t.baseUpdatedAt,createdAt:typeof t.createdAt=="number"?t.createdAt:Date.now(),...t.layout==="narrow"||t.layout==="wide"||t.layout==="full"?{layout:t.layout}:{}}}catch{return null}},Ie=(e,n)=>{if(!(typeof window>"u"))try{window.localStorage.setItem(et(e),JSON.stringify(n))}catch{}},Ue=e=>{if(!(typeof window>"u"))try{window.localStorage.removeItem(et(e))}catch{}},js=1e3,Ss="NOTE_UPDATE_CONFLICT";function Rs({noteId:e,initialContent:n,initialUpdatedAt:t,editSessionIdRef:s,getContent:r,beforeSave:i,hasExternalPendingChanges:l,serverVersionRef:c,executeWrite:f,onSaved:u,onConflict:p,onError:g}){const x=Ze(),d=o.useRef(null),h=o.useRef(null),y=o.useRef(!1),N=o.useRef(null),S=o.useRef(!1),A=o.useRef(t),w=c??A,m=o.useRef(0),v=o.useRef(!1),T=o.useRef(!0),H=o.useRef(u),M=o.useRef(p),V=o.useRef(g),be=o.useRef(i),X=o.useRef(l),me=o.useRef(f),[re,ee]=o.useState("saved"),[ke,le]=o.useState(null),$=o.useCallback(()=>{d.current!==null&&(window.clearTimeout(d.current),d.current=null)},[]),L=o.useCallback(E=>{T.current&&ee(E)},[]),Te=o.useCallback(E=>{w.current=E},[]),ve=o.useCallback((E,O={})=>({title:E,content:r()??n,createdAt:Date.now(),baseUpdatedAt:w.current,...O.layout?{layout:O.layout}:{}}),[r,n]),de=o.useCallback(()=>{h.current&&Ie(e,h.current)},[e]),ae=o.useCallback(E=>{v.current=!0,L("conflict"),M.current(E??w.current)},[L]),_=o.useCallback(async({ignoreConflict:E=!1,silent:O=!1}={})=>{if(y.current)return S.current=!0,N.current??"idle";const Me=h.current!==null,se=X.current?.()??!1;if(!Me&&!se)return S.current=!1,"idle";const I=m.current;S.current=!1,$(),y.current=!0,O||L("saving");const F=(async()=>{const ue=await be.current?.()??"idle";if(I!==m.current)return"idle";if(ue==="error")return y.current=!1,N.current=null,h.current?L("error"):L("saved"),"error";const P=h.current;if(!P)return y.current=!1,N.current=null,L("saved"),ue;h.current=null;const q=async()=>{if(I!==m.current)return"idle";let W;try{W=await We({id:e,title:P.title,content:P.content,...P.layout?{layout:P.layout}:{},editSessionId:s.current,...E?{force:!0}:{expectedUpdatedAt:w.current}})}catch{W={type:"error",category:"network",errors:[{code:"NETWORK_ERROR",message:"Failed to save note."}]}}if(I!==m.current)return"idle";if(W.type==="error"){y.current=!1,N.current=null,h.current||(h.current=P),de();const U=W.errors[0];if(U.code===Ss&&!E){const oe=U.details?.extensions?.currentUpdatedAt;return v.current=!0,!O&&T.current&&(L("conflict"),M.current(oe??w.current)),"conflict"}return!O&&T.current&&(L("error"),V.current(U.message)),"error"}const we=!O&&T.current,J=B.notes.detail(e);if(await x.cancelQueries({queryKey:J,exact:!0}),I!==m.current)return"idle";y.current=!1,N.current=null,v.current=!1,w.current=W.updateNote.updatedAt,we&&H.current(W.updateNote.updatedAt),x.setQueryData(J,U=>U&&{...U,title:W.updateNote.title,content:P.content,...P.layout?{layout:P.layout}:{},updatedAt:W.updateNote.updatedAt}),At({noteId:e,updatedAt:W.updateNote.updatedAt,editSessionId:s.current});const fe=h.current;return fe?.baseUpdatedAt===P.baseUpdatedAt?(h.current={...fe,baseUpdatedAt:W.updateNote.updatedAt},de()):fe||Ue(e),h.current||Et(x),we&&(h.current?ee("pending"):ee("saved")),"saved"},z=me.current?await me.current(q):await q();return z?z==="saved"&&(h.current||S.current)?_({silent:O}):z:(h.current||(h.current=P),de(),y.current=!1,N.current=null,L("pending"),"idle")})();return N.current=F,F},[$,s,e,de,x,w,L]),te=o.useCallback((E,O={})=>{if(h.current=E,Ie(e,E),v.current){L("conflict");return}if(L("pending"),$(),O.immediate){_();return}d.current=window.setTimeout(()=>{_()},js)},[$,_,e,L]),ne=o.useCallback(E=>{if(h.current=E,Ie(e,E),le(null),E.baseUpdatedAt!==w.current){ae(w.current);return}te(E)},[e,te,ae]),ye=o.useCallback(()=>{m.current+=1,$(),h.current=null,y.current=!1,N.current=null,S.current=!1,v.current=!1,Ue(e),le(null),ee("saved")},[$,e]),De=o.useCallback(()=>{$(),N.current=null,S.current=!1,v.current=!1,L(h.current?"pending":"saved")},[$,L]),Q=o.useCallback(()=>{Ue(e),le(null)},[e]),Z=o.useCallback(()=>h.current,[]),Y=o.useCallback(E=>{$(),ae(E)},[$,ae]);return o.useEffect(()=>{be.current=i,me.current=f,X.current=l,M.current=p,V.current=g,H.current=u},[i,f,l,p,g,u]),o.useEffect(()=>(T.current=!0,()=>{T.current=!1}),[]),o.useEffect(()=>{h.current||y.current||v.current||(w.current=t,ee("saved"))},[t]),o.useEffect(()=>{m.current+=1,h.current=null,y.current=!1,N.current=null,S.current=!1,v.current=!1,w.current=t,le(Ns(e)),ee("saved")},[e]),o.useEffect(()=>{const E=O=>{!h.current&&!y.current&&!v.current&&!X.current?.()||(O.preventDefault(),O.returnValue="")};return window.addEventListener("beforeunload",E),()=>{window.removeEventListener("beforeunload",E)}},[]),o.useEffect(()=>()=>{$(),h.current&&!v.current&&_({silent:!0})},[$,_]),{saveStatus:re,localDraft:ke,serverUpdatedAtRef:w,hasUnsavedChanges:re!=="saved",buildDraft:ve,queueSave:te,flushPendingSave:_,restoreLocalDraft:ne,discardLocalDraft:Q,clearDrafts:ye,resolveConflict:De,pauseForConflict:Y,getPendingDraft:Z,setServerUpdatedAt:Te}}function As(){const e=o.useRef(Promise.resolve()),n=o.useRef(0),t=o.useRef(0),[s,r]=o.useState(!1),i=o.useCallback(u=>{t.current+=1,r(!0);const p=n.current,g=()=>p===n.current?u():void 0,x=e.current.then(g,g);e.current=x.then(()=>{},()=>{});const d=()=>{t.current-=1,t.current===0&&r(!1)};return x.then(d,d),x},[]),l=o.useCallback(()=>{n.current+=1},[]),c=o.useCallback(()=>e.current,[]),f=o.useCallback(()=>t.current>0,[]);return o.useMemo(()=>({execute:i,invalidatePending:l,drain:c,isBusy:s,hasPendingWrites:f}),[c,i,f,l,s])}const Es="NOTE_UPDATE_CONFLICT",ze=e=>{const n=ge(e);return G(n??Number(e)).format("YYYY-MM-DD HH:mm:ss")},ks=e=>e?.extensions?.currentUpdatedAt;function Ts({noteId:e,navigateToNote:n,notify:t}){const s=Ze(),r=o.useRef(null),i=o.useRef(null),[l]=o.useState(ot),c=o.useRef(l),f=o.useRef(null),u=o.useRef(null),p=o.useRef(!1),g=o.useRef(0),x=yt({queryKey:B.notes.detail(e),queryFn:async()=>{const b=await On(e);if(b.type==="error")throw b;return b.note},gcTime:0}),d=x.data,h=x.refetch,y=o.useRef(d.updatedAt),N=o.useRef(d.updatedAt),[S,A]=o.useState(d.title),[w,m]=o.useState(d.pinned),[v,T]=o.useState(d.layout||"wide"),H=o.useRef(v),[M,V]=o.useState(null),[be,X]=o.useState(null),[me,re]=o.useState(0),[ee,ke]=o.useState(()=>ze(d.updatedAt)),[le,$]=o.useState(d.updatedAt),[L,Te]=o.useState(0),[ve,de]=o.useState(!1),ae=o.useRef(!1),{execute:_,invalidatePending:te,drain:ne,isBusy:ye,hasPendingWrites:De}=As(),Q=o.useCallback(b=>{H.current=b,T(b)},[]),Z=o.useCallback((b,C={})=>{y.current=b,N.current=b,ke(ze(b)),$(b),C.confirmSave&&Te(R=>R+1)},[]),Y=o.useCallback(async({updatedAt:b,patch:C,confirmSave:R=!0})=>{const pe=B.notes.detail(e),Le=g.current;return await s.cancelQueries({queryKey:pe,exact:!0}),Le!==g.current?!1:(Z(b,{confirmSave:R}),s.setQueryData(pe,Oe=>Oe&&{...Oe,...C,updatedAt:b}),At({noteId:e,updatedAt:b,editSessionId:c.current}),Et(s),!0)},[Z,e,s]),E=o.useCallback(b=>{ae.current=b,de(b)},[]),O=o.useCallback(()=>f.current?.flushPendingSave({expectedUpdatedAt:y.current})??Promise.resolve("idle"),[]),Me=Rs({noteId:e,initialContent:d.content,initialUpdatedAt:d.updatedAt,editSessionIdRef:c,serverVersionRef:y,executeWrite:_,getContent:()=>r.current?.getContent(),beforeSave:O,hasExternalPendingChanges:()=>ae.current||De(),onSaved:b=>{u.current=null,Z(b,{confirmSave:!0})},onConflict:b=>{V({type:"updated",updatedAt:b,source:"unknown"}),t("This note changed elsewhere. Choose how to resolve the draft.")},onError:t}),{saveStatus:se,localDraft:I,serverUpdatedAtRef:F,hasUnsavedChanges:ue,buildDraft:P,queueSave:q,flushPendingSave:z,restoreLocalDraft:W,discardLocalDraft:we,clearDrafts:J,resolveConflict:fe,pauseForConflict:U,getPendingDraft:oe}=Me,Ce=ue||ve||ye,tt=o.useCallback(async b=>{const C=await z(b);return C==="error"||C==="conflict"||await ne(),C},[ne,z]),dn=o.useCallback(b=>_(async()=>{const C=await Bn({...b,expectedUpdatedAt:y.current});return C.type==="success"&&await Y({updatedAt:C.updateNoteProperties.updatedAt,patch:{properties:C.updateNoteProperties.properties}}),C}),[Y,_]);Cs({allowNextNavigationRef:p,hasExternalPendingChanges:ve||ye,saveStatus:se,flushPendingChanges:tt,notify:t}),o.useEffect(()=>{if(Ce){d.updatedAt!==F.current&&(je(d.updatedAt,F.current)??0)>0&&U(d.updatedAt);return}const b=N.current;if(!(b&&d.updatedAt!==b&&(je(d.updatedAt,b)??0)<0)&&(m(d.pinned),Q(d.layout||"wide"),A(d.title),b!==d.updatedAt)){const C=r.current?.getContent();Z(d.updatedAt),(C===void 0||C!==d.content)&&(X(null),re(R=>R+1))}},[Z,Ce,d.content,d.layout,d.pinned,d.title,d.updatedAt,U,F]),o.useEffect(()=>{M?.type!=="updated"||se==="conflict"||M.updatedAt!==d.updatedAt||(Z(d.updatedAt),V(null))},[Z,M,d.updatedAt,se]),o.useEffect(()=>qn(b=>{const C=ys({event:b,noteId:e,editSessionId:c.current,loadedUpdatedAt:d.updatedAt,acceptedUpdatedAt:F.current,hasUnsavedChanges:Ce});C.type!=="ignore"&&(C.shouldPauseSave&&C.change.type==="updated"&&U(C.change.updatedAt),V(C.change))}),[Ce,d.updatedAt,e,U,F]);const un=o.useCallback(()=>{q(P(S))},[P,q,S]),fn=o.useCallback(b=>{A(b),q(P(b))},[P,q]),pn=o.useCallback(()=>{q(P(S),{immediate:!0})},[P,q,S]),mn=o.useCallback(async b=>{if(ue){Q(b),q(P(S,{layout:b}),{immediate:!0}),t("Layout will be saved with your draft.");return}const C=await z();C==="error"||C==="conflict"||await _(async()=>{const R=await We({id:e,layout:b,editSessionId:c.current,expectedUpdatedAt:F.current});if(R.type==="error"){R.errors[0].code===Es&&(u.current=b,Q(b),U(ks(R.errors[0].details)??F.current)),t(R.errors[0].message);return}await Y({updatedAt:R.updateNote.updatedAt,patch:{layout:b}})&&(u.current=null,Q(b),t("Layout has been updated."))})},[Y,P,_,z,ue,e,t,U,q,F,S]),hn=o.useCallback(async()=>{const b=await z();if(b==="error"||b==="conflict")return;const C=!w;await _(async()=>{const R=await Fn(e,C);if(R.type==="error"){t(R.errors[0].message);return}await Y({updatedAt:R.pinNote.updatedAt,patch:{pinned:C},confirmSave:!1})&&m(C)})},[Y,_,z,w,e,t]),Pe=o.useCallback(()=>({id:e,title:S,createdAt:d.createdAt,updatedAt:F.current||d.updatedAt}),[d.createdAt,d.updatedAt,e,F,S]),gn=o.useCallback(async()=>{const b=r.current?.getMarkdown();if(b===void 0){t("Markdown is not ready yet.");return}try{await navigator.clipboard.writeText(Kt(b,Pe())),t("Copied note as Markdown.")}catch{t("Failed to copy Markdown.")}},[Pe,t]),xn=o.useCallback(async()=>{f.current?.invalidateInFlightSave(),te(),await ne(),g.current+=1;const b=await h();if(b.error||!b.data){t("Failed to reload the latest note state.");return}f.current?.discardPendingChanges(),J(),u.current=null,Z(b.data.updatedAt),A(b.data.title),Q(b.data.layout||"wide"),X(null),re(C=>C+1),V(null)},[J,Z,ne,te,t,h]),bn=o.useCallback(async()=>{if(oe()){u.current=null,V(null),await z({ignoreConflict:!0});return}const C=u.current;if(!C){V(null),await z({ignoreConflict:!0});return}await _(async()=>{const R=await We({id:e,layout:C,editSessionId:c.current,force:!0});if(R.type==="error"){t(R.errors[0].message);return}await Y({updatedAt:R.updateNote.updatedAt,patch:{layout:C}})&&(u.current=null,fe(),V(null),Q(C))})},[Y,_,z,oe,e,t,fe]),vn=o.useCallback(async()=>{const b=oe();if(!b||await O()==="error")return;const R=await Hn({title:nt(b.title||"untitled"),content:nt(b.content),layout:b.layout??v});if(R.type==="error"){t(R.errors[0].message);return}p.current=!0,u.current=null,V(null),J(),Promise.resolve(n(R.createNote.id)).finally(()=>{p.current=!1})},[J,O,oe,v,n,t]),yn=o.useCallback(()=>{I&&(A(I.title),I.layout&&Q(I.layout),X(I.content),re(b=>b+1),W(I))},[I,W]),wn=o.useCallback(()=>{},[]),Cn=o.useCallback(async b=>(f.current?.invalidateInFlightSave(),te(),await ne(),g.current+=1,_(async()=>{const C=await $n(b,F.current);if(C.type==="error")return C;const R=C.restoreNoteSnapshot;return await Y({updatedAt:R.updatedAt,patch:{title:R.title,content:R.content,layout:R.layout,pinned:R.pinned}})&&(c.current=ot(),f.current?.discardPendingChanges(),J(),u.current=null,V(null),A(R.title),Q(R.layout||"wide"),m(R.pinned),X(R.content),re(Le=>Le+1)),C})),[Y,J,ne,_,te]),_e=se==="conflict"&&M?.type==="updated",Nn=_e?oe():null;return{document:{title:S,titleRef:i,isPinned:w,layout:v,getLayout:()=>H.current,properties:d.properties,createdAt:ze(d.createdAt),onTitleChange:fn,onLayoutSave:mn,onTogglePinned:hn},editor:{ref:r,key:`${e}:${me}`,content:be??d.content,getContent:()=>r.current?.getContent()??"",getHtml:()=>r.current?.getHtml(),getMarkdown:()=>r.current?.getMarkdown(),onChange:un},save:{status:se,lastSavedAt:ee,lastSavedVersion:le,confirmationRevision:L,onManualSave:pn,flushPendingChanges:tt},recovery:{localDraftCreatedAt:I?G(I.createdAt).format("YYYY-MM-DD HH:mm:ss"):null,onRestoreLocalDraft:yn,onDiscardLocalDraft:we,onClonePendingDraft:vn},externalChange:{value:M,isConflict:_e,hasConflictDraft:Nn!==null,isBlocking:ws({change:M,isConflict:_e,loadedUpdatedAt:d.updatedAt}),isReloading:x.isRefetching,onReload:xn,onOverwrite:bn},properties:{ref:f,expectedUpdatedAt:F.current,editSessionId:c.current,saveProperties:dn,onPendingChange:E,onSaved:wn},exportDocument:{metadata:Pe(),onCopyMarkdown:gn},snapshots:{restore:Cn}}}const ln=In(Ae),Ds={narrow:"max-w-[640px]",wide:"max-w-[896px]",full:"max-w-full px-4"},Ms=a.jsx(Ge,{title:"Loading note",variant:"none",children:a.jsxs("main",{className:"mx-auto max-w-[896px]",children:[a.jsx(ie,{className:"mb-8",height:123}),a.jsxs("div",{className:"flex flex-col gap-5",children:[a.jsx(ie,{height:135}),a.jsx(ie,{className:"ml-12",height:320}),a.jsx(ie,{height:107}),a.jsx(ie,{height:100})]})]})});function Ps({noteId:e}){return a.jsx(qe,{fallback:a.jsx(ie,{height:107}),errorTitle:"Failed to load reminders",errorDescription:"Retry loading reminder details for this note.",renderError:({error:n,retry:t})=>a.jsx(Qe,{title:"Failed to load reminders",description:"Retry loading reminder details for this note.",error:n,onRetry:t,showBackAction:!1,showHomeAction:!1}),children:a.jsx(ta,{noteId:e})})}function _s({noteId:e}){return a.jsx(qe,{fallback:a.jsx(ie,{height:100}),errorTitle:"Failed to load back references",errorDescription:"Retry loading notes that link back here.",renderError:({error:n,retry:t})=>a.jsx(Qe,{title:"Failed to load back references",description:"Retry loading notes that link back here.",error:n,onRetry:t,showBackAction:!1,showHomeAction:!1}),children:a.jsx(Rr,{noteId:e,render:n=>n?.length?a.jsx(Tt,{icon:a.jsx(xr,{className:"h-3.5 w-3.5"}),title:"Back References",children:a.jsx("ul",{className:"flex flex-col",children:n.map(t=>a.jsx("li",{children:a.jsxs(Un,{to:Ae,params:{id:t.id},className:"flex items-center gap-2 rounded-[10px] px-2.5 py-1.5 text-fg-secondary transition-colors hover:bg-hover-subtle hover:text-fg-default",children:[a.jsx(yr,{className:"h-3.5 w-3.5 shrink-0 text-fg-tertiary"}),a.jsx(j,{as:"span",variant:"body",weight:"medium",className:"text-current",children:t.title})]})},t.id))})}):null})})}function Ls({id:e}){const n=Re(),t=ln.useNavigate(),[s,r]=o.useState(!1),[i,l]=o.useState(!1),[c,f]=o.useState(!1),u=Ts({noteId:e,notify:n,navigateToNote:M=>t({to:Ae,params:{id:M}})}),{onCreate:p,onDelete:g,deleteWarningDialog:x}=Gn(),{document:d,editor:h,save:y,recovery:N,externalChange:S,properties:A,exportDocument:w,snapshots:m}=u,v=()=>t({to:tr,search:{page:1}}),T=async()=>{const M=await y.flushPendingChanges();M==="error"||M==="conflict"||await g(e,v)},H=async()=>{const M=await y.flushPendingChanges();M==="error"||M==="conflict"||await p(d.titleRef.current?.value||"untitled",h.getContent(),d.getLayout())};return a.jsx(Ge,{title:d.title,variant:"none",children:a.jsxs("main",{className:K("mx-auto",Ds[d.layout]),children:[a.jsx(Dr,{title:d.title,titleRef:d.titleRef,isPinned:d.isPinned,createdAt:d.createdAt,saveStatus:y.status,savedAt:y.lastSavedAt,savedVersion:y.lastSavedVersion,saveConfirmationRevision:y.confirmationRevision,onTitleChange:d.onTitleChange,onCopyMarkdown:()=>{w.onCopyMarkdown()},onDownloadDocument:()=>f(!0),onTogglePinned:()=>{d.onTogglePinned()},onChangeLayout:()=>r(!0),onCloneNote:()=>{H()},onRestoreVersion:()=>l(!0),onDelete:()=>{T()},onSave:y.onManualSave}),a.jsx(Jr,{localDraftCreatedAt:N.localDraftCreatedAt,hasSaveError:y.status==="error",onRestoreDraft:N.onRestoreLocalDraft,onDiscardDraft:N.onDiscardLocalDraft,onRetrySave:y.onManualSave,onSaveAsNewNote:()=>{N.onClonePendingDraft()}}),a.jsxs("div",{className:"flex flex-col gap-5",children:[a.jsx(Xn,{ref:A.ref,noteId:e,properties:d.properties,expectedUpdatedAt:A.expectedUpdatedAt,editSessionId:A.editSessionId,disabled:y.status!=="saved",saveProperties:A.saveProperties,onPendingChange:A.onPendingChange,onSaved:A.onSaved}),a.jsx(vs,{ref:h.ref,content:h.content,currentNoteId:e,onChange:h.onChange},h.key),a.jsx(Ps,{noteId:e}),a.jsx(_s,{noteId:e})]}),a.jsx(Er,{isOpen:s,onClose:()=>r(!1),onSave:d.onLayoutSave,currentLayout:d.layout}),a.jsx(Qr,{isOpen:S.isBlocking,isDeleted:S.value?.type==="deleted",isConflict:S.isConflict,hasDraft:S.hasConflictDraft,source:S.value?.source??"unknown",isReloading:S.isReloading,onReload:()=>{S.onReload()},onOverwrite:()=>{S.onOverwrite()},onCloneDraft:()=>{N.onClonePendingDraft()},onOpenTrash:()=>{v()}}),a.jsx(Zr,{isOpen:c,metadata:w.metadata,getHtml:h.getHtml,getMarkdown:h.getMarkdown,onClose:()=>f(!1)}),a.jsx(Xr,{isOpen:i,noteId:e,onClose:()=>l(!1),restoreSnapshot:m.restore}),x]})})}function to(){const{id:e}=ln.useParams();if(!e)throw new Error("Note id is required.");return a.jsx(qe,{fallback:Ms,errorTitle:"Failed to load note",errorDescription:"Retry loading the note editor.",resetKeys:[e],renderError:({error:n,retry:t})=>a.jsx(Ge,{title:"Note",variant:"none",children:a.jsx(Qe,{title:"Failed to load note",description:"Retry loading the note editor.",error:n,onRetry:t})}),children:a.jsx(Ls,{id:e},e)})}export{Ls as NoteContent,to as default};