@hiai-gg/docsmint 0.3.7 → 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 (196) 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/camera-iKXDOOWT.js +29 -0
  16. package/dist/frontend/check-D-UuvBuh.js +25 -0
  17. package/dist/frontend/chevron-down-CiPtYyFh.js +25 -0
  18. package/dist/frontend/circle-check-tSPE1V6t.js +29 -0
  19. package/dist/frontend/clock-DJHbHZb8.js +29 -0
  20. package/dist/frontend/{bundle-mjs-CP6Owz-8.js → clsx-C7bIvsDS.js} +16 -1
  21. package/dist/frontend/components/category-dialog.js +1 -1
  22. package/dist/frontend/components/create-snapshot-dialog.js +1 -1
  23. package/dist/frontend/components/delete-dialog.js +1 -1
  24. package/dist/frontend/components/editor/document-editor.js +1364 -1353
  25. package/dist/frontend/components/editor/document-title.js +25 -25
  26. package/dist/frontend/components/editor/markdown-toggle.js +45 -45
  27. package/dist/frontend/components/folder-node.js +1 -1
  28. package/dist/frontend/components/folder-tree-selector.js +1 -1
  29. package/dist/frontend/components/save-as-dialog.js +169 -151
  30. package/dist/frontend/components/settings.js +1 -1
  31. package/dist/frontend/components/share-dialog.js +1 -1
  32. package/dist/frontend/components/sidebar.js +1161 -1153
  33. package/dist/frontend/components/tag-create-dialog.js +1 -1
  34. package/dist/frontend/components/version-history.js +188 -187
  35. package/dist/frontend/copy-GppwRMjX.js +32 -0
  36. package/dist/frontend/dashboard.js +1188 -1156
  37. package/dist/frontend/dialog-D6NxYVmy.js +213 -0
  38. package/dist/frontend/doc-tabs.js +2 -2
  39. package/dist/frontend/ellipsis-vertical-P9MHvCps.js +530 -0
  40. package/dist/frontend/extension.js +8 -8
  41. package/dist/frontend/{floating-layer-anchor-C51M4l6v.js → floating-layer-anchor-CPwucTfd.js} +1414 -1412
  42. package/dist/frontend/folder-DeWhnD7O.js +45 -0
  43. package/dist/frontend/folder-refresh.js +1 -1
  44. package/dist/frontend/input-B5Rak-5G.js +23 -0
  45. package/dist/frontend/keyboard.js +1 -1
  46. package/dist/frontend/{keyboard.svelte-D7H8DihC.js → keyboard.svelte-CApmX0vl.js} +53 -53
  47. package/dist/frontend/label-CW9rxoAb.js +30 -0
  48. package/dist/frontend/{loader-circle-Bk-WFz9g.js → loader-circle-BA6aLO71.js} +86 -85
  49. package/dist/frontend/rotate-ccw-B4Q7brmV.js +25 -0
  50. package/dist/frontend/search.js +680 -654
  51. package/dist/frontend/select-value-sF86Geyh.js +1446 -0
  52. package/dist/frontend/shared-document.js +94 -94
  53. package/dist/frontend/subfolders-refresh-store.svelte-B2dKVmgz.js +65 -0
  54. package/dist/frontend/tag-HxRazVN_.js +54 -0
  55. package/dist/frontend/tag-store.svelte-CqrUXo0o.js +29 -0
  56. package/dist/frontend/textarea-i1720bE7.js +23 -0
  57. package/dist/frontend/theme.js +1 -1
  58. package/dist/frontend/theme.svelte-DKfCy12k.js +49 -0
  59. package/dist/frontend/{utils-C0OW2678.js → utils-CffiyuTo.js} +2 -3
  60. package/dist/frontend/{utils-D8kmM3ub.js → utils-hzdMVeCv.js} +2 -3
  61. package/dist/frontend/utils.js +1 -1
  62. package/dist/frontend/x-CzBsnJ2x.js +25 -0
  63. package/dist/frontend-ssr/api/attachments.js +2 -0
  64. package/dist/frontend-ssr/api/categories.js +2 -0
  65. package/dist/frontend-ssr/api/documents.js +2 -0
  66. package/dist/frontend-ssr/api/folders.js +2 -0
  67. package/dist/frontend-ssr/api/settings.js +2 -0
  68. package/dist/frontend-ssr/api/share.js +2 -0
  69. package/dist/frontend-ssr/api/tags.js +2 -0
  70. package/dist/frontend-ssr/assets/CategoryDialog-C2xaZKHq.js +584 -0
  71. package/dist/frontend-ssr/assets/ConfirmDialog-DjMFKc0V.js +420 -0
  72. package/dist/frontend-ssr/assets/CreateSnapshotDialog-BRw1xJW1.js +214 -0
  73. package/dist/frontend-ssr/assets/DatePicker-DnXniwlZ.js +312 -0
  74. package/dist/frontend-ssr/assets/DeleteDialog-BCfZy3Zn.js +154 -0
  75. package/dist/frontend-ssr/assets/FolderDialog-Dq7I2cKZ.js +429 -0
  76. package/dist/frontend-ssr/assets/FolderNode-DRfBfpft.js +171 -0
  77. package/dist/frontend-ssr/assets/FolderTreeSelector-DZNZ2oI6.js +147 -0
  78. package/dist/frontend-ssr/assets/Icon-B0Zqppjo.js +231 -0
  79. package/dist/frontend-ssr/assets/SettingsDialog-CX8Noa8A.js +1107 -0
  80. package/dist/frontend-ssr/assets/ShareDialog-Cge49ZdJ.js +54 -0
  81. package/dist/frontend-ssr/assets/TagCreateDialog-EAChgBF-.js +264 -0
  82. package/dist/frontend-ssr/assets/api-keys-DFqX39MT.js +35 -0
  83. package/dist/frontend-ssr/assets/attachments-CWBxE3Vz.js +85 -0
  84. package/dist/frontend-ssr/assets/auth-client-x26kqY8Z.js +1286 -0
  85. package/dist/frontend-ssr/assets/camera-CdxscTw-.js +84 -0
  86. package/dist/frontend-ssr/assets/categories-AOqgcsn4.js +75 -0
  87. package/dist/frontend-ssr/assets/chevron-down-CSSNGNh_.js +80 -0
  88. package/dist/frontend-ssr/assets/chevron-right-B4p7Sk6X.js +80 -0
  89. package/dist/frontend-ssr/assets/circle-check-CI1v4vYh.js +84 -0
  90. package/dist/frontend-ssr/assets/client-DZMkDkDn.js +129 -0
  91. package/dist/frontend-ssr/assets/clipboard-CXOaoz2W.js +30 -0
  92. package/dist/frontend-ssr/assets/clock-IL-eX2di.js +84 -0
  93. package/dist/frontend-ssr/assets/context-jz1GGEUi.js +45 -0
  94. package/dist/frontend-ssr/assets/copy-CjV57nGQ.js +87 -0
  95. package/dist/frontend-ssr/assets/db-CnxeO66n.js +65 -0
  96. package/dist/frontend-ssr/assets/dialog-BOV1u6zP.js +157 -0
  97. package/dist/frontend-ssr/assets/dndzone-DMvTO_Jz.js +2114 -0
  98. package/dist/frontend-ssr/assets/document-drop-coordinator-CEaYACsC.js +109 -0
  99. package/dist/frontend-ssr/assets/documents-BnOTRdTY.js +108 -0
  100. package/dist/frontend-ssr/assets/editorExtensions-DUzwndMy.js +186 -0
  101. package/dist/frontend-ssr/assets/ellipsis-vertical-C-0hgkZn.js +555 -0
  102. package/dist/frontend-ssr/assets/floating-layer-anchor-uzw9K8qN.js +6114 -0
  103. package/dist/frontend-ssr/assets/folder-DChhG7qN.js +80 -0
  104. package/dist/frontend-ssr/assets/folders-CTfbS24J.js +127 -0
  105. package/dist/frontend-ssr/assets/identity-B3uHoDtf.js +99 -0
  106. package/dist/frontend-ssr/assets/input-DezGsU3y.js +19 -0
  107. package/dist/frontend-ssr/assets/keyboard.svelte-BgF47N3L.js +174 -0
  108. package/dist/frontend-ssr/assets/label-Bj8-TfFN.js +21 -0
  109. package/dist/frontend-ssr/assets/loader-circle-DZsrZ-er.js +80 -0
  110. package/dist/frontend-ssr/assets/markdown-CjqvGi5W.js +20 -0
  111. package/dist/frontend-ssr/assets/messages-DhXqlcJI.js +11125 -0
  112. package/dist/frontend-ssr/assets/resolve-BqHozBXl.js +32 -0
  113. package/dist/frontend-ssr/assets/rotate-ccw-BlgWwaiq.js +80 -0
  114. package/dist/frontend-ssr/assets/select-value-DngdSmLI.js +1526 -0
  115. package/dist/frontend-ssr/assets/settings-E6qSAWM2.js +64 -0
  116. package/dist/frontend-ssr/assets/share-BTBJelxA.js +30 -0
  117. package/dist/frontend-ssr/assets/subfolders-refresh-store.svelte-DAh4gT16.js +77 -0
  118. package/dist/frontend-ssr/assets/tag-GZEuGWk1.js +166 -0
  119. package/dist/frontend-ssr/assets/tag-store.svelte-DPodKj6Z.js +21 -0
  120. package/dist/frontend-ssr/assets/tags-BId2wdYd.js +49 -0
  121. package/dist/frontend-ssr/assets/textarea-Dev-qSEc.js +21 -0
  122. package/dist/frontend-ssr/assets/theme.svelte-Co0-ssaD.js +67 -0
  123. package/dist/frontend-ssr/assets/utils-DtlPPXpJ.js +9 -0
  124. package/dist/frontend-ssr/assets/utils-DvZnctjz.js +23 -0
  125. package/dist/frontend-ssr/collaboration.js +39 -0
  126. package/dist/frontend-ssr/components/category-dialog.js +2 -0
  127. package/dist/frontend-ssr/components/create-snapshot-dialog.js +2 -0
  128. package/dist/frontend-ssr/components/delete-dialog.js +2 -0
  129. package/dist/frontend-ssr/components/editor/document-editor.js +2499 -0
  130. package/dist/frontend-ssr/components/editor/document-title.js +11 -0
  131. package/dist/frontend-ssr/components/editor/docx-serializer.js +186 -0
  132. package/dist/frontend-ssr/components/editor/extensions.js +2 -0
  133. package/dist/frontend-ssr/components/editor/markdown-toggle.js +20 -0
  134. package/dist/frontend-ssr/components/editor/markdown.js +2 -0
  135. package/dist/frontend-ssr/components/folder-node.js +2 -0
  136. package/dist/frontend-ssr/components/folder-tree-selector.js +2 -0
  137. package/dist/frontend-ssr/components/save-as-dialog.js +280 -0
  138. package/dist/frontend-ssr/components/settings.js +2 -0
  139. package/dist/frontend-ssr/components/share-dialog.js +2 -0
  140. package/dist/frontend-ssr/components/sidebar.js +2033 -0
  141. package/dist/frontend-ssr/components/tag-create-dialog.js +2 -0
  142. package/dist/frontend-ssr/components/version-history.js +370 -0
  143. package/dist/frontend-ssr/dashboard.js +2542 -0
  144. package/dist/frontend-ssr/doc-tabs.js +23 -0
  145. package/dist/frontend-ssr/document-drop-coordinator.js +2 -0
  146. package/dist/frontend-ssr/extension.js +13 -0
  147. package/dist/frontend-ssr/folder-refresh.js +2 -0
  148. package/dist/frontend-ssr/i18n.js +10 -0
  149. package/dist/frontend-ssr/keyboard.js +2 -0
  150. package/dist/frontend-ssr/offline/identity.js +2 -0
  151. package/dist/frontend-ssr/search.js +332 -0
  152. package/dist/frontend-ssr/shared-document.js +273 -0
  153. package/dist/frontend-ssr/theme.js +9 -0
  154. package/dist/frontend-ssr/types.js +1 -0
  155. package/dist/frontend-ssr/utils/clipboard.js +2 -0
  156. package/dist/frontend-ssr/utils/dndzone.js +2 -0
  157. package/dist/frontend-ssr/utils.js +2 -0
  158. package/package.json +22 -1
  159. package/packages/cli/src/index.ts +1 -1
  160. package/packages/db/src/schema.ts +3 -0
  161. package/packages/mcp-server/src/index.ts +1 -1
  162. package/dist/frontend/CategoryDialog--rIE7FrH.js +0 -580
  163. package/dist/frontend/ConfirmDialog-Cpzyb55f.js +0 -212
  164. package/dist/frontend/CreateSnapshotDialog-CmkV-n2A.js +0 -216
  165. package/dist/frontend/DatePicker-Byynca7V.js +0 -257
  166. package/dist/frontend/DeleteDialog-ap6nOywZ.js +0 -174
  167. package/dist/frontend/FolderDialog-DmN_trV0.js +0 -247
  168. package/dist/frontend/FolderNode-C4B8a2fd.js +0 -317
  169. package/dist/frontend/FolderTreeSelector-D6ijiZTA.js +0 -100
  170. package/dist/frontend/Icon-DtNo0N1U.js +0 -64
  171. package/dist/frontend/SettingsDialog-2kTaTXAs.js +0 -992
  172. package/dist/frontend/ShareDialog-BBDGNF5n.js +0 -165
  173. package/dist/frontend/TagCreateDialog-DiLZnJo4.js +0 -258
  174. package/dist/frontend/camera-B7dAOd4s.js +0 -28
  175. package/dist/frontend/check-CDwRlG9T.js +0 -24
  176. package/dist/frontend/chevron-down-B7ZrjUmT.js +0 -24
  177. package/dist/frontend/circle-check-CDqeMB2d.js +0 -28
  178. package/dist/frontend/client-Bc5Fzx40.js +0 -2785
  179. package/dist/frontend/clock-Ck5Sn-Zl.js +0 -28
  180. package/dist/frontend/clsx-nmtDPO_P.js +0 -16
  181. package/dist/frontend/copy-CMAA6GP0.js +0 -31
  182. package/dist/frontend/dialog-BDkiG42a.js +0 -213
  183. package/dist/frontend/disclose-version-5I57E3LD.js +0 -3
  184. package/dist/frontend/ellipsis-vertical-BBuPldbW.js +0 -519
  185. package/dist/frontend/folder-TQjKY4yn.js +0 -44
  186. package/dist/frontend/index-client-jobkrWVL.js +0 -86
  187. package/dist/frontend/input-CBI6p4Xl.js +0 -23
  188. package/dist/frontend/label-C-GkhEp4.js +0 -30
  189. package/dist/frontend/rotate-ccw-CleZtJ5D.js +0 -24
  190. package/dist/frontend/select-value-CvrWRkXW.js +0 -1436
  191. package/dist/frontend/subfolders-refresh-store.svelte-BsheoQma.js +0 -65
  192. package/dist/frontend/tag-Dx3SmucJ.js +0 -53
  193. package/dist/frontend/tag-store.svelte-CIaF4sdZ.js +0 -29
  194. package/dist/frontend/textarea-Dfp78XlL.js +0 -23
  195. package/dist/frontend/theme.svelte-CROg1Hi5.js +0 -49
  196. package/dist/frontend/x-DaTdeDXv.js +0 -24
@@ -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 };