@arbidocs/blocks 0.4.32 → 0.4.37

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 (199) hide show
  1. package/dist/agents/index.cjs +258 -216
  2. package/dist/agents/index.js +9 -7
  3. package/dist/agents/tasks/ConversationListView.d.ts +58 -0
  4. package/dist/agents/tasks/ConversationTurnSpeaker.d.ts +16 -0
  5. package/dist/agents/tasks/NewThreadDialog.d.ts +1 -1
  6. package/dist/agents/tasks/TaskActivityTimeline.d.ts +1 -1
  7. package/dist/agents/tasks/TaskFlow.d.ts +22 -0
  8. package/dist/agents/tasks/TaskInbox.d.ts +26 -0
  9. package/dist/agents/tasks/TaskReviewDialog.d.ts +22 -0
  10. package/dist/agents/tasks/TaskRowMenu.d.ts +10 -2
  11. package/dist/agents/tasks/TaskRunsDialog.d.ts +8 -3
  12. package/dist/agents/tasks/TaskStartDialog.d.ts +24 -0
  13. package/dist/agents/tasks/TaskTable.d.ts +1 -1
  14. package/dist/agents/tasks/ThreadNotifyDialog.d.ts +11 -0
  15. package/dist/agents/tasks/WorkflowComposer.d.ts +1 -1
  16. package/dist/agents/tasks/WorkflowsTable.d.ts +7 -0
  17. package/dist/agents/tasks/compact-thread-activity.d.ts +8 -0
  18. package/dist/agents/tasks/index.d.ts +10 -0
  19. package/dist/agents/tasks/taskComposerTypes.d.ts +16 -1
  20. package/dist/agents/tasks/taskRequest.d.ts +1 -0
  21. package/dist/agents/tasks/testGrid.d.ts +24 -0
  22. package/dist/agents/tasks/workflowColumns.d.ts +2 -1
  23. package/dist/agents/tasks/workflowRows.d.ts +6 -0
  24. package/dist/agents/workflows/types.d.ts +2 -0
  25. package/dist/auth/index.cjs +27 -27
  26. package/dist/auth/index.js +1 -1
  27. package/dist/chat/Message.d.ts +8 -2
  28. package/dist/chat/index.cjs +132 -120
  29. package/dist/chat/index.d.ts +2 -0
  30. package/dist/chat/index.js +2 -2
  31. package/dist/chat/participant-tints.d.ts +1 -0
  32. package/dist/chat/useRecipientDraft.d.ts +14 -0
  33. package/dist/{chunk-KF4EC5XU.js → chunk-24KQJYSB.js} +3 -3
  34. package/dist/{chunk-KF4EC5XU.js.map → chunk-24KQJYSB.js.map} +1 -1
  35. package/dist/{chunk-GVQOBJKR.cjs → chunk-2EAE5JP6.cjs} +7 -4
  36. package/dist/chunk-2EAE5JP6.cjs.map +1 -0
  37. package/dist/chunk-3AFWGEDJ.cjs +53 -0
  38. package/dist/chunk-3AFWGEDJ.cjs.map +1 -0
  39. package/dist/{chunk-UBNVIIBT.js → chunk-4WWM3GQ5.js} +23 -8
  40. package/dist/chunk-4WWM3GQ5.js.map +1 -0
  41. package/dist/{chunk-56BUD74K.cjs → chunk-65THHQVB.cjs} +27 -27
  42. package/dist/{chunk-56BUD74K.cjs.map → chunk-65THHQVB.cjs.map} +1 -1
  43. package/dist/{chunk-UTYQPVIW.cjs → chunk-7QDX2CO4.cjs} +6 -6
  44. package/dist/{chunk-UTYQPVIW.cjs.map → chunk-7QDX2CO4.cjs.map} +1 -1
  45. package/dist/{chunk-5B4PXAKI.cjs → chunk-7RGLTF76.cjs} +23 -8
  46. package/dist/chunk-7RGLTF76.cjs.map +1 -0
  47. package/dist/{chunk-PLGVMLBD.cjs → chunk-AMXQQCCB.cjs} +1975 -610
  48. package/dist/chunk-AMXQQCCB.cjs.map +1 -0
  49. package/dist/{chunk-NUPVHEJW.js → chunk-BUHKUKKB.js} +7 -4
  50. package/dist/chunk-BUHKUKKB.js.map +1 -0
  51. package/dist/{chunk-4XJZ6AAY.js → chunk-CKB64Z4R.js} +245 -6
  52. package/dist/chunk-CKB64Z4R.js.map +1 -0
  53. package/dist/chunk-DDW3M22Z.js +126 -0
  54. package/dist/chunk-DDW3M22Z.js.map +1 -0
  55. package/dist/{chunk-KXMDOTGW.js → chunk-DLBUFHLY.js} +10 -2
  56. package/dist/chunk-DLBUFHLY.js.map +1 -0
  57. package/dist/{chunk-ZHLMDJCO.cjs → chunk-DLVX6R6B.cjs} +62 -26
  58. package/dist/chunk-DLVX6R6B.cjs.map +1 -0
  59. package/dist/{chunk-JGZTRLKL.cjs → chunk-IA7RTPT3.cjs} +7 -4
  60. package/dist/chunk-IA7RTPT3.cjs.map +1 -0
  61. package/dist/{chunk-6YVI74BC.js → chunk-JH25QIZW.js} +439 -12
  62. package/dist/chunk-JH25QIZW.js.map +1 -0
  63. package/dist/{chunk-FRRDPYBR.cjs → chunk-L7B4W4LA.cjs} +74 -5
  64. package/dist/chunk-L7B4W4LA.cjs.map +1 -0
  65. package/dist/{chunk-NJL4LIXX.js → chunk-LFGJAZ5H.js} +11 -8
  66. package/dist/chunk-LFGJAZ5H.js.map +1 -0
  67. package/dist/{chunk-IAKUTBPX.js → chunk-LYUO3E6V.js} +3 -3
  68. package/dist/{chunk-IAKUTBPX.js.map → chunk-LYUO3E6V.js.map} +1 -1
  69. package/dist/{chunk-EYPPB5CY.cjs → chunk-M2YGPC5N.cjs} +4 -4
  70. package/dist/{chunk-EYPPB5CY.cjs.map → chunk-M2YGPC5N.cjs.map} +1 -1
  71. package/dist/{chunk-5ZBP7TCD.cjs → chunk-MJCCBMM5.cjs} +10 -2
  72. package/dist/chunk-MJCCBMM5.cjs.map +1 -0
  73. package/dist/{chunk-VMCOH3AY.cjs → chunk-NUF2WGGF.cjs} +527 -96
  74. package/dist/chunk-NUF2WGGF.cjs.map +1 -0
  75. package/dist/{chunk-OJSWQM4G.js → chunk-OZJ5PXA6.js} +29 -4
  76. package/dist/chunk-OZJ5PXA6.js.map +1 -0
  77. package/dist/{chunk-3NZR6PAG.js → chunk-PE7Z53RB.js} +70 -4
  78. package/dist/chunk-PE7Z53RB.js.map +1 -0
  79. package/dist/chunk-Q6LF7N3A.cjs +130 -0
  80. package/dist/chunk-Q6LF7N3A.cjs.map +1 -0
  81. package/dist/{chunk-RGHQFJOL.cjs → chunk-QFUF4A4J.cjs} +28 -2
  82. package/dist/chunk-QFUF4A4J.cjs.map +1 -0
  83. package/dist/chunk-RFXJYIDV.js +50 -0
  84. package/dist/chunk-RFXJYIDV.js.map +1 -0
  85. package/dist/{chunk-QN42OA5J.js → chunk-SFXVNFES.js} +4 -4
  86. package/dist/chunk-SFXVNFES.js.map +1 -0
  87. package/dist/{chunk-YVIOCITQ.cjs → chunk-VUEZARW5.cjs} +3 -3
  88. package/dist/chunk-VUEZARW5.cjs.map +1 -0
  89. package/dist/{chunk-JLOYWXRB.js → chunk-VZGBCBYB.js} +3 -3
  90. package/dist/chunk-VZGBCBYB.js.map +1 -0
  91. package/dist/{chunk-ZVPTFTGV.cjs → chunk-WBDK4PIA.cjs} +11 -8
  92. package/dist/chunk-WBDK4PIA.cjs.map +1 -0
  93. package/dist/{chunk-ZORQ5M3W.cjs → chunk-WQFGG2BV.cjs} +4 -4
  94. package/dist/chunk-WQFGG2BV.cjs.map +1 -0
  95. package/dist/{chunk-C75S6USL.js → chunk-WYVCXY7R.js} +7 -4
  96. package/dist/chunk-WYVCXY7R.js.map +1 -0
  97. package/dist/{chunk-WSJVHSGN.js → chunk-XWEJ5LV2.js} +63 -27
  98. package/dist/chunk-XWEJ5LV2.js.map +1 -0
  99. package/dist/{chunk-S5HZBXZA.cjs → chunk-YJQVLVBJ.cjs} +243 -2
  100. package/dist/chunk-YJQVLVBJ.cjs.map +1 -0
  101. package/dist/{chunk-YMHGF6R5.js → chunk-ZCF2JJFA.js} +3 -3
  102. package/dist/{chunk-YMHGF6R5.js.map → chunk-ZCF2JJFA.js.map} +1 -1
  103. package/dist/{chunk-TZ4QF7EP.js → chunk-ZDA5CZPS.js} +1948 -594
  104. package/dist/chunk-ZDA5CZPS.js.map +1 -0
  105. package/dist/collaboration/index.cjs +45 -41
  106. package/dist/collaboration/index.js +1 -1
  107. package/dist/collaboration/mail/MailMessagePreview.d.ts +11 -0
  108. package/dist/collaboration/mail/index.d.ts +1 -0
  109. package/dist/connect/docx.cjs +4 -4
  110. package/dist/connect/docx.js +1 -1
  111. package/dist/connect/index.cjs +32 -32
  112. package/dist/connect/index.js +3 -3
  113. package/dist/docx/NativeDocxEditor.d.ts +2 -2
  114. package/dist/docx/index.cjs +33 -30
  115. package/dist/docx/index.cjs.map +1 -1
  116. package/dist/docx/index.d.ts +2 -2
  117. package/dist/docx/index.js +3 -4
  118. package/dist/docx/index.js.map +1 -1
  119. package/dist/docx/review/DocxEditorReview.d.ts +16 -0
  120. package/dist/docx/review/index.d.ts +3 -0
  121. package/dist/docx/review/reviewModule.d.ts +6 -0
  122. package/dist/docx/review/useReview.d.ts +29 -0
  123. package/dist/facts/FactsFilterInput.d.ts +2 -46
  124. package/dist/facts/FactsToolbar.d.ts +5 -5
  125. package/dist/facts/index.cjs +27 -124
  126. package/dist/facts/index.cjs.map +1 -1
  127. package/dist/facts/index.js +13 -118
  128. package/dist/facts/index.js.map +1 -1
  129. package/dist/files/FilesPage.d.ts +1 -1
  130. package/dist/files/FilesToolbar.d.ts +1 -1
  131. package/dist/files/FolderPicker.d.ts +2 -1
  132. package/dist/files/ViewerChrome.d.ts +1 -1
  133. package/dist/files/bulk/FolderFilterButton.d.ts +3 -2
  134. package/dist/files/cells/BulkLabelSelect.d.ts +11 -0
  135. package/dist/files/cells/LabelMultiSelect.d.ts +2 -1
  136. package/dist/files/cells/index.d.ts +1 -0
  137. package/dist/files/index.cjs +110 -167
  138. package/dist/files/index.cjs.map +1 -1
  139. package/dist/files/index.js +96 -159
  140. package/dist/files/index.js.map +1 -1
  141. package/dist/home/index.cjs +20 -20
  142. package/dist/home/index.cjs.map +1 -1
  143. package/dist/home/index.js +5 -5
  144. package/dist/home/index.js.map +1 -1
  145. package/dist/index.cjs +646 -623
  146. package/dist/index.cjs.map +1 -1
  147. package/dist/index.d.ts +1 -0
  148. package/dist/index.js +20 -68
  149. package/dist/index.js.map +1 -1
  150. package/dist/settings/SettingsPanel.d.ts +1 -1
  151. package/dist/settings/TriStateFilterMenu.d.ts +3 -1
  152. package/dist/settings/index.cjs +55 -280
  153. package/dist/settings/index.cjs.map +1 -1
  154. package/dist/settings/index.js +17 -248
  155. package/dist/settings/index.js.map +1 -1
  156. package/dist/shell/FilterInput.d.ts +48 -0
  157. package/dist/shell/TabHeader.d.ts +7 -1
  158. package/dist/shell/index.cjs +62 -49
  159. package/dist/shell/index.d.ts +1 -0
  160. package/dist/shell/index.js +4 -3
  161. package/dist/site/index.cjs +62 -62
  162. package/dist/site/index.js +2 -2
  163. package/dist/studio/index.cjs +75 -75
  164. package/dist/studio/index.js +6 -6
  165. package/dist/workspaces/WorkspaceCard.d.ts +2 -2
  166. package/dist/workspaces/index.cjs +9 -2
  167. package/dist/workspaces/index.cjs.map +1 -1
  168. package/dist/workspaces/index.js +9 -2
  169. package/dist/workspaces/index.js.map +1 -1
  170. package/package.json +9 -13
  171. package/src/blocks.css +4 -0
  172. package/src/components/grid.css +10 -0
  173. package/src/docx/styles.css +488 -43
  174. package/dist/chunk-3NZR6PAG.js.map +0 -1
  175. package/dist/chunk-4XJZ6AAY.js.map +0 -1
  176. package/dist/chunk-5B4PXAKI.cjs.map +0 -1
  177. package/dist/chunk-5ZBP7TCD.cjs.map +0 -1
  178. package/dist/chunk-6YVI74BC.js.map +0 -1
  179. package/dist/chunk-C75S6USL.js.map +0 -1
  180. package/dist/chunk-FRRDPYBR.cjs.map +0 -1
  181. package/dist/chunk-GVQOBJKR.cjs.map +0 -1
  182. package/dist/chunk-JGZTRLKL.cjs.map +0 -1
  183. package/dist/chunk-JLOYWXRB.js.map +0 -1
  184. package/dist/chunk-KXMDOTGW.js.map +0 -1
  185. package/dist/chunk-NJL4LIXX.js.map +0 -1
  186. package/dist/chunk-NUPVHEJW.js.map +0 -1
  187. package/dist/chunk-OJSWQM4G.js.map +0 -1
  188. package/dist/chunk-PLGVMLBD.cjs.map +0 -1
  189. package/dist/chunk-QN42OA5J.js.map +0 -1
  190. package/dist/chunk-RGHQFJOL.cjs.map +0 -1
  191. package/dist/chunk-S5HZBXZA.cjs.map +0 -1
  192. package/dist/chunk-TZ4QF7EP.js.map +0 -1
  193. package/dist/chunk-UBNVIIBT.js.map +0 -1
  194. package/dist/chunk-VMCOH3AY.cjs.map +0 -1
  195. package/dist/chunk-WSJVHSGN.js.map +0 -1
  196. package/dist/chunk-YVIOCITQ.cjs.map +0 -1
  197. package/dist/chunk-ZHLMDJCO.cjs.map +0 -1
  198. package/dist/chunk-ZORQ5M3W.cjs.map +0 -1
  199. package/dist/chunk-ZVPTFTGV.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/docx/export.ts","../src/docx/review/reviewModule.ts","../src/docx/review/useReview.ts","../src/docx/review/DocxEditorReview.tsx","../src/docx/mentions.ts","../src/docx/DocxMentions.tsx","../src/docx/streamWordDocument.tsx","../src/docx/NativeDocxEditor.tsx","../src/docx/fonts.ts","../src/docx/StreamedWordArtifact.tsx"],"names":["unzipSync","strFromU8","strToU8","document","zipSync","revisionItemsOf","collectReviewItems","useDocxEditor","useEditorSnapshot","useMemo","createContext","useContext","jsxs","jsx","useState","Fragment","useRef","useEffect","ReviewRailContext","useCallback","useLayoutEffect","extractMentions","Dialog","DialogContent","DialogHeader","DialogTitle","filterMentionCandidates","status","findMentionQuery","createPortal","MentionMenu","renderToStaticMarkup","AiMarkdown","splitMarkdownBlocks","Y","React","useChromeTranslate","DocxEditor","Type","Ellipsis","createHocuspocusCollaboration","DOCUMENT_COLLABORATION_VERSIONS","collaborationModule","WifiOff","Check","Download","Save","RefreshCw","createFontSource"],"mappings":"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","file":"chunk-NUF2WGGF.cjs","sourcesContent":["import { strFromU8, strToU8, unzipSync, zipSync } from 'fflate'\n\n/** Repair Word package declarations and duplicate fragment revision IDs on export. */\nexport function normalizeDocxExport(data: ArrayBuffer): ArrayBuffer {\n const files = unzipSync(new Uint8Array(data))\n const part = '[Content_Types].xml'\n const xml = new DOMParser().parseFromString(strFromU8(files[part]), 'application/xml')\n if (xml.getElementsByTagName('parsererror').length) throw new Error('Invalid DOCX content types.')\n const namespace = 'http://schemas.openxmlformats.org/package/2006/content-types'\n const types: Record<string, string> = {\n 'word/comments.xml':\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml',\n 'word/commentsExtended.xml':\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtended+xml',\n 'word/commentsIds.xml':\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.commentsIds+xml',\n 'word/commentsExtensible.xml':\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtensible+xml',\n }\n let changed = false\n for (const [name, type] of Object.entries(types)) {\n if (!files[name]) continue\n let override = Array.from(xml.getElementsByTagNameNS(namespace, 'Override')).find(\n (node) => node.getAttribute('PartName') === '/' + name\n )\n if (!override) {\n override = xml.createElementNS(namespace, 'Override')\n override.setAttribute('PartName', '/' + name)\n xml.documentElement.appendChild(override)\n }\n if (override.getAttribute('ContentType') !== type) {\n override.setAttribute('ContentType', type)\n changed = true\n }\n }\n if (changed) files[part] = strToU8(new XMLSerializer().serializeToString(xml))\n const word = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'\n for (const name of Object.keys(files)) {\n if (!/^word\\/(document|header\\d*|footer\\d*|footnotes|endnotes|comments)\\.xml$/.test(name))\n continue\n const document = new DOMParser().parseFromString(strFromU8(files[name]), 'application/xml')\n if (document.getElementsByTagName('parsererror').length)\n throw new Error('Invalid Word document XML.')\n const elements = Array.from(document.getElementsByTagName('*'))\n const used = new Set(\n elements.map((element) => element.getAttributeNS(word, 'id')).filter(Boolean)\n )\n const seen = new Set<string>()\n let next = 1,\n repaired = false\n for (const element of elements) {\n if (\n element.namespaceURI !== word ||\n !['ins', 'del', 'moveFrom', 'moveTo'].includes(element.localName)\n )\n continue\n const id = element.getAttributeNS(word, 'id')\n if (!id) continue\n if (seen.has(id)) {\n while (used.has(String(next))) next++\n const unique = String(next++)\n const attribute = element.getAttributeNodeNS(word, 'id')!\n element.setAttributeNS(word, attribute.name, unique)\n used.add(unique)\n repaired = true\n } else seen.add(id)\n }\n if (repaired) {\n files[name] = strToU8(new XMLSerializer().serializeToString(document))\n changed = true\n }\n }\n if (!changed) return data\n return zipSync(files).slice().buffer as ArrayBuffer\n}\n","import type { EditorModule } from '@docx-editor.dev/core'\nimport { collectReviewItems, revisionItemsOf } from '@docx-editor.dev/core/store'\n\ntype Part = Parameters<typeof revisionItemsOf>[0]\ntype PartNode = { id: string; children?: readonly PartNode[] }\n\nfunction findNode(node: PartNode, id: string): PartNode | undefined {\n if (node.id === id) return node\n for (const child of node.children ?? []) {\n const found = findNode(child, id)\n if (found) return found\n }\n return undefined\n}\n\n/** Revisions wholly inside one paragraph, read from a paragraph-scoped view of the part. */\nfunction revisionItemsOfParagraph(part: Part, paragraphId: string) {\n const paragraph = findNode(part.root as unknown as PartNode, paragraphId)\n if (!paragraph) return []\n return revisionItemsOf({ ...part, root: paragraph as unknown as Part['root'] })\n}\n\n/**\n * Comments and tracked changes: the review queue derivation and the markup display modes, both\n * provided by the Apache-2.0 core engine.\n */\nexport function reviewModule(): EditorModule {\n return {\n id: 'review',\n review: {\n displayModes: ['all-markup', 'simple-markup', 'proposed', 'original'],\n collectReviewItems,\n revisionItemsOfParagraph,\n },\n }\n}\n","import { createContext, useContext, useMemo } from 'react'\nimport type { Editor, ExecResult, ReviewItemPlacement } from '@docx-editor.dev/core'\nimport { useDocxEditor, useEditorSnapshot } from '@docx-editor.dev/react'\n\nexport type ReviewEntry = ReviewItemPlacement\n\nexport interface ReviewApi {\n /** False until the editor has mounted. */\n ready: boolean\n /** Every pending decision, in document order. */\n items: readonly ReviewEntry[]\n activeKey: string | null\n paneOpen: boolean\n setPaneOpen(open: boolean): void\n /** Focus a card's range in the document. Returns false when the engine refuses. */\n setActive(key: string | null, options?: { reveal?: false }): boolean\n reply(entry: ReviewEntry, text: string): boolean\n accept(entry: ReviewEntry): boolean\n reject(entry: ReviewEntry): boolean\n resolve(entry: ReviewEntry, resolved: boolean): boolean\n remove(entry: ReviewEntry): boolean\n addComment(text: string): boolean\n /** Move the document caret to the next or previous tracked change, wrapping at the ends. */\n navigate(direction: 'next' | 'previous'): boolean\n /** Accept or reject every change shown, as one undo step. */\n resolveAll(action: 'accept' | 'reject'): boolean\n}\n\nconst NONE: readonly ReviewEntry[] = []\n\nconst ok = (result: ExecResult | undefined): boolean => result?.ok === true\n\nexport function useReview(): ReviewApi {\n const editor = useDocxEditor() as Editor | null\n // Re-render on every editor event so pane state and the active card stay current.\n const version = useEditorSnapshot(editor)\n const revision = editor?.getReviewRevision() ?? 0\n // The queue is re-derived only when the editor's review revision moves.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const items = useMemo(() => (editor ? editor.getReviewItems() : NONE), [editor, revision])\n const paneOpen = editor?.isReviewPaneOpen() ?? false\n const activeKey = items.find((item) => item.isActive)?.key ?? null\n\n return useMemo<ReviewApi>(\n () => ({\n ready: editor !== null,\n items,\n activeKey,\n paneOpen,\n setPaneOpen: (open) => {\n if (editor && editor.isReviewPaneOpen() !== open) editor.exec({ type: 'toggleReviewPane' })\n },\n setActive: (key, options) => ok(editor?.setActiveReviewItem(key, options)),\n reply: (entry, text) => ok(editor?.replyToReviewItem(entry.key, text)),\n accept: (entry) => ok(editor?.acceptReviewItem(entry.key)),\n reject: (entry) => ok(editor?.rejectReviewItem(entry.key)),\n resolve: (entry, resolved) => ok(editor?.setCommentResolved(entry.key, resolved)),\n remove: (entry) => ok(editor?.deleteReviewItem(entry.key)),\n addComment: (text) => ok(editor?.addComment(text)),\n navigate: (direction) => ok(editor?.exec({ type: 'navigateReviewChange', direction })),\n resolveAll: (action) => ok(editor?.exec({ type: 'resolveAllReviewChanges', action })),\n }),\n [editor, items, activeKey, paneOpen, version]\n )\n}\n\nexport const ReviewItemContext = createContext<ReviewEntry | null>(null)\n\n/** The card being rendered. Null outside a card. */\nexport function useReviewItem(): ReviewEntry | null {\n return useContext(ReviewItemContext)\n}\n","import React, { useCallback, useContext, useEffect, useLayoutEffect, useRef, useState } from 'react'\nimport type { Editor } from '@docx-editor.dev/core'\nimport { ReviewRailContext, useDocxEditor } from '@docx-editor.dev/react'\nimport { ReviewItemContext, useReview, type ReviewEntry } from './useReview'\n\nconst CARD_GAP = 8\n\nconst REVISION_LABELS: Record<string, string> = {\n insert: 'Inserted',\n delete: 'Deleted',\n replace: 'Replaced',\n moveFrom: 'Moved from here',\n moveTo: 'Moved to here',\n format: 'Formatted',\n paragraphMark: 'Paragraph break',\n structural: 'Table change',\n}\n\nfunction isTopLevel(entry: ReviewEntry): boolean {\n if (entry.kind === 'comment') return !entry.parentId && !entry.parentRevisionId\n if (entry.kind === 'custom') return entry.item.carded\n return true\n}\n\nfunction formatDate(value: string | undefined): string {\n if (!value) return ''\n const date = new Date(value)\n return Number.isNaN(date.getTime()) ? '' : date.toLocaleString()\n}\n\nfunction Avatar({ entry }: { entry: ReviewEntry }) {\n return (\n <span className=\"native-docx-review-avatar\" aria-hidden=\"true\">\n {entry.initials}\n </span>\n )\n}\n\nfunction Message({ entry }: { entry: ReviewEntry }) {\n return (\n <div className=\"native-docx-review-message\">\n <div className=\"native-docx-review-byline\">\n <Avatar entry={entry} />\n <span className=\"native-docx-review-author\">{entry.author || 'Reviewer'}</span>\n <time className=\"native-docx-review-date\">{formatDate(entry.date)}</time>\n </div>\n <p className=\"native-docx-review-text\" data-testid=\"review-text\">\n {entry.text}\n </p>\n </div>\n )\n}\n\nfunction ReplyForm({\n entry,\n review,\n}: {\n entry: ReviewEntry\n review: ReturnType<typeof useReview>\n}) {\n const [text, setText] = useState('')\n return (\n <form\n className=\"native-docx-review-reply\"\n onSubmit={(event) => {\n event.preventDefault()\n const value = text.trim()\n if (value && review.reply(entry, value)) setText('')\n }}\n >\n <input\n data-testid=\"review-reply-input\"\n aria-label=\"Reply\"\n placeholder=\"Reply\"\n value={text}\n onChange={(event) => setText(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === 'Escape') {\n event.stopPropagation()\n review.setActive(null)\n }\n }}\n />\n <button type=\"submit\" disabled={!text.trim()}>\n Reply\n </button>\n <button\n type=\"button\"\n data-testid=\"review-reply-cancel\"\n onClick={() => review.setActive(null)}\n >\n Cancel\n </button>\n </form>\n )\n}\n\nfunction Card({\n entry,\n replies,\n review,\n extra,\n cardRef,\n top,\n}: {\n entry: ReviewEntry\n replies: readonly ReviewEntry[]\n review: ReturnType<typeof useReview>\n extra?: React.ReactNode\n cardRef: (element: HTMLElement | null) => void\n top: number\n}) {\n const resolved = entry.kind === 'comment' && entry.resolved\n return (\n <ReviewItemContext.Provider value={entry}>\n <article\n ref={cardRef}\n className=\"native-docx-review-card\"\n tabIndex={0}\n aria-label={`${entry.kind === 'revision' ? 'Change' : 'Comment'} by ${entry.author || 'reviewer'}`}\n onKeyDown={(event) => {\n if (event.target !== event.currentTarget) return\n if ((event.key === 'Enter' || event.key === ' ') && entry.activatable) {\n event.preventDefault()\n review.setActive(entry.key)\n }\n }}\n data-testid=\"review-card\"\n data-kind={entry.kind}\n data-active={entry.isActive || undefined}\n data-resolved={resolved || undefined}\n style={{ top }}\n onClick={() => {\n if (entry.activatable && !entry.isActive) review.setActive(entry.key)\n }}\n >\n {entry.kind === 'revision' && (\n <div className=\"native-docx-review-kind\">\n {REVISION_LABELS[entry.revisionKind] ?? 'Change'}\n </div>\n )}\n <Message entry={entry} />\n {replies.map((reply) => (\n <Message key={reply.key} entry={reply} />\n ))}\n {extra}\n <div className=\"native-docx-review-actions\">\n {entry.kind === 'revision' && !entry.readOnly && (\n <>\n <button\n type=\"button\"\n data-testid=\"review-accept\"\n onClick={() => review.accept(entry)}\n >\n Accept\n </button>\n <button\n type=\"button\"\n data-testid=\"review-reject\"\n onClick={() => review.reject(entry)}\n >\n Reject\n </button>\n </>\n )}\n {entry.kind === 'comment' && (\n <>\n <button\n type=\"button\"\n data-testid=\"review-resolve\"\n onClick={() => review.resolve(entry, !entry.resolved)}\n >\n {entry.resolved ? 'Reopen' : 'Resolve'}\n </button>\n <button\n type=\"button\"\n data-testid=\"review-delete\"\n onClick={() => review.remove(entry)}\n >\n Delete\n </button>\n </>\n )}\n </div>\n {entry.isActive && entry.kind !== 'custom' && <ReplyForm entry={entry} review={review} />}\n </article>\n </ReviewItemContext.Provider>\n )\n}\n\nfunction Draft({\n top,\n onSubmit,\n onCancel,\n formRef,\n}: {\n top: number\n formRef: (element: HTMLElement | null) => void\n onSubmit: (text: string) => void\n onCancel: () => void\n}) {\n const [text, setText] = useState('')\n const input = useRef<HTMLInputElement>(null)\n useEffect(() => input.current?.focus(), [])\n return (\n <form\n ref={formRef}\n className=\"native-docx-review-card native-docx-review-draft\"\n data-testid=\"review-draft\"\n style={{ top }}\n onSubmit={(event) => {\n event.preventDefault()\n if (text.trim()) onSubmit(text.trim())\n }}\n >\n <input\n ref={input}\n data-testid=\"review-draft-input\"\n aria-label=\"Comment\"\n placeholder=\"Add a comment\"\n value={text}\n onChange={(event) => setText(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === 'Escape') onCancel()\n }}\n />\n <div className=\"native-docx-review-actions\">\n <button type=\"submit\" disabled={!text.trim()}>\n Comment\n </button>\n <button type=\"button\" data-testid=\"review-draft-cancel\" onClick={onCancel}>\n Cancel\n </button>\n </div>\n </form>\n )\n}\n\n/**\n * The review rail: one card per comment thread or tracked change, aligned to its place in the page.\n * Everything it shows and every action it takes goes through the editor's own review API.\n */\nfunction DocxEditorReviewRail({\n children,\n}: {\n children?: (entry: ReviewEntry) => React.ReactNode\n}) {\n const editor = useDocxEditor() as Editor | null\n const registry = useContext(ReviewRailContext)\n const review = useReview()\n const [draft, setDraft] = useState<{ anchorY: number } | null>(null)\n const [tops, setTops] = useState<Record<string, number>>({})\n const [showResolved, setShowResolved] = useState(true)\n const elements = useRef(new Map<string, HTMLElement>())\n\n const openDraft = useCallback(() => {\n const placement = editor?.getSelectionPlacement()\n if (!placement) return\n review.setPaneOpen(true)\n setDraft({ anchorY: placement.anchorY })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor, review.setPaneOpen])\n\n useEffect(() => registry?.register(), [registry])\n useEffect(() => registry?.registerCommentDraft(openDraft), [registry, openDraft])\n\n const scale = editor?.getRenderScale() ?? 1\n const top = review.items\n .filter(isTopLevel)\n .filter((entry) => entry.anchorY !== null)\n .filter((entry) => showResolved || entry.kind !== 'comment' || !entry.resolved)\n const hasChanges = review.items.some((entry) => entry.kind === 'revision')\n const hasResolved = review.items.some((entry) => entry.kind === 'comment' && entry.resolved)\n const repliesOf = useCallback(\n (entry: ReviewEntry) =>\n review.items.filter(\n (other) =>\n other.kind === 'comment' &&\n (other.parentId === entry.id || other.parentRevisionId === entry.id)\n ),\n [review.items]\n )\n\n // Stack cards downward from their anchors so none overlaps the one above it.\n useLayoutEffect(() => {\n if (!review.paneOpen) return\n const next: Record<string, number> = {}\n let floor = 0\n const rows: { key: string; y: number }[] = top.map((entry) => ({\n key: entry.key,\n y: (entry.anchorY ?? 0) * scale,\n }))\n if (draft) rows.push({ key: '__draft', y: draft.anchorY * scale })\n rows.sort((a, b) => a.y - b.y)\n for (const row of rows) {\n const y = Math.max(row.y, floor)\n next[row.key] = y\n const height = elements.current.get(row.key)?.offsetHeight ?? 96\n floor = y + height + CARD_GAP\n }\n setTops((previous) => {\n const same =\n Object.keys(next).length === Object.keys(previous).length &&\n Object.entries(next).every(([key, value]) => previous[key] === value)\n return same ? previous : next\n })\n })\n\n if (!review.ready) return null\n\n const selection = editor?.getSelectionPlacement()\n const addComment = selection && (\n <button\n type=\"button\"\n className=\"native-docx-review-add\"\n data-testid=\"review-add-comment\"\n aria-label=\"Add comment\"\n style={{ top: selection.anchorY * scale }}\n onMouseDown={(event) => event.preventDefault()}\n onClick={openDraft}\n >\n +\n </button>\n )\n\n if (!review.paneOpen) {\n return (\n <div className=\"native-docx-review-markers\" data-testid=\"review-markers\">\n {addComment}\n {top.map((entry) => (\n <button\n key={entry.key}\n type=\"button\"\n className=\"native-docx-review-marker\"\n data-testid=\"review-marker\"\n data-kind={entry.kind}\n aria-label={`${entry.author}: ${entry.text.slice(0, 60)}`}\n style={{ top: (entry.anchorY ?? 0) * scale }}\n onClick={() => {\n review.setPaneOpen(true)\n review.setActive(entry.key)\n }}\n />\n ))}\n </div>\n )\n }\n\n return (\n <aside className=\"native-docx-review-pane\" data-testid=\"review-pane\" aria-label=\"Review\">\n {addComment}\n <div className=\"native-docx-review-toolbar\" data-testid=\"review-toolbar\">\n {hasChanges && (\n <>\n <button\n type=\"button\"\n data-testid=\"review-previous\"\n onClick={() => review.navigate('previous')}\n >\n Previous change\n </button>\n <button type=\"button\" data-testid=\"review-next\" onClick={() => review.navigate('next')}>\n Next change\n </button>\n <button\n type=\"button\"\n data-testid=\"review-accept-all\"\n onClick={() => review.resolveAll('accept')}\n >\n Accept all\n </button>\n <button\n type=\"button\"\n data-testid=\"review-reject-all\"\n onClick={() => review.resolveAll('reject')}\n >\n Reject all\n </button>\n </>\n )}\n {hasResolved && (\n <label>\n <input\n type=\"checkbox\"\n data-testid=\"review-show-resolved\"\n checked={showResolved}\n onChange={(event) => setShowResolved(event.target.checked)}\n />\n Show resolved\n </label>\n )}\n </div>\n {draft && (\n <Draft\n top={tops.__draft ?? draft.anchorY * scale}\n formRef={(element) => {\n if (element) elements.current.set('__draft', element)\n }}\n onCancel={() => setDraft(null)}\n onSubmit={(text) => {\n if (review.addComment(text)) setDraft(null)\n }}\n />\n )}\n {top.map((entry) => (\n <Card\n key={entry.key}\n entry={entry}\n replies={repliesOf(entry)}\n review={review}\n extra={children?.(entry)}\n top={tops[entry.key] ?? (entry.anchorY ?? 0) * scale}\n cardRef={(element) => {\n if (element) elements.current.set(entry.key, element)\n else elements.current.delete(entry.key)\n }}\n />\n ))}\n {top.length === 0 && !draft && (\n <p className=\"native-docx-review-empty\" data-testid=\"review-empty\">\n No comments or changes.\n </p>\n )}\n </aside>\n )\n}\n\nfunction ReviewCardSlot({ children }: { children?: React.ReactNode }) {\n return <div className=\"native-docx-review-extra\">{children}</div>\n}\n\nexport const DocxEditorReview = Object.assign(DocxEditorReviewRail, { Card: ReviewCardSlot })\n","import { extractMentions, type MentionCandidate } from '../chat/mentions'\n\nexport interface DocxMention {\n id: string\n name: string\n kind: 'human' | 'agent'\n}\n\nexport function mentionCandidates(mentions: readonly DocxMention[]): MentionCandidate[] {\n return [\n { id: 'arbi', label: 'ARBI', kind: 'assistant' as const },\n ...mentions\n .filter((person) => person.name.trim())\n .map((person) => ({\n id: person.id,\n label: person.name,\n kind: person.kind === 'agent' ? ('assistant' as const) : ('user' as const),\n })),\n ]\n}\n\nexport function mentionedDocxRecipients(text: string, mentions: readonly DocxMention[]): string[] {\n return extractMentions(text, mentionCandidates(mentions)).map((person) => person.id)\n}\n","import React, { createContext, useContext, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { useReview, useReviewItem } from './review'\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from '@arbidocs/react/ui'\nimport { MentionMenu } from '../chat/MentionMenu'\nimport { filterMentionCandidates, findMentionQuery } from '../chat/mentions'\nimport { mentionCandidates, mentionedDocxRecipients, type DocxMention } from './mentions'\nexport type { DocxMention } from './mentions'\n\nexport interface DocxAgentCommentRequest {\n commentId: string\n instruction: string\n requestId: string\n recipientIds: string[]\n}\n\nexport type DocxAgentRunStatus =\n 'queued' | 'in_progress' | 'completed' | 'failed' | 'cancelled' | 'incomplete'\nexport interface DocxMentionDelivery {\n responseIds: string[]\n}\ntype Activity = {\n commentId: string\n label: string\n status: DocxAgentRunStatus | 'delivering' | 'unknown'\n}\nconst ActivityContext = createContext<Record<string, Activity>>({})\n\n/** Extra card content using the upstream review context, including a full-thread reader. */\nexport function DocxCommentActivity() {\n const item = useReviewItem()\n const review = useReview()\n const activity = useContext(ActivityContext)\n const [reading, setReading] = useState(false)\n if (!item || item.kind !== 'comment') return null\n const commentId = item.parentId || item.item.id\n const thread = review.items.filter(\n (entry) =>\n entry.kind === 'comment' && (entry.item.id === commentId || entry.parentId === commentId)\n )\n const statuses = Object.entries(activity).filter(([, run]) => run.commentId === commentId)\n const labels = {\n delivering: 'Delivering mention…',\n queued: 'Queued…',\n in_progress: 'Working…',\n completed: 'Finished',\n failed: 'Failed',\n cancelled: 'Stopped',\n incomplete: 'Incomplete',\n unknown: 'Status unavailable',\n }\n return (\n <div className=\"native-docx-comment-extra\" data-review-selectable=\"\">\n {statuses.map(([id, run]) => (\n <div\n key={id}\n role=\"status\"\n data-testid=\"docx-comment-agent-status\"\n data-status={run.status}\n className=\"native-docx-comment-activity\"\n >\n {['delivering', 'queued', 'in_progress'].includes(run.status) && (\n <span className=\"native-docx-agent-spinner\" aria-hidden=\"true\" />\n )}\n {run.label}: {labels[run.status]}\n </div>\n ))}\n <button\n type=\"button\"\n data-testid=\"docx-read-full-thread\"\n onClick={(event) => {\n event.stopPropagation()\n setReading(true)\n }}\n >\n Read full thread\n </button>\n <Dialog open={reading} onOpenChange={setReading}>\n <DialogContent\n className=\"max-h-[85dvh] overflow-y-auto\"\n onClick={(event) => event.stopPropagation()}\n >\n <DialogHeader>\n <DialogTitle>Document comment</DialogTitle>\n </DialogHeader>\n {thread.map((entry) => (\n <div key={entry.key} className=\"space-y-1 border-b pb-4 last:border-0\">\n <p className=\"text-sm font-medium\">{entry.author || 'Reviewer'}</p>\n <p\n className=\"whitespace-pre-wrap break-words text-sm\"\n data-testid=\"docx-full-comment-text\"\n >\n {entry.text}\n </p>\n </div>\n ))}\n {statuses.map(([id, run]) => (\n <p key={id} role=\"status\" className=\"text-sm\">\n {run.label}: {labels[run.status]}\n </p>\n ))}\n </DialogContent>\n </Dialog>\n </div>\n )\n}\n\n/** Adds mentions to the upstream comment inputs without replacing its review layout. */\nexport function DocxMentions({\n children,\n mentions = [],\n initialCommentId,\n requestAgent,\n getAgentStatus,\n notify,\n}: {\n children: React.ReactNode\n mentions?: readonly DocxMention[]\n initialCommentId?: string\n requestAgent?: (request: DocxAgentCommentRequest) => Promise<DocxMentionDelivery | void>\n getAgentStatus?: (responseId: string) => Promise<DocxAgentRunStatus>\n notify?: (message: string, kind: 'success' | 'error') => void\n}) {\n const review = useReview()\n const [activity, setActivity] = useState<Record<string, Activity>>({})\n const root = useRef<HTMLDivElement>(null)\n const [composers, setComposers] = useState<HTMLInputElement[]>([])\n useEffect(() => {\n const element = root.current\n if (!element || !requestAgent) return\n const discover = () => {\n const fields = Array.from(\n element.querySelectorAll<HTMLInputElement>(\n '[data-testid=\"review-draft-input\"], [data-testid=\"review-reply-input\"]'\n )\n ).filter((field) => !field.readOnly && !!field.closest('form'))\n setComposers((previous) =>\n previous.length === fields.length &&\n previous.every((field, index) => field === fields[index])\n ? previous\n : fields\n )\n }\n discover()\n const observer = new MutationObserver(discover)\n observer.observe(element, { childList: true, subtree: true })\n return () => observer.disconnect()\n }, [requestAgent])\n const prefixMention = (field: HTMLInputElement, name = 'ARBI') => {\n const value = `@${name} ${field.value}`\n Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')?.set?.call(field, value)\n field.dispatchEvent(new Event('input', { bubbles: true }))\n field.focus()\n field.setSelectionRange(value.length, value.length)\n setSuggestions(null)\n }\n const alive = useRef(true)\n useEffect(() => {\n alive.current = true\n return () => {\n alive.current = false\n }\n }, [])\n const activated = useRef<string | undefined>(undefined)\n useEffect(() => {\n if (!initialCommentId || activated.current === initialCommentId || !review.ready) return\n const target = review.items.find(\n (item) => item.kind === 'comment' && item.item.id === initialCommentId\n )\n if (!target) return\n review.setPaneOpen(true)\n if (review.setActive(target.key)) activated.current = initialCommentId\n }, [initialCommentId, review])\n const input = useRef<HTMLInputElement | null>(null)\n const replyTarget = useRef<{ field: HTMLInputElement; key: string } | null>(null)\n const pending = useRef<{\n ids: Set<string>\n text: string\n requestId: string\n recipientIds: string[]\n } | null>(null)\n const [suggestions, setSuggestions] = useState<{\n query: string\n from: number\n left: number\n top: number\n } | null>(null)\n const [selected, setSelected] = useState(0)\n const candidates = filterMentionCandidates(\n mentionCandidates(mentions),\n suggestions?.query || ''\n ).slice(0, 8)\n\n useEffect(() => {\n const submission = pending.current\n if (!submission || !requestAgent) return\n const created = review.items.find(\n (item) =>\n item.kind === 'comment' &&\n !submission.ids.has(item.item.id) &&\n item.text.trim() === submission.text\n )\n if (!created || created.kind !== 'comment') return\n pending.current = null\n const commentId = created.parentId || created.item.id\n const label = submission.recipientIds.includes('arbi') ? 'ARBI' : 'Mentioned agent'\n const update = (status: Activity['status']) => {\n if (alive.current)\n setActivity((previous) => ({\n ...previous,\n [submission.requestId]: { commentId, label, status },\n }))\n }\n // Human-only mentions deliver notifications without showing an agent spinner.\n const hasAgent = submission.recipientIds.some(\n (id) =>\n id === 'arbi' || mentions.some((person) => person.id === id && person.kind === 'agent')\n )\n if (hasAgent) update('delivering')\n void requestAgent({\n commentId,\n instruction: submission.text,\n requestId: submission.requestId,\n recipientIds: submission.recipientIds,\n })\n .then(async (delivery) => {\n if (!delivery?.responseIds.length || !getAgentStatus) {\n if (hasAgent) update('unknown')\n return\n }\n update('queued')\n while (alive.current) {\n try {\n const states = await Promise.all(delivery.responseIds.map((id) => getAgentStatus(id)))\n if (!alive.current) return\n const active =\n states.find((status) => status === 'in_progress') ||\n states.find((status) => status === 'queued')\n const status = active || states.find((status) => status !== 'completed') || 'completed'\n update(status)\n if (!active) return\n } catch {\n // A polling failure is not proof that the agent failed.\n update('unknown')\n }\n await new Promise((resolve) => setTimeout(resolve, 2000))\n }\n })\n .catch((error: unknown) => {\n if (hasAgent) update('failed')\n notify?.(\n error instanceof Error ? error.message : 'Could not start the document agent.',\n 'error'\n )\n })\n }, [review.items, requestAgent, getAgentStatus, mentions, notify])\n\n const choose = (name: string) => {\n const field = input.current\n if (!field || !suggestions) return\n const end = field.selectionStart ?? field.value.length\n const value = field.value.slice(0, suggestions.from) + '@' + name + ' ' + field.value.slice(end)\n // The native setter and input event preserve the upstream controlled input's state.\n Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')?.set?.call(field, value)\n field.dispatchEvent(new Event('input', { bubbles: true }))\n field.focus()\n field.setSelectionRange(suggestions.from + name.length + 2, suggestions.from + name.length + 2)\n setSuggestions(null)\n }\n const captureSubmission = (target: EventTarget): boolean => {\n const form = (target as HTMLElement).closest('form')\n const field = form?.querySelector<HTMLInputElement>(\n '[data-testid=\"review-draft-input\"], [data-testid=\"review-reply-input\"]'\n )\n if (!field || field.readOnly || !requestAgent) return false\n const recipientIds = mentionedDocxRecipients(field.value, mentions)\n if (!recipientIds.length) return false\n pending.current = {\n ids: new Set(review.items.filter((i) => i.kind === 'comment').map((i) => i.item.id)),\n text: field.value.trim(),\n requestId: `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,\n recipientIds,\n }\n // The engine may move its caret to an overlapping tracked revision while\n // an input selection changes. Bind a mentioned reply to the card where\n // composition started, rather than whichever range happens to be active.\n const pinned = replyTarget.current\n const thread = pinned\n ? review.items.find((item) => item.key === pinned.key && item.kind === 'comment')\n : undefined\n if (field.dataset.testid === 'review-reply-input' && pinned && !thread) {\n pending.current = null\n notify?.('This comment was removed. Open a current thread before replying.', 'error')\n return true\n }\n if (field.dataset.testid === 'review-reply-input' && thread) {\n if (!review.reply(thread, field.value.trim())) {\n pending.current = null\n notify?.('Could not post this reply. The comment may have been removed.', 'error')\n } else {\n Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')?.set?.call(field, '')\n field.dispatchEvent(new Event('input', { bubbles: true }))\n replyTarget.current = null\n review.setActive(thread.key, { reveal: false })\n }\n return true\n }\n return false\n }\n return (\n <ActivityContext.Provider value={activity}>\n <div\n className=\"native-docx-mentions\"\n ref={root}\n onFocusCapture={(event) => {\n const field = event.target\n if (\n !(field instanceof HTMLInputElement) ||\n field.dataset.testid !== 'review-reply-input' ||\n field.value ||\n !requestAgent\n )\n return\n const target = review.items.find(\n (entry) => entry.key === review.activeKey && entry.kind === 'comment'\n )\n if (!target || target.kind !== 'comment') return\n const commentId = target.parentId || target.item.id\n const replies = review.items.filter(\n (entry) => entry.kind === 'comment' && entry.parentId === commentId\n )\n const author = replies.at(-1)?.author || target.author\n const agent = mentions.find((person) => person.kind === 'agent' && person.name === author)\n if (agent || author === 'ARBI' || author === 'Assistant')\n prefixMention(\n field,\n author === 'ARBI' || author === 'Assistant' ? 'ARBI' : agent?.name || 'ARBI'\n )\n }}\n onInputCapture={(event) => {\n const field = event.target\n if (!(field instanceof HTMLInputElement) || !field.dataset.testid?.startsWith('review-'))\n return\n if (!replyTarget.current && review.activeKey)\n replyTarget.current = { field, key: review.activeKey }\n input.current = field\n const before = field.value.slice(0, field.selectionStart ?? field.value.length)\n const match = findMentionQuery(before, before.length)\n if (!match) return setSuggestions(null)\n const rect = field.getBoundingClientRect()\n setSelected(0)\n setSuggestions({\n query: match.query,\n from: match.start,\n left: rect.left,\n top: rect.bottom,\n })\n }}\n onPointerDownCapture={(event) => {\n const target = event.target\n if (\n target instanceof HTMLElement &&\n target.closest('[data-testid=\"review-marker\"], [data-testid=\"review-reply-cancel\"]')\n )\n replyTarget.current = null\n }}\n onSubmitCapture={(event) => {\n if (captureSubmission(event.target)) {\n event.preventDefault()\n event.stopPropagation()\n }\n }}\n onKeyDownCapture={(event) => {\n if (suggestions && candidates.length) {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault()\n event.stopPropagation()\n setSelected(\n (s) =>\n (s + (event.key === 'ArrowDown' ? 1 : candidates.length - 1)) % candidates.length\n )\n return\n }\n if (event.key === 'Enter' || event.key === 'Tab') {\n event.preventDefault()\n event.stopPropagation()\n choose(candidates[selected]?.label || candidates[0].label)\n return\n }\n if (event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n setSuggestions(null)\n return\n }\n }\n if (event.key === 'Enter' && captureSubmission(event.target)) {\n event.preventDefault()\n event.stopPropagation()\n }\n }}\n >\n {children}\n {composers\n .filter((field) => field.isConnected && field.closest('form'))\n .map((field, index) =>\n createPortal(\n <button\n type=\"button\"\n className=\"native-docx-include-arbi\"\n data-testid=\"docx-include-arbi\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={(event) => {\n event.stopPropagation()\n if (!mentionedDocxRecipients(field.value, mentions).includes('arbi'))\n prefixMention(field)\n else field.focus()\n }}\n >\n Include ARBI\n </button>,\n field.closest('form')!,\n `mention-${index}`\n )\n )}\n {suggestions && candidates.length > 0 && (\n <div\n onPointerDown={(event) => event.stopPropagation()}\n onMouseDown={(event) => {\n event.preventDefault()\n event.stopPropagation()\n }}\n onClick={(event) => event.stopPropagation()}\n style={{\n position: 'fixed',\n left: suggestions.left,\n top: suggestions.top,\n width: 280,\n zIndex: 1000,\n }}\n >\n <MentionMenu\n open\n placement=\"below\"\n items={candidates}\n selectedIndex={selected}\n setSelectedIndex={setSelected}\n onSelect={(person) => choose(person.label)}\n labels={{ list: 'Mention workspace member' }}\n />\n </div>\n )}\n </div>\n </ActivityContext.Provider>\n )\n}\n","import React from 'react'\nimport { renderToStaticMarkup } from 'react-dom/server'\nimport { AiMarkdown, splitMarkdownBlocks } from '@arbidocs/react/ui'\nimport type { Editor } from '@docx-editor.dev/core'\n\n/** Use the existing renderer; remove presentation controls, not Markdown syntax. */\nexport function wordDraftHtml(markdown: string): string {\n const template = document.createElement('template')\n template.innerHTML = renderToStaticMarkup(<AiMarkdown>{markdown}</AiMarkdown>)\n template.content\n .querySelectorAll('button, svg, [data-testid=\"code-block-header\"]')\n .forEach((node) => node.remove())\n // Code labels and copy controls belong to the preview, not the Word document.\n template.content.querySelectorAll('[data-testid=\"markdown-code-block\"]').forEach((node) => {\n const pre = node.querySelector('pre')\n if (pre) node.replaceWith(pre)\n })\n return template.innerHTML\n}\n\nfunction requireEdit(result: ReturnType<Editor['exec']>) {\n if (!result.ok) throw new Error(result.reason)\n}\n\n/** Completed blocks are immutable; only the unfinished block is replaced. */\nexport class WordDraftStream {\n private committed: string[] = []\n private pending?: { start: string; end: string }\n private resetAfterFailure = false\n constructor(private readonly editor: Editor) {}\n\n update(content: string, complete: boolean) {\n const blocks = splitMarkdownBlocks(content)\n const completeCount = complete ? blocks.length : Math.max(0, blocks.length - 1)\n requireEdit(this.editor.setEditingMode('editing'))\n try {\n if (\n this.resetAfterFailure ||\n this.committed.some((block, index) => blocks[index] !== block)\n ) {\n requireEdit(this.editor.exec({ type: 'selectAll' }))\n requireEdit(this.editor.exec({ type: 'deleteText' }))\n this.committed = []\n this.pending = undefined\n this.resetAfterFailure = false\n }\n for (let index = this.committed.length; index < blocks.length; index++) {\n const tail = this.editor.query({ type: 'paragraphs' }).at(-1)\n const start = this.pending?.start || tail?.paraId\n if (!start) throw new Error('The draft insertion paragraph is unavailable.')\n requireEdit(\n this.editor.exec(\n this.pending\n ? {\n type: 'setSelection',\n range: { from: { paraId: start }, to: { paraId: this.pending.end } },\n }\n : { type: 'setSelection', anchor: { paraId: start } }\n )\n )\n const html = wordDraftHtml(blocks[index]) + '<p></p>'\n const element = document.createElement('div')\n element.innerHTML = html\n const startIndex = this.editor\n .query({ type: 'paragraphs' })\n .findIndex((p) => p.paraId === start)\n requireEdit(this.editor.exec({ type: 'paste', html, text: element.textContent || '' }))\n const inserted = this.editor.query({ type: 'paragraphs' }).slice(startIndex)\n let headingIndex = 0\n for (const heading of Array.from(element.querySelectorAll('h1,h2,h3,h4,h5,h6'))) {\n const match = inserted.findIndex(\n (p, i) => i >= headingIndex && p.text === heading.textContent\n )\n if (match >= 0 && inserted[match].paraId) {\n requireEdit(\n this.editor.exec({\n type: 'setSelection',\n anchor: { paraId: inserted[match].paraId! },\n })\n )\n requireEdit(\n this.editor.exec({\n type: 'setParagraphStyle',\n styleId: `Heading${heading.tagName.slice(1)}`,\n })\n )\n headingIndex = match + 1\n }\n }\n const end = this.editor.query({ type: 'paragraphs' }).at(-1)?.paraId\n if (!end) throw new Error('The draft continuation paragraph is unavailable.')\n if (index < completeCount) {\n this.committed.push(blocks[index])\n this.pending = undefined\n } else this.pending = { start, end }\n }\n } catch (error) {\n // A public command can fail after paste succeeded. Rebuild the locked draft\n // on retry rather than appending the same partial block again.\n this.resetAfterFailure = true\n throw error\n } finally {\n requireEdit(this.editor.setEditingMode('viewing'))\n }\n }\n}\n","import { normalizeDocxExport } from './export'\nimport { WordDraftStream } from './streamWordDocument'\nimport {\n DocxMentions,\n DocxCommentActivity,\n type DocxMention,\n type DocxAgentCommentRequest,\n type DocxMentionDelivery,\n type DocxAgentRunStatus,\n} from './DocxMentions'\nimport * as Y from 'yjs'\nimport type { DocumentHandle } from '@docx-editor.dev/core'\nimport React, { useEffect, useLayoutEffect, useRef, useState } from 'react'\nimport { DocxEditor, useChromeTranslate, type FontConfiguration } from '@docx-editor.dev/react'\nimport { collaborationModule, DOCUMENT_COLLABORATION_VERSIONS } from '@arbidocs/coedit'\nimport type { DocxCollaborationSession } from '@arbidocs/coedit'\nimport {\n createHocuspocusCollaboration,\n type HocuspocusCollaborationRoom,\n} from '@arbidocs/coedit/hocuspocus'\nimport { DocxEditorReview, reviewModule } from './review'\nimport type { EditorModule } from '@docx-editor.dev/core'\nimport type { Editor } from '@docx-editor.dev/core'\nimport { Download, Save, RefreshCw, WifiOff, Check, Type, Ellipsis } from 'lucide-react'\n\n/** Host integration: no application store, router, or authentication singleton is required. */\nexport interface NativeDocxAdapter {\n request: (path: string, options?: RequestInit) => Promise<Response>\n open: (documentId: string) => Promise<{\n room_id: string\n token: string\n websocket_path: string\n can_edit: boolean\n identity: { actorId: string; name: string; role: 'human' | 'agent' }\n filename: string\n }>\n save: (\n documentId: string,\n state?: string\n ) => Promise<{ document_ext_id: string; unchanged?: boolean }>\n loadFonts: () => Promise<FontConfiguration>\n baseUrl?: string\n author?: string\n subscribeTokenChanges?: (listener: () => void) => () => void\n onDirtyChange?: (dirty: boolean) => void\n onVersionSaved?: (documentId: string) => void | Promise<void>\n notify?: (message: string, kind: 'success' | 'error') => void\n mentions?: readonly DocxMention[]\n requestAgent?: (\n documentId: string,\n request: DocxAgentCommentRequest\n ) => Promise<DocxMentionDelivery | void>\n getAgentStatus?: (responseId: string) => Promise<DocxAgentRunStatus>\n}\n\nexport interface NativeDocxEditorProps {\n adapter: NativeDocxAdapter\n documentId: string\n title: string\n draftContent?: string\n initialCommentId?: string\n /** Immutable history/compare snapshots must not join the live editing room. */\n snapshot?: boolean\n onSaved?: (id: string) => void\n /** Generated Markdown stays read-only until its first native DOCX is stored. */\n stream?: {\n content: string\n busy: boolean\n error?: string | null\n onGenerated: (bytes: ArrayBuffer) => Promise<void>\n }\n}\ninterface Ready {\n document: DocumentHandle | Uint8Array\n modules: readonly EditorModule[]\n fonts: FontConfiguration\n room?: HocuspocusCollaborationRoom\n canEdit: boolean\n author: string\n filename: string\n}\n// Local unsaved notes survive tab switches. Persisted artifacts use server state.\nconst drafts = new Map<string, ArrayBuffer>()\nconst stateBytes = (room: HocuspocusCollaborationRoom) => Y.encodeStateAsUpdate(room.ydoc)\nconst encodeState = (room: HocuspocusCollaborationRoom) => {\n let binary = ''\n for (const byte of stateBytes(room)) binary += String.fromCharCode(byte)\n return btoa(binary)\n}\nfunction covered(room: HocuspocusCollaborationRoom, vector: string, receipt: string) {\n const decode = (value: string) => Uint8Array.from(atob(value), (c) => c.charCodeAt(0))\n const server = Y.decodeStateVector(decode(vector)),\n local = Y.decodeStateVector(Y.encodeStateVector(room.ydoc))\n for (const [client, clock] of local) if ((server.get(client) || 0) < clock) return false\n const deleted = Y.decodeUpdate(stateBytes(room)).ds.clients\n const saved = Y.decodeUpdate(decode(receipt)).ds.clients\n for (const [client, ranges] of deleted)\n for (const range of ranges) {\n if (\n !(saved.get(client) || []).some(\n (s) => s.clock <= range.clock && s.clock + s.len >= range.clock + range.len\n )\n )\n return false\n }\n return true\n}\nclass EditorBoundary extends React.Component<{ children: React.ReactNode }, { error?: Error }> {\n state: { error?: Error } = {}\n static getDerivedStateFromError(error: Error) {\n return { error }\n }\n render() {\n return this.state.error ? (\n <div role=\"alert\" className=\"native-docx-error\">\n Could not render this Word document: {this.state.error.message}\n </div>\n ) : (\n this.props.children\n )\n }\n}\nexport function DocxParticipants({ session }: { session?: DocxCollaborationSession }) {\n const [people, setPeople] = useState<readonly { actorId: string; name: string }[]>([])\n useEffect(() => {\n if (!session) return\n setPeople(session.participants())\n return session.subscribeParticipants(setPeople)\n }, [session])\n return (\n <div className=\"native-docx-presence\" aria-label=\"People viewing this document\">\n {people.map((p) => (\n <span className=\"native-docx-avatar\" key={p.actorId} title={p.name}>\n {p.name\n .split(' ')\n .map((s) => s[0])\n .slice(0, 2)\n .join('')}\n </span>\n ))}\n </div>\n )\n}\nfunction RibbonMenu({\n label,\n icon,\n children,\n}: {\n label: string\n icon: React.ReactNode\n children: React.ReactNode\n}) {\n const [open, setOpen] = useState(false)\n const element = useRef<HTMLDivElement>(null)\n useEffect(() => {\n if (!open) return\n const dismiss = (event: PointerEvent) => {\n if (!element.current?.contains(event.target as Node)) setOpen(false)\n }\n const escape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') setOpen(false)\n }\n document.addEventListener('pointerdown', dismiss)\n document.addEventListener('keydown', escape)\n return () => {\n document.removeEventListener('pointerdown', dismiss)\n document.removeEventListener('keydown', escape)\n }\n }, [open])\n return (\n <div className=\"native-docx-ribbon-menu\" ref={element}>\n <button\n type=\"button\"\n className=\"native-docx-ribbon-trigger\"\n aria-label={label}\n title={label}\n aria-expanded={open}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => setOpen((value) => !value)}\n >\n {icon}\n </button>\n {open && (\n <div\n className=\"native-docx-ribbon-popover\"\n role=\"group\"\n aria-label={label}\n onMouseDown={(event) => {\n if (!(\n event.target instanceof HTMLInputElement || event.target instanceof HTMLSelectElement\n ))\n event.preventDefault()\n }}\n >\n {children}\n </div>\n )}\n </div>\n )\n}\n\nexport function DocxRibbon({ onSave }: { onSave: () => void }) {\n const [tab, setTab] = useState('Home')\n const t = useChromeTranslate()\n return (\n <div className=\"native-docx-ribbon\">\n <select aria-label=\"Ribbon tab\" value={tab} onChange={(event) => setTab(event.target.value)}>\n <option>Home</option>\n <option>Insert</option>\n <option>Review</option>\n </select>\n <DocxEditor.Toolbar t={t} preset={false} onSave={onSave}>\n <DocxEditor.Toolbar.Undo />\n <DocxEditor.Toolbar.Redo />\n {tab === 'Home' && (\n <>\n <DocxEditor.Toolbar.Bold />\n <DocxEditor.Toolbar.Italic />\n <DocxEditor.Toolbar.Underline />\n <RibbonMenu label=\"Font\" icon={<Type size={16} />}>\n <DocxEditor.Toolbar.FontFamily />\n <DocxEditor.Toolbar.FontSize />\n <DocxEditor.Toolbar.FontColor />\n <DocxEditor.Toolbar.Highlight />\n </RibbonMenu>\n <RibbonMenu label=\"More formatting\" icon={<Ellipsis size={16} />}>\n <DocxEditor.Toolbar.StylePicker />\n <DocxEditor.Toolbar.Alignment />\n <DocxEditor.Toolbar.BulletList />\n <DocxEditor.Toolbar.NumberedList />\n <DocxEditor.Toolbar.LineSpacing />\n <DocxEditor.Toolbar.Indent />\n <DocxEditor.Toolbar.Outdent />\n <DocxEditor.Toolbar.Strike />\n <DocxEditor.Toolbar.ClearFormatting />\n </RibbonMenu>\n </>\n )}\n {tab === 'Insert' && (\n <>\n <DocxEditor.Toolbar.TableInsert />\n <DocxEditor.Toolbar.ImageInsert />\n <DocxEditor.Toolbar.Link />\n </>\n )}\n {tab === 'Review' && (\n <>\n <DocxEditor.Toolbar.EditingMode />\n <DocxEditor.Toolbar.Comments />\n <RibbonMenu label=\"Review options\" icon={<Ellipsis size={16} />}>\n <DocxEditor.Toolbar.Reviewers />\n </RibbonMenu>\n </>\n )}\n </DocxEditor.Toolbar>\n </div>\n )\n}\n\nconst fixedZoomMode = { type: 'fixed' } as const\n\nexport function NativeDocxEditor({\n documentId,\n title,\n draftContent,\n initialCommentId,\n snapshot = false,\n onSaved,\n stream,\n adapter,\n}: NativeDocxEditorProps) {\n const [ready, setReady] = useState<Ready>(),\n [error, setError] = useState(''),\n [retry, setRetry] = useState(0)\n const [status, setStatus] = useState('Connecting…'),\n [dirty, setDirty] = useState(false),\n [saving, setSaving] = useState(false),\n [offline, setOffline] = useState(false)\n const revision = useRef(0)\n const stageRef = useRef<HTMLDivElement>(null),\n fitCleanup = useRef<(() => void) | undefined>(undefined)\n const ref = useRef<Editor | null>(null),\n dirtyRef = useRef(false),\n draftTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined)\n const isDraft = draftContent !== undefined\n const streamRef = useRef(stream)\n streamRef.current = stream\n const streamWriter = useRef<WordDraftStream | null>(null)\n const streamFinished = useRef(false)\n const streamTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined)\n const [streamAttempt, setStreamAttempt] = useState(0)\n function updateStream() {\n const current = streamRef.current\n if (!current || !streamWriter.current || streamFinished.current) return\n try {\n streamWriter.current.update(current.content, !current.busy)\n setStatus(\n current.busy\n ? 'Generating · editing is locked'\n : current.error\n ? 'Generation stopped · draft retained'\n : 'Saving generated Word document…'\n )\n if (!current.busy && !current.error && current.content.trim()) {\n streamFinished.current = true\n void ref\n .current!.save()\n .then(current.onGenerated)\n .catch((failure: unknown) => {\n streamFinished.current = false\n setError(\n failure instanceof Error ? failure.message : 'Could not store the generated document.'\n )\n })\n }\n } catch (failure) {\n setError(\n failure instanceof Error ? failure.message : 'Could not import the generated document.'\n )\n }\n }\n useEffect(() => {\n if (!streamRef.current) return\n if (!streamRef.current.busy) {\n clearTimeout(streamTimer.current)\n streamTimer.current = undefined\n updateStream()\n } else if (!streamTimer.current) {\n streamTimer.current = setTimeout(() => {\n streamTimer.current = undefined\n updateStream()\n }, 120)\n }\n }, [stream?.content, stream?.busy, stream?.error, streamAttempt])\n useEffect(() => () => clearTimeout(streamTimer.current), [])\n useEffect(() => {\n let cancelled = false\n let room: HocuspocusCollaborationRoom | undefined\n const cleanups: (() => void)[] = []\n setReady(undefined)\n setError('')\n setStatus('Connecting…')\n setDirty(false)\n dirtyRef.current = false\n async function start() {\n const fonts = await adapter.loadFonts()\n if (isDraft || snapshot) {\n const data = isDraft\n ? (!streamRef.current && drafts.get(documentId)) ||\n (await (\n await adapter.request('/prepare', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ content: draftContent }),\n })\n ).arrayBuffer())\n : await (await adapter.request(`/${documentId}/content`)).arrayBuffer()\n if (!cancelled) {\n setReady({\n document: new Uint8Array(data),\n fonts,\n modules: [reviewModule()],\n canEdit: !snapshot,\n author: adapter.author || 'You',\n filename: title,\n })\n setStatus(snapshot ? 'Saved version · read only' : 'Unsaved note')\n }\n return\n }\n const session = await adapter.open(documentId)\n const ws = new URL(session.websocket_path, adapter.baseUrl || location.origin)\n ws.protocol = ws.protocol === 'https:' ? 'wss:' : 'ws:'\n let initial = true\n room = await createHocuspocusCollaboration({\n url: ws.toString(),\n roomId: session.room_id,\n identity: session.identity,\n offlineEditing: true,\n token: async () => {\n const next = initial ? session : await adapter.open(documentId)\n initial = false\n if (!cancelled)\n setReady((previous) => (previous ? { ...previous, canEdit: next.can_edit } : previous))\n return JSON.stringify({\n capability: next.token,\n versions: DOCUMENT_COLLABORATION_VERSIONS,\n })\n },\n })\n if (cancelled) {\n room.destroy()\n return\n }\n const current = room\n cleanups.push(\n current.session.subscribeStatus((s, _reason, detail) => {\n const disconnected = s === 'disconnected'\n setOffline(disconnected)\n if (s === 'error') {\n setError(\n detail ||\n 'The collaboration session failed. Export your local document before reconnecting.'\n )\n setStatus('Connection failed')\n } else if (disconnected) setStatus('Offline · edits buffered locally')\n else if (s === 'ready') {\n setError('')\n setStatus(dirtyRef.current ? 'Saving changes…' : 'Connected')\n }\n })\n )\n const stateless = ({ payload }: { payload: string }) => {\n try {\n const message = JSON.parse(payload) as {\n type: string\n message?: string\n hash?: string\n vector?: string\n receipt?: string\n }\n if (message.type === 'persisted') {\n if (\n !cancelled &&\n message.vector &&\n message.receipt &&\n covered(current, message.vector, message.receipt)\n ) {\n dirtyRef.current = false\n setDirty(false)\n setStatus('All changes saved')\n }\n }\n if (message.type === 'pending') setStatus('Saving changes…')\n if (message.type === 'save-error') setStatus(message.message || 'Autosave failed')\n } catch {\n /* Ignore unrelated provider messages. */\n }\n }\n current.provider.on('stateless', stateless)\n cleanups.push(() => current.provider.off('stateless', stateless))\n if (adapter.subscribeTokenChanges)\n cleanups.push(\n adapter.subscribeTokenChanges(() => {\n void current.provider\n .sendToken()\n .catch(() => setStatus('Could not renew the collaboration session'))\n })\n )\n const refresh = setInterval(\n () => {\n void current.provider\n .sendToken()\n .catch(() => setStatus('Could not renew the collaboration session'))\n },\n 5 * 60 * 1000\n )\n cleanups.push(() => clearInterval(refresh))\n setReady({\n document: current.document,\n fonts,\n modules: [reviewModule(), collaborationModule({ session: current.session })],\n room: current,\n canEdit: session.can_edit,\n author: session.identity.name,\n filename: session.filename,\n })\n setStatus(session.can_edit ? 'All changes saved' : 'Read only · live')\n }\n void start().catch((e) => {\n if (!cancelled) setError(e instanceof Error ? e.message : String(e))\n })\n return () => {\n cancelled = true\n cleanups.forEach((f) => f())\n clearTimeout(draftTimer.current)\n fitCleanup.current?.()\n room?.destroy()\n }\n }, [documentId, isDraft, snapshot, retry]) // draftContent seeds once, never remount on typing.\n useEffect(() => {\n adapter.onDirtyChange?.(dirty)\n const beforeUnload = (e: BeforeUnloadEvent) => {\n if (dirtyRef.current) e.preventDefault()\n }\n window.addEventListener('beforeunload', beforeUnload)\n return () => {\n window.removeEventListener('beforeunload', beforeUnload)\n adapter.onDirtyChange?.(false)\n }\n }, [dirty])\n async function exportDocument() {\n const data = await ref.current?.save()\n if (!data) return\n const url = URL.createObjectURL(\n new Blob([normalizeDocxExport(data)], {\n type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n })\n )\n const a = document.createElement('a')\n a.href = url\n a.download = title.replace(/\\.[^.]+$/, '') + '.docx'\n a.click()\n setTimeout(() => URL.revokeObjectURL(url), 5000)\n }\n useLayoutEffect(() => {\n const editor = ref.current\n return () => {\n if (isDraft && editor && dirtyRef.current)\n void editor\n .save()\n .then((bytes) => {\n if (bytes) drafts.set(documentId, bytes)\n })\n .catch(() => {})\n }\n }, [documentId, isDraft, ready])\n async function saveVersion() {\n if (!ready || saving || stream) return\n setSaving(true)\n const atRevision = revision.current\n try {\n const result = isDraft\n ? await (async () => {\n const bytes = await ref.current?.save()\n if (!bytes) throw new Error('The editor is not ready.')\n return (\n await adapter.request(`/notes?${new URLSearchParams({ title })}`, {\n method: 'POST',\n headers: {\n 'Content-Type':\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n },\n body: bytes,\n })\n ).json() as Promise<{ document_ext_id: string }>\n })()\n : await adapter.save(documentId, ready.room ? encodeState(ready.room) : undefined)\n if (revision.current === atRevision) {\n dirtyRef.current = false\n setDirty(false)\n drafts.delete(documentId)\n }\n await Promise.resolve(adapter.onVersionSaved?.(result.document_ext_id)).catch(() => {\n /* The saved document remains accessible by its ID. */\n })\n onSaved?.(result.document_ext_id)\n adapter.notify?.(isDraft ? 'Word note saved' : 'DOCX version saved', 'success')\n } catch (e) {\n adapter.notify?.(e instanceof Error ? e.message : 'Could not save this document.', 'error')\n setStatus('Save failed · your draft is retained')\n } finally {\n setSaving(false)\n }\n }\n function editorReady(editor: Editor) {\n ref.current = editor\n if (streamRef.current) {\n streamWriter.current = new WordDraftStream(editor)\n updateStream()\n }\n fitCleanup.current?.()\n const viewport = stageRef.current?.querySelector<HTMLElement>('.native-docx-viewport')\n if (!viewport) return\n const fit = () => {\n const pageWidth = editor.getPageGeometry()[0]?.box.width\n if (!pageWidth) return\n const style = getComputedStyle(viewport)\n const available =\n viewport.clientWidth - parseFloat(style.paddingLeft) - parseFloat(style.paddingRight)\n const zoom = Math.max(0.1, Math.min(2.5, available / pageWidth))\n if (Math.abs(editor.getZoom() - zoom) > 0.001) editor.setZoom(zoom)\n }\n const resize = new ResizeObserver(fit)\n const chrome = new MutationObserver(fit)\n resize.observe(viewport)\n chrome.observe(viewport, { attributes: true, attributeFilter: ['style', 'data-review-pane'] })\n fit()\n fitCleanup.current = () => {\n resize.disconnect()\n chrome.disconnect()\n }\n }\n function changed() {\n if (snapshot) return\n revision.current += 1\n dirtyRef.current = true\n setDirty(true)\n setStatus(\n isDraft ? 'Unsaved note' : offline ? 'Offline · edits buffered locally' : 'Saving changes…'\n )\n if (isDraft) {\n clearTimeout(draftTimer.current)\n draftTimer.current = setTimeout(() => {\n void ref.current?.save().then((bytes) => {\n if (bytes) drafts.set(documentId, bytes)\n })\n }, 200)\n }\n }\n return (\n <section\n className=\"native-docx-viewer\"\n data-testid=\"native-docx-editor\"\n aria-busy={!!stream?.busy}\n data-generation-state={\n stream ? (stream.busy ? 'generating' : stream.error ? 'stopped' : 'persisting') : 'ready'\n }\n >\n <div className=\"native-docx-actions\">\n <span className=\"native-docx-status\" role=\"status\">\n {offline ? <WifiOff size={14} /> : !dirty && ready ? <Check size={14} /> : null}\n {status}\n </span>\n <DocxParticipants session={ready?.room?.session} />\n <button onClick={() => void exportDocument()} disabled={!ready} aria-label=\"Download DOCX\">\n <Download size={14} />\n DOCX\n </button>\n {!snapshot && !stream && ready?.canEdit && (\n <button\n className=\"native-docx-save\"\n onClick={() => void saveVersion()}\n disabled={!ready || saving || offline}\n data-testid=\"native-docx-save\"\n >\n <Save size={14} />\n {saving ? 'Saving…' : isDraft ? 'Save note' : 'Save version'}\n </button>\n )}\n </div>\n {offline && (\n <div className=\"native-docx-notice\">\n Changes are buffered in this browser. Keep this tab open until the connection returns, or\n download your DOCX.\n </div>\n )}\n {error && (\n <div className=\"native-docx-notice\" data-error=\"true\" role=\"alert\">\n {error}{' '}\n <button\n disabled={!stream && dirty}\n title={dirty ? 'Download your unsaved DOCX before reopening the editor' : undefined}\n onClick={() =>\n stream ? (setError(''), setStreamAttempt((x) => x + 1)) : setRetry((x) => x + 1)\n }\n >\n <RefreshCw size={12} />\n Retry\n </button>\n </div>\n )}\n {!ready && !error && (\n <div className=\"native-docx-error\" role=\"status\">\n Opening Word document…\n </div>\n )}\n {ready && (\n <div className=\"native-docx-body docx-editor\">\n <EditorBoundary key={retry}>\n <DocxEditor.Root\n document={ready.document}\n modules={ready.modules}\n fonts={ready.fonts}\n mode={stream ? 'edit' : !ready.canEdit || snapshot ? 'view' : 'suggesting'}\n reviewDisplayMode=\"all-markup\"\n zoomMode={fixedZoomMode}\n author={ready.author}\n onReady={editorReady}\n onChange={(change) => {\n if (change.source !== 'load') changed()\n }}\n onFontError={(e) => setError(e.message)}\n >\n <DocxEditor.RevisionMarkup\n insertions={{ mark: 'underline', color: 'blue' }}\n deletions={{ mark: 'strikethrough', color: 'red' }}\n movedFrom={{ mark: 'doubleStrikethrough', color: 'green' }}\n movedTo={{ mark: 'doubleUnderline', color: 'green' }}\n trackMoves\n />\n {!stream && <DocxRibbon onSave={() => void saveVersion()} />}\n <div\n className=\"native-docx-stage\"\n ref={stageRef}\n onMouseDownCapture={(event) => {\n if (event.button === 2 && ref.current?.getSelectionPlacement())\n event.preventDefault()\n }}\n >\n <DocxEditor.Viewport className=\"native-docx-viewport\">\n <DocxEditor.Content />\n <DocxMentions\n initialCommentId={initialCommentId}\n mentions={adapter.mentions}\n notify={adapter.notify}\n getAgentStatus={adapter.getAgentStatus}\n requestAgent={\n adapter.requestAgent\n ? (request) => adapter.requestAgent!(documentId, request)\n : undefined\n }\n >\n <DocxEditorReview>\n {() => (\n <DocxEditorReview.Card>\n <DocxCommentActivity />\n </DocxEditorReview.Card>\n )}\n </DocxEditorReview>\n </DocxMentions>\n <DocxEditor.HeaderFooterChrome />\n <DocxEditor.NotesChrome />\n <DocxEditor.Equation />\n <DocxEditor.HyperLink />\n <DocxEditor.ContextMenu />\n </DocxEditor.Viewport>\n <DocxEditor.PageNumber />\n </div>\n </DocxEditor.Root>\n </EditorBoundary>\n </div>\n )}\n </section>\n )\n}\n","import { createFontSource, type FontConfiguration } from '@docx-editor.dev/react'\nconst loaded = new Map<string, Promise<FontConfiguration>>()\nexport function loadDocxFonts(baseUrl = '/native-docx/fonts'): Promise<FontConfiguration> {\n let promise = loaded.get(baseUrl)\n if (!promise) {\n promise = loadFonts(baseUrl).catch((error) => {\n loaded.delete(baseUrl)\n throw error\n })\n loaded.set(baseUrl, promise)\n }\n return promise\n}\nasync function loadFonts(baseUrl: string): Promise<FontConfiguration> {\n const families = ['Liberation Serif', 'Liberation Sans', 'Liberation Mono']\n const variants = [\n { suffix: 'Regular', weight: 400, style: 'normal' },\n { suffix: 'Bold', weight: 700, style: 'normal' },\n { suffix: 'Italic', weight: 400, style: 'italic' },\n { suffix: 'BoldItalic', weight: 700, style: 'italic' },\n ] as const\n const sources = await Promise.all(\n families.flatMap((family) =>\n variants.map(async (face) => {\n const r = await fetch(\n `${baseUrl.replace(/\\/$/, '')}/${family.replace(' ', '')}-${face.suffix}.ttf`\n )\n if (!r.ok) throw new Error(`Could not load the document font ${family}.`)\n const result = createFontSource(new Uint8Array(await r.arrayBuffer()), {\n family,\n weight: face.weight,\n style: face.style,\n })\n if ('failure' in result)\n throw new Error(`Could not initialize the document font ${family}.`)\n return result.source\n })\n )\n )\n const aliases: Record<string, string> = {\n 'Times New Roman': 'Liberation Serif',\n Cambria: 'Liberation Serif',\n 'DejaVu Serif': 'Liberation Serif',\n Calibri: 'Liberation Sans',\n Aptos: 'Liberation Sans',\n Arial: 'Liberation Sans',\n Helvetica: 'Liberation Sans',\n 'Courier New': 'Liberation Mono',\n 'DejaVu Sans Mono': 'Liberation Mono',\n }\n return {\n epoch: 1,\n maxFontBytes: 12 * 1024 * 1024,\n sources,\n defaultFont: { family: 'Liberation Serif', sizeHalfPoints: 22 },\n supportedFamilies: [...families, ...Object.keys(aliases)],\n substitutions: Object.entries(aliases).flatMap(([from, to]) =>\n variants.map((face) => ({\n from: { family: from, weight: face.weight, style: face.style },\n to: { family: to, weight: face.weight, style: face.style },\n }))\n ),\n }\n}\n","import { useRef, useState } from 'react'\nimport { NativeDocxEditor, type NativeDocxAdapter } from './NativeDocxEditor'\n\nexport interface StreamedWordArtifactProps {\n adapter: NativeDocxAdapter\n content: string\n title: string\n busy: boolean\n error?: string | null\n /** Stable identity for this generation, not the ID of a persisted Markdown preview. */\n draftId: string\n /** Preserve version lineage when the stream already has a stored source artifact. */\n sourceDocumentId?: string\n onSaved?: (documentId: string) => void\n}\n\n/** One shared native drafting surface, from Markdown stream to saved collaborative DOCX. */\nexport function StreamedWordArtifact({\n adapter,\n content,\n title,\n busy,\n error,\n draftId,\n sourceDocumentId,\n onSaved,\n}: StreamedWordArtifactProps) {\n const [documentId, setDocumentId] = useState<string>()\n const saving = useRef<Promise<void> | null>(null)\n async function persist(bytes: ArrayBuffer) {\n if (saving.current) return saving.current\n saving.current = (async () => {\n const query = new URLSearchParams({ title })\n if (sourceDocumentId) query.set('parent_ext_id', sourceDocumentId)\n const response = await adapter.request(`/notes?${query}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n },\n body: bytes,\n })\n if (!response.ok) throw new Error('Could not store the generated Word document.')\n const result = (await response.json()) as { document_ext_id: string }\n if (!result.document_ext_id) throw new Error('The generated document has no ID.')\n await Promise.resolve(adapter.onVersionSaved?.(result.document_ext_id)).catch(() => {})\n setDocumentId(result.document_ext_id)\n onSaved?.(result.document_ext_id)\n })()\n try {\n await saving.current\n } finally {\n saving.current = null\n }\n }\n return (\n <NativeDocxEditor\n key={documentId || draftId}\n adapter={adapter}\n documentId={documentId || draftId}\n title={title}\n draftContent={documentId ? undefined : ''}\n stream={documentId ? undefined : { content, busy, error, onGenerated: persist }}\n onSaved={onSaved}\n />\n )\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  import { RoleBadge } from './chunk-NBV56SGU.js';
3
3
  import { ModalSection, ModalSectionTitle } from './chunk-CPMNAJLF.js';
4
4
  import { testIdOr } from './chunk-7F6CBP3Z.js';
5
- import { Clock, UserMinus, Trash2, Gift, AtSign, Contact, Mail, Phone, MoreHorizontal, Download, UserPlus, MoreVertical, Plus, KeyRound, Loader2, BellOff, Bell, X, ChevronsUpDown, AlertCircle, XCircle, CheckCircle, ChevronDown, ChevronRight } from 'lucide-react';
5
+ import { Clock, UserMinus, Trash2, Gift, AtSign, Contact, Mail, Phone, MoreHorizontal, Download, UserPlus, MoreVertical, Plus, KeyRound, Loader2, BellOff, Bell, X, ChevronsUpDown, Paperclip, AlertCircle, XCircle, CheckCircle, ChevronDown, ChevronRight } from 'lucide-react';
6
6
  import { cn, Tooltip, TooltipTrigger, Select, SelectTrigger, SelectContent, SelectItem, TooltipContent, SelectValue, Button, Textarea, Avatar, AvatarImage, AvatarFallback, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, ScrollArea, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, Popover, PopoverTrigger, PopoverContent, Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, Checkbox } from '@arbidocs/react/ui';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
8
  import { useMemo, useState, useRef, useEffect } from 'react';
@@ -971,7 +971,32 @@ function MailFolderTree({
971
971
  n.key
972
972
  )) });
973
973
  }
974
+ function MailMessagePreview({
975
+ participants,
976
+ subject,
977
+ preview,
978
+ date,
979
+ dateTime,
980
+ unread,
981
+ hasAttachments
982
+ }) {
983
+ return /* @__PURE__ */ jsxs("div", { className: "flex h-full w-full min-w-0 flex-col justify-center gap-0.5 text-sm leading-5", children: [
984
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
985
+ /* @__PURE__ */ jsx("span", { className: cn("min-w-0 flex-1 truncate", unread && "font-semibold"), children: participants }),
986
+ hasAttachments && /* @__PURE__ */ jsx(
987
+ Paperclip,
988
+ {
989
+ className: "size-3.5 shrink-0 text-muted-foreground",
990
+ "aria-label": "Has attachments"
991
+ }
992
+ ),
993
+ /* @__PURE__ */ jsx("time", { dateTime, className: "shrink-0 text-xs font-normal text-muted-foreground", children: date })
994
+ ] }),
995
+ /* @__PURE__ */ jsx("div", { className: cn("truncate", unread && "font-semibold"), children: subject || "(No subject)" }),
996
+ /* @__PURE__ */ jsx("div", { className: "truncate font-normal text-muted-foreground", children: preview || "\xA0" })
997
+ ] });
998
+ }
974
999
 
975
- export { ActionMenu, AddContactsForm, AddContactsResults, ContactCard, DEFAULT_ADD_CONTACTS_LABELS, DEFAULT_CONTACT_CARD_LABELS, DEFAULT_CONTACT_OUTCOME_LABELS, DEFAULT_DM_ACCESS_REQUEST_BANNER_LABELS, DEFAULT_DM_GRANT_ACCESS_DIALOG_LABELS, DEFAULT_DM_INVITE_CHIP_LABELS, DEFAULT_DM_THREAD_FRAME_LABELS, DEFAULT_MAIL_FOLDER_TREE_LABELS, DEFAULT_RECIPIENT_PICKER_LABELS, DmAccessRequestBanner, DmGrantAccessDialogView, DmInviteAvatar, DmInviteChip, DmNewTabIcon, DmThreadFrame, DmThreadHeader, MAX_INVITE_EMAILS, MailFolderTree, MemberBulkActions, MemberListLoading, MemberMutedText, MemberNameCell, MemberRoleCell, RecipientPicker, RoleSelect, WorkspaceDeleteButton, buildMailFolderTree, contactToVCard, descendantFolderIds, downloadVCard, isInboxFolder, parseEmails, toAddContactsRow, toAddContactsRows, toggleMailFolder, vCardFilename };
976
- //# sourceMappingURL=chunk-OJSWQM4G.js.map
977
- //# sourceMappingURL=chunk-OJSWQM4G.js.map
1000
+ export { ActionMenu, AddContactsForm, AddContactsResults, ContactCard, DEFAULT_ADD_CONTACTS_LABELS, DEFAULT_CONTACT_CARD_LABELS, DEFAULT_CONTACT_OUTCOME_LABELS, DEFAULT_DM_ACCESS_REQUEST_BANNER_LABELS, DEFAULT_DM_GRANT_ACCESS_DIALOG_LABELS, DEFAULT_DM_INVITE_CHIP_LABELS, DEFAULT_DM_THREAD_FRAME_LABELS, DEFAULT_MAIL_FOLDER_TREE_LABELS, DEFAULT_RECIPIENT_PICKER_LABELS, DmAccessRequestBanner, DmGrantAccessDialogView, DmInviteAvatar, DmInviteChip, DmNewTabIcon, DmThreadFrame, DmThreadHeader, MAX_INVITE_EMAILS, MailFolderTree, MailMessagePreview, MemberBulkActions, MemberListLoading, MemberMutedText, MemberNameCell, MemberRoleCell, RecipientPicker, RoleSelect, WorkspaceDeleteButton, buildMailFolderTree, contactToVCard, descendantFolderIds, downloadVCard, isInboxFolder, parseEmails, toAddContactsRow, toAddContactsRows, toggleMailFolder, vCardFilename };
1001
+ //# sourceMappingURL=chunk-OZJ5PXA6.js.map
1002
+ //# sourceMappingURL=chunk-OZJ5PXA6.js.map