@arbidocs/blocks 0.5.100 → 0.5.101

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 (137) hide show
  1. package/README.md +9 -1
  2. package/dist/{ConnectedNativeDocxComparison-3UJZR52S.cjs → ConnectedNativeDocxComparison-6BQ2WFF6.cjs} +7 -7
  3. package/dist/{ConnectedNativeDocxComparison-3UJZR52S.cjs.map → ConnectedNativeDocxComparison-6BQ2WFF6.cjs.map} +1 -1
  4. package/dist/{ConnectedNativeDocxComparison-VGJLNVM4.js → ConnectedNativeDocxComparison-DIRGCHMY.js} +6 -6
  5. package/dist/{ConnectedStreamedWordArtifact-MJAVZ3NR.js.map → ConnectedNativeDocxComparison-DIRGCHMY.js.map} +1 -1
  6. package/dist/{ConnectedNativeDocxEditor-A6PGFR35.cjs → ConnectedNativeDocxEditor-4HNYAZEG.cjs} +7 -7
  7. package/dist/{ConnectedNativeDocxEditor-A6PGFR35.cjs.map → ConnectedNativeDocxEditor-4HNYAZEG.cjs.map} +1 -1
  8. package/dist/{ConnectedNativeDocxEditor-O7QEWYGG.js → ConnectedNativeDocxEditor-DKSE3R6C.js} +5 -5
  9. package/dist/{ConnectedNativeDocxEditor-O7QEWYGG.js.map → ConnectedNativeDocxEditor-DKSE3R6C.js.map} +1 -1
  10. package/dist/{ConnectedStreamedWordArtifact-Q7TWGK4B.cjs → ConnectedStreamedWordArtifact-S5I5QCZ7.cjs} +7 -7
  11. package/dist/ConnectedStreamedWordArtifact-S5I5QCZ7.cjs.map +1 -0
  12. package/dist/{ConnectedStreamedWordArtifact-MJAVZ3NR.js → ConnectedStreamedWordArtifact-USNAF4ZM.js} +6 -6
  13. package/dist/{ConnectedNativeDocxComparison-VGJLNVM4.js.map → ConnectedStreamedWordArtifact-USNAF4ZM.js.map} +1 -1
  14. package/dist/{DocumentReviewCard-7VJ3MMYG.cjs → DocumentReviewCard-QHYHBDUA.cjs} +13 -13
  15. package/dist/{DocumentReviewCard-7VJ3MMYG.cjs.map → DocumentReviewCard-QHYHBDUA.cjs.map} +1 -1
  16. package/dist/{DocumentReviewCard-5NZM6FOB.js → DocumentReviewCard-TFAJYWS6.js} +8 -8
  17. package/dist/{DocumentReviewCard-5NZM6FOB.js.map → DocumentReviewCard-TFAJYWS6.js.map} +1 -1
  18. package/dist/{FilesViewerDialog-5VML4F5E.js → FilesViewerDialog-LE5GQQDX.js} +7 -7
  19. package/dist/{FilesViewerDialog-5VML4F5E.js.map → FilesViewerDialog-LE5GQQDX.js.map} +1 -1
  20. package/dist/{FilesViewerDialog-IQ5UDAZX.cjs → FilesViewerDialog-Y5YZJ5O2.cjs} +8 -8
  21. package/dist/{FilesViewerDialog-IQ5UDAZX.cjs.map → FilesViewerDialog-Y5YZJ5O2.cjs.map} +1 -1
  22. package/dist/{WorkspaceTableView-ZIQ7JWT5.cjs → WorkspaceTableView-3D6SYOWT.cjs} +4 -4
  23. package/dist/{WorkspaceTableView-ZIQ7JWT5.cjs.map → WorkspaceTableView-3D6SYOWT.cjs.map} +1 -1
  24. package/dist/{WorkspaceTableView-DYABS53K.js → WorkspaceTableView-WD754UBK.js} +3 -3
  25. package/dist/{WorkspaceTableView-DYABS53K.js.map → WorkspaceTableView-WD754UBK.js.map} +1 -1
  26. package/dist/agents/index.cjs +186 -186
  27. package/dist/agents/index.js +4 -4
  28. package/dist/{chunk-ERDQ4DAX.cjs → chunk-2GFB43GN.cjs} +4 -4
  29. package/dist/{chunk-ERDQ4DAX.cjs.map → chunk-2GFB43GN.cjs.map} +1 -1
  30. package/dist/{chunk-WGAGIF4F.cjs → chunk-2ROYKDEA.cjs} +4 -4
  31. package/dist/{chunk-WGAGIF4F.cjs.map → chunk-2ROYKDEA.cjs.map} +1 -1
  32. package/dist/{chunk-4VSRSF4Q.cjs → chunk-2VWE46ZF.cjs} +114 -57
  33. package/dist/chunk-2VWE46ZF.cjs.map +1 -0
  34. package/dist/{chunk-IK4MSXXR.cjs → chunk-4IRS55N2.cjs} +50 -31
  35. package/dist/chunk-4IRS55N2.cjs.map +1 -0
  36. package/dist/{chunk-Z4VWLWFX.js → chunk-4IXUIRXB.js} +3 -3
  37. package/dist/{chunk-Z4VWLWFX.js.map → chunk-4IXUIRXB.js.map} +1 -1
  38. package/dist/{chunk-KBXATCF4.cjs → chunk-ANT32I6E.cjs} +8 -8
  39. package/dist/{chunk-KBXATCF4.cjs.map → chunk-ANT32I6E.cjs.map} +1 -1
  40. package/dist/{chunk-SWW3KBH2.js → chunk-AZGELQSS.js} +4 -4
  41. package/dist/{chunk-SWW3KBH2.js.map → chunk-AZGELQSS.js.map} +1 -1
  42. package/dist/{chunk-RAF72BBC.cjs → chunk-DVGT3MU6.cjs} +4 -4
  43. package/dist/{chunk-RAF72BBC.cjs.map → chunk-DVGT3MU6.cjs.map} +1 -1
  44. package/dist/{chunk-TVJAVK2G.js → chunk-DW5DFV4O.js} +4 -4
  45. package/dist/{chunk-TVJAVK2G.js.map → chunk-DW5DFV4O.js.map} +1 -1
  46. package/dist/{chunk-4AQ47AB4.js → chunk-DWSSFIK2.js} +3 -3
  47. package/dist/{chunk-4AQ47AB4.js.map → chunk-DWSSFIK2.js.map} +1 -1
  48. package/dist/{chunk-R4JGE2XT.cjs → chunk-FXR6YYPC.cjs} +4 -4
  49. package/dist/{chunk-R4JGE2XT.cjs.map → chunk-FXR6YYPC.cjs.map} +1 -1
  50. package/dist/{chunk-22EZJLGW.js → chunk-G7DQFL52.js} +7 -7
  51. package/dist/{chunk-22EZJLGW.js.map → chunk-G7DQFL52.js.map} +1 -1
  52. package/dist/{chunk-MT3RPUQC.cjs → chunk-H7UDEZEO.cjs} +4 -4
  53. package/dist/{chunk-MT3RPUQC.cjs.map → chunk-H7UDEZEO.cjs.map} +1 -1
  54. package/dist/{chunk-UNQE3JWX.js → chunk-HPS5O6XK.js} +4 -4
  55. package/dist/{chunk-MM5Q7AJL.cjs.map → chunk-HPS5O6XK.js.map} +1 -1
  56. package/dist/{chunk-ETYBZA5E.cjs → chunk-IGVTLCHD.cjs} +4 -4
  57. package/dist/{chunk-ETYBZA5E.cjs.map → chunk-IGVTLCHD.cjs.map} +1 -1
  58. package/dist/{chunk-J24LYNTY.cjs → chunk-ILH2KOHA.cjs} +37 -37
  59. package/dist/{chunk-J24LYNTY.cjs.map → chunk-ILH2KOHA.cjs.map} +1 -1
  60. package/dist/{chunk-7F5Z4K5W.js → chunk-IU5CHOEU.js} +9 -10
  61. package/dist/chunk-IU5CHOEU.js.map +1 -0
  62. package/dist/{chunk-ZATTTPWL.cjs → chunk-KCP42W67.cjs} +4 -4
  63. package/dist/{chunk-ZATTTPWL.cjs.map → chunk-KCP42W67.cjs.map} +1 -1
  64. package/dist/{chunk-YG4S7OCD.js → chunk-LNWEJJUY.js} +3 -3
  65. package/dist/{chunk-YG4S7OCD.js.map → chunk-LNWEJJUY.js.map} +1 -1
  66. package/dist/{chunk-KYR3TXHS.js → chunk-OLCQPGB4.js} +3 -3
  67. package/dist/{chunk-KYR3TXHS.js.map → chunk-OLCQPGB4.js.map} +1 -1
  68. package/dist/{chunk-STCXXO7T.js → chunk-PGCKTXYH.js} +3 -3
  69. package/dist/{chunk-STCXXO7T.js.map → chunk-PGCKTXYH.js.map} +1 -1
  70. package/dist/{chunk-7GPQBAIL.cjs → chunk-Q3OLTA47.cjs} +4 -4
  71. package/dist/{chunk-7GPQBAIL.cjs.map → chunk-Q3OLTA47.cjs.map} +1 -1
  72. package/dist/{chunk-UBI4HXT6.js → chunk-Q45LV2DL.js} +5 -5
  73. package/dist/{chunk-UBI4HXT6.js.map → chunk-Q45LV2DL.js.map} +1 -1
  74. package/dist/{chunk-Z7XKBKQN.js → chunk-QAKL6LNR.js} +8 -8
  75. package/dist/{chunk-Z7XKBKQN.js.map → chunk-QAKL6LNR.js.map} +1 -1
  76. package/dist/{chunk-USIRUI2M.cjs → chunk-QSPKL754.cjs} +29 -29
  77. package/dist/{chunk-USIRUI2M.cjs.map → chunk-QSPKL754.cjs.map} +1 -1
  78. package/dist/{chunk-HJBVSG6H.cjs → chunk-QYDMOBGP.cjs} +4 -4
  79. package/dist/{chunk-HJBVSG6H.cjs.map → chunk-QYDMOBGP.cjs.map} +1 -1
  80. package/dist/{chunk-OYSTBNNA.js → chunk-R3AHNYSS.js} +3 -3
  81. package/dist/{chunk-OYSTBNNA.js.map → chunk-R3AHNYSS.js.map} +1 -1
  82. package/dist/{chunk-JLTPQDQB.js → chunk-RP3IDFHS.js} +3 -3
  83. package/dist/{chunk-JLTPQDQB.js.map → chunk-RP3IDFHS.js.map} +1 -1
  84. package/dist/{chunk-ZAKDIJBP.cjs → chunk-RV2YGRV6.cjs} +48 -48
  85. package/dist/{chunk-ZAKDIJBP.cjs.map → chunk-RV2YGRV6.cjs.map} +1 -1
  86. package/dist/{chunk-SWILV6LT.cjs → chunk-TGHBXJTN.cjs} +4 -4
  87. package/dist/{chunk-SWILV6LT.cjs.map → chunk-TGHBXJTN.cjs.map} +1 -1
  88. package/dist/{chunk-MM5Q7AJL.cjs → chunk-TQXMASFX.cjs} +8 -8
  89. package/dist/chunk-TQXMASFX.cjs.map +1 -0
  90. package/dist/{chunk-VW6MFQFW.js → chunk-UPXQDULH.js} +112 -55
  91. package/dist/chunk-UPXQDULH.js.map +1 -0
  92. package/dist/{chunk-L3V2ANBD.js → chunk-VEHHI5WS.js} +3 -3
  93. package/dist/{chunk-L3V2ANBD.js.map → chunk-VEHHI5WS.js.map} +1 -1
  94. package/dist/{chunk-6OEAZ2TJ.js → chunk-VJQCOZ7O.js} +50 -31
  95. package/dist/chunk-VJQCOZ7O.js.map +1 -0
  96. package/dist/{chunk-VD33HXFZ.cjs → chunk-WW2H5C6L.cjs} +28 -28
  97. package/dist/{chunk-VD33HXFZ.cjs.map → chunk-WW2H5C6L.cjs.map} +1 -1
  98. package/dist/{chunk-OOYT5A7W.js → chunk-X2QJWFFO.js} +3 -3
  99. package/dist/{chunk-OOYT5A7W.js.map → chunk-X2QJWFFO.js.map} +1 -1
  100. package/dist/{chunk-FADUFGZD.js → chunk-XCE4HB3F.js} +3 -3
  101. package/dist/{chunk-FADUFGZD.js.map → chunk-XCE4HB3F.js.map} +1 -1
  102. package/dist/{chunk-LKK52DEY.cjs → chunk-XNXNLXIC.cjs} +9 -10
  103. package/dist/chunk-XNXNLXIC.cjs.map +1 -0
  104. package/dist/collaboration/index.cjs +70 -70
  105. package/dist/collaboration/index.js +2 -2
  106. package/dist/connect/docx.cjs +10 -10
  107. package/dist/connect/docx.js +6 -6
  108. package/dist/connect/index.cjs +680 -644
  109. package/dist/connect/index.cjs.map +1 -1
  110. package/dist/connect/index.js +106 -70
  111. package/dist/connect/index.js.map +1 -1
  112. package/dist/connect/viewer.cjs +6 -6
  113. package/dist/connect/viewer.js +5 -5
  114. package/dist/connection/files/grid/documentCellRenderers.d.ts +19 -4
  115. package/dist/connection/files/grid/useDocumentGridSync.d.ts +4 -15
  116. package/dist/connection/files/grid/useDocumentTable.d.ts +0 -1
  117. package/dist/databases/index.cjs +49 -49
  118. package/dist/databases/index.js +2 -2
  119. package/dist/embed/index.cjs +12 -12
  120. package/dist/embed/index.js +6 -6
  121. package/dist/files/index.cjs +224 -224
  122. package/dist/files/index.js +2 -2
  123. package/dist/index.cjs +299 -299
  124. package/dist/index.js +6 -6
  125. package/dist/tags/TagTable.d.ts +4 -1
  126. package/dist/workflow-canvas/index.cjs +22 -22
  127. package/dist/workflow-canvas/index.js +11 -11
  128. package/node_modules/@arbidocs/coedit/package.json +1 -1
  129. package/package.json +10 -6
  130. package/dist/ConnectedStreamedWordArtifact-Q7TWGK4B.cjs.map +0 -1
  131. package/dist/chunk-4VSRSF4Q.cjs.map +0 -1
  132. package/dist/chunk-6OEAZ2TJ.js.map +0 -1
  133. package/dist/chunk-7F5Z4K5W.js.map +0 -1
  134. package/dist/chunk-IK4MSXXR.cjs.map +0 -1
  135. package/dist/chunk-LKK52DEY.cjs.map +0 -1
  136. package/dist/chunk-UNQE3JWX.js.map +0 -1
  137. package/dist/chunk-VW6MFQFW.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkERDQ4DAX_cjs = require('./chunk-ERDQ4DAX.cjs');
4
+ var chunk2GFB43GN_cjs = require('./chunk-2GFB43GN.cjs');
5
5
  var zustand = require('zustand');
6
6
  var middleware = require('zustand/middleware');
7
7
 
@@ -50,7 +50,7 @@ var useFilesPrefs = zustand.create()(
50
50
  (state) => state.viewModes[prefsKey] === viewMode ? state : { viewModes: { ...state.viewModes, [prefsKey]: viewMode } }
51
51
  ),
52
52
  // New users start at the compact minimum (more rows at once).
53
- rowHeight: chunkERDQ4DAX_cjs.DOCUMENTS_ROW_HEIGHT_INITIAL,
53
+ rowHeight: chunk2GFB43GN_cjs.DOCUMENTS_ROW_HEIGHT_INITIAL,
54
54
  setRowHeight: (rowHeight) => set({ rowHeight })
55
55
  }),
56
56
  {
@@ -121,5 +121,5 @@ exports.useFilesGridStates = useFilesGridStates;
121
121
  exports.useFilesPrefs = useFilesPrefs;
122
122
  exports.useFilesStore = useFilesStore;
123
123
  exports.usePendingFolders = usePendingFolders;
124
- //# sourceMappingURL=chunk-HJBVSG6H.cjs.map
125
- //# sourceMappingURL=chunk-HJBVSG6H.cjs.map
124
+ //# sourceMappingURL=chunk-QYDMOBGP.cjs.map
125
+ //# sourceMappingURL=chunk-QYDMOBGP.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/connection/files/store.ts"],"names":["create","persist","createJSONStorage","DOCUMENTS_ROW_HEIGHT_INITIAL"],"mappings":"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","file":"chunk-HJBVSG6H.cjs","sourcesContent":["/**\n * The Files kits' own state: empty folders the user created (a folder exists only through its\n * documents, so a new one is a placeholder until something is moved into it), per workspace, for\n * the session (kept in `sessionStorage`, so a reload keeps them).\n */\n\nimport type { GridState } from 'ag-grid-community'\nimport { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\nimport { DOCUMENTS_ROW_HEIGHT_INITIAL } from '../../files/documentColumns'\nimport type { ExplorerFolder } from '../../files/folders/folderPaths'\n\ninterface FilesState {\n /** Placeholder folder paths per workspace. */\n pendingFolders: Readonly<Record<string, readonly string[]>>\n addPendingFolder: (workspaceId: string, path: string) => void\n removePendingFolder: (workspaceId: string, path: string) => void\n}\n\nexport const useFilesStore = create<FilesState>()(\n persist(\n (set) => ({\n pendingFolders: {},\n addPendingFolder: (workspaceId, path) =>\n set((state) => {\n const current = state.pendingFolders[workspaceId] ?? []\n if (current.includes(path)) return state\n return { pendingFolders: { ...state.pendingFolders, [workspaceId]: [...current, path] } }\n }),\n removePendingFolder: (workspaceId, path) =>\n set((state) => {\n const current = state.pendingFolders[workspaceId] ?? []\n if (!current.includes(path)) return state\n return {\n pendingFolders: {\n ...state.pendingFolders,\n [workspaceId]: current.filter((p) => p !== path),\n },\n }\n }),\n }),\n {\n name: 'arbi_explorer_pending_folders',\n storage: createJSONStorage(() => sessionStorage),\n partialize: (state) => ({ pendingFolders: state.pendingFolders }),\n }\n )\n)\n\nconst NONE: readonly string[] = []\n\n/** A workspace's placeholder folders. */\nexport function usePendingFolders(workspaceId: string | null | undefined): readonly string[] {\n return useFilesStore(\n (state) => (workspaceId ? state.pendingFolders[workspaceId] : undefined) ?? NONE\n )\n}\n\n/** How the files page shows the documents: a table, the explorer, review one by one, or search. */\nexport type FilesViewMode = 'grid' | 'explorer' | 'navigator' | 'search'\n\n/** The files page's own preferences key (`ConnectedFilesPage` `prefsKey`). */\nexport const FILES_PREFS_KEY = 'files'\nconst DEFAULT_VIEW_MODE: FilesViewMode = 'explorer'\n\ninterface FilesPrefsState {\n /** The documents list's tri-state filters (filter id → include / exclude / off). */\n documentFilters: Readonly<Record<string, 'include' | 'exclude' | null>>\n setDocumentFilters: (filters: Record<string, 'include' | 'exclude' | null>) => void\n /**\n * Each files page's view, by its `prefsKey` (a page that is the same kit in another role, e.g.\n * a tabular review in the table view, keeps its own). Absent: that page's default.\n */\n viewModes: Readonly<Record<string, FilesViewMode>>\n /** Set a page's view (default: the files page's). */\n setViewMode: (mode: FilesViewMode, prefsKey?: string) => void\n /** The table's row height (density). */\n rowHeight: number\n setRowHeight: (height: number) => void\n}\n\n/** The Files kits' preferences, kept on this device (`localStorage`) across sessions. */\nexport const useFilesPrefs = create<FilesPrefsState>()(\n persist(\n (set) => ({\n documentFilters: {},\n setDocumentFilters: (documentFilters) => set({ documentFilters }),\n viewModes: {},\n setViewMode: (viewMode, prefsKey = FILES_PREFS_KEY) =>\n set((state) =>\n state.viewModes[prefsKey] === viewMode\n ? state\n : { viewModes: { ...state.viewModes, [prefsKey]: viewMode } }\n ),\n // New users start at the compact minimum (more rows at once).\n rowHeight: DOCUMENTS_ROW_HEIGHT_INITIAL,\n setRowHeight: (rowHeight) => set({ rowHeight }),\n }),\n {\n name: 'arbi_files_prefs',\n storage: createJSONStorage(() => localStorage),\n version: 1,\n // Version 0 kept one view for every files page: it becomes the files page's own.\n migrate: (persisted, version) => {\n const state = (persisted ?? {}) as Record<string, unknown>\n if (version >= 1) return state as Partial<FilesPrefsState>\n const { viewMode, ...rest } = state\n return {\n ...rest,\n viewModes: viewMode ? { [FILES_PREFS_KEY]: viewMode as FilesViewMode } : {},\n } as Partial<FilesPrefsState>\n },\n partialize: (state) => ({\n documentFilters: state.documentFilters,\n viewModes: state.viewModes,\n rowHeight: state.rowHeight,\n }),\n }\n )\n)\n\n/** A files page's view (`prefsKey`, default the files page's), else its `defaultViewMode`. */\nexport function filesViewMode(\n state: Pick<FilesPrefsState, 'viewModes'>,\n prefsKey: string = FILES_PREFS_KEY,\n defaultViewMode: FilesViewMode = DEFAULT_VIEW_MODE\n): FilesViewMode {\n return state.viewModes[prefsKey] ?? defaultViewMode\n}\n\n/** An AI review run: the fields, the documents, and which of them the server finished. */\nexport interface AiReviewRun {\n tags: { id: string; name: string }[]\n docIds: string[]\n /** The documents the server finished (a finished cell with no value will not fill). */\n finishedDocIds?: string[]\n /** It replaces values already there: a cell shows its new value only once finished. */\n replacing?: boolean\n}\n\ninterface AiReviewState {\n /** The AI review dialog is open. */\n open: boolean\n /** The run on screen, kept after closing so \"View results\" can bring the answers back. */\n run: AiReviewRun | null\n setOpen: (open: boolean) => void\n setRun: (run: AiReviewRun | null) => void\n /** The server finished these documents of the run (with or without a value). */\n markFinished: (docIds: string[]) => void\n}\n\n/** The AI review dialog and its run, reachable from outside React (a finished-run notice). */\nexport const useAiReviewStore = create<AiReviewState>()((set) => ({\n open: false,\n run: null,\n setOpen: (open) => set({ open }),\n setRun: (run) => set({ run }),\n markFinished: (docIds) =>\n set((state) => {\n const run = state.run\n if (!run) return state\n const finished = new Set(run.finishedDocIds ?? [])\n const added = docIds.filter((id) => run.docIds.includes(id) && !finished.has(id))\n if (added.length === 0) return state\n return { run: { ...run, finishedDocIds: [...finished, ...added] } }\n }),\n}))\n\ninterface GridStatesState {\n /** AG Grid's saved state (columns, widths, sort) per grid id. */\n gridStates: Readonly<Record<string, GridState>>\n setGridState: (gridId: string, state: GridState) => void\n}\n\n/** The Files grids' saved state, kept on this device, for hosts that keep none of their own. */\nexport const useFilesGridStates = create<GridStatesState>()(\n persist(\n (set) => ({\n gridStates: {},\n setGridState: (gridId, state) =>\n set((current) => ({ gridStates: { ...current.gridStates, [gridId]: state } })),\n }),\n { name: 'arbi_files_grids', storage: createJSONStorage(() => localStorage) }\n )\n)\n\n/** A document the Delete confirmation asks about. */\nexport interface DeleteRequestDocument {\n external_id: string\n file_name?: string | null\n doc_metadata?: { title?: string | null } | null\n}\n\ninterface FilesDialogsState {\n /** Move the selection (or `folder`) to a folder. */\n move: { folder: ExplorerFolder | null } | null\n openMove: (folder?: ExplorerFolder | null) => void\n closeMove: () => void\n /** Edit the selection's labels and fields. */\n bulkTagsOpen: boolean\n setBulkTagsOpen: (open: boolean) => void\n /** Confirm deleting one document. */\n deleteRequest: DeleteRequestDocument | null\n requestDelete: (doc: DeleteRequestDocument | null) => void\n /** Export, copy or move the selection (the page's own dialog, when the host has none). */\n exportOpen: boolean\n setExportOpen: (open: boolean) => void\n}\n\n/** The files page's dialogs, also opened from outside it (commands, the viewer's related files). */\nexport const useFilesDialogs = create<FilesDialogsState>()((set) => ({\n move: null,\n openMove: (folder = null) => set({ move: { folder } }),\n closeMove: () => set({ move: null }),\n bulkTagsOpen: false,\n setBulkTagsOpen: (bulkTagsOpen) => set({ bulkTagsOpen }),\n deleteRequest: null,\n requestDelete: (deleteRequest) => set({ deleteRequest }),\n exportOpen: false,\n setExportOpen: (exportOpen) => set({ exportOpen }),\n}))\n"]}
1
+ {"version":3,"sources":["../src/connection/files/store.ts"],"names":["create","persist","createJSONStorage","DOCUMENTS_ROW_HEIGHT_INITIAL"],"mappings":"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","file":"chunk-QYDMOBGP.cjs","sourcesContent":["/**\n * The Files kits' own state: empty folders the user created (a folder exists only through its\n * documents, so a new one is a placeholder until something is moved into it), per workspace, for\n * the session (kept in `sessionStorage`, so a reload keeps them).\n */\n\nimport type { GridState } from 'ag-grid-community'\nimport { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\nimport { DOCUMENTS_ROW_HEIGHT_INITIAL } from '../../files/documentColumns'\nimport type { ExplorerFolder } from '../../files/folders/folderPaths'\n\ninterface FilesState {\n /** Placeholder folder paths per workspace. */\n pendingFolders: Readonly<Record<string, readonly string[]>>\n addPendingFolder: (workspaceId: string, path: string) => void\n removePendingFolder: (workspaceId: string, path: string) => void\n}\n\nexport const useFilesStore = create<FilesState>()(\n persist(\n (set) => ({\n pendingFolders: {},\n addPendingFolder: (workspaceId, path) =>\n set((state) => {\n const current = state.pendingFolders[workspaceId] ?? []\n if (current.includes(path)) return state\n return { pendingFolders: { ...state.pendingFolders, [workspaceId]: [...current, path] } }\n }),\n removePendingFolder: (workspaceId, path) =>\n set((state) => {\n const current = state.pendingFolders[workspaceId] ?? []\n if (!current.includes(path)) return state\n return {\n pendingFolders: {\n ...state.pendingFolders,\n [workspaceId]: current.filter((p) => p !== path),\n },\n }\n }),\n }),\n {\n name: 'arbi_explorer_pending_folders',\n storage: createJSONStorage(() => sessionStorage),\n partialize: (state) => ({ pendingFolders: state.pendingFolders }),\n }\n )\n)\n\nconst NONE: readonly string[] = []\n\n/** A workspace's placeholder folders. */\nexport function usePendingFolders(workspaceId: string | null | undefined): readonly string[] {\n return useFilesStore(\n (state) => (workspaceId ? state.pendingFolders[workspaceId] : undefined) ?? NONE\n )\n}\n\n/** How the files page shows the documents: a table, the explorer, review one by one, or search. */\nexport type FilesViewMode = 'grid' | 'explorer' | 'navigator' | 'search'\n\n/** The files page's own preferences key (`ConnectedFilesPage` `prefsKey`). */\nexport const FILES_PREFS_KEY = 'files'\nconst DEFAULT_VIEW_MODE: FilesViewMode = 'explorer'\n\ninterface FilesPrefsState {\n /** The documents list's tri-state filters (filter id → include / exclude / off). */\n documentFilters: Readonly<Record<string, 'include' | 'exclude' | null>>\n setDocumentFilters: (filters: Record<string, 'include' | 'exclude' | null>) => void\n /**\n * Each files page's view, by its `prefsKey` (a page that is the same kit in another role, e.g.\n * a tabular review in the table view, keeps its own). Absent: that page's default.\n */\n viewModes: Readonly<Record<string, FilesViewMode>>\n /** Set a page's view (default: the files page's). */\n setViewMode: (mode: FilesViewMode, prefsKey?: string) => void\n /** The table's row height (density). */\n rowHeight: number\n setRowHeight: (height: number) => void\n}\n\n/** The Files kits' preferences, kept on this device (`localStorage`) across sessions. */\nexport const useFilesPrefs = create<FilesPrefsState>()(\n persist(\n (set) => ({\n documentFilters: {},\n setDocumentFilters: (documentFilters) => set({ documentFilters }),\n viewModes: {},\n setViewMode: (viewMode, prefsKey = FILES_PREFS_KEY) =>\n set((state) =>\n state.viewModes[prefsKey] === viewMode\n ? state\n : { viewModes: { ...state.viewModes, [prefsKey]: viewMode } }\n ),\n // New users start at the compact minimum (more rows at once).\n rowHeight: DOCUMENTS_ROW_HEIGHT_INITIAL,\n setRowHeight: (rowHeight) => set({ rowHeight }),\n }),\n {\n name: 'arbi_files_prefs',\n storage: createJSONStorage(() => localStorage),\n version: 1,\n // Version 0 kept one view for every files page: it becomes the files page's own.\n migrate: (persisted, version) => {\n const state = (persisted ?? {}) as Record<string, unknown>\n if (version >= 1) return state as Partial<FilesPrefsState>\n const { viewMode, ...rest } = state\n return {\n ...rest,\n viewModes: viewMode ? { [FILES_PREFS_KEY]: viewMode as FilesViewMode } : {},\n } as Partial<FilesPrefsState>\n },\n partialize: (state) => ({\n documentFilters: state.documentFilters,\n viewModes: state.viewModes,\n rowHeight: state.rowHeight,\n }),\n }\n )\n)\n\n/** A files page's view (`prefsKey`, default the files page's), else its `defaultViewMode`. */\nexport function filesViewMode(\n state: Pick<FilesPrefsState, 'viewModes'>,\n prefsKey: string = FILES_PREFS_KEY,\n defaultViewMode: FilesViewMode = DEFAULT_VIEW_MODE\n): FilesViewMode {\n return state.viewModes[prefsKey] ?? defaultViewMode\n}\n\n/** An AI review run: the fields, the documents, and which of them the server finished. */\nexport interface AiReviewRun {\n tags: { id: string; name: string }[]\n docIds: string[]\n /** The documents the server finished (a finished cell with no value will not fill). */\n finishedDocIds?: string[]\n /** It replaces values already there: a cell shows its new value only once finished. */\n replacing?: boolean\n}\n\ninterface AiReviewState {\n /** The AI review dialog is open. */\n open: boolean\n /** The run on screen, kept after closing so \"View results\" can bring the answers back. */\n run: AiReviewRun | null\n setOpen: (open: boolean) => void\n setRun: (run: AiReviewRun | null) => void\n /** The server finished these documents of the run (with or without a value). */\n markFinished: (docIds: string[]) => void\n}\n\n/** The AI review dialog and its run, reachable from outside React (a finished-run notice). */\nexport const useAiReviewStore = create<AiReviewState>()((set) => ({\n open: false,\n run: null,\n setOpen: (open) => set({ open }),\n setRun: (run) => set({ run }),\n markFinished: (docIds) =>\n set((state) => {\n const run = state.run\n if (!run) return state\n const finished = new Set(run.finishedDocIds ?? [])\n const added = docIds.filter((id) => run.docIds.includes(id) && !finished.has(id))\n if (added.length === 0) return state\n return { run: { ...run, finishedDocIds: [...finished, ...added] } }\n }),\n}))\n\ninterface GridStatesState {\n /** AG Grid's saved state (columns, widths, sort) per grid id. */\n gridStates: Readonly<Record<string, GridState>>\n setGridState: (gridId: string, state: GridState) => void\n}\n\n/** The Files grids' saved state, kept on this device, for hosts that keep none of their own. */\nexport const useFilesGridStates = create<GridStatesState>()(\n persist(\n (set) => ({\n gridStates: {},\n setGridState: (gridId, state) =>\n set((current) => ({ gridStates: { ...current.gridStates, [gridId]: state } })),\n }),\n { name: 'arbi_files_grids', storage: createJSONStorage(() => localStorage) }\n )\n)\n\n/** A document the Delete confirmation asks about. */\nexport interface DeleteRequestDocument {\n external_id: string\n file_name?: string | null\n doc_metadata?: { title?: string | null } | null\n}\n\ninterface FilesDialogsState {\n /** Move the selection (or `folder`) to a folder. */\n move: { folder: ExplorerFolder | null } | null\n openMove: (folder?: ExplorerFolder | null) => void\n closeMove: () => void\n /** Edit the selection's labels and fields. */\n bulkTagsOpen: boolean\n setBulkTagsOpen: (open: boolean) => void\n /** Confirm deleting one document. */\n deleteRequest: DeleteRequestDocument | null\n requestDelete: (doc: DeleteRequestDocument | null) => void\n /** Export, copy or move the selection (the page's own dialog, when the host has none). */\n exportOpen: boolean\n setExportOpen: (open: boolean) => void\n}\n\n/** The files page's dialogs, also opened from outside it (commands, the viewer's related files). */\nexport const useFilesDialogs = create<FilesDialogsState>()((set) => ({\n move: null,\n openMove: (folder = null) => set({ move: { folder } }),\n closeMove: () => set({ move: null }),\n bulkTagsOpen: false,\n setBulkTagsOpen: (bulkTagsOpen) => set({ bulkTagsOpen }),\n deleteRequest: null,\n requestDelete: (deleteRequest) => set({ deleteRequest }),\n exportOpen: false,\n setExportOpen: (exportOpen) => set({ exportOpen }),\n}))\n"]}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { DOCUMENTS_ROW_HEIGHT_INITIAL } from './chunk-OOYT5A7W.js';
2
+ import { DOCUMENTS_ROW_HEIGHT_INITIAL } from './chunk-X2QJWFFO.js';
3
3
  import { create } from 'zustand';
4
4
  import { persist, createJSONStorage } from 'zustand/middleware';
5
5
 
@@ -112,5 +112,5 @@ var useFilesDialogs = create()((set) => ({
112
112
  }));
113
113
 
114
114
  export { FILES_PREFS_KEY, filesViewMode, useAiReviewStore, useFilesDialogs, useFilesGridStates, useFilesPrefs, useFilesStore, usePendingFolders };
115
- //# sourceMappingURL=chunk-OYSTBNNA.js.map
116
- //# sourceMappingURL=chunk-OYSTBNNA.js.map
115
+ //# sourceMappingURL=chunk-R3AHNYSS.js.map
116
+ //# sourceMappingURL=chunk-R3AHNYSS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/connection/files/store.ts"],"names":[],"mappings":";;;;AAmBO,IAAM,gBAAgB,MAAA,EAAmB;AAAA,EAC9C,OAAA;AAAA,IACE,CAAC,GAAA,MAAS;AAAA,MACR,gBAAgB,EAAC;AAAA,MACjB,kBAAkB,CAAC,WAAA,EAAa,IAAA,KAC9B,GAAA,CAAI,CAAC,KAAA,KAAU;AACb,QAAA,MAAM,OAAA,GAAU,KAAA,CAAM,cAAA,CAAe,WAAW,KAAK,EAAC;AACtD,QAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,IAAI,CAAA,EAAG,OAAO,KAAA;AACnC,QAAA,OAAO,EAAE,cAAA,EAAgB,EAAE,GAAG,MAAM,cAAA,EAAgB,CAAC,WAAW,GAAG,CAAC,GAAG,OAAA,EAAS,IAAI,GAAE,EAAE;AAAA,MAC1F,CAAC,CAAA;AAAA,MACH,qBAAqB,CAAC,WAAA,EAAa,IAAA,KACjC,GAAA,CAAI,CAAC,KAAA,KAAU;AACb,QAAA,MAAM,OAAA,GAAU,KAAA,CAAM,cAAA,CAAe,WAAW,KAAK,EAAC;AACtD,QAAA,IAAI,CAAC,OAAA,CAAQ,QAAA,CAAS,IAAI,GAAG,OAAO,KAAA;AACpC,QAAA,OAAO;AAAA,UACL,cAAA,EAAgB;AAAA,YACd,GAAG,KAAA,CAAM,cAAA;AAAA,YACT,CAAC,WAAW,GAAG,OAAA,CAAQ,OAAO,CAAC,CAAA,KAAM,MAAM,IAAI;AAAA;AACjD,SACF;AAAA,MACF,CAAC;AAAA,KACL,CAAA;AAAA,IACA;AAAA,MACE,IAAA,EAAM,+BAAA;AAAA,MACN,OAAA,EAAS,iBAAA,CAAkB,MAAM,cAAc,CAAA;AAAA,MAC/C,YAAY,CAAC,KAAA,MAAW,EAAE,cAAA,EAAgB,MAAM,cAAA,EAAe;AAAA;AACjE;AAEJ;AAEA,IAAM,OAA0B,EAAC;AAG1B,SAAS,kBAAkB,WAAA,EAA2D;AAC3F,EAAA,OAAO,aAAA;AAAA,IACL,CAAC,KAAA,KAAA,CAAW,WAAA,GAAc,MAAM,cAAA,CAAe,WAAW,IAAI,MAAA,KAAc;AAAA,GAC9E;AACF;AAMO,IAAM,eAAA,GAAkB;AAC/B,IAAM,iBAAA,GAAmC,UAAA;AAmBlC,IAAM,gBAAgB,MAAA,EAAwB;AAAA,EACnD,OAAA;AAAA,IACE,CAAC,GAAA,MAAS;AAAA,MACR,iBAAiB,EAAC;AAAA,MAClB,oBAAoB,CAAC,eAAA,KAAoB,GAAA,CAAI,EAAE,iBAAiB,CAAA;AAAA,MAChE,WAAW,EAAC;AAAA,MACZ,WAAA,EAAa,CAAC,QAAA,EAAU,QAAA,GAAW,eAAA,KACjC,GAAA;AAAA,QAAI,CAAC,KAAA,KACH,KAAA,CAAM,UAAU,QAAQ,CAAA,KAAM,WAC1B,KAAA,GACA,EAAE,SAAA,EAAW,EAAE,GAAG,KAAA,CAAM,SAAA,EAAW,CAAC,QAAQ,GAAG,UAAS;AAAE,OAChE;AAAA;AAAA,MAEF,SAAA,EAAW,4BAAA;AAAA,MACX,cAAc,CAAC,SAAA,KAAc,GAAA,CAAI,EAAE,WAAW;AAAA,KAChD,CAAA;AAAA,IACA;AAAA,MACE,IAAA,EAAM,kBAAA;AAAA,MACN,OAAA,EAAS,iBAAA,CAAkB,MAAM,YAAY,CAAA;AAAA,MAC7C,OAAA,EAAS,CAAA;AAAA;AAAA,MAET,OAAA,EAAS,CAAC,SAAA,EAAW,OAAA,KAAY;AAC/B,QAAA,MAAM,KAAA,GAAS,aAAa,EAAC;AAC7B,QAAA,IAAI,OAAA,IAAW,GAAG,OAAO,KAAA;AACzB,QAAA,MAAM,EAAE,QAAA,EAAU,GAAG,IAAA,EAAK,GAAI,KAAA;AAC9B,QAAA,OAAO;AAAA,UACL,GAAG,IAAA;AAAA,UACH,SAAA,EAAW,WAAW,EAAE,CAAC,eAAe,GAAG,QAAA,KAA8B;AAAC,SAC5E;AAAA,MACF,CAAA;AAAA,MACA,UAAA,EAAY,CAAC,KAAA,MAAW;AAAA,QACtB,iBAAiB,KAAA,CAAM,eAAA;AAAA,QACvB,WAAW,KAAA,CAAM,SAAA;AAAA,QACjB,WAAW,KAAA,CAAM;AAAA,OACnB;AAAA;AACF;AAEJ;AAGO,SAAS,aAAA,CACd,KAAA,EACA,QAAA,GAAmB,eAAA,EACnB,kBAAiC,iBAAA,EAClB;AACf,EAAA,OAAO,KAAA,CAAM,SAAA,CAAU,QAAQ,CAAA,IAAK,eAAA;AACtC;AAwBO,IAAM,gBAAA,GAAmB,MAAA,EAAsB,CAAE,CAAC,GAAA,MAAS;AAAA,EAChE,IAAA,EAAM,KAAA;AAAA,EACN,GAAA,EAAK,IAAA;AAAA,EACL,SAAS,CAAC,IAAA,KAAS,GAAA,CAAI,EAAE,MAAM,CAAA;AAAA,EAC/B,QAAQ,CAAC,GAAA,KAAQ,GAAA,CAAI,EAAE,KAAK,CAAA;AAAA,EAC5B,YAAA,EAAc,CAAC,MAAA,KACb,GAAA,CAAI,CAAC,KAAA,KAAU;AACb,IAAA,MAAM,MAAM,KAAA,CAAM,GAAA;AAClB,IAAA,IAAI,CAAC,KAAK,OAAO,KAAA;AACjB,IAAA,MAAM,WAAW,IAAI,GAAA,CAAI,GAAA,CAAI,cAAA,IAAkB,EAAE,CAAA;AACjD,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,MAAA,CAAO,CAAC,OAAO,GAAA,CAAI,MAAA,CAAO,QAAA,CAAS,EAAE,CAAA,IAAK,CAAC,QAAA,CAAS,GAAA,CAAI,EAAE,CAAC,CAAA;AAChF,IAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,KAAA;AAC/B,IAAA,OAAO,EAAE,GAAA,EAAK,EAAE,GAAG,GAAA,EAAK,cAAA,EAAgB,CAAC,GAAG,QAAA,EAAU,GAAG,KAAK,CAAA,EAAE,EAAE;AAAA,EACpE,CAAC;AACL,CAAA,CAAE;AASK,IAAM,qBAAqB,MAAA,EAAwB;AAAA,EACxD,OAAA;AAAA,IACE,CAAC,GAAA,MAAS;AAAA,MACR,YAAY,EAAC;AAAA,MACb,cAAc,CAAC,MAAA,EAAQ,UACrB,GAAA,CAAI,CAAC,aAAa,EAAE,UAAA,EAAY,EAAE,GAAG,QAAQ,UAAA,EAAY,CAAC,MAAM,GAAG,KAAA,IAAQ,CAAE;AAAA,KACjF,CAAA;AAAA,IACA,EAAE,IAAA,EAAM,kBAAA,EAAoB,SAAS,iBAAA,CAAkB,MAAM,YAAY,CAAA;AAAE;AAE/E;AA0BO,IAAM,eAAA,GAAkB,MAAA,EAA0B,CAAE,CAAC,GAAA,MAAS;AAAA,EACnE,IAAA,EAAM,IAAA;AAAA,EACN,QAAA,EAAU,CAAC,MAAA,GAAS,IAAA,KAAS,GAAA,CAAI,EAAE,IAAA,EAAM,EAAE,MAAA,EAAO,EAAG,CAAA;AAAA,EACrD,WAAW,MAAM,GAAA,CAAI,EAAE,IAAA,EAAM,MAAM,CAAA;AAAA,EACnC,YAAA,EAAc,KAAA;AAAA,EACd,iBAAiB,CAAC,YAAA,KAAiB,GAAA,CAAI,EAAE,cAAc,CAAA;AAAA,EACvD,aAAA,EAAe,IAAA;AAAA,EACf,eAAe,CAAC,aAAA,KAAkB,GAAA,CAAI,EAAE,eAAe,CAAA;AAAA,EACvD,UAAA,EAAY,KAAA;AAAA,EACZ,eAAe,CAAC,UAAA,KAAe,GAAA,CAAI,EAAE,YAAY;AACnD,CAAA,CAAE","file":"chunk-OYSTBNNA.js","sourcesContent":["/**\n * The Files kits' own state: empty folders the user created (a folder exists only through its\n * documents, so a new one is a placeholder until something is moved into it), per workspace, for\n * the session (kept in `sessionStorage`, so a reload keeps them).\n */\n\nimport type { GridState } from 'ag-grid-community'\nimport { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\nimport { DOCUMENTS_ROW_HEIGHT_INITIAL } from '../../files/documentColumns'\nimport type { ExplorerFolder } from '../../files/folders/folderPaths'\n\ninterface FilesState {\n /** Placeholder folder paths per workspace. */\n pendingFolders: Readonly<Record<string, readonly string[]>>\n addPendingFolder: (workspaceId: string, path: string) => void\n removePendingFolder: (workspaceId: string, path: string) => void\n}\n\nexport const useFilesStore = create<FilesState>()(\n persist(\n (set) => ({\n pendingFolders: {},\n addPendingFolder: (workspaceId, path) =>\n set((state) => {\n const current = state.pendingFolders[workspaceId] ?? []\n if (current.includes(path)) return state\n return { pendingFolders: { ...state.pendingFolders, [workspaceId]: [...current, path] } }\n }),\n removePendingFolder: (workspaceId, path) =>\n set((state) => {\n const current = state.pendingFolders[workspaceId] ?? []\n if (!current.includes(path)) return state\n return {\n pendingFolders: {\n ...state.pendingFolders,\n [workspaceId]: current.filter((p) => p !== path),\n },\n }\n }),\n }),\n {\n name: 'arbi_explorer_pending_folders',\n storage: createJSONStorage(() => sessionStorage),\n partialize: (state) => ({ pendingFolders: state.pendingFolders }),\n }\n )\n)\n\nconst NONE: readonly string[] = []\n\n/** A workspace's placeholder folders. */\nexport function usePendingFolders(workspaceId: string | null | undefined): readonly string[] {\n return useFilesStore(\n (state) => (workspaceId ? state.pendingFolders[workspaceId] : undefined) ?? NONE\n )\n}\n\n/** How the files page shows the documents: a table, the explorer, review one by one, or search. */\nexport type FilesViewMode = 'grid' | 'explorer' | 'navigator' | 'search'\n\n/** The files page's own preferences key (`ConnectedFilesPage` `prefsKey`). */\nexport const FILES_PREFS_KEY = 'files'\nconst DEFAULT_VIEW_MODE: FilesViewMode = 'explorer'\n\ninterface FilesPrefsState {\n /** The documents list's tri-state filters (filter id → include / exclude / off). */\n documentFilters: Readonly<Record<string, 'include' | 'exclude' | null>>\n setDocumentFilters: (filters: Record<string, 'include' | 'exclude' | null>) => void\n /**\n * Each files page's view, by its `prefsKey` (a page that is the same kit in another role, e.g.\n * a tabular review in the table view, keeps its own). Absent: that page's default.\n */\n viewModes: Readonly<Record<string, FilesViewMode>>\n /** Set a page's view (default: the files page's). */\n setViewMode: (mode: FilesViewMode, prefsKey?: string) => void\n /** The table's row height (density). */\n rowHeight: number\n setRowHeight: (height: number) => void\n}\n\n/** The Files kits' preferences, kept on this device (`localStorage`) across sessions. */\nexport const useFilesPrefs = create<FilesPrefsState>()(\n persist(\n (set) => ({\n documentFilters: {},\n setDocumentFilters: (documentFilters) => set({ documentFilters }),\n viewModes: {},\n setViewMode: (viewMode, prefsKey = FILES_PREFS_KEY) =>\n set((state) =>\n state.viewModes[prefsKey] === viewMode\n ? state\n : { viewModes: { ...state.viewModes, [prefsKey]: viewMode } }\n ),\n // New users start at the compact minimum (more rows at once).\n rowHeight: DOCUMENTS_ROW_HEIGHT_INITIAL,\n setRowHeight: (rowHeight) => set({ rowHeight }),\n }),\n {\n name: 'arbi_files_prefs',\n storage: createJSONStorage(() => localStorage),\n version: 1,\n // Version 0 kept one view for every files page: it becomes the files page's own.\n migrate: (persisted, version) => {\n const state = (persisted ?? {}) as Record<string, unknown>\n if (version >= 1) return state as Partial<FilesPrefsState>\n const { viewMode, ...rest } = state\n return {\n ...rest,\n viewModes: viewMode ? { [FILES_PREFS_KEY]: viewMode as FilesViewMode } : {},\n } as Partial<FilesPrefsState>\n },\n partialize: (state) => ({\n documentFilters: state.documentFilters,\n viewModes: state.viewModes,\n rowHeight: state.rowHeight,\n }),\n }\n )\n)\n\n/** A files page's view (`prefsKey`, default the files page's), else its `defaultViewMode`. */\nexport function filesViewMode(\n state: Pick<FilesPrefsState, 'viewModes'>,\n prefsKey: string = FILES_PREFS_KEY,\n defaultViewMode: FilesViewMode = DEFAULT_VIEW_MODE\n): FilesViewMode {\n return state.viewModes[prefsKey] ?? defaultViewMode\n}\n\n/** An AI review run: the fields, the documents, and which of them the server finished. */\nexport interface AiReviewRun {\n tags: { id: string; name: string }[]\n docIds: string[]\n /** The documents the server finished (a finished cell with no value will not fill). */\n finishedDocIds?: string[]\n /** It replaces values already there: a cell shows its new value only once finished. */\n replacing?: boolean\n}\n\ninterface AiReviewState {\n /** The AI review dialog is open. */\n open: boolean\n /** The run on screen, kept after closing so \"View results\" can bring the answers back. */\n run: AiReviewRun | null\n setOpen: (open: boolean) => void\n setRun: (run: AiReviewRun | null) => void\n /** The server finished these documents of the run (with or without a value). */\n markFinished: (docIds: string[]) => void\n}\n\n/** The AI review dialog and its run, reachable from outside React (a finished-run notice). */\nexport const useAiReviewStore = create<AiReviewState>()((set) => ({\n open: false,\n run: null,\n setOpen: (open) => set({ open }),\n setRun: (run) => set({ run }),\n markFinished: (docIds) =>\n set((state) => {\n const run = state.run\n if (!run) return state\n const finished = new Set(run.finishedDocIds ?? [])\n const added = docIds.filter((id) => run.docIds.includes(id) && !finished.has(id))\n if (added.length === 0) return state\n return { run: { ...run, finishedDocIds: [...finished, ...added] } }\n }),\n}))\n\ninterface GridStatesState {\n /** AG Grid's saved state (columns, widths, sort) per grid id. */\n gridStates: Readonly<Record<string, GridState>>\n setGridState: (gridId: string, state: GridState) => void\n}\n\n/** The Files grids' saved state, kept on this device, for hosts that keep none of their own. */\nexport const useFilesGridStates = create<GridStatesState>()(\n persist(\n (set) => ({\n gridStates: {},\n setGridState: (gridId, state) =>\n set((current) => ({ gridStates: { ...current.gridStates, [gridId]: state } })),\n }),\n { name: 'arbi_files_grids', storage: createJSONStorage(() => localStorage) }\n )\n)\n\n/** A document the Delete confirmation asks about. */\nexport interface DeleteRequestDocument {\n external_id: string\n file_name?: string | null\n doc_metadata?: { title?: string | null } | null\n}\n\ninterface FilesDialogsState {\n /** Move the selection (or `folder`) to a folder. */\n move: { folder: ExplorerFolder | null } | null\n openMove: (folder?: ExplorerFolder | null) => void\n closeMove: () => void\n /** Edit the selection's labels and fields. */\n bulkTagsOpen: boolean\n setBulkTagsOpen: (open: boolean) => void\n /** Confirm deleting one document. */\n deleteRequest: DeleteRequestDocument | null\n requestDelete: (doc: DeleteRequestDocument | null) => void\n /** Export, copy or move the selection (the page's own dialog, when the host has none). */\n exportOpen: boolean\n setExportOpen: (open: boolean) => void\n}\n\n/** The files page's dialogs, also opened from outside it (commands, the viewer's related files). */\nexport const useFilesDialogs = create<FilesDialogsState>()((set) => ({\n move: null,\n openMove: (folder = null) => set({ move: { folder } }),\n closeMove: () => set({ move: null }),\n bulkTagsOpen: false,\n setBulkTagsOpen: (bulkTagsOpen) => set({ bulkTagsOpen }),\n deleteRequest: null,\n requestDelete: (deleteRequest) => set({ deleteRequest }),\n exportOpen: false,\n setExportOpen: (exportOpen) => set({ exportOpen }),\n}))\n"]}
1
+ {"version":3,"sources":["../src/connection/files/store.ts"],"names":[],"mappings":"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","file":"chunk-R3AHNYSS.js","sourcesContent":["/**\n * The Files kits' own state: empty folders the user created (a folder exists only through its\n * documents, so a new one is a placeholder until something is moved into it), per workspace, for\n * the session (kept in `sessionStorage`, so a reload keeps them).\n */\n\nimport type { GridState } from 'ag-grid-community'\nimport { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\nimport { DOCUMENTS_ROW_HEIGHT_INITIAL } from '../../files/documentColumns'\nimport type { ExplorerFolder } from '../../files/folders/folderPaths'\n\ninterface FilesState {\n /** Placeholder folder paths per workspace. */\n pendingFolders: Readonly<Record<string, readonly string[]>>\n addPendingFolder: (workspaceId: string, path: string) => void\n removePendingFolder: (workspaceId: string, path: string) => void\n}\n\nexport const useFilesStore = create<FilesState>()(\n persist(\n (set) => ({\n pendingFolders: {},\n addPendingFolder: (workspaceId, path) =>\n set((state) => {\n const current = state.pendingFolders[workspaceId] ?? []\n if (current.includes(path)) return state\n return { pendingFolders: { ...state.pendingFolders, [workspaceId]: [...current, path] } }\n }),\n removePendingFolder: (workspaceId, path) =>\n set((state) => {\n const current = state.pendingFolders[workspaceId] ?? []\n if (!current.includes(path)) return state\n return {\n pendingFolders: {\n ...state.pendingFolders,\n [workspaceId]: current.filter((p) => p !== path),\n },\n }\n }),\n }),\n {\n name: 'arbi_explorer_pending_folders',\n storage: createJSONStorage(() => sessionStorage),\n partialize: (state) => ({ pendingFolders: state.pendingFolders }),\n }\n )\n)\n\nconst NONE: readonly string[] = []\n\n/** A workspace's placeholder folders. */\nexport function usePendingFolders(workspaceId: string | null | undefined): readonly string[] {\n return useFilesStore(\n (state) => (workspaceId ? state.pendingFolders[workspaceId] : undefined) ?? NONE\n )\n}\n\n/** How the files page shows the documents: a table, the explorer, review one by one, or search. */\nexport type FilesViewMode = 'grid' | 'explorer' | 'navigator' | 'search'\n\n/** The files page's own preferences key (`ConnectedFilesPage` `prefsKey`). */\nexport const FILES_PREFS_KEY = 'files'\nconst DEFAULT_VIEW_MODE: FilesViewMode = 'explorer'\n\ninterface FilesPrefsState {\n /** The documents list's tri-state filters (filter id → include / exclude / off). */\n documentFilters: Readonly<Record<string, 'include' | 'exclude' | null>>\n setDocumentFilters: (filters: Record<string, 'include' | 'exclude' | null>) => void\n /**\n * Each files page's view, by its `prefsKey` (a page that is the same kit in another role, e.g.\n * a tabular review in the table view, keeps its own). Absent: that page's default.\n */\n viewModes: Readonly<Record<string, FilesViewMode>>\n /** Set a page's view (default: the files page's). */\n setViewMode: (mode: FilesViewMode, prefsKey?: string) => void\n /** The table's row height (density). */\n rowHeight: number\n setRowHeight: (height: number) => void\n}\n\n/** The Files kits' preferences, kept on this device (`localStorage`) across sessions. */\nexport const useFilesPrefs = create<FilesPrefsState>()(\n persist(\n (set) => ({\n documentFilters: {},\n setDocumentFilters: (documentFilters) => set({ documentFilters }),\n viewModes: {},\n setViewMode: (viewMode, prefsKey = FILES_PREFS_KEY) =>\n set((state) =>\n state.viewModes[prefsKey] === viewMode\n ? state\n : { viewModes: { ...state.viewModes, [prefsKey]: viewMode } }\n ),\n // New users start at the compact minimum (more rows at once).\n rowHeight: DOCUMENTS_ROW_HEIGHT_INITIAL,\n setRowHeight: (rowHeight) => set({ rowHeight }),\n }),\n {\n name: 'arbi_files_prefs',\n storage: createJSONStorage(() => localStorage),\n version: 1,\n // Version 0 kept one view for every files page: it becomes the files page's own.\n migrate: (persisted, version) => {\n const state = (persisted ?? {}) as Record<string, unknown>\n if (version >= 1) return state as Partial<FilesPrefsState>\n const { viewMode, ...rest } = state\n return {\n ...rest,\n viewModes: viewMode ? { [FILES_PREFS_KEY]: viewMode as FilesViewMode } : {},\n } as Partial<FilesPrefsState>\n },\n partialize: (state) => ({\n documentFilters: state.documentFilters,\n viewModes: state.viewModes,\n rowHeight: state.rowHeight,\n }),\n }\n )\n)\n\n/** A files page's view (`prefsKey`, default the files page's), else its `defaultViewMode`. */\nexport function filesViewMode(\n state: Pick<FilesPrefsState, 'viewModes'>,\n prefsKey: string = FILES_PREFS_KEY,\n defaultViewMode: FilesViewMode = DEFAULT_VIEW_MODE\n): FilesViewMode {\n return state.viewModes[prefsKey] ?? defaultViewMode\n}\n\n/** An AI review run: the fields, the documents, and which of them the server finished. */\nexport interface AiReviewRun {\n tags: { id: string; name: string }[]\n docIds: string[]\n /** The documents the server finished (a finished cell with no value will not fill). */\n finishedDocIds?: string[]\n /** It replaces values already there: a cell shows its new value only once finished. */\n replacing?: boolean\n}\n\ninterface AiReviewState {\n /** The AI review dialog is open. */\n open: boolean\n /** The run on screen, kept after closing so \"View results\" can bring the answers back. */\n run: AiReviewRun | null\n setOpen: (open: boolean) => void\n setRun: (run: AiReviewRun | null) => void\n /** The server finished these documents of the run (with or without a value). */\n markFinished: (docIds: string[]) => void\n}\n\n/** The AI review dialog and its run, reachable from outside React (a finished-run notice). */\nexport const useAiReviewStore = create<AiReviewState>()((set) => ({\n open: false,\n run: null,\n setOpen: (open) => set({ open }),\n setRun: (run) => set({ run }),\n markFinished: (docIds) =>\n set((state) => {\n const run = state.run\n if (!run) return state\n const finished = new Set(run.finishedDocIds ?? [])\n const added = docIds.filter((id) => run.docIds.includes(id) && !finished.has(id))\n if (added.length === 0) return state\n return { run: { ...run, finishedDocIds: [...finished, ...added] } }\n }),\n}))\n\ninterface GridStatesState {\n /** AG Grid's saved state (columns, widths, sort) per grid id. */\n gridStates: Readonly<Record<string, GridState>>\n setGridState: (gridId: string, state: GridState) => void\n}\n\n/** The Files grids' saved state, kept on this device, for hosts that keep none of their own. */\nexport const useFilesGridStates = create<GridStatesState>()(\n persist(\n (set) => ({\n gridStates: {},\n setGridState: (gridId, state) =>\n set((current) => ({ gridStates: { ...current.gridStates, [gridId]: state } })),\n }),\n { name: 'arbi_files_grids', storage: createJSONStorage(() => localStorage) }\n )\n)\n\n/** A document the Delete confirmation asks about. */\nexport interface DeleteRequestDocument {\n external_id: string\n file_name?: string | null\n doc_metadata?: { title?: string | null } | null\n}\n\ninterface FilesDialogsState {\n /** Move the selection (or `folder`) to a folder. */\n move: { folder: ExplorerFolder | null } | null\n openMove: (folder?: ExplorerFolder | null) => void\n closeMove: () => void\n /** Edit the selection's labels and fields. */\n bulkTagsOpen: boolean\n setBulkTagsOpen: (open: boolean) => void\n /** Confirm deleting one document. */\n deleteRequest: DeleteRequestDocument | null\n requestDelete: (doc: DeleteRequestDocument | null) => void\n /** Export, copy or move the selection (the page's own dialog, when the host has none). */\n exportOpen: boolean\n setExportOpen: (open: boolean) => void\n}\n\n/** The files page's dialogs, also opened from outside it (commands, the viewer's related files). */\nexport const useFilesDialogs = create<FilesDialogsState>()((set) => ({\n move: null,\n openMove: (folder = null) => set({ move: { folder } }),\n closeMove: () => set({ move: null }),\n bulkTagsOpen: false,\n setBulkTagsOpen: (bulkTagsOpen) => set({ bulkTagsOpen }),\n deleteRequest: null,\n requestDelete: (deleteRequest) => set({ deleteRequest }),\n exportOpen: false,\n setExportOpen: (exportOpen) => set({ exportOpen }),\n}))\n"]}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { NativeDocxComparison } from './chunk-PGSBXD5U.js';
3
- import { useConnectedNativeDocxAdapter } from './chunk-Z4VWLWFX.js';
3
+ import { useConnectedNativeDocxAdapter } from './chunk-4IXUIRXB.js';
4
4
  import { useDocuments, useDocumentsLoading } from '@arbidocs/react';
5
5
  import { jsx } from 'react/jsx-runtime';
6
6
 
@@ -25,5 +25,5 @@ function ConnectedNativeDocxComparison({
25
25
  }
26
26
 
27
27
  export { ConnectedNativeDocxComparison };
28
- //# sourceMappingURL=chunk-JLTPQDQB.js.map
29
- //# sourceMappingURL=chunk-JLTPQDQB.js.map
28
+ //# sourceMappingURL=chunk-RP3IDFHS.js.map
29
+ //# sourceMappingURL=chunk-RP3IDFHS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/connection/docx/ConnectedNativeDocxComparison.tsx"],"names":[],"mappings":";;;;;AAYO,SAAS,6BAAA,CAA8B;AAAA,EAC5C,WAAA;AAAA,EACA,GAAG;AACL,CAAA,EAEG;AACD,EAAA,MAAM,OAAA,GAAU,8BAA8B,WAAW,CAAA;AACzD,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,SAAA,KAAc,YAAA,EAAa;AAEpD,EAAA,MAAM,YAAY,mBAAA,EAAoB;AAEtC,EAAA,IAAI,SAAA,IAAa,SAAA;AACf,IAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EAAoB,IAAA,EAAK,UAAS,QAAA,EAAA,gCAAA,EAEjD,CAAA;AAEJ,EAAA,uBACE,GAAA;AAAA,IAAC,oBAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,OAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAY,OAAA,CAAQ;AAAA;AAAA,GACtB;AAEJ","file":"chunk-JLTPQDQB.js","sourcesContent":["import { useDocuments, useDocumentsLoading } from '@arbidocs/react'\nimport {\n NativeDocxComparison,\n type NativeDocxComparisonProps,\n} from '../../docx/NativeDocxComparison'\nimport { useConnectedNativeDocxAdapter } from './ConnectedNativeDocxEditor'\n\n/**\n * The Word redline of two documents or versions, on the signed-in session. The unedited redline\n * saved earlier from the same versions is opened again (found in the workspace's documents, once\n * all their pages are read), so opening a comparison saves at most one.\n */\nexport function ConnectedNativeDocxComparison({\n fontBaseUrl,\n ...props\n}: Omit<NativeDocxComparisonProps, 'adapter' | 'onCompared' | 'documents'> & {\n fontBaseUrl?: string\n}) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n const { data: documents, isLoading } = useDocuments()\n // Every page: the first holds only the oldest documents, and a redline is often newer.\n const morePages = useDocumentsLoading()\n // Until the documents are read, a saved redline can't be found: wait rather than save another.\n if (isLoading || morePages)\n return (\n <div className=\"native-docx-error\" role=\"status\">\n Comparing Word documents…\n </div>\n )\n return (\n <NativeDocxComparison\n {...props}\n adapter={adapter}\n documents={documents}\n onCompared={adapter.onVersionSaved}\n />\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/connection/docx/ConnectedNativeDocxComparison.tsx"],"names":[],"mappings":";;;;;AAYO,SAAS,6BAAA,CAA8B;AAAA,EAC5C,WAAA;AAAA,EACA,GAAG;AACL,CAAA,EAEG;AACD,EAAA,MAAM,OAAA,GAAU,8BAA8B,WAAW,CAAA;AACzD,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,SAAA,KAAc,YAAA,EAAa;AAEpD,EAAA,MAAM,YAAY,mBAAA,EAAoB;AAEtC,EAAA,IAAI,SAAA,IAAa,SAAA;AACf,IAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EAAoB,IAAA,EAAK,UAAS,QAAA,EAAA,gCAAA,EAEjD,CAAA;AAEJ,EAAA,uBACE,GAAA;AAAA,IAAC,oBAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,OAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAY,OAAA,CAAQ;AAAA;AAAA,GACtB;AAEJ","file":"chunk-RP3IDFHS.js","sourcesContent":["import { useDocuments, useDocumentsLoading } from '@arbidocs/react'\nimport {\n NativeDocxComparison,\n type NativeDocxComparisonProps,\n} from '../../docx/NativeDocxComparison'\nimport { useConnectedNativeDocxAdapter } from './ConnectedNativeDocxEditor'\n\n/**\n * The Word redline of two documents or versions, on the signed-in session. The unedited redline\n * saved earlier from the same versions is opened again (found in the workspace's documents, once\n * all their pages are read), so opening a comparison saves at most one.\n */\nexport function ConnectedNativeDocxComparison({\n fontBaseUrl,\n ...props\n}: Omit<NativeDocxComparisonProps, 'adapter' | 'onCompared' | 'documents'> & {\n fontBaseUrl?: string\n}) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n const { data: documents, isLoading } = useDocuments()\n // Every page: the first holds only the oldest documents, and a redline is often newer.\n const morePages = useDocumentsLoading()\n // Until the documents are read, a saved redline can't be found: wait rather than save another.\n if (isLoading || morePages)\n return (\n <div className=\"native-docx-error\" role=\"status\">\n Comparing Word documents…\n </div>\n )\n return (\n <NativeDocxComparison\n {...props}\n adapter={adapter}\n documents={documents}\n onCompared={adapter.onVersionSaved}\n />\n )\n}\n"]}
@@ -3,10 +3,10 @@
3
3
 
4
4
  var chunkJXKNPKU6_cjs = require('./chunk-JXKNPKU6.cjs');
5
5
  var chunkEAA2X45O_cjs = require('./chunk-EAA2X45O.cjs');
6
- var chunkHJBVSG6H_cjs = require('./chunk-HJBVSG6H.cjs');
6
+ var chunkQYDMOBGP_cjs = require('./chunk-QYDMOBGP.cjs');
7
7
  var chunk6KQVTMRL_cjs = require('./chunk-6KQVTMRL.cjs');
8
- var chunkJ24LYNTY_cjs = require('./chunk-J24LYNTY.cjs');
9
- var chunkERDQ4DAX_cjs = require('./chunk-ERDQ4DAX.cjs');
8
+ var chunkILH2KOHA_cjs = require('./chunk-ILH2KOHA.cjs');
9
+ var chunk2GFB43GN_cjs = require('./chunk-2GFB43GN.cjs');
10
10
  var chunkYYPZOEED_cjs = require('./chunk-YYPZOEED.cjs');
11
11
  var chunkCMXJUCTH_cjs = require('./chunk-CMXJUCTH.cjs');
12
12
  var chunkJH6JTI76_cjs = require('./chunk-JH6JTI76.cjs');
@@ -193,13 +193,13 @@ function ViewerRelatedDocuments({ document: document2 }) {
193
193
  );
194
194
  if (!related) return null;
195
195
  return /* @__PURE__ */ jsxRuntime.jsx(
196
- chunkJ24LYNTY_cjs.RelatedDocumentsCell,
196
+ chunkILH2KOHA_cjs.RelatedDocumentsCell,
197
197
  {
198
198
  currentDoc: document2,
199
199
  related,
200
200
  viewingDocumentId: viewerOpen ? viewingId : null,
201
201
  onDocumentClick: (id) => session.setViewingDocument({ id, page: null }),
202
- onDelete: (doc) => chunkHJBVSG6H_cjs.useFilesDialogs.getState().requestDelete(doc),
202
+ onDelete: (doc) => chunkQYDMOBGP_cjs.useFilesDialogs.getState().requestDelete(doc),
203
203
  onCompare
204
204
  }
205
205
  );
@@ -326,7 +326,7 @@ function useViewedDocument(documentId) {
326
326
  const documentData = record?.external_id === documentId ? record : void 0;
327
327
  const { data: tags } = chunkXJM3RDLO_cjs.useConnectedTags();
328
328
  const labelSummaries = React.useMemo(
329
- () => chunkERDQ4DAX_cjs.summariseDocTags(documentData?.doctags ?? [], tags.filter(chunkERDQ4DAX_cjs.isDocumentLabel)),
329
+ () => chunk2GFB43GN_cjs.summariseDocTags(documentData?.doctags ?? [], tags.filter(chunk2GFB43GN_cjs.isDocumentLabel)),
330
330
  [documentData, tags]
331
331
  );
332
332
  const fileName = documentData?.file_name;
@@ -831,7 +831,7 @@ function PassageTagPanel({
831
831
  [workspaceTags]
832
832
  );
833
833
  return /* @__PURE__ */ jsxRuntime.jsx(
834
- chunkERDQ4DAX_cjs.TagPassagePanel,
834
+ chunk2GFB43GN_cjs.TagPassagePanel,
835
835
  {
836
836
  pageNumber,
837
837
  preview,
@@ -956,7 +956,7 @@ var ParsedPassage = React.memo(function ParsedPassage2({
956
956
  ];
957
957
  }) : [];
958
958
  return /* @__PURE__ */ jsxRuntime.jsx(
959
- chunkERDQ4DAX_cjs.HtmlPassage,
959
+ chunk2GFB43GN_cjs.HtmlPassage,
960
960
  {
961
961
  chunkId,
962
962
  highlight: isStrong ? "strong" : isLight ? "light" : void 0,
@@ -1132,11 +1132,11 @@ function useDocumentLabels(documentId, doctags, orderedChunkIds) {
1132
1132
  const workspaceTags = React.useMemo(() => allTags.filter(isDocumentTag), [allTags]);
1133
1133
  const documentDoctags = React.useMemo(() => doctags ?? [], [doctags]);
1134
1134
  const tagSummaries = React.useMemo(
1135
- () => chunkERDQ4DAX_cjs.summariseDocTags(documentDoctags, workspaceTags),
1135
+ () => chunk2GFB43GN_cjs.summariseDocTags(documentDoctags, workspaceTags),
1136
1136
  [documentDoctags, workspaceTags]
1137
1137
  );
1138
1138
  const labelSummaries = React.useMemo(
1139
- () => chunkERDQ4DAX_cjs.summariseDocTags(documentDoctags, workspaceTags.filter(chunkERDQ4DAX_cjs.isDocumentLabel)),
1139
+ () => chunk2GFB43GN_cjs.summariseDocTags(documentDoctags, workspaceTags.filter(chunk2GFB43GN_cjs.isDocumentLabel)),
1140
1140
  [documentDoctags, workspaceTags]
1141
1141
  );
1142
1142
  const labelsByChunk = React.useMemo(() => {
@@ -1644,14 +1644,14 @@ function ParsedTextView({
1644
1644
  }
1645
1645
  }
1646
1646
  }, [maxPageNumber, onLoadSuccess]);
1647
- if (isLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerMessage, { children: "Loading parsed document..." });
1647
+ if (isLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerMessage, { children: "Loading parsed document..." });
1648
1648
  if (error) {
1649
- return /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerMessage, { children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-text", children: "Failed to load parsed document" }) });
1649
+ return /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerMessage, { children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-text", children: "Failed to load parsed document" }) });
1650
1650
  }
1651
1651
  const taggingChunk = labels.taggingChunkId ? processedChunks.flatMap((page) => page.chunks).find((c) => c.chunkExtId === labels.taggingChunkId) : void 0;
1652
- return /* @__PURE__ */ jsxRuntime.jsxs(chunkERDQ4DAX_cjs.HtmlViewerRoot, { children: [
1652
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunk2GFB43GN_cjs.HtmlViewerRoot, { children: [
1653
1653
  /* @__PURE__ */ jsxRuntime.jsx(
1654
- chunkERDQ4DAX_cjs.DocumentLabelBar,
1654
+ chunk2GFB43GN_cjs.DocumentLabelBar,
1655
1655
  {
1656
1656
  summaries: labels.labelSummaries,
1657
1657
  activeTagExtId: labels.activeTagExtId,
@@ -1676,15 +1676,15 @@ function ParsedTextView({
1676
1676
  }
1677
1677
  ),
1678
1678
  !citation.factCitationActive && citation.runStartIds.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
1679
- chunkERDQ4DAX_cjs.CitedRunNav,
1679
+ chunk2GFB43GN_cjs.CitedRunNav,
1680
1680
  {
1681
1681
  position: citation.runCursor + 1,
1682
1682
  total: citation.runStartIds.length,
1683
1683
  onStep: citation.gotoRun
1684
1684
  }
1685
1685
  ),
1686
- /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.HtmlViewerSurface, { surfaceRef: containerRef, onMouseUp: citation.handleSelectionEnd, children: processedChunks.length > 0 ? processedChunks.map((page, pageIndex) => /* @__PURE__ */ jsxRuntime.jsx(
1687
- chunkERDQ4DAX_cjs.HtmlPage,
1686
+ /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.HtmlViewerSurface, { surfaceRef: containerRef, onMouseUp: citation.handleSelectionEnd, children: processedChunks.length > 0 ? processedChunks.map((page, pageIndex) => /* @__PURE__ */ jsxRuntime.jsx(
1687
+ chunk2GFB43GN_cjs.HtmlPage,
1688
1688
  {
1689
1689
  pageNumber: page.pageNumber,
1690
1690
  totalPages,
@@ -1725,7 +1725,7 @@ function ParsedTextView({
1725
1725
  })
1726
1726
  },
1727
1727
  pageIndex
1728
- )) : /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.HtmlViewerEmpty, {}) })
1728
+ )) : /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.HtmlViewerEmpty, {}) })
1729
1729
  ] });
1730
1730
  }
1731
1731
  var AnnotatedPdfViewer = React.lazy(
@@ -1775,7 +1775,7 @@ function ViewerPdfPane({
1775
1775
  const showMarkup = markup.hasMarkup && !markup.showOriginal;
1776
1776
  if (isDownloadOnly) {
1777
1777
  return /* @__PURE__ */ jsxRuntime.jsx(
1778
- chunkERDQ4DAX_cjs.ViewerPreviewUnavailable,
1778
+ chunk2GFB43GN_cjs.ViewerPreviewUnavailable,
1779
1779
  {
1780
1780
  extension: fileExtension(documentData?.file_name),
1781
1781
  onDownload
@@ -1785,26 +1785,26 @@ function ViewerPdfPane({
1785
1785
  const loadingLabel = isVideo ? "Loading video..." : isAudio ? "Loading audio..." : isImage ? "Loading image..." : !documentData ? "Loading document..." : ui.friendlyFileType(documentData.file_type, documentData.file_name) === "Text" ? "Loading text..." : "Loading PDF...";
1786
1786
  const errorLabel = isVideo ? "Failed to load video" : isAudio ? "Failed to load audio" : isImage ? "Failed to load image" : "Failed to load PDF";
1787
1787
  if (isDocx && documentData && !["completed", "low-content", "failed"].includes(documentData.status || "")) {
1788
- return /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerMessage, { children: "PDF and search indexing are processing. Open the DOCX tab to edit now." });
1788
+ return /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerMessage, { children: "PDF and search indexing are processing. Open the DOCX tab to edit now." });
1789
1789
  }
1790
- if (isPdfLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerMessage, { children: loadingLabel });
1790
+ if (isPdfLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerMessage, { children: loadingLabel });
1791
1791
  if (pdfError) {
1792
1792
  return /* @__PURE__ */ jsxRuntime.jsx(
1793
- chunkERDQ4DAX_cjs.ViewerLoadError,
1793
+ chunk2GFB43GN_cjs.ViewerLoadError,
1794
1794
  {
1795
1795
  message: isVideo || isAudio || isImage ? `${errorLabel} \u2014 download it instead.` : "Couldn't display the PDF \u2014 download it instead.",
1796
1796
  onDownload
1797
1797
  }
1798
1798
  );
1799
1799
  }
1800
- if (!pdfBlob) return /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerMessage, { children: loadingLabel });
1800
+ if (!pdfBlob) return /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerMessage, { children: loadingLabel });
1801
1801
  if (isVideo) return /* @__PURE__ */ jsxRuntime.jsx(viewers.VideoViewer, { blob: pdfBlob, title: documentData?.file_name || "Video" });
1802
1802
  if (isAudio) return /* @__PURE__ */ jsxRuntime.jsx(viewers.AudioViewer, { blob: pdfBlob, title: documentData?.file_name || "Audio" });
1803
1803
  if (isImage) {
1804
1804
  return /* @__PURE__ */ jsxRuntime.jsx(viewers.ImageViewer, { blob: pdfBlob, alt: documentData?.file_name || "Document image" });
1805
1805
  }
1806
1806
  if (signatureFlow?.kind === "prepare") {
1807
- return /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerMessage, { children: "Loading\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
1807
+ return /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerMessage, { children: "Loading\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
1808
1808
  SignatureRequestEditor,
1809
1809
  {
1810
1810
  ...viewerProps,
@@ -1822,7 +1822,7 @@ function ViewerPdfPane({
1822
1822
  }
1823
1823
  if (signatureFlow?.kind === "sign" && currentUserId) {
1824
1824
  const { currentPage: _page, scrollTrigger: _trigger, ...guidedProps } = viewerProps;
1825
- return /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerMessage, { children: "Loading\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
1825
+ return /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerMessage, { children: "Loading\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
1826
1826
  GuidedSigningViewer,
1827
1827
  {
1828
1828
  ...guidedProps,
@@ -1836,7 +1836,7 @@ function ViewerPdfPane({
1836
1836
  ) });
1837
1837
  }
1838
1838
  if (placingSignature) {
1839
- return /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerMessage, { children: "Loading\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
1839
+ return /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerMessage, { children: "Loading\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
1840
1840
  SignaturePlacementViewer,
1841
1841
  {
1842
1842
  ...viewerProps,
@@ -1852,7 +1852,7 @@ function ViewerPdfPane({
1852
1852
  return /* @__PURE__ */ jsxRuntime.jsx(
1853
1853
  React.Suspense,
1854
1854
  {
1855
- fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerMessage, { children: annotating ? "Loading annotation tools\u2026" : "Loading markup\u2026" }),
1855
+ fallback: /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerMessage, { children: annotating ? "Loading annotation tools\u2026" : "Loading markup\u2026" }),
1856
1856
  children: /* @__PURE__ */ jsxRuntime.jsx(
1857
1857
  AnnotatedPdfViewer,
1858
1858
  {
@@ -1878,17 +1878,17 @@ function ViewerPdfPane({
1878
1878
  return /* @__PURE__ */ jsxRuntime.jsx(SessionPdfViewer, { ...viewerProps, file: pdfBlob });
1879
1879
  }
1880
1880
  var NativeDocxEditor = React.lazy(
1881
- () => import('./ConnectedNativeDocxEditor-A6PGFR35.cjs').then((m) => ({
1881
+ () => import('./ConnectedNativeDocxEditor-4HNYAZEG.cjs').then((m) => ({
1882
1882
  default: m.ConnectedNativeDocxEditor
1883
1883
  }))
1884
1884
  );
1885
1885
  var StreamedWordArtifact = React.lazy(
1886
- () => import('./ConnectedStreamedWordArtifact-Q7TWGK4B.cjs').then((m) => ({
1886
+ () => import('./ConnectedStreamedWordArtifact-S5I5QCZ7.cjs').then((m) => ({
1887
1887
  default: m.ConnectedStreamedWordArtifact
1888
1888
  }))
1889
1889
  );
1890
1890
  var NativeDocxComparison = React.lazy(
1891
- () => import('./ConnectedNativeDocxComparison-3UJZR52S.cjs').then((m) => ({
1891
+ () => import('./ConnectedNativeDocxComparison-6BQ2WFF6.cjs').then((m) => ({
1892
1892
  default: m.ConnectedNativeDocxComparison
1893
1893
  }))
1894
1894
  );
@@ -2043,15 +2043,15 @@ function DocumentViewerContent({
2043
2043
  };
2044
2044
  const documentTitle = streamingDoc?.title || draftDoc?.title || documentData?.doc_metadata?.title || documentData?.file_name || "Document";
2045
2045
  const pageNav = totalPages > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2046
- /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerZoomControl, { zoom, onCycle: () => setZoom(viewers.cycleZoom(zoom)) }),
2046
+ /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerZoomControl, { zoom, onCycle: () => setZoom(viewers.cycleZoom(zoom)) }),
2047
2047
  /* @__PURE__ */ jsxRuntime.jsx(
2048
- chunkERDQ4DAX_cjs.PdfPageNav,
2048
+ chunk2GFB43GN_cjs.PdfPageNav,
2049
2049
  {
2050
2050
  canPrev: (viewingDocumentPage || 1) > 1,
2051
2051
  canNext: (viewingDocumentPage || 1) < totalPages,
2052
2052
  onPrev: () => stepPage(-1),
2053
2053
  onNext: () => stepPage(1),
2054
- counter: /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerPageCounter, { page: viewingDocumentPage || 1, total: totalPages, onGoTo: goToPage })
2054
+ counter: /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerPageCounter, { page: viewingDocumentPage || 1, total: totalPages, onGoTo: goToPage })
2055
2055
  }
2056
2056
  )
2057
2057
  ] });
@@ -2075,7 +2075,7 @@ function DocumentViewerContent({
2075
2075
  );
2076
2076
  const titleBlock = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2077
2077
  isDraft ? /* @__PURE__ */ jsxRuntime.jsx(ViewerDraftTitle, { documentId }) : /* @__PURE__ */ jsxRuntime.jsx(
2078
- chunkERDQ4DAX_cjs.ViewerTitle,
2078
+ chunk2GFB43GN_cjs.ViewerTitle,
2079
2079
  {
2080
2080
  title: documentTitle,
2081
2081
  versionLabel: currentVersionLabel,
@@ -2100,7 +2100,7 @@ function DocumentViewerContent({
2100
2100
  // A draft's kind replaces the tabs: neither Versions nor the text view means anything
2101
2101
  // before the first save.
2102
2102
  /* @__PURE__ */ jsxRuntime.jsx(ViewerDraftKind, { documentId })
2103
- ) : /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerTabBar, { tabs: viewerTabs, activeId: activeTab, onChange: handleTabChange }),
2103
+ ) : /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerTabBar, { tabs: viewerTabs, activeId: activeTab, onChange: handleTabChange }),
2104
2104
  !isCompact && titleBlock
2105
2105
  ] });
2106
2106
  const annotatable = documentTools.canAnnotate({
@@ -2173,7 +2173,7 @@ function DocumentViewerContent({
2173
2173
  }
2174
2174
  ),
2175
2175
  activeTab === "pdf" && isImage && pdfBlob && /* @__PURE__ */ jsxRuntime.jsx(
2176
- chunkERDQ4DAX_cjs.ViewerImageActions,
2176
+ chunk2GFB43GN_cjs.ViewerImageActions,
2177
2177
  {
2178
2178
  compact: isCompact,
2179
2179
  onUseAsReference: support.useImageAsReference ? () => support.useImageAsReference(documentId) : void 0,
@@ -2242,7 +2242,7 @@ function DocumentViewerContent({
2242
2242
  {
2243
2243
  state: documentData?.shared ? "shared" : "private",
2244
2244
  onToggle: share,
2245
- disabled: !chunkERDQ4DAX_cjs.canChangeVisibility(documentData, currentUserId),
2245
+ disabled: !chunk2GFB43GN_cjs.canChangeVisibility(documentData, currentUserId),
2246
2246
  disabledTooltip: "Only the owner can change visibility",
2247
2247
  tooltip: documentData?.shared ? "Shared with the workspace \u2014 click to share with specific people" : "Share with the workspace, then optionally notify specific people by email",
2248
2248
  variant: "outline",
@@ -2386,7 +2386,7 @@ function DocumentViewerContent({
2386
2386
  onZoomChange: setZoom
2387
2387
  };
2388
2388
  return /* @__PURE__ */ jsxRuntime.jsxs(
2389
- chunkERDQ4DAX_cjs.ViewerFrame,
2389
+ chunk2GFB43GN_cjs.ViewerFrame,
2390
2390
  {
2391
2391
  frameRef: containerRef,
2392
2392
  contentId: documentId,
@@ -2431,7 +2431,7 @@ function DocumentViewerContent({
2431
2431
  )
2432
2432
  ),
2433
2433
  children: [
2434
- isComparing && /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerMessage, { children: "Loading comparison\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
2434
+ isComparing && /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerMessage, { children: "Loading comparison\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
2435
2435
  NativeDocxComparison,
2436
2436
  {
2437
2437
  baseId: compareDocumentId,
@@ -2441,7 +2441,7 @@ function DocumentViewerContent({
2441
2441
  ) }),
2442
2442
  isCaptureDraft && /* @__PURE__ */ jsxRuntime.jsx(ViewerCaptureDraft, { documentId }),
2443
2443
  !isCaptureDraft && (activeTab === "pdf" || isMedia && activeTab === "html") && !isArtifact && !isComparing && /* @__PURE__ */ jsxRuntime.jsxs(chunkDTMBAFIL_cjs.ViewerPane, { hidden: activeTab !== "pdf", children: [
2444
- /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.DocumentLabelBar, { summaries: labelSummaries }),
2444
+ /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.DocumentLabelBar, { summaries: labelSummaries }),
2445
2445
  !isMedia && !isImage && signatureBanner,
2446
2446
  activeTab === "pdf" && !isMedia && !isImage && /* @__PURE__ */ jsxRuntime.jsx(
2447
2447
  chunkYYPZOEED_cjs.MarkupNotices,
@@ -2451,7 +2451,7 @@ function DocumentViewerContent({
2451
2451
  onOpenVersion: (n) => setSnapshotDocumentId(`${documentId}@v${n}`)
2452
2452
  }
2453
2453
  ),
2454
- /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerControlBar, { controls: activeTab === "pdf" && pageNav, children: /* @__PURE__ */ jsxRuntime.jsx(
2454
+ /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerControlBar, { controls: activeTab === "pdf" && pageNav, children: /* @__PURE__ */ jsxRuntime.jsx(
2455
2455
  ViewerPdfPane,
2456
2456
  {
2457
2457
  documentId,
@@ -2490,7 +2490,7 @@ function DocumentViewerContent({
2490
2490
  }
2491
2491
  ),
2492
2492
  activeTab === "edit" && isArtifact && liveKind && /* @__PURE__ */ jsxRuntime.jsx(chunkCYKHYFI3_cjs.ArtifactCodeView, { source: liveSource, fileName: documentData?.file_name ?? void 0 }),
2493
- activeTab === "edit" && isArtifact && !liveKind && !isStreaming && !isComparing && /* @__PURE__ */ jsxRuntime.jsxs(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerMessage, { children: "Loading editor\u2026" }), children: [
2493
+ activeTab === "edit" && isArtifact && !liveKind && !isStreaming && !isComparing && /* @__PURE__ */ jsxRuntime.jsxs(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerMessage, { children: "Loading editor\u2026" }), children: [
2494
2494
  isSigned && !snapshotDocumentId && /* @__PURE__ */ jsxRuntime.jsx(chunkYYPZOEED_cjs.SignedEditNote, {}),
2495
2495
  /* @__PURE__ */ jsxRuntime.jsx(
2496
2496
  NativeDocxEditor,
@@ -2533,8 +2533,8 @@ function DocumentViewerContent({
2533
2533
  onOpenTranslation: (id) => setViewingDocumentId(id)
2534
2534
  }
2535
2535
  ),
2536
- activeTab === "xlsx" && isXlsx && (xlsxBlob ? /* @__PURE__ */ jsxRuntime.jsx(viewers.XlsxViewer, { blob: xlsxBlob }) : /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerMessage, { children: xlsxError ? "Failed to load spreadsheet" : "Loading spreadsheet..." })),
2537
- activeTab === "docx" && isDocx && !isComparing && /* @__PURE__ */ jsxRuntime.jsxs(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerMessage, { children: "Loading editor\u2026" }), children: [
2536
+ activeTab === "xlsx" && isXlsx && (xlsxBlob ? /* @__PURE__ */ jsxRuntime.jsx(viewers.XlsxViewer, { blob: xlsxBlob }) : /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerMessage, { children: xlsxError ? "Failed to load spreadsheet" : "Loading spreadsheet..." })),
2537
+ activeTab === "docx" && isDocx && !isComparing && /* @__PURE__ */ jsxRuntime.jsxs(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerMessage, { children: "Loading editor\u2026" }), children: [
2538
2538
  signatureBanner,
2539
2539
  isSigned && !snapshotDocumentId && /* @__PURE__ */ jsxRuntime.jsx(chunkYYPZOEED_cjs.SignedEditNote, {}),
2540
2540
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2547,7 +2547,7 @@ function DocumentViewerContent({
2547
2547
  `${snapshotDocumentId || documentId}-${snapshotDocumentId ? "snapshot" : "live"}`
2548
2548
  )
2549
2549
  ] }),
2550
- streamingDoc && isStreaming && isArtifact && !liveKind && !isComparing && (activeTab === "html" || activeTab === "edit") && /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerMessage, { children: "Opening draft\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
2550
+ streamingDoc && isStreaming && isArtifact && !liveKind && !isComparing && (activeTab === "html" || activeTab === "edit") && /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerMessage, { children: "Opening draft\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
2551
2551
  StreamedWordArtifact,
2552
2552
  {
2553
2553
  documentId: documentId.startsWith("doc-") ? documentId : void 0,
@@ -2557,7 +2557,7 @@ function DocumentViewerContent({
2557
2557
  },
2558
2558
  documentId
2559
2559
  ) }),
2560
- !isCaptureDraft && !isComparing && activeTab === "html" && !(isStreaming && isArtifact && !liveKind) && /* @__PURE__ */ jsxRuntime.jsx(chunkDTMBAFIL_cjs.ViewerPane, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkERDQ4DAX_cjs.ViewerControlBar, { controls: pageNav, children: /* @__PURE__ */ jsxRuntime.jsx(
2560
+ !isCaptureDraft && !isComparing && activeTab === "html" && !(isStreaming && isArtifact && !liveKind) && /* @__PURE__ */ jsxRuntime.jsx(chunkDTMBAFIL_cjs.ViewerPane, { children: /* @__PURE__ */ jsxRuntime.jsx(chunk2GFB43GN_cjs.ViewerControlBar, { controls: pageNav, children: /* @__PURE__ */ jsxRuntime.jsx(
2561
2561
  ParsedTextView,
2562
2562
  {
2563
2563
  documentId: pdfSnapshotId || documentId,
@@ -2573,5 +2573,5 @@ function DocumentViewerContent({
2573
2573
  }
2574
2574
 
2575
2575
  exports.ConnectedDocumentViewer = ConnectedDocumentViewer;
2576
- //# sourceMappingURL=chunk-ZAKDIJBP.cjs.map
2577
- //# sourceMappingURL=chunk-ZAKDIJBP.cjs.map
2576
+ //# sourceMappingURL=chunk-RV2YGRV6.cjs.map
2577
+ //# sourceMappingURL=chunk-RV2YGRV6.cjs.map