ocean-brain 0.2.2 → 0.3.1

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 (113) hide show
  1. package/dist/index.js +73 -41
  2. package/dist/mcp.js +587 -26
  3. package/package.json +6 -1
  4. package/scripts/postinstall-prisma.mjs +41 -0
  5. package/server/client/dist/assets/Calendar-DynpmB3D.js +25 -0
  6. package/server/client/dist/assets/Callout-tNHgPhLM.js +1 -0
  7. package/server/client/dist/assets/Graph-DMXLUfCv.js +1 -0
  8. package/server/client/dist/assets/Image-ZxF459sC.js +1 -0
  9. package/server/client/dist/assets/Image.es-Dnn4SMzG.js +1 -0
  10. package/server/client/dist/assets/ModalActionRow-B3vNjcDc.js +1 -0
  11. package/server/client/dist/assets/Note-PDMuj62M.js +1 -0
  12. package/server/client/dist/assets/Note-PEevDKBh.css +1 -0
  13. package/server/client/dist/assets/Reminders-ComtTLuN.js +1 -0
  14. package/server/client/dist/assets/{Search-BANPp2ZV.js → Search-BJeZTbVu.js} +1 -1
  15. package/server/client/dist/assets/SurfaceCard-DAcVMY4f.js +1 -0
  16. package/server/client/dist/assets/Tag-BuNCDGD5.js +1 -0
  17. package/server/client/dist/assets/TagNotes-ajFOP5pZ.js +1 -0
  18. package/server/client/dist/assets/Trash.es-DLiHgjNo.js +1 -0
  19. package/server/client/dist/assets/{image.api-rBH0OSWJ.js → image.api-CjJgNbC0.js} +1 -1
  20. package/server/client/dist/assets/index-CDrZmLC2.js +1 -0
  21. package/server/client/dist/assets/index-DAZMX8bQ.css +1 -0
  22. package/server/client/dist/assets/index-DqFkOWbi.js +205 -0
  23. package/server/client/dist/assets/manage-image-CVyZTDT_.js +1 -0
  24. package/server/client/dist/assets/manage-image-detail-Bp17tylS.js +1 -0
  25. package/server/client/dist/assets/mcp-BpD7VH-d.js +1 -0
  26. package/server/client/dist/assets/placeholder-DSf4QF4v.js +34 -0
  27. package/server/client/dist/assets/trash-Ceb17h_s.js +1 -0
  28. package/server/client/dist/assets/useReminderMutate-CzyOQ_VB.js +82 -0
  29. package/server/client/dist/index.html +2 -2
  30. package/server/dist/app.js +97 -9
  31. package/server/dist/app.js.map +1 -1
  32. package/server/dist/main.js +16 -2
  33. package/server/dist/main.js.map +1 -1
  34. package/server/dist/modules/auth-guard.js +73 -0
  35. package/server/dist/modules/auth-guard.js.map +1 -0
  36. package/server/dist/modules/auth-mode.js +51 -0
  37. package/server/dist/modules/auth-mode.js.map +1 -0
  38. package/server/dist/modules/auth.js +9 -0
  39. package/server/dist/modules/auth.js.map +1 -1
  40. package/server/dist/modules/blocknote.js +154 -2
  41. package/server/dist/modules/blocknote.js.map +1 -1
  42. package/server/dist/modules/error-handler.js +41 -0
  43. package/server/dist/modules/error-handler.js.map +1 -0
  44. package/server/dist/modules/image-upload.js +114 -0
  45. package/server/dist/modules/image-upload.js.map +1 -0
  46. package/server/dist/modules/mcp-admin.js +88 -0
  47. package/server/dist/modules/mcp-admin.js.map +1 -0
  48. package/server/dist/modules/mcp-auth.js +71 -0
  49. package/server/dist/modules/mcp-auth.js.map +1 -0
  50. package/server/dist/modules/mcp-token.js +28 -0
  51. package/server/dist/modules/mcp-token.js.map +1 -0
  52. package/server/dist/modules/note-authoring.js +153 -0
  53. package/server/dist/modules/note-authoring.js.map +1 -0
  54. package/server/dist/modules/note-cleanup.js +207 -0
  55. package/server/dist/modules/note-cleanup.js.map +1 -0
  56. package/server/dist/modules/note-snapshot.js +223 -0
  57. package/server/dist/modules/note-snapshot.js.map +1 -0
  58. package/server/dist/modules/note-trash.js +262 -0
  59. package/server/dist/modules/note-trash.js.map +1 -0
  60. package/server/dist/modules/prisma-runtime.js +46 -0
  61. package/server/dist/modules/prisma-runtime.js.map +1 -0
  62. package/server/dist/modules/recovery-retention.js +26 -0
  63. package/server/dist/modules/recovery-retention.js.map +1 -0
  64. package/server/dist/modules/remote-image.js +176 -0
  65. package/server/dist/modules/remote-image.js.map +1 -0
  66. package/server/dist/modules/tag-organization.js +66 -0
  67. package/server/dist/modules/tag-organization.js.map +1 -0
  68. package/server/dist/modules/use-async.js +2 -4
  69. package/server/dist/modules/use-async.js.map +1 -1
  70. package/server/dist/schema/note/index.js +150 -6
  71. package/server/dist/schema/note/index.js.map +1 -1
  72. package/server/dist/start.js +11 -0
  73. package/server/dist/start.js.map +1 -0
  74. package/server/dist/types/index.js.map +1 -1
  75. package/server/dist/urls.js +3 -2
  76. package/server/dist/urls.js.map +1 -1
  77. package/server/dist/views/auth.js +305 -0
  78. package/server/dist/views/auth.js.map +1 -0
  79. package/server/dist/views/image.js +24 -81
  80. package/server/dist/views/image.js.map +1 -1
  81. package/server/dist/views/index.js +4 -0
  82. package/server/dist/views/index.js.map +1 -1
  83. package/server/dist/views/mcp-admin.js +42 -0
  84. package/server/dist/views/mcp-admin.js.map +1 -0
  85. package/server/dist/views/note.js +124 -0
  86. package/server/dist/views/note.js.map +1 -0
  87. package/server/dist/views/tag.js +23 -0
  88. package/server/dist/views/tag.js.map +1 -0
  89. package/server/prisma/migrations/20260331183000_0010_note_snapshot/migration.sql +13 -0
  90. package/server/prisma/migrations/20260331195000_0011_note_trash_entities/migration.sql +35 -0
  91. package/server/prisma/migrations/20260331213000_0012_image_hash_unique/migration.sql +49 -0
  92. package/server/prisma/migrations/20260404000000_0013_mcp_admin_control/migration.sql +9 -0
  93. package/server/prisma/schema.prisma +66 -1
  94. package/server/client/dist/assets/Calendar-ST5q_8KT.js +0 -48
  95. package/server/client/dist/assets/Callout-CrWW3bg0.js +0 -1
  96. package/server/client/dist/assets/Graph-CzJjt6rP.js +0 -1
  97. package/server/client/dist/assets/Image-Dxg1qqZw.js +0 -1
  98. package/server/client/dist/assets/Image.es-DZ0H6wH1.js +0 -1
  99. package/server/client/dist/assets/Note-Bu7fN3B6.js +0 -6
  100. package/server/client/dist/assets/Note-CCvXqPzv.css +0 -1
  101. package/server/client/dist/assets/Plus.es-CS3WVMDq.js +0 -1
  102. package/server/client/dist/assets/PriorityLegend-D61iBwNW.js +0 -1
  103. package/server/client/dist/assets/Reminders-BjirJMOR.css +0 -1
  104. package/server/client/dist/assets/Reminders-DjWRombU.js +0 -1
  105. package/server/client/dist/assets/Tag-DbKSLTj0.js +0 -1
  106. package/server/client/dist/assets/TagNotes-B6s7jtL7.js +0 -1
  107. package/server/client/dist/assets/index-BzWwEDoL.js +0 -1
  108. package/server/client/dist/assets/index-CF5_ZCYN.js +0 -162
  109. package/server/client/dist/assets/index-DjZk2Gpg.css +0 -1
  110. package/server/client/dist/assets/manage-image-detail-DOx6QsCl.js +0 -1
  111. package/server/client/dist/assets/manage-image-g-MC6Fkc.js +0 -1
  112. package/server/client/dist/assets/placeholder-DV3u6MrA.js +0 -34
  113. package/server/client/dist/assets/useReminderMutate-CU-UinGn.js +0 -82
@@ -1 +0,0 @@
1
- import{j as a}from"./note-vendor-BofYbzmZ.js";import{a4 as g,ab as j,L as x,N as y,x as E,ac as C,a8 as M,Y as _,a1 as w,u as h,q as m,ad as Z,P as v,a5 as p,a as L,ae as I,B as f,af as T,f as F,aa as S}from"./index-CF5_ZCYN.js";import{I as R,n as k}from"./Image-Dxg1qqZw.js";import{a as e}from"./graph-vendor-CUxe67Lr.js";import{a as D,d as q}from"./image.api-rBH0OSWJ.js";import{I as z}from"./Image.es-DZ0H6wH1.js";import"./note-core-BCgMq5QA.js";const G=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M178,36c-20.09,0-37.92,7.93-50,21.56C115.92,43.93,98.09,36,78,36a66.08,66.08,0,0,0-66,66c0,72.34,105.81,130.14,110.31,132.57a12,12,0,0,0,11.38,0C138.19,232.14,244,174.34,244,102A66.08,66.08,0,0,0,178,36Zm-5.49,142.36A328.69,328.69,0,0,1,128,210.16a328.69,328.69,0,0,1-44.51-31.8C61.82,159.77,36,131.42,36,102A42,42,0,0,1,78,60c17.8,0,32.7,9.4,38.89,24.54a12,12,0,0,0,22.22,0C145.3,69.4,160.2,60,178,60a42,42,0,0,1,42,42C220,131.42,194.18,159.77,172.51,178.36Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M232,102c0,66-104,122-104,122S24,168,24,102A54,54,0,0,1,78,48c22.59,0,41.94,12.31,50,32,8.06-19.69,27.41-32,50-32A54,54,0,0,1,232,102Z",opacity:"0.2"}),e.createElement("path",{d:"M178,40c-20.65,0-38.73,8.88-50,23.89C116.73,48.88,98.65,40,78,40a62.07,62.07,0,0,0-62,62c0,70,103.79,126.66,108.21,129a8,8,0,0,0,7.58,0C136.21,228.66,240,172,240,102A62.07,62.07,0,0,0,178,40ZM128,214.8C109.74,204.16,32,155.69,32,102A46.06,46.06,0,0,1,78,56c19.45,0,35.78,10.36,42.6,27a8,8,0,0,0,14.8,0c6.82-16.67,23.15-27,42.6-27a46.06,46.06,0,0,1,46,46C224,155.61,146.24,204.15,128,214.8Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M240,102c0,70-103.79,126.66-108.21,129a8,8,0,0,1-7.58,0C119.79,228.66,16,172,16,102A62.07,62.07,0,0,1,78,40c20.65,0,38.73,8.88,50,23.89C139.27,48.88,157.35,40,178,40A62.07,62.07,0,0,1,240,102Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M178,42c-21,0-39.26,9.47-50,25.34C117.26,51.47,99,42,78,42a60.07,60.07,0,0,0-60,60c0,29.2,18.2,59.59,54.1,90.31a334.68,334.68,0,0,0,53.06,37,6,6,0,0,0,5.68,0,334.68,334.68,0,0,0,53.06-37C219.8,161.59,238,131.2,238,102A60.07,60.07,0,0,0,178,42ZM128,217.11C111.59,207.64,30,157.72,30,102A48.05,48.05,0,0,1,78,54c20.28,0,37.31,10.83,44.45,28.27a6,6,0,0,0,11.1,0C140.69,64.83,157.72,54,178,54a48.05,48.05,0,0,1,48,48C226,157.72,144.41,207.64,128,217.11Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M178,40c-20.65,0-38.73,8.88-50,23.89C116.73,48.88,98.65,40,78,40a62.07,62.07,0,0,0-62,62c0,70,103.79,126.66,108.21,129a8,8,0,0,0,7.58,0C136.21,228.66,240,172,240,102A62.07,62.07,0,0,0,178,40ZM128,214.8C109.74,204.16,32,155.69,32,102A46.06,46.06,0,0,1,78,56c19.45,0,35.78,10.36,42.6,27a8,8,0,0,0,14.8,0c6.82-16.67,23.15-27,42.6-27a46.06,46.06,0,0,1,46,46C224,155.61,146.24,204.15,128,214.8Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M178,44c-21.44,0-39.92,10.19-50,27.07C117.92,54.19,99.44,44,78,44a58.07,58.07,0,0,0-58,58c0,28.59,18,58.47,53.4,88.79a333.81,333.81,0,0,0,52.7,36.73,4,4,0,0,0,3.8,0,333.81,333.81,0,0,0,52.7-36.73C218,160.47,236,130.59,236,102A58.07,58.07,0,0,0,178,44ZM128,219.42c-14-8-100-59.35-100-117.42A50.06,50.06,0,0,1,78,52c21.11,0,38.85,11.31,46.3,29.51a4,4,0,0,0,7.4,0C139.15,63.31,156.89,52,178,52a50.06,50.06,0,0,1,50,50C228,160,142,211.46,128,219.42Z"}))]]),B=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M218.34,119.6,183.6,154.34a46.58,46.58,0,0,1-44.31,12.26c-.31.34-.62.67-.95,1L103.6,202.34A46.63,46.63,0,1,1,37.66,136.4L72.4,101.66A46.6,46.6,0,0,1,116.71,89.4c.31-.34.62-.67,1-1L152.4,53.66a46.63,46.63,0,0,1,65.94,65.94Z",opacity:"0.2"}),e.createElement("path",{d:"M240,88.23a54.43,54.43,0,0,1-16,37L189.25,160a54.27,54.27,0,0,1-38.63,16h-.05A54.63,54.63,0,0,1,96,119.84a8,8,0,0,1,16,.45A38.62,38.62,0,0,0,150.58,160h0a38.39,38.39,0,0,0,27.31-11.31l34.75-34.75a38.63,38.63,0,0,0-54.63-54.63l-11,11A8,8,0,0,1,135.7,59l11-11A54.65,54.65,0,0,1,224,48,54.86,54.86,0,0,1,240,88.23ZM109,185.66l-11,11A38.41,38.41,0,0,1,70.6,208h0a38.63,38.63,0,0,1-27.29-65.94L78,107.31A38.63,38.63,0,0,1,144,135.71a8,8,0,0,0,7.78,8.22H152a8,8,0,0,0,8-7.78A54.86,54.86,0,0,0,144,96a54.65,54.65,0,0,0-77.27,0L32,130.75A54.62,54.62,0,0,0,70.56,224h0a54.28,54.28,0,0,0,38.64-16l11-11A8,8,0,0,0,109,185.66Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM115.7,192.49a43.31,43.31,0,0,1-55-66.43l25.37-25.37a43.35,43.35,0,0,1,61.25,0,42.9,42.9,0,0,1,9.95,15.43,8,8,0,1,1-15,5.6A27.33,27.33,0,0,0,97.37,112L72,137.37a27.32,27.32,0,0,0,34.68,41.91,8,8,0,1,1,9,13.21Zm79.61-62.55-25.37,25.37A43,43,0,0,1,139.32,168h0a43.35,43.35,0,0,1-40.53-28.12,8,8,0,1,1,15-5.6A27.35,27.35,0,0,0,139.28,152h0a27.14,27.14,0,0,0,19.32-8L184,118.63a27.32,27.32,0,0,0-34.68-41.91,8,8,0,1,1-9-13.21,43.32,43.32,0,0,1,55,66.43Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M238,88.18a52.42,52.42,0,0,1-15.4,35.66l-34.75,34.75A52.28,52.28,0,0,1,150.62,174h-.05A52.63,52.63,0,0,1,98,119.9a6,6,0,0,1,6-5.84h.17a6,6,0,0,1,5.83,6.16A40.62,40.62,0,0,0,150.58,162h0a40.4,40.4,0,0,0,28.73-11.9l34.75-34.74A40.63,40.63,0,0,0,156.63,57.9l-11,11a6,6,0,0,1-8.49-8.49l11-11a52.62,52.62,0,0,1,74.43,0A52.83,52.83,0,0,1,238,88.18Zm-127.62,98.9-11,11A40.36,40.36,0,0,1,70.6,210h0a40.63,40.63,0,0,1-28.7-69.36L76.62,105.9A40.63,40.63,0,0,1,146,135.77a6,6,0,0,0,5.83,6.16H152a6,6,0,0,0,6-5.84A52.63,52.63,0,0,0,68.14,97.42L33.38,132.16A52.63,52.63,0,0,0,70.56,222h0a52.26,52.26,0,0,0,37.22-15.42l11-11a6,6,0,1,0-8.49-8.48Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M240,88.23a54.43,54.43,0,0,1-16,37L189.25,160a54.27,54.27,0,0,1-38.63,16h-.05A54.63,54.63,0,0,1,96,119.84a8,8,0,0,1,16,.45A38.62,38.62,0,0,0,150.58,160h0a38.39,38.39,0,0,0,27.31-11.31l34.75-34.75a38.63,38.63,0,0,0-54.63-54.63l-11,11A8,8,0,0,1,135.7,59l11-11A54.65,54.65,0,0,1,224,48,54.86,54.86,0,0,1,240,88.23ZM109,185.66l-11,11A38.41,38.41,0,0,1,70.6,208h0a38.63,38.63,0,0,1-27.29-65.94L78,107.31A38.63,38.63,0,0,1,144,135.71a8,8,0,0,0,16,.45A54.86,54.86,0,0,0,144,96a54.65,54.65,0,0,0-77.27,0L32,130.75A54.62,54.62,0,0,0,70.56,224h0a54.28,54.28,0,0,0,38.64-16l11-11A8,8,0,0,0,109,185.66Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M236,88.12a50.44,50.44,0,0,1-14.81,34.31l-34.75,34.74A50.33,50.33,0,0,1,150.62,172h-.05A50.63,50.63,0,0,1,100,120a4,4,0,0,1,4-3.89h.11a4,4,0,0,1,3.89,4.11A42.64,42.64,0,0,0,150.58,164h0a42.32,42.32,0,0,0,30.14-12.49l34.75-34.74a42.63,42.63,0,1,0-60.29-60.28l-11,11a4,4,0,0,1-5.66-5.65l11-11A50.64,50.64,0,0,1,236,88.12ZM111.78,188.49l-11,11A42.33,42.33,0,0,1,70.6,212h0a42.63,42.63,0,0,1-30.11-72.77l34.75-34.74A42.63,42.63,0,0,1,148,135.82a4,4,0,0,0,8,.23A50.64,50.64,0,0,0,69.55,98.83L34.8,133.57A50.63,50.63,0,0,0,70.56,220h0a50.33,50.33,0,0,0,35.81-14.83l11-11a4,4,0,1,0-5.65-5.66Z"}))]]),A=e.forwardRef((n,l)=>e.createElement(g,{ref:l,...n,weights:G}));A.displayName="HeartIcon";const O=A,b=e.forwardRef((n,l)=>e.createElement(g,{ref:l,...n,weights:B}));b.displayName="LinkIcon";const H=b;function U({id:n,title:l,tags:s,createdAt:d,updatedAt:o}){const c=new Date(Number(d)),r=j(Number(o));return a.jsx("div",{className:"border-b-2 border-dashed border-border-subtle last:border-b-0",children:a.jsxs("div",{className:"py-4 flex flex-col gap-2",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("span",{className:"text-fg-tertiary text-xs font-medium",children:r}),a.jsxs("span",{className:"text-fg-placeholder text-xs",children:["(",c.toDateString(),")"]})]}),a.jsx(x,{className:"font-bold text-fg-default hover:text-accent-primary transition-colors",to:y,params:{id:n},children:l||"Untitled"}),s&&s.length>0&&a.jsx("div",{className:"flex flex-wrap gap-1.5",children:s.map(i=>a.jsx(x,{to:E,params:{id:i.id},search:{page:1},children:a.jsx(C,{name:i.name})},i.id))})]})})}const u=F(S),W=()=>{const n=M(),l=_(),{id:s}=u.useParams(),d=u.useNavigate(),o=w(),{data:c}=h({queryKey:m.images.detail(s??""),async queryFn(){const t=await D(s);if(t.type==="error")throw t;return t.image},enabled:!!s}),{data:r}=h({queryKey:m.images.notes(s??""),async queryFn(){const t=await Z(c.url);if(t.type==="error")throw t;return t.imageNotes},enabled:!!c}),i=!r||(r?.length||0)>0,N=async()=>{if(!i&&await n("Are you really sure?")){const t=await q(s);if(t.type==="error"){l(t.errors[0].message);return}if(!t.deleteImage){l("Failed to delete image");return}d({to:p,search:{page:1}})}};return a.jsxs(v,{title:"Image Detail",variant:"none",children:[a.jsxs(x,{to:p,search:{page:1},className:"inline-flex items-center gap-1 text-sm font-bold text-fg-tertiary hover:text-accent-primary transition-colors mb-4",children:[a.jsx(L,{size:16}),"Back to Images"]}),a.jsxs("div",{className:"flex gap-6 flex-col lg:flex-row",children:[c&&a.jsx("div",{className:"w-full lg:w-[400px] lg:flex-shrink-0",children:a.jsxs("div",{className:"bg-subtle rounded-[16px_5px_17px_4px/5px_13px_5px_15px] border-2 border-border shadow-sketchy overflow-hidden",children:[a.jsx("div",{className:"bg-muted/30 p-4 flex items-center justify-center",children:a.jsx(R,{className:"max-h-80 w-auto max-w-full object-contain rounded-sketchy-sm",src:c.url})}),a.jsxs("div",{className:"p-4 flex flex-col gap-3 border-t-2 border-dashed border-border-subtle",children:[a.jsx("div",{className:"flex items-center justify-between",children:a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(H,{size:14,className:"text-fg-tertiary"}),a.jsxs("span",{className:"text-sm font-bold text-fg-secondary",children:[r?.length||0," ",(r?.length||0)===1?"reference":"references"]})]})}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx(I,{content:i?"Cannot delete while referenced by notes":"Delete this image",side:"bottom",children:a.jsxs(f,{variant:"danger",size:"sm",className:"flex-1",disabled:i,onClick:N,children:[a.jsx(k,{size:16}),a.jsx("span",{children:"Delete"})]})}),a.jsxs(f,{variant:"ghost",size:"sm",className:"flex-1",onClick:async()=>{await T("heroBanner",c.url),await o.invalidateQueries({queryKey:m.ui.heroBanner(),exact:!0})},children:[a.jsx(O,{size:16,className:"fill-red-500 text-red-500"}),a.jsx("span",{children:"Set hero banner"})]})]})]})]})}),a.jsx("div",{className:"flex-1 min-w-0",children:r&&r.length>0?a.jsxs("div",{className:"bg-subtle rounded-[16px_5px_17px_4px/5px_13px_5px_15px] border-2 border-border shadow-sketchy p-4",children:[a.jsx("p",{className:"text-sm font-bold mb-2 pb-2 border-b-2 border-dashed border-border-subtle",children:"Referenced Notes"}),a.jsx("ul",{className:"flex flex-col",children:r.map(t=>a.jsx("li",{children:a.jsx(U,{...t})},t.id))})]}):a.jsxs("div",{className:"bg-subtle rounded-[16px_5px_17px_4px/5px_13px_5px_15px] border-2 border-border p-8 flex flex-col items-center justify-center text-center",children:[a.jsx(z,{size:32,className:"text-fg-disabled mb-2"}),a.jsx("p",{className:"text-sm font-bold text-fg-tertiary",children:"No notes reference this image"}),a.jsx("p",{className:"text-xs text-fg-placeholder mt-1",children:"This image can be safely deleted"})]})})]})]})};export{W as default};
@@ -1 +0,0 @@
1
- import{j as e}from"./note-vendor-BofYbzmZ.js";import{l as g,q as u,a8 as y,a1 as j,w as I,a9 as b,P as v,Q as _,F as c,L as E,aa as A,B as w,h as M,E as N,S as d,f as T,a5 as G}from"./index-CF5_ZCYN.js";import"./graph-vendor-CUxe67Lr.js";import{I as S,n as k}from"./Image-Dxg1qqZw.js";import{f as R,d as P}from"./image.api-rBH0OSWJ.js";import"./note-core-BCgMq5QA.js";const C=t=>{const{data:n}=g({queryKey:u.images.list(t.searchParams),async queryFn(){const r=await R({offset:t.searchParams.offset,limit:t.searchParams.limit});if(r.type==="error")throw r;return r.allImages}});return t.render(n)},q=240,F=20,L=4,m=T(G),U=()=>{const t=y(),n=j(),r=m.useNavigate(),{page:o}=m.useSearch(),{containerRef:h,limit:i}=I({minItemWidth:q,gap:F,rows:L}),x=b({mutationFn:P,onSuccess:s=>{if(s.type==="error")throw s;n.invalidateQueries({queryKey:u.images.listAll(),exact:!1})}}),p=async s=>{await t("Are you really sure?")&&x.mutate(s)};return e.jsx(v,{title:"Images",variant:"subtle",description:"Manage images uploaded to your notes",children:e.jsx("div",{ref:h,children:e.jsx(_,{fallback:e.jsxs("div",{className:"grid gap-5",style:{gridTemplateColumns:"repeat(auto-fill, minmax(240px, 1fr))"},children:[e.jsx(d,{height:"200px"}),e.jsx(d,{height:"200px"}),e.jsx(d,{height:"200px"})]}),errorTitle:"Failed to load images",errorDescription:"Retry loading uploaded image metadata.",resetKeys:[o,i],children:e.jsx(C,{searchParams:{offset:(o-1)*i,limit:i},render:({images:s,totalCount:l})=>e.jsx(c,{fallback:e.jsx(N,{icon:"🖼️",title:"There are no images",description:"Try drag and drop an image on the note editor."}),children:s.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"grid gap-5",style:{gridTemplateColumns:"repeat(auto-fill, minmax(240px, 1fr))"},children:s.map(a=>e.jsxs("div",{className:"rounded-[12px_4px_13px_3px/4px_10px_4px_12px] overflow-hidden border-2 border-border shadow-sketchy hover:shadow-sketchy-lg hover:-translate-y-0.5 active:translate-x-0.5 active:translate-y-0.5 active:shadow-none transition-all duration-200",children:[e.jsx(E,{to:A,params:{id:a.id},children:e.jsx(S,{className:"h-48 w-full object-cover",src:a.url,alt:a.id})}),e.jsxs("div",{className:"flex p-2 justify-between items-center border-t-2 border-dashed border-border-subtle bg-subtle",children:[e.jsxs("span",{className:"text-xs font-bold text-fg-secondary px-1",children:[a.referenceCount," refs"]}),e.jsx(w,{variant:"danger",size:"icon-sm",disabled:a.referenceCount>0,onClick:()=>p(a.id),children:e.jsx(k,{className:"h-4 w-4"})})]})]},a.id))}),e.jsx(c,{fallback:null,children:l&&i<l&&e.jsx(M,{page:o,last:Math.ceil(l/i),onChange:a=>{r({search:f=>({...f,page:a})})}})})]})})})})})})};export{U as default};
@@ -1,34 +0,0 @@
1
- import{j as e}from"./note-vendor-BofYbzmZ.js";import{a4 as O,c as E,Y as D,a1 as I,q as x,ah as $,u as H,a9 as P,P as q,B as g,O as k,ai as F,aj as C,ak as Z,M as p,I as f,J as j,F as Q,h as T,f as K,a6 as B}from"./index-CF5_ZCYN.js";import{a}from"./graph-vendor-CUxe67Lr.js";import{C as U}from"./Callout-CrWW3bg0.js";import{n as X}from"./Plus.es-CS3WVMDq.js";import"./note-core-BCgMq5QA.js";const Y=new Map([["bold",a.createElement(a.Fragment,null,a.createElement("path",{d:"M216.49,168.49a12,12,0,0,1-17,0L128,97,56.49,168.49a12,12,0,0,1-17-17l80-80a12,12,0,0,1,17,0l80,80A12,12,0,0,1,216.49,168.49Z"}))],["duotone",a.createElement(a.Fragment,null,a.createElement("path",{d:"M208,160H48l80-80Z",opacity:"0.2"}),a.createElement("path",{d:"M213.66,154.34l-80-80a8,8,0,0,0-11.32,0l-80,80A8,8,0,0,0,48,168H208a8,8,0,0,0,5.66-13.66ZM67.31,152,128,91.31,188.69,152Z"}))],["fill",a.createElement(a.Fragment,null,a.createElement("path",{d:"M215.39,163.06A8,8,0,0,1,208,168H48a8,8,0,0,1-5.66-13.66l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,215.39,163.06Z"}))],["light",a.createElement(a.Fragment,null,a.createElement("path",{d:"M212.24,164.24a6,6,0,0,1-8.48,0L128,88.49,52.24,164.24a6,6,0,0,1-8.48-8.48l80-80a6,6,0,0,1,8.48,0l80,80A6,6,0,0,1,212.24,164.24Z"}))],["regular",a.createElement(a.Fragment,null,a.createElement("path",{d:"M213.66,165.66a8,8,0,0,1-11.32,0L128,91.31,53.66,165.66a8,8,0,0,1-11.32-11.32l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,213.66,165.66Z"}))],["thin",a.createElement(a.Fragment,null,a.createElement("path",{d:"M210.83,162.83a4,4,0,0,1-5.66,0L128,85.66,50.83,162.83a4,4,0,0,1-5.66-5.66l80-80a4,4,0,0,1,5.66,0l80,80A4,4,0,0,1,210.83,162.83Z"}))]]),L=a.forwardRef((l,r)=>a.createElement(O,{ref:r,...l,weights:Y}));L.displayName="CaretUpIcon";const G=L,b=["id","name","template","replacement","createdAt","updatedAt"],J=new Set(b),z=`query FetchPlaceholders(
2
- $searchFilter: SearchFilterInput,
3
- $pagination: PaginationInput
4
- ) {
5
- allPlaceholders(
6
- searchFilter: $searchFilter,
7
- pagination: $pagination
8
- ) {
9
- totalCount
10
- placeholders {
11
- __PLACEHOLDER_FIELDS__ }
12
- }
13
- }`,V=l=>{const r=l&&l.length>0?l.filter(n=>J.has(n)):b;return Array.from(new Set(r)).map(n=>" "+n).join(`
14
- `)+`
15
- `},W=async({limit:l=25,offset:r=0,query:d="",fields:n}={})=>{const h=V(n),c=z.replace("__PLACEHOLDER_FIELDS__",h);return E(c,{searchFilter:{query:d},pagination:{limit:l,offset:r}})},ee=l=>E(`mutation CreatePlaceholder(
16
- $name: String!,
17
- $template: String!,
18
- $replacement: String!
19
- ) {
20
- createPlaceholder(
21
- name: $name,
22
- template: $template,
23
- replacement: $replacement
24
- ) {
25
- id
26
- name
27
- template
28
- replacement
29
- createdAt
30
- updatedAt
31
- }
32
- }`,l),ae=l=>E(`mutation DeletePlaceholder($id: ID!) {
33
- deletePlaceholder(id: $id)
34
- }`,{id:l}),_="bg-subtle flex flex-col gap-1 p-4 rounded-[10px_3px_11px_3px/3px_8px_3px_10px] border-2 border-border-secondary font-bold",v=K(B),oe=()=>{const l=D(),r=I(),d=v.useNavigate(),{page:n}=v.useSearch(),[h,c]=a.useState(!1),[u,A]=a.useState(!1),[s,m]=a.useState({name:"",template:"",replacement:""}),o=25,S=x.placeholders.list({limit:o,offset:(n-1)*o}),[N]=a.useState($),{data:i,isLoading:w}=H({queryKey:S,queryFn:async()=>{const t=await W({offset:(n-1)*o,limit:o});if(t.type==="error")throw t;return t.allPlaceholders}}),y=P({mutationFn:ee,onSuccess:async()=>{l("Placeholder added successfully"),c(!1),m({name:"",template:"",replacement:""}),await r.invalidateQueries({queryKey:x.placeholders.listAll(),exact:!1})}}),R=P({mutationFn:ae,onSuccess:async()=>{l("Placeholder deleted successfully"),await r.invalidateQueries({queryKey:x.placeholders.listAll(),exact:!1})}});return e.jsxs(q,{title:"Placeholders",variant:"subtle",description:"Manage template variables for note cloning",children:[e.jsx(U,{className:"mb-4",children:e.jsxs("div",{className:"flex gap-2 items-center justify-between",children:[e.jsx("span",{children:"Placeholders will be replaced with new note data during cloning."}),e.jsx(g,{onClick:()=>c(!0),children:e.jsx(X,{width:20,height:20})})]})}),e.jsxs("div",{className:"flex flex-col gap-3 mt-3",children:[e.jsxs("button",{type:"button",onClick:()=>A(!u),className:"bg-subtle flex gap-2 items-center justify-between p-4 rounded-[10px_3px_11px_3px/3px_8px_3px_10px] border-2 border-border-secondary font-bold",children:[e.jsx("div",{children:"System Placeholders"}),e.jsx("div",{className:"w-6 h-6",children:u?e.jsx(G,{}):e.jsx(k,{})})]}),u&&e.jsx("div",{className:"grid gap-3 grid-cols-1 md:grid-cols-2 lg:grid-cols-3",children:N.map(t=>e.jsxs("div",{className:_,children:[e.jsx("div",{className:"text-sm",children:t.name}),e.jsxs("div",{className:"text-fg-tertiary text-xs font-medium",children:[F,t.template,C," → '",t.replacement,"'"]})]},t.name))}),!w&&i?.placeholders&&i.placeholders.length>0&&e.jsx("div",{className:"grid gap-3 grid-cols-1 md:grid-cols-2 lg:grid-cols-3",children:i.placeholders.map(t=>e.jsxs("div",{className:`${_} relative`,children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"text-sm",children:t.name}),e.jsx("button",{type:"button",className:"w-5 h-5 hover:text-red-500 transition-colors",onClick:()=>R.mutate(t.id.toString()),children:e.jsx(Z,{})})]}),e.jsxs("div",{className:"text-fg-tertiary text-xs font-medium",children:[F,t.template,C," → '",t.replacement,"'"]})]},t.id))})]}),e.jsxs(p,{isOpen:h,onClose:()=>c(!1),children:[e.jsx(p.Header,{title:"Add Placeholder",onClose:()=>c(!1)}),e.jsx(p.Body,{children:e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsx(f,{htmlFor:"name",children:"Name:"}),e.jsx(j,{id:"name",type:"text",value:s.name,onChange:t=>m({...s,name:t.target.value}),placeholder:"Description of this placeholder"}),e.jsx(f,{htmlFor:"template",children:"Placeholder:"}),e.jsx(j,{id:"template",type:"text",value:s.template,onChange:t=>m({...s,template:t.target.value}),placeholder:"note_app"}),e.jsx(f,{htmlFor:"replacement",children:"Replacement:"}),e.jsx(j,{id:"replacement",type:"text",value:s.replacement,onChange:t=>m({...s,replacement:t.target.value}),placeholder:"Ocean Brain"})]})}),e.jsx(p.Footer,{children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(g,{variant:"ghost",onClick:()=>c(!1),children:"Cancel"}),e.jsx(g,{isLoading:y.isPending,onClick:()=>{if(!s.name||!s.template||!s.replacement){l("All fields are required");return}y.mutate({name:s.name,template:s.template,replacement:s.replacement})},children:"Add"})]})})]}),e.jsx(Q,{fallback:null,children:i?.totalCount&&o<i.totalCount&&e.jsx(T,{page:n,last:Math.ceil(i.totalCount/o),onChange:t=>{d({search:M=>({...M,page:t})})}})})]})};export{oe as default};
@@ -1,82 +0,0 @@
1
- import{j as y}from"./note-vendor-BofYbzmZ.js";import{c as u,l as f,q as n,Y as R,a1 as $}from"./index-CF5_ZCYN.js";import{a as l}from"./graph-vendor-CUxe67Lr.js";const g=(e={})=>({limit:e.limit??10,offset:e.offset??0}),D=async(e,t)=>u(`
2
- query FetchNoteReminders($noteId: ID!, $pagination: PaginationInput) {
3
- noteReminders(noteId: $noteId, pagination: $pagination) {
4
- totalCount
5
- reminders {
6
- id
7
- noteId
8
- reminderDate
9
- priority
10
- content
11
- completed
12
- createdAt
13
- updatedAt
14
- }
15
- }
16
- }
17
- `,{noteId:e,pagination:g(t)}),A=async e=>u(`
18
- query FetchUpcomingReminders($pagination: PaginationInput) {
19
- upcomingReminders(pagination: $pagination) {
20
- totalCount
21
- reminders {
22
- id
23
- noteId
24
- reminderDate
25
- priority
26
- content
27
- completed
28
- createdAt
29
- updatedAt
30
- note {
31
- id
32
- title
33
- }
34
- }
35
- }
36
- }
37
- `,{pagination:g(e)}),q=async e=>{const{noteId:t,reminderDate:a,priority:o="medium",content:i}=e;return u(`
38
- mutation CreateReminder($noteId: ID!, $reminderDate: String!, $priority: ReminderPriority, $content: String) {
39
- createReminder(
40
- noteId: $noteId,
41
- reminderDate: $reminderDate,
42
- priority: $priority,
43
- content: $content
44
- ) {
45
- id
46
- noteId
47
- reminderDate
48
- completed
49
- priority
50
- createdAt
51
- updatedAt
52
- }
53
- }
54
- `,{noteId:t,reminderDate:a.toISOString(),priority:o,content:i})},I=async({id:e,reminderDate:t,completed:a,priority:o,content:i})=>{const r={id:e};return t&&(r.reminderDate=t.toISOString()),a!==void 0&&(r.completed=a),o&&(r.priority=o),i!==void 0&&(r.content=i),u(`
55
- mutation UpdateReminder(
56
- $id: ID!,
57
- $reminderDate: String,
58
- $completed: Boolean,
59
- $priority: ReminderPriority,
60
- $content: String
61
- ) {
62
- updateReminder(
63
- id: $id,
64
- reminderDate: $reminderDate,
65
- completed: $completed,
66
- priority: $priority,
67
- content: $content
68
- ) {
69
- id
70
- noteId
71
- reminderDate
72
- completed
73
- priority
74
- createdAt
75
- updatedAt
76
- }
77
- }
78
- `,r)},x=async e=>u(`
79
- mutation DeleteReminder($id: ID!) {
80
- deleteReminder(id: $id)
81
- }
82
- `,{id:e});function P({noteId:e,searchParams:t,render:a}){const{data:o}=f({queryKey:e?n.reminders.note(e,t):n.reminders.upcoming(t),queryFn:async()=>{if(e){const r=await D(e,t);if(r.type==="error")throw r;return r.noteReminders}const i=await A(t);if(i.type==="error")throw i;return i.upcomingReminders}});return y.jsx(y.Fragment,{children:a(o)})}function w(){const e=R(),t=$(),a=l.useCallback(async(r,m,d="medium",s,c)=>{const p=await q({noteId:r,reminderDate:m,priority:d,content:c});if(p.type==="error"){e(p.errors[0].message);return}await Promise.all([t.invalidateQueries({queryKey:n.reminders.noteAllPages(r),exact:!1}),t.invalidateQueries({queryKey:n.reminders.upcomingAllPages(),exact:!1}),t.invalidateQueries({queryKey:n.reminders.inDateRangeAll(),exact:!1})]),s&&s()},[t,e]),o=l.useCallback(async(r,m,d,s)=>{const c=await I({id:r,...d});if(c.type==="error"){e(c.errors[0].message);return}await Promise.all([t.invalidateQueries({queryKey:n.reminders.noteAllPages(m),exact:!1}),t.invalidateQueries({queryKey:n.reminders.upcomingAllPages(),exact:!1}),t.invalidateQueries({queryKey:n.reminders.inDateRangeAll(),exact:!1})]),s&&s()},[t,e]),i=l.useCallback(async(r,m,d)=>{const s=await x(r);if(s.type==="error"){e(s.errors[0].message);return}await Promise.all([t.invalidateQueries({queryKey:n.reminders.noteAllPages(m),exact:!1}),t.invalidateQueries({queryKey:n.reminders.upcomingAllPages(),exact:!1}),t.invalidateQueries({queryKey:n.reminders.inDateRangeAll(),exact:!1})]),d&&d()},[t,e]);return{onCreate:a,onUpdate:o,onDelete:i}}export{P as R,w as u};