@hiai-gg/docsmint 0.3.7 → 0.3.9

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 (210) hide show
  1. package/backend/src/lib/logger.ts +45 -15
  2. package/dist/backend/index.js +238 -150
  3. package/dist/client.d.ts +11 -0
  4. package/dist/client.js +9 -0
  5. package/dist/frontend/CategoryDialog-CxVyaBV5.js +611 -0
  6. package/dist/frontend/ConfirmDialog-NFGXRa3E.js +214 -0
  7. package/dist/frontend/CreateSnapshotDialog-BDgFTeFn.js +216 -0
  8. package/dist/frontend/DatePicker-BZRBluzF.js +256 -0
  9. package/dist/frontend/DeleteDialog-CvAr2WPu.js +174 -0
  10. package/dist/frontend/FolderNode-C6FJv99G.js +298 -0
  11. package/dist/frontend/FolderTreeSelector-CyB8y2Sm.js +103 -0
  12. package/dist/frontend/HiaiDocsExtensionProvider-DHWLzRUu.js +11 -0
  13. package/dist/frontend/Icon-CooFj4Ee.js +64 -0
  14. package/dist/frontend/SettingsDialog-BHh68rTB.js +1016 -0
  15. package/dist/frontend/ShareDialog-BUOkYSlw.js +165 -0
  16. package/dist/frontend/Sidebar-Cu3JrKDC.js +2021 -0
  17. package/dist/frontend/TagCreateDialog-B9YZBNHi.js +260 -0
  18. package/dist/frontend/api/settings.js +1 -1
  19. package/dist/frontend/app-shell.d.ts +8 -0
  20. package/dist/frontend/app-shell.js +291 -0
  21. package/dist/frontend/{bundle-mjs-CP6Owz-8.js → bundle-mjs-DllmqUxV.js} +583 -568
  22. package/dist/frontend/camera-iKXDOOWT.js +29 -0
  23. package/dist/frontend/check-D-UuvBuh.js +25 -0
  24. package/dist/frontend/chevron-down-CiPtYyFh.js +25 -0
  25. package/dist/frontend/circle-check-tSPE1V6t.js +29 -0
  26. package/dist/frontend/clock-DJHbHZb8.js +29 -0
  27. package/dist/frontend/components/category-dialog.js +1 -1
  28. package/dist/frontend/components/create-snapshot-dialog.js +1 -1
  29. package/dist/frontend/components/delete-dialog.js +1 -1
  30. package/dist/frontend/components/editor/document-editor.js +1367 -1356
  31. package/dist/frontend/components/editor/document-title.js +25 -25
  32. package/dist/frontend/components/editor/markdown-toggle.js +45 -45
  33. package/dist/frontend/components/folder-node.js +1 -1
  34. package/dist/frontend/components/folder-tree-selector.js +1 -1
  35. package/dist/frontend/components/save-as-dialog.js +169 -151
  36. package/dist/frontend/components/settings.js +1 -1
  37. package/dist/frontend/components/share-dialog.js +1 -1
  38. package/dist/frontend/components/sidebar.js +2 -2013
  39. package/dist/frontend/components/tag-create-dialog.js +1 -1
  40. package/dist/frontend/components/version-history.js +188 -187
  41. package/dist/frontend/confirm-dialog-C4jTRbiS.js +250 -0
  42. package/dist/frontend/copy-GppwRMjX.js +32 -0
  43. package/dist/frontend/dashboard.js +1187 -1155
  44. package/dist/frontend/dialog-Bevp9mmM.js +213 -0
  45. package/dist/frontend/{loader-circle-Bk-WFz9g.js → dist-C3857Spp.js} +93 -92
  46. package/dist/frontend/doc-tabs.js +2 -2
  47. package/dist/frontend/dropdown-menu-CRSby3e9.js +530 -0
  48. package/dist/frontend/extension.js +2 -11
  49. package/dist/frontend/{floating-layer-anchor-C51M4l6v.js → floating-layer-anchor-BDs7vO-M.js} +1414 -1412
  50. package/dist/frontend/folder-DeWhnD7O.js +45 -0
  51. package/dist/frontend/folder-refresh.js +1 -1
  52. package/dist/frontend/frontend.css +1 -1
  53. package/dist/frontend/i18n.js +2 -2
  54. package/dist/frontend/input-BWlOML_m.js +23 -0
  55. package/dist/frontend/keyboard.js +1 -1
  56. package/dist/frontend/{keyboard.svelte-D7H8DihC.js → keyboard.svelte-CApmX0vl.js} +53 -53
  57. package/dist/frontend/label-C2HfJNQ2.js +30 -0
  58. package/dist/frontend/{messages-BpYaLbzE.js → messages-C5Q890i2.js} +8 -8
  59. package/dist/frontend/rotate-ccw-B4Q7brmV.js +25 -0
  60. package/dist/frontend/search.js +673 -647
  61. package/dist/frontend/select-value-GXwx90Pr.js +1446 -0
  62. package/dist/frontend/{settings-blyobazp.js → settings-DSrUl4hW.js} +9 -9
  63. package/dist/frontend/shared-document.js +94 -94
  64. package/dist/frontend/subfolders-refresh-store.svelte-B2dKVmgz.js +65 -0
  65. package/dist/frontend/tag-HxRazVN_.js +54 -0
  66. package/dist/frontend/tag-store.svelte-CqrUXo0o.js +29 -0
  67. package/dist/frontend/textarea-DOAE-h42.js +23 -0
  68. package/dist/frontend/theme.js +1 -1
  69. package/dist/frontend/theme.svelte-DKfCy12k.js +49 -0
  70. package/dist/frontend/{utils-D8kmM3ub.js → utils-BPDRytUU.js} +2 -3
  71. package/dist/frontend/{utils-C0OW2678.js → utils-DrfHTcei.js} +2 -3
  72. package/dist/frontend/utils.js +1 -1
  73. package/dist/frontend/x-CzBsnJ2x.js +25 -0
  74. package/dist/frontend-ssr/api/attachments.js +2 -0
  75. package/dist/frontend-ssr/api/categories.js +2 -0
  76. package/dist/frontend-ssr/api/documents.js +2 -0
  77. package/dist/frontend-ssr/api/folders.js +2 -0
  78. package/dist/frontend-ssr/api/settings.js +2 -0
  79. package/dist/frontend-ssr/api/share.js +2 -0
  80. package/dist/frontend-ssr/api/tags.js +2 -0
  81. package/dist/frontend-ssr/app-shell.js +294 -0
  82. package/dist/frontend-ssr/assets/CategoryDialog-BcGW8-Kf.js +584 -0
  83. package/dist/frontend-ssr/assets/ConfirmDialog-DjMFKc0V.js +420 -0
  84. package/dist/frontend-ssr/assets/CreateSnapshotDialog-1bROJ-Rn.js +214 -0
  85. package/dist/frontend-ssr/assets/DatePicker-B1ML8OVz.js +312 -0
  86. package/dist/frontend-ssr/assets/DeleteDialog-tBYaP0L3.js +154 -0
  87. package/dist/frontend-ssr/assets/FolderNode-BZ0Q2QUS.js +171 -0
  88. package/dist/frontend-ssr/assets/FolderTreeSelector-DZNZ2oI6.js +147 -0
  89. package/dist/frontend-ssr/assets/HiaiDocsExtensionProvider-DAM-lX4R.js +13 -0
  90. package/dist/frontend-ssr/assets/Icon-B0Zqppjo.js +231 -0
  91. package/dist/frontend-ssr/assets/SettingsDialog-B8L_YqNA.js +1107 -0
  92. package/dist/frontend-ssr/assets/ShareDialog-vMvJLRfn.js +54 -0
  93. package/dist/frontend-ssr/assets/Sidebar-EHuUAx3W.js +2033 -0
  94. package/dist/frontend-ssr/assets/TagCreateDialog-B0DPEfmQ.js +264 -0
  95. package/dist/frontend-ssr/assets/api-keys-DFqX39MT.js +35 -0
  96. package/dist/frontend-ssr/assets/attachments-CWBxE3Vz.js +85 -0
  97. package/dist/frontend-ssr/assets/auth-client-x26kqY8Z.js +1286 -0
  98. package/dist/frontend-ssr/assets/camera-CdxscTw-.js +84 -0
  99. package/dist/frontend-ssr/assets/categories-AOqgcsn4.js +75 -0
  100. package/dist/frontend-ssr/assets/chevron-down-CSSNGNh_.js +80 -0
  101. package/dist/frontend-ssr/assets/chevron-right-B4p7Sk6X.js +80 -0
  102. package/dist/frontend-ssr/assets/circle-check-CI1v4vYh.js +84 -0
  103. package/dist/frontend-ssr/assets/client-DZMkDkDn.js +129 -0
  104. package/dist/frontend-ssr/assets/clipboard-CXOaoz2W.js +30 -0
  105. package/dist/frontend-ssr/assets/clock-IL-eX2di.js +84 -0
  106. package/dist/frontend-ssr/assets/confirm-dialog-BCthVwUY.js +429 -0
  107. package/dist/frontend-ssr/assets/context-jz1GGEUi.js +45 -0
  108. package/dist/frontend-ssr/assets/copy-CjV57nGQ.js +87 -0
  109. package/dist/frontend-ssr/assets/db-CnxeO66n.js +65 -0
  110. package/dist/frontend-ssr/assets/dialog-BOV1u6zP.js +157 -0
  111. package/dist/frontend-ssr/assets/dndzone-DMvTO_Jz.js +2114 -0
  112. package/dist/frontend-ssr/assets/document-drop-coordinator-CEaYACsC.js +109 -0
  113. package/dist/frontend-ssr/assets/documents-BnOTRdTY.js +108 -0
  114. package/dist/frontend-ssr/assets/dropdown-menu-Bj5rbqbB.js +555 -0
  115. package/dist/frontend-ssr/assets/editorExtensions-DUzwndMy.js +186 -0
  116. package/dist/frontend-ssr/assets/floating-layer-anchor-CYIE8Oj6.js +6114 -0
  117. package/dist/frontend-ssr/assets/folder-DChhG7qN.js +80 -0
  118. package/dist/frontend-ssr/assets/folders-CTfbS24J.js +127 -0
  119. package/dist/frontend-ssr/assets/identity-B3uHoDtf.js +99 -0
  120. package/dist/frontend-ssr/assets/input-DezGsU3y.js +19 -0
  121. package/dist/frontend-ssr/assets/keyboard.svelte-BgF47N3L.js +174 -0
  122. package/dist/frontend-ssr/assets/label-Bj8-TfFN.js +21 -0
  123. package/dist/frontend-ssr/assets/loader-circle-DZsrZ-er.js +80 -0
  124. package/dist/frontend-ssr/assets/markdown-CjqvGi5W.js +20 -0
  125. package/dist/frontend-ssr/assets/messages-CvqpZNJe.js +11125 -0
  126. package/dist/frontend-ssr/assets/resolve-BqHozBXl.js +32 -0
  127. package/dist/frontend-ssr/assets/rotate-ccw-BlgWwaiq.js +80 -0
  128. package/dist/frontend-ssr/assets/select-value-6Lk0ToYd.js +1526 -0
  129. package/dist/frontend-ssr/assets/settings-Bk5Hk9Vq.js +64 -0
  130. package/dist/frontend-ssr/assets/share-BTBJelxA.js +30 -0
  131. package/dist/frontend-ssr/assets/subfolders-refresh-store.svelte-DAh4gT16.js +77 -0
  132. package/dist/frontend-ssr/assets/tag-GZEuGWk1.js +166 -0
  133. package/dist/frontend-ssr/assets/tag-store.svelte-DPodKj6Z.js +21 -0
  134. package/dist/frontend-ssr/assets/tags-BId2wdYd.js +49 -0
  135. package/dist/frontend-ssr/assets/textarea-Dev-qSEc.js +21 -0
  136. package/dist/frontend-ssr/assets/theme.svelte-Co0-ssaD.js +67 -0
  137. package/dist/frontend-ssr/assets/utils-DtlPPXpJ.js +9 -0
  138. package/dist/frontend-ssr/assets/utils-DvZnctjz.js +23 -0
  139. package/dist/frontend-ssr/collaboration.js +39 -0
  140. package/dist/frontend-ssr/components/category-dialog.js +2 -0
  141. package/dist/frontend-ssr/components/create-snapshot-dialog.js +2 -0
  142. package/dist/frontend-ssr/components/delete-dialog.js +2 -0
  143. package/dist/frontend-ssr/components/editor/document-editor.js +2499 -0
  144. package/dist/frontend-ssr/components/editor/document-title.js +11 -0
  145. package/dist/frontend-ssr/components/editor/docx-serializer.js +186 -0
  146. package/dist/frontend-ssr/components/editor/extensions.js +2 -0
  147. package/dist/frontend-ssr/components/editor/markdown-toggle.js +20 -0
  148. package/dist/frontend-ssr/components/editor/markdown.js +2 -0
  149. package/dist/frontend-ssr/components/folder-node.js +2 -0
  150. package/dist/frontend-ssr/components/folder-tree-selector.js +2 -0
  151. package/dist/frontend-ssr/components/save-as-dialog.js +280 -0
  152. package/dist/frontend-ssr/components/settings.js +2 -0
  153. package/dist/frontend-ssr/components/share-dialog.js +2 -0
  154. package/dist/frontend-ssr/components/sidebar.js +2 -0
  155. package/dist/frontend-ssr/components/tag-create-dialog.js +2 -0
  156. package/dist/frontend-ssr/components/version-history.js +370 -0
  157. package/dist/frontend-ssr/dashboard.js +2542 -0
  158. package/dist/frontend-ssr/doc-tabs.js +23 -0
  159. package/dist/frontend-ssr/document-drop-coordinator.js +2 -0
  160. package/dist/frontend-ssr/extension.js +2 -0
  161. package/dist/frontend-ssr/folder-refresh.js +2 -0
  162. package/dist/frontend-ssr/i18n.js +10 -0
  163. package/dist/frontend-ssr/keyboard.js +2 -0
  164. package/dist/frontend-ssr/offline/identity.js +2 -0
  165. package/dist/frontend-ssr/search.js +332 -0
  166. package/dist/frontend-ssr/shared-document.js +273 -0
  167. package/dist/frontend-ssr/theme.js +9 -0
  168. package/dist/frontend-ssr/types.js +1 -0
  169. package/dist/frontend-ssr/utils/clipboard.js +2 -0
  170. package/dist/frontend-ssr/utils/dndzone.js +2 -0
  171. package/dist/frontend-ssr/utils.js +2 -0
  172. package/package.json +28 -1
  173. package/packages/cli/src/index.ts +1 -1
  174. package/packages/db/src/schema.ts +3 -0
  175. package/packages/mcp-server/src/index.ts +1 -1
  176. package/dist/frontend/CategoryDialog--rIE7FrH.js +0 -580
  177. package/dist/frontend/ConfirmDialog-Cpzyb55f.js +0 -212
  178. package/dist/frontend/CreateSnapshotDialog-CmkV-n2A.js +0 -216
  179. package/dist/frontend/DatePicker-Byynca7V.js +0 -257
  180. package/dist/frontend/DeleteDialog-ap6nOywZ.js +0 -174
  181. package/dist/frontend/FolderDialog-DmN_trV0.js +0 -247
  182. package/dist/frontend/FolderNode-C4B8a2fd.js +0 -317
  183. package/dist/frontend/FolderTreeSelector-D6ijiZTA.js +0 -100
  184. package/dist/frontend/Icon-DtNo0N1U.js +0 -64
  185. package/dist/frontend/SettingsDialog-2kTaTXAs.js +0 -992
  186. package/dist/frontend/ShareDialog-BBDGNF5n.js +0 -165
  187. package/dist/frontend/TagCreateDialog-DiLZnJo4.js +0 -258
  188. package/dist/frontend/camera-B7dAOd4s.js +0 -28
  189. package/dist/frontend/check-CDwRlG9T.js +0 -24
  190. package/dist/frontend/chevron-down-B7ZrjUmT.js +0 -24
  191. package/dist/frontend/circle-check-CDqeMB2d.js +0 -28
  192. package/dist/frontend/client-Bc5Fzx40.js +0 -2785
  193. package/dist/frontend/clock-Ck5Sn-Zl.js +0 -28
  194. package/dist/frontend/clsx-nmtDPO_P.js +0 -16
  195. package/dist/frontend/copy-CMAA6GP0.js +0 -31
  196. package/dist/frontend/dialog-BDkiG42a.js +0 -213
  197. package/dist/frontend/disclose-version-5I57E3LD.js +0 -3
  198. package/dist/frontend/ellipsis-vertical-BBuPldbW.js +0 -519
  199. package/dist/frontend/folder-TQjKY4yn.js +0 -44
  200. package/dist/frontend/index-client-jobkrWVL.js +0 -86
  201. package/dist/frontend/input-CBI6p4Xl.js +0 -23
  202. package/dist/frontend/label-C-GkhEp4.js +0 -30
  203. package/dist/frontend/rotate-ccw-CleZtJ5D.js +0 -24
  204. package/dist/frontend/select-value-CvrWRkXW.js +0 -1436
  205. package/dist/frontend/subfolders-refresh-store.svelte-BsheoQma.js +0 -65
  206. package/dist/frontend/tag-Dx3SmucJ.js +0 -53
  207. package/dist/frontend/tag-store.svelte-CIaF4sdZ.js +0 -29
  208. package/dist/frontend/textarea-Dfp78XlL.js +0 -23
  209. package/dist/frontend/theme.svelte-CROg1Hi5.js +0 -49
  210. package/dist/frontend/x-DaTdeDXv.js +0 -24
@@ -0,0 +1,11 @@
1
+ import { Fr as doc_title_placeholder, Pr as doc_title_label } from "../../assets/messages-CvqpZNJe.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 { Rt as editor_markdown_label, zt as editor_markdown_placeholder } from "../../assets/messages-CvqpZNJe.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-BZ0Q2QUS.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 { _n as action_save, gn as action_cancel } from "../assets/messages-CvqpZNJe.js";
2
+ import { t as Chevron_down } from "../assets/chevron-down-CSSNGNh_.js";
3
+ import { t as FolderTreeSelector } from "../assets/FolderTreeSelector-DZNZ2oI6.js";
4
+ import { t as Loader_circle } from "../assets/loader-circle-DZsrZ-er.js";
5
+ 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";
6
+ import { t as Label } from "../assets/label-Bj8-TfFN.js";
7
+ import "../assets/categories-AOqgcsn4.js";
8
+ import { a as Select, i as Select_content, n as Select_trigger, r as Select_item, t as Select_value } from "../assets/select-value-6Lk0ToYd.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-B8L_YqNA.js";
2
+ export { SettingsDialog };
@@ -0,0 +1,2 @@
1
+ import { t as ShareDialog } from "../assets/ShareDialog-vMvJLRfn.js";
2
+ export { ShareDialog };
@@ -0,0 +1,2 @@
1
+ import { t as Sidebar } from "../assets/Sidebar-EHuUAx3W.js";
2
+ export { Sidebar };
@@ -0,0 +1,2 @@
1
+ import { t as TagCreateDialog } from "../assets/TagCreateDialog-B0DPEfmQ.js";
2
+ export { TagCreateDialog };