@hiai-gg/docsmint 0.3.6 → 0.3.8

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 (237) hide show
  1. package/backend/src/lib/logger.ts +45 -15
  2. package/dist/backend/index.js +238 -150
  3. package/dist/frontend/CategoryDialog-DphkZqIB.js +611 -0
  4. package/dist/frontend/ConfirmDialog-BLF3x_hr.js +214 -0
  5. package/dist/frontend/CreateSnapshotDialog-D5vPvFTL.js +216 -0
  6. package/dist/frontend/DatePicker-CLNTdvTk.js +259 -0
  7. package/dist/frontend/DeleteDialog-DxYFJivN.js +174 -0
  8. package/dist/frontend/FolderDialog-CRVZM2Oi.js +250 -0
  9. package/dist/frontend/FolderNode-C2zG7uii.js +298 -0
  10. package/dist/frontend/FolderTreeSelector-CyB8y2Sm.js +103 -0
  11. package/dist/frontend/Icon-CooFj4Ee.js +64 -0
  12. package/dist/frontend/SettingsDialog-DCM4-N6_.js +1016 -0
  13. package/dist/frontend/ShareDialog-DYu3RKQu.js +165 -0
  14. package/dist/frontend/TagCreateDialog-DXQs2bL9.js +260 -0
  15. package/dist/frontend/api/attachments.d.ts +6 -0
  16. package/dist/frontend/api/attachments.js +2 -0
  17. package/dist/frontend/api/categories.js +1 -1
  18. package/dist/frontend/api/documents.js +1 -1
  19. package/dist/frontend/api/folders.js +1 -1
  20. package/dist/frontend/api/settings.js +1 -1
  21. package/dist/frontend/api/share.d.ts +5 -0
  22. package/dist/frontend/api/share.js +2 -0
  23. package/dist/frontend/api/tags.js +1 -1
  24. package/dist/frontend/api-keys-CpkrA8rD.js +35 -0
  25. package/dist/frontend/attachments-BuILSs56.js +50 -0
  26. package/dist/frontend/{settings-PCrOtied.js → auth-client-Cygmp1I2.js} +205 -265
  27. package/dist/frontend/awareness-snQ3RD9f.js +3714 -0
  28. package/dist/frontend/camera-iKXDOOWT.js +29 -0
  29. package/dist/frontend/{categories-BE6ZpZl8.js → categories-izQovv2w.js} +1 -1
  30. package/dist/frontend/check-D-UuvBuh.js +25 -0
  31. package/dist/frontend/chevron-down-CiPtYyFh.js +25 -0
  32. package/dist/frontend/circle-check-tSPE1V6t.js +29 -0
  33. package/dist/frontend/{client-B9hzI0W8.js → client-GbtOH90i.js} +1 -1
  34. package/dist/frontend/clipboard-Cgzxc0_R.js +16 -0
  35. package/dist/frontend/clock-DJHbHZb8.js +29 -0
  36. package/dist/frontend/clsx-C7bIvsDS.js +1738 -0
  37. package/dist/frontend/collaboration.d.ts +6 -0
  38. package/dist/frontend/collaboration.js +182 -0
  39. package/dist/frontend/components/category-dialog.d.ts +2 -0
  40. package/dist/frontend/components/category-dialog.js +2 -0
  41. package/dist/frontend/components/create-snapshot-dialog.d.ts +2 -0
  42. package/dist/frontend/components/create-snapshot-dialog.js +2 -0
  43. package/dist/frontend/components/delete-dialog.d.ts +2 -0
  44. package/dist/frontend/components/delete-dialog.js +2 -0
  45. package/dist/frontend/components/editor/document-editor.d.ts +3 -0
  46. package/dist/frontend/components/editor/document-editor.js +3032 -0
  47. package/dist/frontend/components/editor/document-title.d.ts +2 -0
  48. package/dist/frontend/components/editor/document-title.js +31 -0
  49. package/dist/frontend/components/editor/docx-serializer.d.ts +2 -0
  50. package/dist/frontend/components/editor/docx-serializer.js +14600 -0
  51. package/dist/frontend/components/editor/extensions.d.ts +2 -0
  52. package/dist/frontend/components/editor/extensions.js +2 -0
  53. package/dist/frontend/components/editor/markdown-toggle.d.ts +2 -0
  54. package/dist/frontend/components/editor/markdown-toggle.js +72 -0
  55. package/dist/frontend/components/editor/markdown.d.ts +1 -0
  56. package/dist/frontend/components/editor/markdown.js +2 -0
  57. package/dist/frontend/components/folder-node.d.ts +3 -0
  58. package/dist/frontend/components/folder-node.js +2 -0
  59. package/dist/frontend/components/folder-tree-selector.d.ts +2 -0
  60. package/dist/frontend/components/folder-tree-selector.js +2 -0
  61. package/dist/frontend/components/save-as-dialog.d.ts +2 -0
  62. package/dist/frontend/components/save-as-dialog.js +272 -0
  63. package/dist/frontend/components/settings.js +1 -1
  64. package/dist/frontend/components/share-dialog.d.ts +2 -0
  65. package/dist/frontend/components/share-dialog.js +2 -0
  66. package/dist/frontend/components/sidebar.js +1145 -3693
  67. package/dist/frontend/components/tag-create-dialog.d.ts +2 -0
  68. package/dist/frontend/components/tag-create-dialog.js +2 -0
  69. package/dist/frontend/components/version-history.d.ts +2 -0
  70. package/dist/frontend/components/version-history.js +294 -0
  71. package/dist/frontend/{context-DbnW5yib.js → context-BMD6XTPe.js} +0 -3
  72. package/dist/frontend/copy-GppwRMjX.js +32 -0
  73. package/dist/frontend/dashboard.js +1113 -1157
  74. package/dist/frontend/{SettingsDialog-D4pgFD0D.js → db-ByrlYfaI.js} +923 -2002
  75. package/dist/frontend/dialog-D6NxYVmy.js +213 -0
  76. package/dist/frontend/dndzone-BzsOINtP.js +1199 -0
  77. package/dist/frontend/doc-tabs.d.ts +7 -0
  78. package/dist/frontend/doc-tabs.js +14 -0
  79. package/dist/frontend/document-drop-coordinator-C4xHMjwC.js +68 -0
  80. package/dist/frontend/document-drop-coordinator.d.ts +2 -0
  81. package/dist/frontend/document-drop-coordinator.js +2 -0
  82. package/dist/frontend/{documents-DFVS9SsL.js → documents-BsDkvzCm.js} +1 -1
  83. package/dist/frontend/editorExtensions-BMHvUbdk.js +27021 -0
  84. package/dist/frontend/ellipsis-vertical-P9MHvCps.js +530 -0
  85. package/dist/frontend/extension.js +8 -7
  86. package/dist/frontend/floating-layer-anchor-CPwucTfd.js +4515 -0
  87. package/dist/frontend/folder-DeWhnD7O.js +45 -0
  88. package/dist/frontend/folder-refresh.d.ts +8 -0
  89. package/dist/frontend/folder-refresh.js +2 -0
  90. package/dist/frontend/{folders-CGe9diAG.js → folders-CTuV_JtU.js} +1 -1
  91. package/dist/frontend/frontend.css +1 -1
  92. package/dist/frontend/i18n.js +1 -1
  93. package/dist/frontend/identity-DyWeNzu_.js +69 -0
  94. package/dist/frontend/input-B5Rak-5G.js +23 -0
  95. package/dist/frontend/keyboard.d.ts +14 -0
  96. package/dist/frontend/keyboard.js +2 -0
  97. package/dist/frontend/keyboard.svelte-CApmX0vl.js +133 -0
  98. package/dist/frontend/label-CW9rxoAb.js +30 -0
  99. package/dist/frontend/loader-circle-BA6aLO71.js +268 -0
  100. package/dist/frontend/markdown-BwnyjITU.js +11 -0
  101. package/dist/frontend/messages-BpYaLbzE.js +1091 -0
  102. package/dist/frontend/offline/identity.d.ts +6 -0
  103. package/dist/frontend/offline/identity.js +2 -0
  104. package/dist/frontend/resolve-BG4HgzpN.js +19 -0
  105. package/dist/frontend/rolldown-runtime-CWhphoD1.js +23 -0
  106. package/dist/frontend/rotate-ccw-B4Q7brmV.js +25 -0
  107. package/dist/frontend/search.js +637 -602
  108. package/dist/frontend/select-value-sF86Geyh.js +1446 -0
  109. package/dist/frontend/settings-blyobazp.js +62 -0
  110. package/dist/frontend/share-Cu7SSJuJ.js +28 -0
  111. package/dist/frontend/shared-document.js +94 -93
  112. package/dist/frontend/subfolders-refresh-store.svelte-B2dKVmgz.js +65 -0
  113. package/dist/frontend/tag-HxRazVN_.js +54 -0
  114. package/dist/frontend/tag-store.svelte-CqrUXo0o.js +29 -0
  115. package/dist/frontend/{tags-DVXTut0p.js → tags-CtCV0Djo.js} +1 -1
  116. package/dist/frontend/textarea-i1720bE7.js +23 -0
  117. package/dist/frontend/theme.js +1 -1
  118. package/dist/frontend/theme.svelte-DKfCy12k.js +49 -0
  119. package/dist/frontend/types.d.ts +6 -0
  120. package/dist/frontend/types.js +0 -0
  121. package/dist/frontend/utils/clipboard.d.ts +1 -0
  122. package/dist/frontend/utils/clipboard.js +2 -0
  123. package/dist/frontend/utils/dndzone.d.ts +4 -0
  124. package/dist/frontend/utils/dndzone.js +2 -0
  125. package/dist/frontend/utils-CffiyuTo.js +19 -0
  126. package/dist/frontend/utils-hzdMVeCv.js +7 -0
  127. package/dist/frontend/utils.d.ts +4 -0
  128. package/dist/frontend/utils.js +2 -0
  129. package/dist/frontend/x-CzBsnJ2x.js +25 -0
  130. package/dist/frontend-ssr/api/attachments.js +2 -0
  131. package/dist/frontend-ssr/api/categories.js +2 -0
  132. package/dist/frontend-ssr/api/documents.js +2 -0
  133. package/dist/frontend-ssr/api/folders.js +2 -0
  134. package/dist/frontend-ssr/api/settings.js +2 -0
  135. package/dist/frontend-ssr/api/share.js +2 -0
  136. package/dist/frontend-ssr/api/tags.js +2 -0
  137. package/dist/frontend-ssr/assets/CategoryDialog-C2xaZKHq.js +584 -0
  138. package/dist/frontend-ssr/assets/ConfirmDialog-DjMFKc0V.js +420 -0
  139. package/dist/frontend-ssr/assets/CreateSnapshotDialog-BRw1xJW1.js +214 -0
  140. package/dist/frontend-ssr/assets/DatePicker-DnXniwlZ.js +312 -0
  141. package/dist/frontend-ssr/assets/DeleteDialog-BCfZy3Zn.js +154 -0
  142. package/dist/frontend-ssr/assets/FolderDialog-Dq7I2cKZ.js +429 -0
  143. package/dist/frontend-ssr/assets/FolderNode-DRfBfpft.js +171 -0
  144. package/dist/frontend-ssr/assets/FolderTreeSelector-DZNZ2oI6.js +147 -0
  145. package/dist/frontend-ssr/assets/Icon-B0Zqppjo.js +231 -0
  146. package/dist/frontend-ssr/assets/SettingsDialog-CX8Noa8A.js +1107 -0
  147. package/dist/frontend-ssr/assets/ShareDialog-Cge49ZdJ.js +54 -0
  148. package/dist/frontend-ssr/assets/TagCreateDialog-EAChgBF-.js +264 -0
  149. package/dist/frontend-ssr/assets/api-keys-DFqX39MT.js +35 -0
  150. package/dist/frontend-ssr/assets/attachments-CWBxE3Vz.js +85 -0
  151. package/dist/frontend-ssr/assets/auth-client-x26kqY8Z.js +1286 -0
  152. package/dist/frontend-ssr/assets/camera-CdxscTw-.js +84 -0
  153. package/dist/frontend-ssr/assets/categories-AOqgcsn4.js +75 -0
  154. package/dist/frontend-ssr/assets/chevron-down-CSSNGNh_.js +80 -0
  155. package/dist/frontend-ssr/assets/chevron-right-B4p7Sk6X.js +80 -0
  156. package/dist/frontend-ssr/assets/circle-check-CI1v4vYh.js +84 -0
  157. package/dist/frontend-ssr/assets/client-DZMkDkDn.js +129 -0
  158. package/dist/frontend-ssr/assets/clipboard-CXOaoz2W.js +30 -0
  159. package/dist/frontend-ssr/assets/clock-IL-eX2di.js +84 -0
  160. package/dist/frontend-ssr/assets/context-jz1GGEUi.js +45 -0
  161. package/dist/frontend-ssr/assets/copy-CjV57nGQ.js +87 -0
  162. package/dist/frontend-ssr/assets/db-CnxeO66n.js +65 -0
  163. package/dist/frontend-ssr/assets/dialog-BOV1u6zP.js +157 -0
  164. package/dist/frontend-ssr/assets/dndzone-DMvTO_Jz.js +2114 -0
  165. package/dist/frontend-ssr/assets/document-drop-coordinator-CEaYACsC.js +109 -0
  166. package/dist/frontend-ssr/assets/documents-BnOTRdTY.js +108 -0
  167. package/dist/frontend-ssr/assets/editorExtensions-DUzwndMy.js +186 -0
  168. package/dist/frontend-ssr/assets/ellipsis-vertical-C-0hgkZn.js +555 -0
  169. package/dist/frontend-ssr/assets/floating-layer-anchor-uzw9K8qN.js +6114 -0
  170. package/dist/frontend-ssr/assets/folder-DChhG7qN.js +80 -0
  171. package/dist/frontend-ssr/assets/folders-CTfbS24J.js +127 -0
  172. package/dist/frontend-ssr/assets/identity-B3uHoDtf.js +99 -0
  173. package/dist/frontend-ssr/assets/input-DezGsU3y.js +19 -0
  174. package/dist/frontend-ssr/assets/keyboard.svelte-BgF47N3L.js +174 -0
  175. package/dist/frontend-ssr/assets/label-Bj8-TfFN.js +21 -0
  176. package/dist/frontend-ssr/assets/loader-circle-DZsrZ-er.js +80 -0
  177. package/dist/frontend-ssr/assets/markdown-CjqvGi5W.js +20 -0
  178. package/dist/frontend-ssr/assets/messages-DhXqlcJI.js +11125 -0
  179. package/dist/frontend-ssr/assets/resolve-BqHozBXl.js +32 -0
  180. package/dist/frontend-ssr/assets/rotate-ccw-BlgWwaiq.js +80 -0
  181. package/dist/frontend-ssr/assets/select-value-DngdSmLI.js +1526 -0
  182. package/dist/frontend-ssr/assets/settings-E6qSAWM2.js +64 -0
  183. package/dist/frontend-ssr/assets/share-BTBJelxA.js +30 -0
  184. package/dist/frontend-ssr/assets/subfolders-refresh-store.svelte-DAh4gT16.js +77 -0
  185. package/dist/frontend-ssr/assets/tag-GZEuGWk1.js +166 -0
  186. package/dist/frontend-ssr/assets/tag-store.svelte-DPodKj6Z.js +21 -0
  187. package/dist/frontend-ssr/assets/tags-BId2wdYd.js +49 -0
  188. package/dist/frontend-ssr/assets/textarea-Dev-qSEc.js +21 -0
  189. package/dist/frontend-ssr/assets/theme.svelte-Co0-ssaD.js +67 -0
  190. package/dist/frontend-ssr/assets/utils-DtlPPXpJ.js +9 -0
  191. package/dist/frontend-ssr/assets/utils-DvZnctjz.js +23 -0
  192. package/dist/frontend-ssr/collaboration.js +39 -0
  193. package/dist/frontend-ssr/components/category-dialog.js +2 -0
  194. package/dist/frontend-ssr/components/create-snapshot-dialog.js +2 -0
  195. package/dist/frontend-ssr/components/delete-dialog.js +2 -0
  196. package/dist/frontend-ssr/components/editor/document-editor.js +2499 -0
  197. package/dist/frontend-ssr/components/editor/document-title.js +11 -0
  198. package/dist/frontend-ssr/components/editor/docx-serializer.js +186 -0
  199. package/dist/frontend-ssr/components/editor/extensions.js +2 -0
  200. package/dist/frontend-ssr/components/editor/markdown-toggle.js +20 -0
  201. package/dist/frontend-ssr/components/editor/markdown.js +2 -0
  202. package/dist/frontend-ssr/components/folder-node.js +2 -0
  203. package/dist/frontend-ssr/components/folder-tree-selector.js +2 -0
  204. package/dist/frontend-ssr/components/save-as-dialog.js +280 -0
  205. package/dist/frontend-ssr/components/settings.js +2 -0
  206. package/dist/frontend-ssr/components/share-dialog.js +2 -0
  207. package/dist/frontend-ssr/components/sidebar.js +2033 -0
  208. package/dist/frontend-ssr/components/tag-create-dialog.js +2 -0
  209. package/dist/frontend-ssr/components/version-history.js +370 -0
  210. package/dist/frontend-ssr/dashboard.js +2542 -0
  211. package/dist/frontend-ssr/doc-tabs.js +23 -0
  212. package/dist/frontend-ssr/document-drop-coordinator.js +2 -0
  213. package/dist/frontend-ssr/extension.js +13 -0
  214. package/dist/frontend-ssr/folder-refresh.js +2 -0
  215. package/dist/frontend-ssr/i18n.js +10 -0
  216. package/dist/frontend-ssr/keyboard.js +2 -0
  217. package/dist/frontend-ssr/offline/identity.js +2 -0
  218. package/dist/frontend-ssr/search.js +332 -0
  219. package/dist/frontend-ssr/shared-document.js +273 -0
  220. package/dist/frontend-ssr/theme.js +9 -0
  221. package/dist/frontend-ssr/types.js +1 -0
  222. package/dist/frontend-ssr/utils/clipboard.js +2 -0
  223. package/dist/frontend-ssr/utils/dndzone.js +2 -0
  224. package/dist/frontend-ssr/utils.js +2 -0
  225. package/package.json +130 -1
  226. package/packages/cli/src/index.ts +1 -1
  227. package/packages/db/src/schema.ts +3 -0
  228. package/packages/mcp-server/src/index.ts +1 -1
  229. package/dist/frontend/DatePicker-BcMD49PV.js +0 -275
  230. package/dist/frontend/ShareDialog-Dzh7rV7J.js +0 -1317
  231. package/dist/frontend/client-C6QQGb0e.js +0 -2766
  232. package/dist/frontend/input-ieWIt8I7.js +0 -257
  233. package/dist/frontend/messages-CTGAsqFu.js +0 -1106
  234. package/dist/frontend/resolve-Bl6xmJl_.js +0 -2068
  235. package/dist/frontend/tag-C5xrg-bb.js +0 -53
  236. package/dist/frontend/tag-store.svelte-B3839FYq.js +0 -6152
  237. package/dist/frontend/theme.svelte-ei0QxXa8.js +0 -49
@@ -0,0 +1,11 @@
1
+ import { Nr as doc_title_label, Pr as doc_title_placeholder } from "../../assets/messages-DhXqlcJI.js";
2
+ import * as $ from "svelte/internal/server";
3
+ //#region src/lib/components/editor/DocumentTitle.svelte
4
+ function DocumentTitle($$renderer, $$props) {
5
+ $$renderer.component(($$renderer) => {
6
+ const { title = "", onUpdate = (_title) => {} } = $$props;
7
+ $$renderer.push(`<input type="text"${$.attr_class("title-input svelte-vc365t", void 0, { "focused": false })}${$.attr("value", "")}${$.attr("placeholder", doc_title_placeholder())}${$.attr("aria-label", doc_title_label())}/>`);
8
+ });
9
+ }
10
+ //#endregion
11
+ export { DocumentTitle };
@@ -0,0 +1,186 @@
1
+ import { AlignmentType, HeadingLevel, Paragraph, Table, TableCell, TableRow, TextRun } from "docx";
2
+ import { DocxSerializer, DocxSerializerAsync, MAX_IMAGE_WIDTH, defaultAsyncNodes, defaultMarks, defaultNodes } from "prosemirror-docx";
3
+ //#region src/lib/components/editor/docx-serializer.ts
4
+ /**
5
+ * Resolve TipTap paragraph/heading textAlign attribute to docx alignment.
6
+ */
7
+ function getAlignment(node) {
8
+ const align = node?.attrs?.textAlign;
9
+ if (align === "center") return AlignmentType.CENTER;
10
+ if (align === "right") return AlignmentType.RIGHT;
11
+ if (align === "justify") return AlignmentType.BOTH;
12
+ if (align === "left") return AlignmentType.LEFT;
13
+ }
14
+ function getHeadingLevel(node) {
15
+ const level = node?.attrs?.level ?? 1;
16
+ const clampedLevel = Math.min(Math.max(level, 1), 6);
17
+ return [
18
+ HeadingLevel.HEADING_1,
19
+ HeadingLevel.HEADING_2,
20
+ HeadingLevel.HEADING_3,
21
+ HeadingLevel.HEADING_4,
22
+ HeadingLevel.HEADING_5,
23
+ HeadingLevel.HEADING_6
24
+ ][clampedLevel - 1];
25
+ }
26
+ var customNodes = {
27
+ ...defaultNodes,
28
+ horizontalRule: defaultNodes.horizontal_rule,
29
+ hardBreak: defaultNodes.hard_break,
30
+ codeBlock: defaultNodes.code_block,
31
+ orderedList: defaultNodes.ordered_list,
32
+ bulletList: defaultNodes.bullet_list,
33
+ listItem: defaultNodes.list_item,
34
+ paragraph(state, node) {
35
+ state.renderInline(node);
36
+ const alignment = getAlignment(node);
37
+ state.closeBlock(node, alignment ? { alignment } : {});
38
+ },
39
+ heading(state, node) {
40
+ state.renderInline(node);
41
+ const heading = getHeadingLevel(node);
42
+ const alignment = getAlignment(node);
43
+ state.closeBlock(node, alignment ? {
44
+ heading,
45
+ alignment
46
+ } : { heading });
47
+ },
48
+ taskList: defaultNodes.bullet_list,
49
+ taskItem(state, node) {
50
+ const checkboxChar = node?.attrs?.checked ?? false ? "☑ " : "☐ ";
51
+ state.addParagraphOptions({});
52
+ state.current.push(new TextRun({ text: checkboxChar }));
53
+ state.renderContent(node);
54
+ },
55
+ table(state, node) {
56
+ const actualChildren = state.children;
57
+ const rows = [];
58
+ node.content.forEach((row) => {
59
+ const cells = [];
60
+ let isHeaderRow = true;
61
+ row.content.forEach((cell) => {
62
+ if (cell.type.name !== "tableHeader" && cell.type.name !== "table_header") isHeaderRow = false;
63
+ });
64
+ state.maxImageWidth = MAX_IMAGE_WIDTH / (row.content.childCount || 1);
65
+ row.content.forEach((cell) => {
66
+ const oldChildren = state.children;
67
+ state.children = [];
68
+ state.renderContent(cell);
69
+ const tableCellOpts = { children: state.children };
70
+ const colspan = cell.attrs.colspan ?? 1;
71
+ const rowspan = cell.attrs.rowspan ?? 1;
72
+ if (colspan > 1) tableCellOpts.columnSpan = colspan;
73
+ if (rowspan > 1) tableCellOpts.rowSpan = rowspan;
74
+ cells.push(new TableCell(tableCellOpts));
75
+ state.children = oldChildren;
76
+ });
77
+ rows.push(new TableRow({
78
+ children: cells,
79
+ tableHeader: isHeaderRow
80
+ }));
81
+ });
82
+ state.maxImageWidth = MAX_IMAGE_WIDTH;
83
+ const table = new Table({ rows });
84
+ actualChildren.push(table);
85
+ actualChildren.push(new Paragraph(""));
86
+ state.children = actualChildren;
87
+ },
88
+ tableRow: () => {},
89
+ tableCell: () => {},
90
+ tableHeader: () => {}
91
+ };
92
+ var customAsyncNodes = {
93
+ ...defaultAsyncNodes,
94
+ horizontalRule: defaultAsyncNodes.horizontal_rule,
95
+ hardBreak: defaultAsyncNodes.hard_break,
96
+ codeBlock: defaultAsyncNodes.code_block,
97
+ orderedList: defaultAsyncNodes.ordered_list,
98
+ bulletList: defaultAsyncNodes.bullet_list,
99
+ listItem: defaultAsyncNodes.list_item,
100
+ taskList: defaultAsyncNodes.bullet_list,
101
+ async paragraph(state, node) {
102
+ await state.renderInline(node);
103
+ const alignment = getAlignment(node);
104
+ state.closeBlock(node, alignment ? { alignment } : {});
105
+ },
106
+ async heading(state, node) {
107
+ await state.renderInline(node);
108
+ const heading = getHeadingLevel(node);
109
+ const alignment = getAlignment(node);
110
+ state.closeBlock(node, alignment ? {
111
+ heading,
112
+ alignment
113
+ } : { heading });
114
+ },
115
+ async taskItem(state, node) {
116
+ const checkboxChar = node?.attrs?.checked ?? false ? "☑ " : "☐ ";
117
+ state.addParagraphOptions({});
118
+ state.current.push(new TextRun({ text: checkboxChar }));
119
+ await state.renderContent(node);
120
+ },
121
+ /**
122
+ * The stock async image serializer infers the image type from the URL.
123
+ * Attachment URLs end in `/raw`, so that inference produces an invalid
124
+ * `raw` type even when the fetched bytes are a perfectly valid PNG/JPEG.
125
+ * The export helper supplies the response MIME-derived type while sharing
126
+ * the same cached fetch used by `getImageBuffer`.
127
+ */
128
+ async image(state, node) {
129
+ const src = node?.attrs?.src;
130
+ if (typeof src !== "string" || !src) return;
131
+ try {
132
+ const imageType = await state.options.getImageType?.(src);
133
+ await state.image(src, void 0, void 0, void 0, imageType);
134
+ state.closeBlock(node);
135
+ } catch {}
136
+ },
137
+ async table(state, node) {
138
+ const actualChildren = state.children;
139
+ const rows = [];
140
+ for (let rowIndex = 0; rowIndex < node.content.childCount; rowIndex += 1) {
141
+ const row = node.content.child(rowIndex);
142
+ const cells = [];
143
+ let isHeaderRow = true;
144
+ row.content.forEach((cell) => {
145
+ if (cell.type.name !== "tableHeader" && cell.type.name !== "table_header") isHeaderRow = false;
146
+ });
147
+ state.maxImageWidth = MAX_IMAGE_WIDTH / (row.content.childCount || 1);
148
+ for (let cellIndex = 0; cellIndex < row.content.childCount; cellIndex += 1) {
149
+ const cell = row.content.child(cellIndex);
150
+ const oldChildren = state.children;
151
+ state.children = [];
152
+ await state.renderContent(cell);
153
+ const tableCellOpts = { children: state.children };
154
+ const colspan = cell.attrs.colspan ?? 1;
155
+ const rowspan = cell.attrs.rowspan ?? 1;
156
+ if (colspan > 1) tableCellOpts.columnSpan = colspan;
157
+ if (rowspan > 1) tableCellOpts.rowSpan = rowspan;
158
+ cells.push(new TableCell(tableCellOpts));
159
+ state.children = oldChildren;
160
+ }
161
+ rows.push(new TableRow({
162
+ children: cells,
163
+ tableHeader: isHeaderRow
164
+ }));
165
+ }
166
+ state.maxImageWidth = MAX_IMAGE_WIDTH;
167
+ const table = new Table({ rows });
168
+ actualChildren.push(table);
169
+ actualChildren.push(new Paragraph(""));
170
+ state.children = actualChildren;
171
+ },
172
+ tableRow: async () => {},
173
+ tableCell: async () => {},
174
+ tableHeader: async () => {}
175
+ };
176
+ var customMarks = {
177
+ ...defaultMarks,
178
+ strike: defaultMarks.strikethrough,
179
+ highlight: (_state, mark) => {
180
+ return { highlight: mark.attrs?.color || "yellow" };
181
+ }
182
+ };
183
+ var customSerializer = new DocxSerializer(customNodes, customMarks);
184
+ var customSerializerAsync = new DocxSerializerAsync(customAsyncNodes, customMarks);
185
+ //#endregion
186
+ export { customAsyncNodes, customMarks, customNodes, customSerializer, customSerializerAsync };
@@ -0,0 +1,2 @@
1
+ import { n as TextAlignParagraph, r as editorExtensions, t as TextAlignHeading } from "../../assets/editorExtensions-DUzwndMy.js";
2
+ export { TextAlignHeading, TextAlignParagraph, editorExtensions };
@@ -0,0 +1,20 @@
1
+ import { Lt as editor_markdown_label, Rt as editor_markdown_placeholder } from "../../assets/messages-DhXqlcJI.js";
2
+ import { t as Copy } from "../../assets/copy-CjV57nGQ.js";
3
+ import "../../assets/markdown-CjqvGi5W.js";
4
+ import * as $ from "svelte/internal/server";
5
+ //#region src/lib/components/editor/MarkdownToggle.svelte
6
+ function MarkdownToggle($$renderer, $$props) {
7
+ $$renderer.component(($$renderer) => {
8
+ const { content = "", onUpdate = (_output) => {} } = $$props;
9
+ $$renderer.push(`<div class="markdown-toggle svelte-1k98zvf"><button type="button" class="copy-btn svelte-1k98zvf" aria-label="Copy markdown" title="Copy markdown content">`);
10
+ $$renderer.push("<!--[-1-->");
11
+ Copy($$renderer, { size: 14 });
12
+ $$renderer.push(`<!----> <span>Copy Raw</span>`);
13
+ $$renderer.push(`<!--]--></button> <textarea class="markdown-textarea svelte-1k98zvf" spellcheck="false"${$.attr("placeholder", editor_markdown_placeholder())}${$.attr("aria-label", editor_markdown_label())}>`);
14
+ const $$body = $.escape(content);
15
+ if ($$body) $$renderer.push(`${$$body}`);
16
+ $$renderer.push(`</textarea></div>`);
17
+ });
18
+ }
19
+ //#endregion
20
+ export { MarkdownToggle };
@@ -0,0 +1,2 @@
1
+ import { t as markdownToJson } from "../../assets/markdown-CjqvGi5W.js";
2
+ export { markdownToJson };
@@ -0,0 +1,2 @@
1
+ import { t as FolderNode } from "../assets/FolderNode-DRfBfpft.js";
2
+ export { FolderNode };
@@ -0,0 +1,2 @@
1
+ import { t as FolderTreeSelector } from "../assets/FolderTreeSelector-DZNZ2oI6.js";
2
+ export { FolderTreeSelector };
@@ -0,0 +1,280 @@
1
+ import { gn as action_save, hn as action_cancel } from "../assets/messages-DhXqlcJI.js";
2
+ import { a as Dialog, i as Dialog_description, n as Dialog_header, o as Button, r as Dialog_footer, t as Dialog_title } from "../assets/dialog-BOV1u6zP.js";
3
+ import { a as Select, i as Select_content, n as Select_trigger, r as Select_item, t as Select_value } from "../assets/select-value-DngdSmLI.js";
4
+ import { t as Label } from "../assets/label-Bj8-TfFN.js";
5
+ import { t as Chevron_down } from "../assets/chevron-down-CSSNGNh_.js";
6
+ import { t as FolderTreeSelector } from "../assets/FolderTreeSelector-DZNZ2oI6.js";
7
+ import { t as Loader_circle } from "../assets/loader-circle-DZsrZ-er.js";
8
+ import "../assets/categories-AOqgcsn4.js";
9
+ import { d as refreshFolders } from "../assets/subfolders-refresh-store.svelte-DAh4gT16.js";
10
+ import * as $ from "svelte/internal/server";
11
+ //#region src/lib/components/SaveAsDialog.svelte
12
+ function SaveAsDialog($$renderer, $$props) {
13
+ $$renderer.component(($$renderer) => {
14
+ const Select$1 = {
15
+ Root: Select,
16
+ Content: Select_content,
17
+ Item: Select_item,
18
+ Trigger: Select_trigger,
19
+ Value: Select_value
20
+ };
21
+ let { open = false, documentId, initialTitle = "", initialParentId = null, initialCategoryId = null, onSave, onClose } = $$props;
22
+ let folders = [];
23
+ let categories = [];
24
+ let loading = false;
25
+ let busy = false;
26
+ let error = null;
27
+ let newTitle = "";
28
+ let selectedParentId = null;
29
+ let selectedCategoryId = void 0;
30
+ async function handleSubmit(e) {
31
+ e?.preventDefault();
32
+ if (!newTitle.trim()) {
33
+ error = "Title cannot be empty";
34
+ return;
35
+ }
36
+ if (busy) return;
37
+ busy = true;
38
+ try {
39
+ if (onSave) {
40
+ const targetParentId = selectedParentId === "" || selectedParentId === "null" ? null : selectedParentId;
41
+ const targetCategoryId = selectedCategoryId === "" || selectedCategoryId === "null" || selectedCategoryId === void 0 ? null : selectedCategoryId;
42
+ await onSave(newTitle.trim(), targetParentId, targetCategoryId);
43
+ }
44
+ refreshFolders();
45
+ open = false;
46
+ } catch (err) {
47
+ console.error("Failed to duplicate item", err);
48
+ error = err instanceof Error ? err.message : "Failed to duplicate item";
49
+ } finally {
50
+ busy = false;
51
+ }
52
+ }
53
+ function close() {
54
+ if (busy) return;
55
+ open = false;
56
+ onClose?.();
57
+ }
58
+ let $$settled = true;
59
+ let $$inner_renderer;
60
+ function $$render_inner($$renderer) {
61
+ Dialog($$renderer, {
62
+ onOpenChange: (next) => {
63
+ if (!next) close();
64
+ },
65
+ get open() {
66
+ return open;
67
+ },
68
+ set open($$value) {
69
+ open = $$value;
70
+ $$settled = false;
71
+ },
72
+ children: ($$renderer) => {
73
+ Dialog_header($$renderer, {
74
+ children: ($$renderer) => {
75
+ Dialog_title($$renderer, {
76
+ children: ($$renderer) => {
77
+ $$renderer.push(`<!---->Save as Copy`);
78
+ },
79
+ $$slots: { default: true }
80
+ });
81
+ $$renderer.push(`<!----> `);
82
+ Dialog_description($$renderer, {
83
+ children: ($$renderer) => {
84
+ $$renderer.push(`<!---->Create a copy of this document with a new title, folder, and category.`);
85
+ },
86
+ $$slots: { default: true }
87
+ });
88
+ $$renderer.push(`<!---->`);
89
+ },
90
+ $$slots: { default: true }
91
+ });
92
+ $$renderer.push(`<!----> `);
93
+ $$renderer.push("<!--[-1-->");
94
+ $$renderer.push(`<form class="space-y-4 py-2">`);
95
+ if (error) {
96
+ $$renderer.push("<!--[0-->");
97
+ $$renderer.push(`<p class="text-sm text-destructive" role="alert">${$.escape(error)}</p>`);
98
+ } else $$renderer.push("<!--[-1-->");
99
+ $$renderer.push(`<!--]--> <div class="space-y-2">`);
100
+ Label($$renderer, {
101
+ for: "save-as-title",
102
+ children: ($$renderer) => {
103
+ $$renderer.push(`<!---->New Title`);
104
+ },
105
+ $$slots: { default: true }
106
+ });
107
+ $$renderer.push(`<!----> <input id="save-as-title" type="text"${$.attr("value", newTitle)} placeholder="Enter new document title" required="" class="flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50"/></div> <div class="space-y-2">`);
108
+ Label($$renderer, {
109
+ children: ($$renderer) => {
110
+ $$renderer.push(`<!---->Parent Folder`);
111
+ },
112
+ $$slots: { default: true }
113
+ });
114
+ $$renderer.push(`<!----> `);
115
+ FolderTreeSelector($$renderer, {
116
+ folders,
117
+ get selectedId() {
118
+ return selectedParentId;
119
+ },
120
+ set selectedId($$value) {
121
+ selectedParentId = $$value;
122
+ $$settled = false;
123
+ }
124
+ });
125
+ $$renderer.push(`<!----></div> <div class="space-y-2">`);
126
+ Label($$renderer, {
127
+ for: "save-as-category",
128
+ children: ($$renderer) => {
129
+ $$renderer.push(`<!---->Category`);
130
+ },
131
+ $$slots: { default: true }
132
+ });
133
+ $$renderer.push(`<!----> `);
134
+ if (Select$1.Root) {
135
+ $$renderer.push("<!--[-->");
136
+ Select$1.Root($$renderer, {
137
+ type: "single",
138
+ get value() {
139
+ return selectedCategoryId;
140
+ },
141
+ set value($$value) {
142
+ selectedCategoryId = $$value;
143
+ $$settled = false;
144
+ },
145
+ children: ($$renderer) => {
146
+ if (Select$1.Trigger) {
147
+ $$renderer.push("<!--[-->");
148
+ Select$1.Trigger($$renderer, {
149
+ class: "w-full text-foreground flex items-center justify-between bg-background border border-input px-3 py-2 text-sm rounded-md shadow-sm",
150
+ children: ($$renderer) => {
151
+ if (Select$1.Value) {
152
+ $$renderer.push("<!--[-->");
153
+ Select$1.Value($$renderer, {
154
+ placeholder: "Select a category...",
155
+ children: ($$renderer) => {
156
+ $$renderer.push(`<!---->${$.escape(selectedCategoryId && selectedCategoryId !== "null" ? categories.find((c) => c.id === selectedCategoryId)?.name ?? "Uncategorized" : "Uncategorized")}`);
157
+ },
158
+ $$slots: { default: true }
159
+ });
160
+ $$renderer.push("<!--]-->");
161
+ } else {
162
+ $$renderer.push("<!--[!-->");
163
+ $$renderer.push("<!--]-->");
164
+ }
165
+ $$renderer.push(` `);
166
+ Chevron_down($$renderer, { class: "size-4 opacity-50" });
167
+ $$renderer.push(`<!---->`);
168
+ },
169
+ $$slots: { default: true }
170
+ });
171
+ $$renderer.push("<!--]-->");
172
+ } else {
173
+ $$renderer.push("<!--[!-->");
174
+ $$renderer.push("<!--]-->");
175
+ }
176
+ $$renderer.push(` `);
177
+ if (Select$1.Content) {
178
+ $$renderer.push("<!--[-->");
179
+ Select$1.Content($$renderer, {
180
+ class: "w-[var(--bits-select-trigger-width)]",
181
+ children: ($$renderer) => {
182
+ if (Select$1.Item) {
183
+ $$renderer.push("<!--[-->");
184
+ Select$1.Item($$renderer, {
185
+ value: "null",
186
+ children: ($$renderer) => {
187
+ $$renderer.push(`<!---->Uncategorized`);
188
+ },
189
+ $$slots: { default: true }
190
+ });
191
+ $$renderer.push("<!--]-->");
192
+ } else {
193
+ $$renderer.push("<!--[!-->");
194
+ $$renderer.push("<!--]-->");
195
+ }
196
+ $$renderer.push(` <!--[-->`);
197
+ const each_array = $.ensure_array_like(categories);
198
+ for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
199
+ let category = each_array[$$index];
200
+ if (Select$1.Item) {
201
+ $$renderer.push("<!--[-->");
202
+ Select$1.Item($$renderer, {
203
+ value: category.id,
204
+ children: ($$renderer) => {
205
+ $$renderer.push(`<!---->${$.escape(category.name)}`);
206
+ },
207
+ $$slots: { default: true }
208
+ });
209
+ $$renderer.push("<!--]-->");
210
+ } else {
211
+ $$renderer.push("<!--[!-->");
212
+ $$renderer.push("<!--]-->");
213
+ }
214
+ }
215
+ $$renderer.push(`<!--]-->`);
216
+ },
217
+ $$slots: { default: true }
218
+ });
219
+ $$renderer.push("<!--]-->");
220
+ } else {
221
+ $$renderer.push("<!--[!-->");
222
+ $$renderer.push("<!--]-->");
223
+ }
224
+ },
225
+ $$slots: { default: true }
226
+ });
227
+ $$renderer.push("<!--]-->");
228
+ } else {
229
+ $$renderer.push("<!--[!-->");
230
+ $$renderer.push("<!--]-->");
231
+ }
232
+ $$renderer.push(`</div></form>`);
233
+ $$renderer.push(`<!--]--> `);
234
+ Dialog_footer($$renderer, {
235
+ class: "mt-4",
236
+ children: ($$renderer) => {
237
+ Button($$renderer, {
238
+ variant: "outline",
239
+ type: "button",
240
+ onclick: close,
241
+ disabled: busy,
242
+ children: ($$renderer) => {
243
+ $$renderer.push(`<!---->${$.escape(action_cancel())}`);
244
+ },
245
+ $$slots: { default: true }
246
+ });
247
+ $$renderer.push(`<!----> `);
248
+ Button($$renderer, {
249
+ type: "button",
250
+ onclick: handleSubmit,
251
+ disabled: busy || loading,
252
+ children: ($$renderer) => {
253
+ if (busy) {
254
+ $$renderer.push("<!--[0-->");
255
+ Loader_circle($$renderer, { class: "mr-1 size-4 animate-spin" });
256
+ } else $$renderer.push("<!--[-1-->");
257
+ $$renderer.push(`<!--]--> ${$.escape(action_save())}`);
258
+ },
259
+ $$slots: { default: true }
260
+ });
261
+ $$renderer.push(`<!---->`);
262
+ },
263
+ $$slots: { default: true }
264
+ });
265
+ $$renderer.push(`<!---->`);
266
+ },
267
+ $$slots: { default: true }
268
+ });
269
+ }
270
+ do {
271
+ $$settled = true;
272
+ $$inner_renderer = $$renderer.copy();
273
+ $$render_inner($$inner_renderer);
274
+ } while (!$$settled);
275
+ $$renderer.subsume($$inner_renderer);
276
+ $.bind_props($$props, { open });
277
+ });
278
+ }
279
+ //#endregion
280
+ export { SaveAsDialog };
@@ -0,0 +1,2 @@
1
+ import { t as SettingsDialog } from "../assets/SettingsDialog-CX8Noa8A.js";
2
+ export { SettingsDialog };
@@ -0,0 +1,2 @@
1
+ import { t as ShareDialog } from "../assets/ShareDialog-Cge49ZdJ.js";
2
+ export { ShareDialog };