@arbidocs/blocks 0.5.119 → 0.5.120
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.
- package/dist/{ConnectedNativeDocxComparison-546ILGLW.cjs → ConnectedNativeDocxComparison-SGE4R3M4.cjs} +6 -6
- package/dist/{ConnectedNativeDocxComparison-546ILGLW.cjs.map → ConnectedNativeDocxComparison-SGE4R3M4.cjs.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-S2ZFZLZQ.cjs → ConnectedStreamedWordArtifact-6MCLJRIT.cjs} +6 -6
- package/dist/{ConnectedStreamedWordArtifact-S2ZFZLZQ.cjs.map → ConnectedStreamedWordArtifact-6MCLJRIT.cjs.map} +1 -1
- package/dist/{DocumentReviewCard-ZSBZBGFK.cjs → DocumentReviewCard-BPIAJJED.cjs} +14 -14
- package/dist/{DocumentReviewCard-ZSBZBGFK.cjs.map → DocumentReviewCard-BPIAJJED.cjs.map} +1 -1
- package/dist/{FilesViewerDialog-6UKR5WEF.cjs → FilesViewerDialog-67WK3TZC.cjs} +11 -11
- package/dist/{FilesViewerDialog-6UKR5WEF.cjs.map → FilesViewerDialog-67WK3TZC.cjs.map} +1 -1
- package/dist/agents/index.cjs +185 -185
- package/dist/agents/tasks/ConversationListView.js +10 -2
- package/dist/agents/tasks/ConversationListView.js.map +2 -2
- package/dist/agents/tasks/TaskTable.js +5 -4
- package/dist/agents/tasks/TaskTable.js.map +2 -2
- package/dist/agents/tasks/WorkflowsTable.js +4 -5
- package/dist/agents/tasks/WorkflowsTable.js.map +2 -2
- package/dist/agents/tasks/taskColumns.js +1 -1
- package/dist/agents/tasks/taskColumns.js.map +1 -1
- package/dist/agents/tasks/taskTableLabels.js +1 -1
- package/dist/agents/tasks/taskTableLabels.js.map +1 -1
- package/dist/agents/tasks/workflowTableLabels.js +1 -1
- package/dist/agents/tasks/workflowTableLabels.js.map +1 -1
- package/dist/{chunk-P77YTTJ3.cjs → chunk-3GWWOYGS.cjs} +4 -4
- package/dist/{chunk-P77YTTJ3.cjs.map → chunk-3GWWOYGS.cjs.map} +1 -1
- package/dist/{chunk-HB2O4THB.cjs → chunk-5IZFSAEZ.cjs} +4 -4
- package/dist/{chunk-HB2O4THB.cjs.map → chunk-5IZFSAEZ.cjs.map} +1 -1
- package/dist/{chunk-DDIW4HLU.cjs → chunk-775S43W7.cjs} +19 -10
- package/dist/chunk-775S43W7.cjs.map +1 -0
- package/dist/{chunk-Y24V6HPR.cjs → chunk-BP3IJ34D.cjs} +4 -4
- package/dist/{chunk-Y24V6HPR.cjs.map → chunk-BP3IJ34D.cjs.map} +1 -1
- package/dist/{chunk-TT4IF52H.cjs → chunk-BUVIBHFU.cjs} +37 -38
- package/dist/chunk-BUVIBHFU.cjs.map +1 -0
- package/dist/{chunk-OEREKAAP.cjs → chunk-CKCG4NDB.cjs} +8 -8
- package/dist/{chunk-OEREKAAP.cjs.map → chunk-CKCG4NDB.cjs.map} +1 -1
- package/dist/{chunk-YGXOKB5Z.cjs → chunk-DFBDQKGE.cjs} +4 -4
- package/dist/{chunk-YGXOKB5Z.cjs.map → chunk-DFBDQKGE.cjs.map} +1 -1
- package/dist/{chunk-VGCTYTEW.cjs → chunk-ECLUFKYR.cjs} +4 -4
- package/dist/{chunk-VGCTYTEW.cjs.map → chunk-ECLUFKYR.cjs.map} +1 -1
- package/dist/{chunk-CPG7II4E.cjs → chunk-HA66DHW6.cjs} +28 -28
- package/dist/{chunk-CPG7II4E.cjs.map → chunk-HA66DHW6.cjs.map} +1 -1
- package/dist/{chunk-57NHXEU2.cjs → chunk-MXBXZXXQ.cjs} +5 -5
- package/dist/{chunk-57NHXEU2.cjs.map → chunk-MXBXZXXQ.cjs.map} +1 -1
- package/dist/{chunk-NNUK5ZM7.cjs → chunk-NLSWDP42.cjs} +9 -17
- package/dist/chunk-NLSWDP42.cjs.map +1 -0
- package/dist/{chunk-B2HNNG25.cjs → chunk-Q6CLWOP2.cjs} +29 -29
- package/dist/{chunk-B2HNNG25.cjs.map → chunk-Q6CLWOP2.cjs.map} +1 -1
- package/dist/{chunk-R7CJEIA5.cjs → chunk-QQWHG3KF.cjs} +5 -6
- package/dist/chunk-QQWHG3KF.cjs.map +1 -0
- package/dist/{chunk-VLCY46K6.cjs → chunk-TG2GM7WJ.cjs} +4 -3
- package/dist/chunk-TG2GM7WJ.cjs.map +1 -0
- package/dist/{chunk-QHOHDNBU.cjs → chunk-VZCPMXWC.cjs} +4 -4
- package/dist/{chunk-QHOHDNBU.cjs.map → chunk-VZCPMXWC.cjs.map} +1 -1
- package/dist/{chunk-NIE3N6OM.cjs → chunk-W6INT5GS.cjs} +5 -5
- package/dist/{chunk-NIE3N6OM.cjs.map → chunk-W6INT5GS.cjs.map} +1 -1
- package/dist/{chunk-ZPPMAL5P.cjs → chunk-WQMR3O2D.cjs} +6 -10
- package/dist/chunk-WQMR3O2D.cjs.map +1 -0
- package/dist/{chunk-SB4M3ITT.cjs → chunk-X36UR4A7.cjs} +173 -56
- package/dist/chunk-X36UR4A7.cjs.map +1 -0
- package/dist/{chunk-XKVPSOKP.cjs → chunk-YYSBWMDJ.cjs} +4 -4
- package/dist/{chunk-XKVPSOKP.cjs.map → chunk-YYSBWMDJ.cjs.map} +1 -1
- package/dist/collaboration/index.cjs +3 -3
- package/dist/collaboration/sharing/ShareControl.js +10 -2
- package/dist/collaboration/sharing/ShareControl.js.map +2 -2
- package/dist/components/SharedCell.d.ts +2 -4
- package/dist/components/SharedCell.js +4 -8
- package/dist/components/SharedCell.js.map +2 -2
- package/dist/connect/docx.cjs +9 -9
- package/dist/connect/index.cjs +595 -567
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/viewer.cjs +9 -9
- package/dist/connection/facts/factPageColumns.js +3 -9
- package/dist/connection/facts/factPageColumns.js.map +2 -2
- package/dist/connection/files/grid/cells.js +1 -3
- package/dist/connection/files/grid/cells.js.map +2 -2
- package/dist/connection/files/grid/documentColumns.js +3 -2
- package/dist/connection/files/grid/documentColumns.js.map +2 -2
- package/dist/connection/sharing/WorkspaceMembersList.d.ts +4 -0
- package/dist/connection/sharing/WorkspaceMembersList.js +34 -0
- package/dist/connection/sharing/WorkspaceMembersList.js.map +7 -0
- package/dist/connection/shell/ConnectedAppShell.js +4 -0
- package/dist/connection/shell/ConnectedAppShell.js.map +2 -2
- package/dist/connection/viewer/ConnectedDocumentViewer.js +3 -2
- package/dist/connection/viewer/ConnectedDocumentViewer.js.map +2 -2
- package/dist/connection/viewer/ViewerPdfPane.js +20 -2
- package/dist/connection/viewer/ViewerPdfPane.js.map +2 -2
- package/dist/connection/viewer/pdf/PdfPassageHighlights.d.ts +12 -0
- package/dist/connection/viewer/pdf/PdfPassageHighlights.js +36 -0
- package/dist/connection/viewer/pdf/PdfPassageHighlights.js.map +7 -0
- package/dist/connection/viewer/pdf/passageHighlights.d.ts +26 -0
- package/dist/connection/viewer/pdf/passageHighlights.js +40 -0
- package/dist/connection/viewer/pdf/passageHighlights.js.map +7 -0
- package/dist/connection/viewer/pdf/usePdfPassageHighlights.d.ts +9 -0
- package/dist/connection/viewer/pdf/usePdfPassageHighlights.js +47 -0
- package/dist/connection/viewer/pdf/usePdfPassageHighlights.js.map +7 -0
- package/dist/connection/workflows/workflowsPageLabels.js +1 -1
- package/dist/connection/workflows/workflowsPageLabels.js.map +1 -1
- package/dist/embed/index.cjs +13 -13
- package/dist/facts/factColumns.js +3 -3
- package/dist/facts/factColumns.js.map +1 -1
- package/dist/facts/index.cjs +42 -42
- package/dist/files/HtmlViewerParts.js +7 -15
- package/dist/files/HtmlViewerParts.js.map +2 -2
- package/dist/files/index.cjs +223 -223
- package/dist/index.cjs +238 -238
- package/dist/styles.css +1 -1
- package/dist/workflow-canvas/index.cjs +24 -24
- package/dist/workflow-canvas/index.cjs.map +1 -1
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/chunk-DDIW4HLU.cjs.map +0 -1
- package/dist/chunk-NNUK5ZM7.cjs.map +0 -1
- package/dist/chunk-R7CJEIA5.cjs.map +0 -1
- package/dist/chunk-SB4M3ITT.cjs.map +0 -1
- package/dist/chunk-TT4IF52H.cjs.map +0 -1
- package/dist/chunk-VLCY46K6.cjs.map +0 -1
- package/dist/chunk-ZPPMAL5P.cjs.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkNLSWDP42_cjs = require('./chunk-NLSWDP42.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:
|
|
53
|
+
rowHeight: chunkNLSWDP42_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-
|
|
125
|
-
//# sourceMappingURL=chunk-
|
|
124
|
+
//# sourceMappingURL=chunk-DFBDQKGE.cjs.map
|
|
125
|
+
//# sourceMappingURL=chunk-DFBDQKGE.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-YGXOKB5Z.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-DFBDQKGE.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"]}
|
|
@@ -6,7 +6,7 @@ var chunkV3KLUWQQ_cjs = require('./chunk-V3KLUWQQ.cjs');
|
|
|
6
6
|
var chunkP5AQYC4D_cjs = require('./chunk-P5AQYC4D.cjs');
|
|
7
7
|
var chunkWAV762GP_cjs = require('./chunk-WAV762GP.cjs');
|
|
8
8
|
var chunkVKH3BEZE_cjs = require('./chunk-VKH3BEZE.cjs');
|
|
9
|
-
var
|
|
9
|
+
var chunkQQWHG3KF_cjs = require('./chunk-QQWHG3KF.cjs');
|
|
10
10
|
var chunk3YEXZX4H_cjs = require('./chunk-3YEXZX4H.cjs');
|
|
11
11
|
var chunkVZOOGA47_cjs = require('./chunk-VZOOGA47.cjs');
|
|
12
12
|
var chunkHQDR43JC_cjs = require('./chunk-HQDR43JC.cjs');
|
|
@@ -145,7 +145,7 @@ function ConnectedWorkflowsTable({
|
|
|
145
145
|
await act(workflow, () => remove.mutateAsync(workflow.external_id));
|
|
146
146
|
};
|
|
147
147
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
148
|
-
|
|
148
|
+
chunkQQWHG3KF_cjs.WorkflowsTable,
|
|
149
149
|
{
|
|
150
150
|
...tableProps,
|
|
151
151
|
workflows,
|
|
@@ -486,5 +486,5 @@ exports.useConnectedNativeDocxAdapter = useConnectedNativeDocxAdapter;
|
|
|
486
486
|
exports.useConnectedWorkspaceRole = useConnectedWorkspaceRole;
|
|
487
487
|
exports.useDocxCommentTarget = useDocxCommentTarget;
|
|
488
488
|
exports.useNativeDocxSupport = useNativeDocxSupport;
|
|
489
|
-
//# sourceMappingURL=chunk-
|
|
490
|
-
//# sourceMappingURL=chunk-
|
|
489
|
+
//# sourceMappingURL=chunk-ECLUFKYR.cjs.map
|
|
490
|
+
//# sourceMappingURL=chunk-ECLUFKYR.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/docx/support.ts","../src/connection/ConnectedWorkflowsTable.tsx","../src/connection/docx/useConnectedDocxReferences.tsx","../src/connection/docx/useConnectedHouseTemplate.ts","../src/connection/docx/ConnectedNativeDocxEditor.tsx"],"names":["useHost","useConnectedWorkspace","useWorkspaceUsers","fmtDate","useBlocksEnvironment","useOpenWorkflow","useMemo","workflowSteps","useWorkflows","useConnectedConversations","useAgents","useUpdateWorkflow","useDeleteWorkflow","useRunWorkflow","useState","isScheduledWorkflow","useEffect","jsx","WorkflowsTable","workflowSignal","workflowTriggerType","toWorkflowFieldDocument","DocumentPicker","useArbi","useListedDocuments","useRef","buildDeepLinkUrl","parseDeepLinkPath","useSetWorkspaceHouseTemplate","useWorkspaces","supportsHouseTemplates","workspaceHouseTemplateId","useHouseTemplateCandidates","contentPath","isCandidate","useRegisterOpenDocument","jsxs","NativeDocxEditor","useQueryClient","useOptionalDocumentTools","refreshDocuments","fetchSavedSignature","storeSavedSignature"],"mappings":"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","file":"chunk-VGCTYTEW.cjs","sourcesContent":["/**\n * What a host adds to the connected Word editor that the platform API alone cannot give: the\n * workspace's definitions (facts labelled \"Definitions\"), image generation (an assistant run), the\n * host's leave-page guard, and a comment to open the editor at. It is the host configuration's\n * `docx`; every field is optional, and without one the editor simply offers less (no Defined term,\n * no Generate image).\n */\n\nimport { useHost } from '../../provider/host'\nimport type { DefinitionSource } from '../../tags/definitions'\nimport type { DocxImageGeneration } from '../../docx/layout/GenerateImage'\n\nexport interface NativeDocxSupport {\n /** The workspace's definitions. Present: Insert offers Defined term and `@@` the type-ahead. */\n definitions?: () => Promise<DefinitionSource[]>\n /** The platform's image generation. Present: Insert offers Generate image. */\n imageGeneration?: DocxImageGeneration\n /** The open editor has (or no longer has) unsaved changes. */\n onDirtyChange?: (dirty: boolean) => void\n /** A comment thread to open when its document opens (a notification's link), as a hook. */\n useCommentTarget?: () => { documentId: string; commentId: string } | null\n}\n\nconst NO_SUPPORT: NativeDocxSupport = {}\nconst NO_TARGET = () => null\n\nexport function useNativeDocxSupport(): NativeDocxSupport {\n return useHost().docx ?? NO_SUPPORT\n}\n\n/** The comment thread to open with its document (none without the host's). */\nexport function useDocxCommentTarget(): { documentId: string; commentId: string } | null {\n const useTarget = useNativeDocxSupport().useCommentTarget ?? NO_TARGET\n return useTarget()\n}\n","/**\n * The saved workflows bound to the connection: when each starts, its last run (a link to the thread\n * it created) and next run, who runs it, pause and resume, share, run now, delete (one or many), and\n * the workflow's history. The host opens a workflow (its builder) and its history; threads open\n * through the environment's `openConversation`, failures are told through its `notify`.\n *\n * The host's catalogue (the host configuration's `workflows.catalogue`), when it has one, is listed\n * in its categories above the saved workflows: an entry opens in the builder (`onOpenTemplate`) or\n * runs (the environment's `openWorkflow(id, { view: 'run' })`). A filtered list (`filter`) is about\n * saved workflows only and leaves the catalogue out.\n */\n\nimport { useEffect, useMemo, useState } from 'react'\nimport {\n useAgents,\n useDeleteWorkflow,\n useRunWorkflow,\n useUpdateWorkflow,\n useWorkflows,\n useWorkspaceUsers,\n type WorkflowResponse,\n} from '@arbidocs/react'\nimport { WorkflowsTable, type WorkflowsTableProps } from '../agents/tasks/WorkflowsTable'\nimport type { WorkflowCatalogueRow } from '../agents/tasks/WorkflowCatalogueSections'\nimport {\n isScheduledWorkflow,\n workflowSignal,\n workflowTriggerType,\n} from '../agents/tasks/workflowRows'\nimport { workflowSteps } from '../agents/workflows/run'\nimport { fmtDate } from '../lib/format'\nimport { useBlocksEnvironment } from '../provider/environment'\nimport { useOpenWorkflow } from './workflows/useOpenWorkflow'\nimport { useHost } from '../provider/host'\nimport { useConnectedWorkspace } from './ConnectionProvider'\nimport { useConnectedConversations } from './workspaceData'\n\n/** The viewer's role in the open workspace, and the workspace's members. */\nexport function useConnectedWorkspaceRole() {\n const { workspaceId, live, userId, ensureWorkspaceOpen } = useConnectedWorkspace()\n const { data: members = [] } = useWorkspaceUsers(workspaceId ?? undefined, {\n enabled: live && !!workspaceId,\n beforeFetch: ensureWorkspaceOpen,\n })\n const role = members.find((m) => m.user.external_id === userId)?.role\n return {\n members,\n role,\n /** An owner or a collaborator edits, pauses, resumes and runs what is shared with the workspace. */\n canEditShared: role === 'owner' || role === 'collaborator',\n /** With an item's creator, the only one who deletes it. */\n isWorkspaceOwner: role === 'owner',\n }\n}\n\nexport interface ConnectedWorkflowsTableLabels {\n /** A change (pause, share, delete) that failed without a message. */\n updateFailed: string\n deleteTitle: string\n deleteOne: (name: string) => string\n deleteMany: (count: number) => string\n /** A run that failed: its history has the error report. */\n runFailed: string\n /** A run that created no thread. */\n noThread: string\n /** A document action that started (it has no thread): what is happening. */\n documentAction: (workflow: WorkflowResponse) => string\n untitledTask: string\n /** When a workflow that starts on a step signal starts (the default trigger text). */\n signalTrigger: (signal: string) => string\n}\n\nexport const DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS: ConnectedWorkflowsTableLabels = {\n updateFailed: 'Could not update the workflow',\n deleteTitle: 'Delete workflow',\n deleteOne: (name) => `Delete “${name}”? Threads it already created stay.`,\n deleteMany: (count) => `Delete ${count} workflows? Threads they already created stay.`,\n runFailed: 'The workflow failed. You can send an error report from its history.',\n noThread: 'The workflow did not create a thread.',\n documentAction: (workflow) =>\n workflow.action?.type === 'email_documents'\n ? 'Preparing your document email'\n : 'Reviewing documents',\n untitledTask: 'Untitled thread',\n signalTrigger: (signal) => `When a step signals ${signal}`,\n}\n\ntype TableProps = WorkflowsTableProps<WorkflowResponse>\n\nexport interface ConnectedWorkflowsTableProps extends Omit<\n TableProps,\n | 'workflows'\n | 'isLoading'\n | 'busyId'\n | 'describeTrigger'\n | 'formatDate'\n | 'onToggleActive'\n | 'onToggleShared'\n | 'onDelete'\n | 'onDeleteMany'\n | 'onToggleActiveMany'\n | 'onRun'\n | 'onOpenThread'\n | 'lastRuns'\n | 'agentNames'\n | 'taskNames'\n | 'canEditShared'\n | 'isWorkspaceOwner'\n | 'catalogue'\n | 'categories'\n | 'renderIcon'\n> {\n /**\n * Which saved workflows to list: `scheduled` (those that start on a date or a repeat), or a\n * predicate. Default: all.\n */\n filter?: 'scheduled' | ((workflow: WorkflowResponse) => boolean)\n /**\n * When a workflow starts, in the host's words. Default: the step signal it starts on, else its\n * trigger type.\n */\n describeTrigger?: TableProps['describeTrigger']\n formatDate?: TableProps['formatDate']\n connectedLabels?: Partial<ConnectedWorkflowsTableLabels>\n}\n\nconst messageOf = (error: unknown) => (error instanceof Error ? error.message : '')\n\nexport function ConnectedWorkflowsTable({\n filter,\n describeTrigger,\n formatDate = fmtDate,\n onViewRuns,\n connectedLabels,\n onRunTemplate,\n ...tableProps\n}: ConnectedWorkflowsTableProps) {\n const l = { ...DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS, ...connectedLabels }\n const { notify, confirm, openConversation } = useBlocksEnvironment()\n const openWorkflow = useOpenWorkflow()\n const host = useHost().workflows\n // A filtered list (the scheduled workflows) is about saved workflows only.\n const catalogueEntries = filter ? undefined : host?.catalogue\n const catalogue = useMemo(\n () =>\n catalogueEntries?.map(({ workflow, category, note, runnable }): WorkflowCatalogueRow => ({\n id: workflow.id,\n title: workflow.title,\n description: workflow.description,\n icon: workflow.icon,\n category,\n stepCount: workflowSteps(workflow).length,\n note,\n runnable,\n })),\n [catalogueEntries]\n )\n const { canEditShared, isWorkspaceOwner } = useConnectedWorkspaceRole()\n const { data: saved = [], isLoading } = useWorkflows({ live: true })\n const { data: conversations, refetch } = useConnectedConversations({ live: true })\n const { data: agents = [] } = useAgents()\n const update = useUpdateWorkflow()\n const remove = useDeleteWorkflow()\n const run = useRunWorkflow()\n const [busyId, setBusyId] = useState<string | null>(null)\n\n const workflows = useMemo(() => {\n const keep = filter === 'scheduled' ? isScheduledWorkflow : filter\n return keep ? saved.filter(keep) : saved\n }, [saved, filter])\n // A clock or an event fired a workflow: the thread it created is new to the conversation list.\n const firingStamp = saved.map((w) => `${w.external_id}:${w.last_fired_at ?? ''}`).join('|')\n useEffect(() => {\n void refetch?.()\n }, [firingStamp, refetch])\n\n const lastRuns = useMemo(() => {\n const out: NonNullable<TableProps['lastRuns']> = {}\n for (const c of conversations) {\n const id = c.workflow_ext_id\n if (id && (!out[id] || Date.parse(c.created_at) > Date.parse(out[id].at)))\n out[id] = { conversationId: c.external_id, at: c.created_at, threadStatus: c.status }\n }\n return out\n }, [conversations])\n const agentNames = useMemo(\n () => Object.fromEntries(agents.map((a) => [a.external_id, a.given_name || a.email])),\n [agents]\n )\n const taskNames = useMemo(\n () =>\n Object.fromEntries(\n conversations\n .filter((c) => c.status != null)\n .map((c) => [c.external_id, c.title || l.untitledTask])\n ),\n [conversations, l.untitledTask]\n )\n\n const act = async (workflow: WorkflowResponse, action: () => Promise<unknown>) => {\n setBusyId(workflow.external_id)\n try {\n await action()\n } catch (error) {\n notify(messageOf(error) || l.updateFailed, 'error')\n } finally {\n setBusyId(null)\n }\n }\n const setActive = (workflow: WorkflowResponse, active: boolean) =>\n act(workflow, () => update.mutateAsync({ workflowId: workflow.external_id, patch: { active } }))\n const deleteAll = async (items: WorkflowResponse[]) => {\n if (!items.length) return\n const ok = await confirm({\n title: l.deleteTitle,\n message: items.length === 1 ? l.deleteOne(items[0].name) : l.deleteMany(items.length),\n })\n if (!ok) return\n for (const workflow of items)\n await act(workflow, () => remove.mutateAsync(workflow.external_id))\n }\n\n return (\n <WorkflowsTable\n {...tableProps}\n workflows={workflows}\n isLoading={isLoading}\n busyId={busyId}\n describeTrigger={\n describeTrigger ??\n ((w) => {\n const signal = workflowSignal(w)\n return signal ? l.signalTrigger(signal) : workflowTriggerType(w).replaceAll('_', ' ')\n })\n }\n catalogue={catalogue}\n categories={host?.categories}\n renderIcon={host?.renderIcon}\n onRunTemplate={onRunTemplate ?? (openWorkflow && ((id) => openWorkflow(id, { view: 'run' })))}\n formatDate={formatDate}\n agentNames={agentNames}\n taskNames={taskNames}\n lastRuns={lastRuns}\n canEditShared={canEditShared}\n isWorkspaceOwner={isWorkspaceOwner}\n onOpenThread={(conversationId) => openConversation(conversationId)}\n onViewRuns={onViewRuns}\n onToggleActive={(workflow, active) => void setActive(workflow, active)}\n onToggleActiveMany={(items, active) => {\n void (async () => {\n for (const workflow of items) await setActive(workflow, active)\n })()\n }}\n onToggleShared={(workflow, shared) =>\n void act(workflow, () =>\n update.mutateAsync({ workflowId: workflow.external_id, patch: { shared } })\n )\n }\n onDelete={(workflow) => void deleteAll([workflow])}\n onDeleteMany={(items) => void deleteAll(items)}\n onRun={(workflow) =>\n void act(workflow, async () => {\n const result = await run.mutateAsync(workflow.external_id)\n if (result.conversation_ext_id) openConversation(result.conversation_ext_id)\n if (result.error) {\n onViewRuns?.(workflow)\n notify(l.runFailed, 'error')\n return\n }\n if (result.execution_id && !result.conversation_ext_id) {\n // A document action runs without a thread: its history shows how it goes.\n onViewRuns?.(workflow)\n notify(l.documentAction(workflow), 'success')\n return\n }\n if (!result.conversation_ext_id) throw new Error(l.noThread)\n })\n }\n />\n )\n}\n","/**\n * The Word editor's references to the workspace's other documents: the documents and their\n * passages (the same parsed passages a fact's citations quote), the ARBI address of a passage\n * (`/wrk-…/doc-…/cnk-…`, the deep link that opens a document at a passage, so the link works from\n * Word too), and opening one wherever the host shows documents, highlighted like a citation.\n */\nimport { useMemo, useRef } from 'react'\nimport { useArbi } from '@arbidocs/react'\nimport type { DocxReferencesAdapter } from '../../docx/references/CrossReferences'\nimport { DocumentPicker } from '../../settings/DocumentPicker'\nimport { buildDeepLinkUrl, parseDeepLinkPath } from '../../lib/deep-link'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useConnectedWorkspace } from '../ConnectionProvider'\nimport { toWorkflowFieldDocument } from '../ConnectedWorkflowLauncher'\nimport { useListedDocuments, type ConnectedDocument } from '../workspaceData'\n\ninterface ParsedChunk {\n content?: string | null\n metadata?: { chunk_ext_id?: string | null; page_number?: number | null } | null\n}\n\n/** Top-level documents only: an attachment opens with its parent. */\nconst isTopLevel = (doc: ConnectedDocument) => !doc.parent_ext_id\n\nfunction ReferencePicker({\n documents,\n selectedId,\n onSelect,\n}: {\n documents: ConnectedDocument[]\n selectedId: string | null\n onSelect: (documentId: string) => void\n}) {\n const groups = useMemo(() => {\n const docs = documents\n .filter(isTopLevel)\n .map(toWorkflowFieldDocument)\n .sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase()))\n return [{ id: 'all', heading: 'In this workspace', docs }]\n }, [documents])\n const selected = groups[0].docs.find((d) => d.id === selectedId)\n return (\n <DocumentPicker\n groups={groups}\n value={selectedId ?? ''}\n onValueChange={onSelect}\n selected={selected}\n labels={{ placeholder: 'Search documents…' }}\n />\n )\n}\n\nexport function useConnectedDocxReferences(): DocxReferencesAdapter {\n const arbi = useArbi()\n const { workspaceId } = useConnectedWorkspace()\n const { openDocument, runtimeConfig } = useBlocksEnvironment()\n const { data: documents } = useListedDocuments()\n // Read when called (the picker, a link): the list grows while the editor is open.\n const documentsRef = useRef(documents)\n documentsRef.current = documents\n return useMemo<DocxReferencesAdapter>(\n () => ({\n documents: async () =>\n documentsRef.current\n .filter(isTopLevel)\n .map((d) => ({ id: d.external_id, title: toWorkflowFieldDocument(d).title })),\n passages: async (documentId) => {\n const parsed = await arbi.documents.getParsedContent(documentId, 'final')\n return ((parsed.chunks ?? []) as ParsedChunk[]).flatMap((chunk) =>\n chunk.metadata?.chunk_ext_id && chunk.content?.trim()\n ? [\n {\n chunkId: chunk.metadata.chunk_ext_id,\n page: chunk.metadata.page_number ?? null,\n text: chunk.content,\n },\n ]\n : []\n )\n },\n linkFor: ({ documentId, chunkId, page }) => {\n const url = buildDeepLinkUrl(\n { workspaceId: workspaceId ?? undefined, documentId, chunkId },\n runtimeConfig.deploymentDomain\n )\n return page ? `${url}?page=${page}` : url\n },\n targetOf: (href) => {\n let url: URL\n try {\n url = new URL(href, window.location.origin)\n } catch {\n return null\n }\n const { documentId, chunkId } = parseDeepLinkPath(url.pathname)\n if (!documentId || !chunkId) return null\n const page = Number(url.searchParams.get('page')) || null\n return { documentId, chunkId, page }\n },\n open: ({ documentId, chunkId, page }) =>\n openDocument(documentId, { passageId: chunkId, page: page ?? undefined }),\n renderDocumentPicker: (onSelect, selectedId) => (\n <ReferencePicker\n documents={documentsRef.current}\n selectedId={selectedId}\n onSelect={onSelect}\n />\n ),\n }),\n [arbi, workspaceId, openDocument, runtimeConfig.deploymentDomain]\n )\n}\n","/**\n * The house template for the open workspace: its own (a document of the workspace), else the\n * deployment's default, else ARBI's built-in legal template. A workspace owner can make a document\n * the house template once the server supports it.\n */\nimport { useMemo } from 'react'\nimport {\n supportsHouseTemplates,\n useArbi,\n useHouseTemplateCandidates,\n useSetWorkspaceHouseTemplate,\n useWorkspaces,\n workspaceHouseTemplateId,\n} from '@arbidocs/react'\nimport { contentPath } from '../../docx/content-path'\nimport type { HouseTemplate, HouseTemplateHost } from '../../docx/template/HouseTemplate'\nimport { isCandidate } from '../../docx/template/candidates'\nimport { useConnectedWorkspace } from '../ConnectionProvider'\nimport { useConnectedWorkspaceRole } from '../ConnectedWorkflowsTable'\n\nexport function useConnectedHouseTemplate(): HouseTemplateHost {\n const arbi = useArbi()\n const { mutateAsync: setWorkspaceTemplate } = useSetWorkspaceHouseTemplate()\n const { workspaceId, live, ensureWorkspaceOpen } = useConnectedWorkspace()\n const { data: workspaces } = useWorkspaces({ enabled: live })\n const workspace = workspaces?.find((w) => w.external_id === workspaceId)\n const { isWorkspaceOwner } = useConnectedWorkspaceRole()\n const supported = supportsHouseTemplates(workspace)\n const templateId = workspaceHouseTemplateId(workspace)\n // Only an eligible document (shared, Word, here or in a public workspace) is offered as the template.\n const { data: candidates } = useHouseTemplateCandidates(\n workspaceId,\n supported && isWorkspaceOwner\n )\n return useMemo<HouseTemplateHost>(\n () => ({\n load: async (): Promise<HouseTemplate> => {\n if (templateId) {\n await ensureWorkspaceOpen()\n const response = await arbi.editor.request(contentPath(templateId))\n const [record] = await arbi.documents.get([templateId]).catch(() => [])\n return {\n bytes: new Uint8Array(await response.arrayBuffer()),\n name: record?.file_name ?? 'House template.docx',\n source: 'workspace',\n documentId: templateId,\n }\n }\n if (supported) {\n const deployment = await arbi.houseTemplates.deployment()\n if (deployment) return { ...deployment, source: 'deployment' }\n }\n // The built-in template comes with the Word editor's template code: loaded on demand.\n return (await import('../../docx/template/HouseTemplate')).builtinHouseTemplate()\n },\n setFromDocument:\n supported && isWorkspaceOwner\n ? async (documentId) => {\n await ensureWorkspaceOpen()\n await setWorkspaceTemplate(documentId)\n }\n : undefined,\n isEligible: (documentId) => isCandidate(candidates, documentId),\n }),\n [\n arbi,\n setWorkspaceTemplate,\n supported,\n templateId,\n isWorkspaceOwner,\n candidates,\n ensureWorkspaceOpen,\n ]\n )\n}\n","import { useMemo, useRef, useState } from 'react'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { refreshDocuments, useArbi, useWorkspaceUsers } from '@arbidocs/react'\nimport {\n fetchSavedSignature,\n storeSavedSignature,\n useOptionalDocumentTools,\n} from '@arbidocs/react/document-tools'\nimport type { NativeDocxAdapter, NativeDocxEditorProps } from '../../docx/NativeDocxEditor'\nimport { NativeDocxEditor } from '../../docx/lazy'\nimport { useRegisterOpenDocument } from '@arbidocs/react/shell'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useConnectedWorkspace } from '../ConnectionProvider'\nimport { useDocxCommentTarget, useNativeDocxSupport } from './support'\nimport { useConnectedDocxReferences } from './useConnectedDocxReferences'\nimport { useConnectedHouseTemplate } from './useConnectedHouseTemplate'\n\nexport type ConnectedNativeDocxEditorProps = Omit<NativeDocxEditorProps, 'adapter' | 'compact'> & {\n fontBaseUrl?: string\n}\n\n/**\n * The native Word editor on the signed-in ARBI session, under any host (`defaultHost`'s sign-in\n * layer, or the host's own `arbi` and session state). Until a live session has opened, a failure to\n * open one falls back to the saved copy, read-only, so the document is still readable; later token\n * refreshes are not guarded (switching modes would drop unsaved edits).\n */\nexport function ConnectedNativeDocxEditor({\n fontBaseUrl = '/native-docx/fonts',\n ...props\n}: ConnectedNativeDocxEditorProps) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n const { workspaceId } = useConnectedWorkspace()\n const commentTarget = useDocxCommentTarget()\n const [openFailed, setOpenFailed] = useState(false)\n const hasOpened = useRef(false)\n const guardedAdapter = useMemo<NativeDocxAdapter>(\n () => ({\n ...adapter,\n open: async (documentId) => {\n try {\n const session = await adapter.open(documentId)\n hasOpened.current = true\n return session\n } catch (error) {\n if (!hasOpened.current) setOpenFailed(true)\n throw error\n }\n },\n }),\n [adapter]\n )\n // Drafting mode: the saved Word document being edited is what the chat is about. A history\n // snapshot, a streamed preview, an unsaved draft and an embedded body field are not.\n const live = !props.snapshot && !props.stream && !props.draftContent\n useRegisterOpenDocument({ documentId: live ? props.documentId : null, workspaceId })\n const initialCommentId =\n props.initialCommentId ??\n (commentTarget?.documentId === props.documentId ? commentTarget.commentId : undefined)\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n {openFailed && (\n <p role=\"status\" className=\"text-muted-foreground border-b px-3 py-2 text-xs\">\n Co-editing isn't available for this document right now, so this is a read-only copy\n of the last saved version.\n </p>\n )}\n <div className=\"min-h-0 flex-1\">\n <NativeDocxEditor\n {...props}\n snapshot={props.snapshot || openFailed}\n initialCommentId={initialCommentId}\n adapter={guardedAdapter}\n />\n </div>\n </div>\n )\n}\n\n/** The access token changed (a refresh): the live room is told the new one. */\nfunction tokenChanges(arbi: ReturnType<typeof useArbi>) {\n return (listener: () => void) => {\n if (!arbi.isLoggedIn) return () => {}\n const session = arbi.getClient().session\n let token = session.getState().accessToken\n return session.subscribe((state) => {\n if (state.accessToken === token) return\n token = state.accessToken\n listener()\n })\n }\n}\n\n/**\n * The native Word adapter on the signed-in session: the editor transport, the people to mention,\n * cross-references, the house template, and the host's extras (its host config's `docx`).\n */\nexport function useConnectedNativeDocxAdapter(fontBaseUrl = '/native-docx/fonts') {\n const arbi = useArbi()\n const { workspaceId, live, user, ensureWorkspaceOpen } = useConnectedWorkspace()\n const queries = useQueryClient()\n const { notify } = useBlocksEnvironment()\n const tools = useOptionalDocumentTools()\n const support = useNativeDocxSupport()\n const references = useConnectedDocxReferences()\n const houseTemplate = useConnectedHouseTemplate()\n const { data: members } = useWorkspaceUsers(workspaceId ?? undefined, {\n enabled: live && !!workspaceId,\n beforeFetch: ensureWorkspaceOpen,\n })\n const onDocumentsChanged = tools?.onDocumentsChanged\n // Tracked changes and comments are authored by the user's first name.\n const author = (live && arbi.user.profile()?.givenName) || user?.name || 'You'\n const adapter = useMemo<NativeDocxAdapter>(\n () => ({\n request: async (path, options) => {\n await ensureWorkspaceOpen()\n return arbi.editor.request(path, options)\n },\n open: async (id) => {\n await ensureWorkspaceOpen()\n return (\n await arbi.editor.request(`/${encodeURIComponent(id)}/session`, { method: 'POST' })\n ).json()\n },\n save: async (id, state) =>\n (\n await arbi.editor.request(`/${encodeURIComponent(id)}/save`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ state }),\n })\n ).json(),\n loadFonts: () => import('../../docx/fonts').then((m) => m.loadDocxFonts(fontBaseUrl)),\n baseUrl: arbi.getConnectionInfo()?.baseUrl || window.location.origin,\n author,\n subscribeTokenChanges: tokenChanges(arbi),\n onDirtyChange: support.onDirtyChange,\n // The document's row moves to the saved version in place: through the host when it keeps\n // the lists (its document tools refresh them), else here.\n onVersionSaved: async (id, version) => {\n if (onDocumentsChanged) await onDocumentsChanged([id], 'version')\n if (version || !onDocumentsChanged) {\n const fresh = await refreshDocuments(queries, arbi, [id])\n if (\n version &&\n !fresh.some((doc) => doc.external_id === id && (doc.current_version ?? 0) >= version)\n ) {\n throw new Error(\n 'The version was saved, but its current status could not be confirmed. Please try again.'\n )\n }\n }\n },\n notify,\n mentions: members?.map(({ user: member }) => ({\n id: member.external_id,\n name: [member.given_name, member.family_name].filter(Boolean).join(' '),\n kind: member.external_id.startsWith('agt-') ? 'agent' : 'human',\n })),\n savedSignature: {\n load: () => fetchSavedSignature(arbi.getClient().fetch),\n save: (signature) => storeSavedSignature(arbi.getClient().fetch, signature),\n defaultName: user?.name ?? '',\n },\n signatureSigners: members\n ?.filter(({ user: member }) => member.external_id.startsWith('usr-'))\n .map(({ user: member }) => ({\n email: member.email,\n name: [member.given_name, member.family_name].filter(Boolean).join(' '),\n })),\n requestAgent: async (id, request) => {\n const response = await arbi.editor.request(`/${encodeURIComponent(id)}/mentions`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n comment_id: request.commentId,\n instruction: request.instruction,\n request_id: request.requestId,\n recipient_ids: request.recipientIds,\n }),\n })\n const delivery = (await response.json()) as { response_ids: string[] }\n notify('Mention delivered.', 'success')\n return { responseIds: delivery.response_ids || [] }\n },\n getAgentStatus: async (responseId) => (await arbi.assistant.getResponse(responseId)).status,\n definitions: support.definitions,\n references,\n imageGeneration: support.imageGeneration,\n houseTemplate,\n }),\n [\n arbi,\n author,\n members,\n ensureWorkspaceOpen,\n fontBaseUrl,\n queries,\n notify,\n onDocumentsChanged,\n support,\n references,\n houseTemplate,\n user?.name,\n ]\n )\n return adapter\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/connection/docx/support.ts","../src/connection/ConnectedWorkflowsTable.tsx","../src/connection/docx/useConnectedDocxReferences.tsx","../src/connection/docx/useConnectedHouseTemplate.ts","../src/connection/docx/ConnectedNativeDocxEditor.tsx"],"names":["useHost","useConnectedWorkspace","useWorkspaceUsers","fmtDate","useBlocksEnvironment","useOpenWorkflow","useMemo","workflowSteps","useWorkflows","useConnectedConversations","useAgents","useUpdateWorkflow","useDeleteWorkflow","useRunWorkflow","useState","isScheduledWorkflow","useEffect","jsx","WorkflowsTable","workflowSignal","workflowTriggerType","toWorkflowFieldDocument","DocumentPicker","useArbi","useListedDocuments","useRef","buildDeepLinkUrl","parseDeepLinkPath","useSetWorkspaceHouseTemplate","useWorkspaces","supportsHouseTemplates","workspaceHouseTemplateId","useHouseTemplateCandidates","contentPath","isCandidate","useRegisterOpenDocument","jsxs","NativeDocxEditor","useQueryClient","useOptionalDocumentTools","refreshDocuments","fetchSavedSignature","storeSavedSignature"],"mappings":"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","file":"chunk-ECLUFKYR.cjs","sourcesContent":["/**\n * What a host adds to the connected Word editor that the platform API alone cannot give: the\n * workspace's definitions (facts labelled \"Definitions\"), image generation (an assistant run), the\n * host's leave-page guard, and a comment to open the editor at. It is the host configuration's\n * `docx`; every field is optional, and without one the editor simply offers less (no Defined term,\n * no Generate image).\n */\n\nimport { useHost } from '../../provider/host'\nimport type { DefinitionSource } from '../../tags/definitions'\nimport type { DocxImageGeneration } from '../../docx/layout/GenerateImage'\n\nexport interface NativeDocxSupport {\n /** The workspace's definitions. Present: Insert offers Defined term and `@@` the type-ahead. */\n definitions?: () => Promise<DefinitionSource[]>\n /** The platform's image generation. Present: Insert offers Generate image. */\n imageGeneration?: DocxImageGeneration\n /** The open editor has (or no longer has) unsaved changes. */\n onDirtyChange?: (dirty: boolean) => void\n /** A comment thread to open when its document opens (a notification's link), as a hook. */\n useCommentTarget?: () => { documentId: string; commentId: string } | null\n}\n\nconst NO_SUPPORT: NativeDocxSupport = {}\nconst NO_TARGET = () => null\n\nexport function useNativeDocxSupport(): NativeDocxSupport {\n return useHost().docx ?? NO_SUPPORT\n}\n\n/** The comment thread to open with its document (none without the host's). */\nexport function useDocxCommentTarget(): { documentId: string; commentId: string } | null {\n const useTarget = useNativeDocxSupport().useCommentTarget ?? NO_TARGET\n return useTarget()\n}\n","/**\n * The saved workflows bound to the connection: when each starts, its last run (a link to the thread\n * it created) and next run, who runs it, pause and resume, share, run now, delete (one or many), and\n * the workflow's history. The host opens a workflow (its builder) and its history; threads open\n * through the environment's `openConversation`, failures are told through its `notify`.\n *\n * The host's catalogue (the host configuration's `workflows.catalogue`), when it has one, is listed\n * in its categories above the saved workflows: an entry opens in the builder (`onOpenTemplate`) or\n * runs (the environment's `openWorkflow(id, { view: 'run' })`). A filtered list (`filter`) is about\n * saved workflows only and leaves the catalogue out.\n */\n\nimport { useEffect, useMemo, useState } from 'react'\nimport {\n useAgents,\n useDeleteWorkflow,\n useRunWorkflow,\n useUpdateWorkflow,\n useWorkflows,\n useWorkspaceUsers,\n type WorkflowResponse,\n} from '@arbidocs/react'\nimport { WorkflowsTable, type WorkflowsTableProps } from '../agents/tasks/WorkflowsTable'\nimport type { WorkflowCatalogueRow } from '../agents/tasks/WorkflowCatalogueSections'\nimport {\n isScheduledWorkflow,\n workflowSignal,\n workflowTriggerType,\n} from '../agents/tasks/workflowRows'\nimport { workflowSteps } from '../agents/workflows/run'\nimport { fmtDate } from '../lib/format'\nimport { useBlocksEnvironment } from '../provider/environment'\nimport { useOpenWorkflow } from './workflows/useOpenWorkflow'\nimport { useHost } from '../provider/host'\nimport { useConnectedWorkspace } from './ConnectionProvider'\nimport { useConnectedConversations } from './workspaceData'\n\n/** The viewer's role in the open workspace, and the workspace's members. */\nexport function useConnectedWorkspaceRole() {\n const { workspaceId, live, userId, ensureWorkspaceOpen } = useConnectedWorkspace()\n const { data: members = [] } = useWorkspaceUsers(workspaceId ?? undefined, {\n enabled: live && !!workspaceId,\n beforeFetch: ensureWorkspaceOpen,\n })\n const role = members.find((m) => m.user.external_id === userId)?.role\n return {\n members,\n role,\n /** An owner or a collaborator edits, pauses, resumes and runs what is shared with the workspace. */\n canEditShared: role === 'owner' || role === 'collaborator',\n /** With an item's creator, the only one who deletes it. */\n isWorkspaceOwner: role === 'owner',\n }\n}\n\nexport interface ConnectedWorkflowsTableLabels {\n /** A change (pause, share, delete) that failed without a message. */\n updateFailed: string\n deleteTitle: string\n deleteOne: (name: string) => string\n deleteMany: (count: number) => string\n /** A run that failed: its history has the error report. */\n runFailed: string\n /** A run that created no thread. */\n noThread: string\n /** A document action that started (it has no thread): what is happening. */\n documentAction: (workflow: WorkflowResponse) => string\n untitledTask: string\n /** When a workflow that starts on a step signal starts (the default trigger text). */\n signalTrigger: (signal: string) => string\n}\n\nexport const DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS: ConnectedWorkflowsTableLabels = {\n updateFailed: 'Could not update the workflow',\n deleteTitle: 'Delete workflow',\n deleteOne: (name) => `Delete “${name}”? Threads it already created stay.`,\n deleteMany: (count) => `Delete ${count} workflows? Threads they already created stay.`,\n runFailed: 'The workflow failed. You can send an error report from its history.',\n noThread: 'The workflow did not create a thread.',\n documentAction: (workflow) =>\n workflow.action?.type === 'email_documents'\n ? 'Preparing your document email'\n : 'Reviewing documents',\n untitledTask: 'Untitled thread',\n signalTrigger: (signal) => `When a step signals ${signal}`,\n}\n\ntype TableProps = WorkflowsTableProps<WorkflowResponse>\n\nexport interface ConnectedWorkflowsTableProps extends Omit<\n TableProps,\n | 'workflows'\n | 'isLoading'\n | 'busyId'\n | 'describeTrigger'\n | 'formatDate'\n | 'onToggleActive'\n | 'onToggleShared'\n | 'onDelete'\n | 'onDeleteMany'\n | 'onToggleActiveMany'\n | 'onRun'\n | 'onOpenThread'\n | 'lastRuns'\n | 'agentNames'\n | 'taskNames'\n | 'canEditShared'\n | 'isWorkspaceOwner'\n | 'catalogue'\n | 'categories'\n | 'renderIcon'\n> {\n /**\n * Which saved workflows to list: `scheduled` (those that start on a date or a repeat), or a\n * predicate. Default: all.\n */\n filter?: 'scheduled' | ((workflow: WorkflowResponse) => boolean)\n /**\n * When a workflow starts, in the host's words. Default: the step signal it starts on, else its\n * trigger type.\n */\n describeTrigger?: TableProps['describeTrigger']\n formatDate?: TableProps['formatDate']\n connectedLabels?: Partial<ConnectedWorkflowsTableLabels>\n}\n\nconst messageOf = (error: unknown) => (error instanceof Error ? error.message : '')\n\nexport function ConnectedWorkflowsTable({\n filter,\n describeTrigger,\n formatDate = fmtDate,\n onViewRuns,\n connectedLabels,\n onRunTemplate,\n ...tableProps\n}: ConnectedWorkflowsTableProps) {\n const l = { ...DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS, ...connectedLabels }\n const { notify, confirm, openConversation } = useBlocksEnvironment()\n const openWorkflow = useOpenWorkflow()\n const host = useHost().workflows\n // A filtered list (the scheduled workflows) is about saved workflows only.\n const catalogueEntries = filter ? undefined : host?.catalogue\n const catalogue = useMemo(\n () =>\n catalogueEntries?.map(({ workflow, category, note, runnable }): WorkflowCatalogueRow => ({\n id: workflow.id,\n title: workflow.title,\n description: workflow.description,\n icon: workflow.icon,\n category,\n stepCount: workflowSteps(workflow).length,\n note,\n runnable,\n })),\n [catalogueEntries]\n )\n const { canEditShared, isWorkspaceOwner } = useConnectedWorkspaceRole()\n const { data: saved = [], isLoading } = useWorkflows({ live: true })\n const { data: conversations, refetch } = useConnectedConversations({ live: true })\n const { data: agents = [] } = useAgents()\n const update = useUpdateWorkflow()\n const remove = useDeleteWorkflow()\n const run = useRunWorkflow()\n const [busyId, setBusyId] = useState<string | null>(null)\n\n const workflows = useMemo(() => {\n const keep = filter === 'scheduled' ? isScheduledWorkflow : filter\n return keep ? saved.filter(keep) : saved\n }, [saved, filter])\n // A clock or an event fired a workflow: the thread it created is new to the conversation list.\n const firingStamp = saved.map((w) => `${w.external_id}:${w.last_fired_at ?? ''}`).join('|')\n useEffect(() => {\n void refetch?.()\n }, [firingStamp, refetch])\n\n const lastRuns = useMemo(() => {\n const out: NonNullable<TableProps['lastRuns']> = {}\n for (const c of conversations) {\n const id = c.workflow_ext_id\n if (id && (!out[id] || Date.parse(c.created_at) > Date.parse(out[id].at)))\n out[id] = { conversationId: c.external_id, at: c.created_at, threadStatus: c.status }\n }\n return out\n }, [conversations])\n const agentNames = useMemo(\n () => Object.fromEntries(agents.map((a) => [a.external_id, a.given_name || a.email])),\n [agents]\n )\n const taskNames = useMemo(\n () =>\n Object.fromEntries(\n conversations\n .filter((c) => c.status != null)\n .map((c) => [c.external_id, c.title || l.untitledTask])\n ),\n [conversations, l.untitledTask]\n )\n\n const act = async (workflow: WorkflowResponse, action: () => Promise<unknown>) => {\n setBusyId(workflow.external_id)\n try {\n await action()\n } catch (error) {\n notify(messageOf(error) || l.updateFailed, 'error')\n } finally {\n setBusyId(null)\n }\n }\n const setActive = (workflow: WorkflowResponse, active: boolean) =>\n act(workflow, () => update.mutateAsync({ workflowId: workflow.external_id, patch: { active } }))\n const deleteAll = async (items: WorkflowResponse[]) => {\n if (!items.length) return\n const ok = await confirm({\n title: l.deleteTitle,\n message: items.length === 1 ? l.deleteOne(items[0].name) : l.deleteMany(items.length),\n })\n if (!ok) return\n for (const workflow of items)\n await act(workflow, () => remove.mutateAsync(workflow.external_id))\n }\n\n return (\n <WorkflowsTable\n {...tableProps}\n workflows={workflows}\n isLoading={isLoading}\n busyId={busyId}\n describeTrigger={\n describeTrigger ??\n ((w) => {\n const signal = workflowSignal(w)\n return signal ? l.signalTrigger(signal) : workflowTriggerType(w).replaceAll('_', ' ')\n })\n }\n catalogue={catalogue}\n categories={host?.categories}\n renderIcon={host?.renderIcon}\n onRunTemplate={onRunTemplate ?? (openWorkflow && ((id) => openWorkflow(id, { view: 'run' })))}\n formatDate={formatDate}\n agentNames={agentNames}\n taskNames={taskNames}\n lastRuns={lastRuns}\n canEditShared={canEditShared}\n isWorkspaceOwner={isWorkspaceOwner}\n onOpenThread={(conversationId) => openConversation(conversationId)}\n onViewRuns={onViewRuns}\n onToggleActive={(workflow, active) => void setActive(workflow, active)}\n onToggleActiveMany={(items, active) => {\n void (async () => {\n for (const workflow of items) await setActive(workflow, active)\n })()\n }}\n onToggleShared={(workflow, shared) =>\n void act(workflow, () =>\n update.mutateAsync({ workflowId: workflow.external_id, patch: { shared } })\n )\n }\n onDelete={(workflow) => void deleteAll([workflow])}\n onDeleteMany={(items) => void deleteAll(items)}\n onRun={(workflow) =>\n void act(workflow, async () => {\n const result = await run.mutateAsync(workflow.external_id)\n if (result.conversation_ext_id) openConversation(result.conversation_ext_id)\n if (result.error) {\n onViewRuns?.(workflow)\n notify(l.runFailed, 'error')\n return\n }\n if (result.execution_id && !result.conversation_ext_id) {\n // A document action runs without a thread: its history shows how it goes.\n onViewRuns?.(workflow)\n notify(l.documentAction(workflow), 'success')\n return\n }\n if (!result.conversation_ext_id) throw new Error(l.noThread)\n })\n }\n />\n )\n}\n","/**\n * The Word editor's references to the workspace's other documents: the documents and their\n * passages (the same parsed passages a fact's citations quote), the ARBI address of a passage\n * (`/wrk-…/doc-…/cnk-…`, the deep link that opens a document at a passage, so the link works from\n * Word too), and opening one wherever the host shows documents, highlighted like a citation.\n */\nimport { useMemo, useRef } from 'react'\nimport { useArbi } from '@arbidocs/react'\nimport type { DocxReferencesAdapter } from '../../docx/references/CrossReferences'\nimport { DocumentPicker } from '../../settings/DocumentPicker'\nimport { buildDeepLinkUrl, parseDeepLinkPath } from '../../lib/deep-link'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useConnectedWorkspace } from '../ConnectionProvider'\nimport { toWorkflowFieldDocument } from '../ConnectedWorkflowLauncher'\nimport { useListedDocuments, type ConnectedDocument } from '../workspaceData'\n\ninterface ParsedChunk {\n content?: string | null\n metadata?: { chunk_ext_id?: string | null; page_number?: number | null } | null\n}\n\n/** Top-level documents only: an attachment opens with its parent. */\nconst isTopLevel = (doc: ConnectedDocument) => !doc.parent_ext_id\n\nfunction ReferencePicker({\n documents,\n selectedId,\n onSelect,\n}: {\n documents: ConnectedDocument[]\n selectedId: string | null\n onSelect: (documentId: string) => void\n}) {\n const groups = useMemo(() => {\n const docs = documents\n .filter(isTopLevel)\n .map(toWorkflowFieldDocument)\n .sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase()))\n return [{ id: 'all', heading: 'In this workspace', docs }]\n }, [documents])\n const selected = groups[0].docs.find((d) => d.id === selectedId)\n return (\n <DocumentPicker\n groups={groups}\n value={selectedId ?? ''}\n onValueChange={onSelect}\n selected={selected}\n labels={{ placeholder: 'Search documents…' }}\n />\n )\n}\n\nexport function useConnectedDocxReferences(): DocxReferencesAdapter {\n const arbi = useArbi()\n const { workspaceId } = useConnectedWorkspace()\n const { openDocument, runtimeConfig } = useBlocksEnvironment()\n const { data: documents } = useListedDocuments()\n // Read when called (the picker, a link): the list grows while the editor is open.\n const documentsRef = useRef(documents)\n documentsRef.current = documents\n return useMemo<DocxReferencesAdapter>(\n () => ({\n documents: async () =>\n documentsRef.current\n .filter(isTopLevel)\n .map((d) => ({ id: d.external_id, title: toWorkflowFieldDocument(d).title })),\n passages: async (documentId) => {\n const parsed = await arbi.documents.getParsedContent(documentId, 'final')\n return ((parsed.chunks ?? []) as ParsedChunk[]).flatMap((chunk) =>\n chunk.metadata?.chunk_ext_id && chunk.content?.trim()\n ? [\n {\n chunkId: chunk.metadata.chunk_ext_id,\n page: chunk.metadata.page_number ?? null,\n text: chunk.content,\n },\n ]\n : []\n )\n },\n linkFor: ({ documentId, chunkId, page }) => {\n const url = buildDeepLinkUrl(\n { workspaceId: workspaceId ?? undefined, documentId, chunkId },\n runtimeConfig.deploymentDomain\n )\n return page ? `${url}?page=${page}` : url\n },\n targetOf: (href) => {\n let url: URL\n try {\n url = new URL(href, window.location.origin)\n } catch {\n return null\n }\n const { documentId, chunkId } = parseDeepLinkPath(url.pathname)\n if (!documentId || !chunkId) return null\n const page = Number(url.searchParams.get('page')) || null\n return { documentId, chunkId, page }\n },\n open: ({ documentId, chunkId, page }) =>\n openDocument(documentId, { passageId: chunkId, page: page ?? undefined }),\n renderDocumentPicker: (onSelect, selectedId) => (\n <ReferencePicker\n documents={documentsRef.current}\n selectedId={selectedId}\n onSelect={onSelect}\n />\n ),\n }),\n [arbi, workspaceId, openDocument, runtimeConfig.deploymentDomain]\n )\n}\n","/**\n * The house template for the open workspace: its own (a document of the workspace), else the\n * deployment's default, else ARBI's built-in legal template. A workspace owner can make a document\n * the house template once the server supports it.\n */\nimport { useMemo } from 'react'\nimport {\n supportsHouseTemplates,\n useArbi,\n useHouseTemplateCandidates,\n useSetWorkspaceHouseTemplate,\n useWorkspaces,\n workspaceHouseTemplateId,\n} from '@arbidocs/react'\nimport { contentPath } from '../../docx/content-path'\nimport type { HouseTemplate, HouseTemplateHost } from '../../docx/template/HouseTemplate'\nimport { isCandidate } from '../../docx/template/candidates'\nimport { useConnectedWorkspace } from '../ConnectionProvider'\nimport { useConnectedWorkspaceRole } from '../ConnectedWorkflowsTable'\n\nexport function useConnectedHouseTemplate(): HouseTemplateHost {\n const arbi = useArbi()\n const { mutateAsync: setWorkspaceTemplate } = useSetWorkspaceHouseTemplate()\n const { workspaceId, live, ensureWorkspaceOpen } = useConnectedWorkspace()\n const { data: workspaces } = useWorkspaces({ enabled: live })\n const workspace = workspaces?.find((w) => w.external_id === workspaceId)\n const { isWorkspaceOwner } = useConnectedWorkspaceRole()\n const supported = supportsHouseTemplates(workspace)\n const templateId = workspaceHouseTemplateId(workspace)\n // Only an eligible document (shared, Word, here or in a public workspace) is offered as the template.\n const { data: candidates } = useHouseTemplateCandidates(\n workspaceId,\n supported && isWorkspaceOwner\n )\n return useMemo<HouseTemplateHost>(\n () => ({\n load: async (): Promise<HouseTemplate> => {\n if (templateId) {\n await ensureWorkspaceOpen()\n const response = await arbi.editor.request(contentPath(templateId))\n const [record] = await arbi.documents.get([templateId]).catch(() => [])\n return {\n bytes: new Uint8Array(await response.arrayBuffer()),\n name: record?.file_name ?? 'House template.docx',\n source: 'workspace',\n documentId: templateId,\n }\n }\n if (supported) {\n const deployment = await arbi.houseTemplates.deployment()\n if (deployment) return { ...deployment, source: 'deployment' }\n }\n // The built-in template comes with the Word editor's template code: loaded on demand.\n return (await import('../../docx/template/HouseTemplate')).builtinHouseTemplate()\n },\n setFromDocument:\n supported && isWorkspaceOwner\n ? async (documentId) => {\n await ensureWorkspaceOpen()\n await setWorkspaceTemplate(documentId)\n }\n : undefined,\n isEligible: (documentId) => isCandidate(candidates, documentId),\n }),\n [\n arbi,\n setWorkspaceTemplate,\n supported,\n templateId,\n isWorkspaceOwner,\n candidates,\n ensureWorkspaceOpen,\n ]\n )\n}\n","import { useMemo, useRef, useState } from 'react'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { refreshDocuments, useArbi, useWorkspaceUsers } from '@arbidocs/react'\nimport {\n fetchSavedSignature,\n storeSavedSignature,\n useOptionalDocumentTools,\n} from '@arbidocs/react/document-tools'\nimport type { NativeDocxAdapter, NativeDocxEditorProps } from '../../docx/NativeDocxEditor'\nimport { NativeDocxEditor } from '../../docx/lazy'\nimport { useRegisterOpenDocument } from '@arbidocs/react/shell'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useConnectedWorkspace } from '../ConnectionProvider'\nimport { useDocxCommentTarget, useNativeDocxSupport } from './support'\nimport { useConnectedDocxReferences } from './useConnectedDocxReferences'\nimport { useConnectedHouseTemplate } from './useConnectedHouseTemplate'\n\nexport type ConnectedNativeDocxEditorProps = Omit<NativeDocxEditorProps, 'adapter' | 'compact'> & {\n fontBaseUrl?: string\n}\n\n/**\n * The native Word editor on the signed-in ARBI session, under any host (`defaultHost`'s sign-in\n * layer, or the host's own `arbi` and session state). Until a live session has opened, a failure to\n * open one falls back to the saved copy, read-only, so the document is still readable; later token\n * refreshes are not guarded (switching modes would drop unsaved edits).\n */\nexport function ConnectedNativeDocxEditor({\n fontBaseUrl = '/native-docx/fonts',\n ...props\n}: ConnectedNativeDocxEditorProps) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n const { workspaceId } = useConnectedWorkspace()\n const commentTarget = useDocxCommentTarget()\n const [openFailed, setOpenFailed] = useState(false)\n const hasOpened = useRef(false)\n const guardedAdapter = useMemo<NativeDocxAdapter>(\n () => ({\n ...adapter,\n open: async (documentId) => {\n try {\n const session = await adapter.open(documentId)\n hasOpened.current = true\n return session\n } catch (error) {\n if (!hasOpened.current) setOpenFailed(true)\n throw error\n }\n },\n }),\n [adapter]\n )\n // Drafting mode: the saved Word document being edited is what the chat is about. A history\n // snapshot, a streamed preview, an unsaved draft and an embedded body field are not.\n const live = !props.snapshot && !props.stream && !props.draftContent\n useRegisterOpenDocument({ documentId: live ? props.documentId : null, workspaceId })\n const initialCommentId =\n props.initialCommentId ??\n (commentTarget?.documentId === props.documentId ? commentTarget.commentId : undefined)\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n {openFailed && (\n <p role=\"status\" className=\"text-muted-foreground border-b px-3 py-2 text-xs\">\n Co-editing isn't available for this document right now, so this is a read-only copy\n of the last saved version.\n </p>\n )}\n <div className=\"min-h-0 flex-1\">\n <NativeDocxEditor\n {...props}\n snapshot={props.snapshot || openFailed}\n initialCommentId={initialCommentId}\n adapter={guardedAdapter}\n />\n </div>\n </div>\n )\n}\n\n/** The access token changed (a refresh): the live room is told the new one. */\nfunction tokenChanges(arbi: ReturnType<typeof useArbi>) {\n return (listener: () => void) => {\n if (!arbi.isLoggedIn) return () => {}\n const session = arbi.getClient().session\n let token = session.getState().accessToken\n return session.subscribe((state) => {\n if (state.accessToken === token) return\n token = state.accessToken\n listener()\n })\n }\n}\n\n/**\n * The native Word adapter on the signed-in session: the editor transport, the people to mention,\n * cross-references, the house template, and the host's extras (its host config's `docx`).\n */\nexport function useConnectedNativeDocxAdapter(fontBaseUrl = '/native-docx/fonts') {\n const arbi = useArbi()\n const { workspaceId, live, user, ensureWorkspaceOpen } = useConnectedWorkspace()\n const queries = useQueryClient()\n const { notify } = useBlocksEnvironment()\n const tools = useOptionalDocumentTools()\n const support = useNativeDocxSupport()\n const references = useConnectedDocxReferences()\n const houseTemplate = useConnectedHouseTemplate()\n const { data: members } = useWorkspaceUsers(workspaceId ?? undefined, {\n enabled: live && !!workspaceId,\n beforeFetch: ensureWorkspaceOpen,\n })\n const onDocumentsChanged = tools?.onDocumentsChanged\n // Tracked changes and comments are authored by the user's first name.\n const author = (live && arbi.user.profile()?.givenName) || user?.name || 'You'\n const adapter = useMemo<NativeDocxAdapter>(\n () => ({\n request: async (path, options) => {\n await ensureWorkspaceOpen()\n return arbi.editor.request(path, options)\n },\n open: async (id) => {\n await ensureWorkspaceOpen()\n return (\n await arbi.editor.request(`/${encodeURIComponent(id)}/session`, { method: 'POST' })\n ).json()\n },\n save: async (id, state) =>\n (\n await arbi.editor.request(`/${encodeURIComponent(id)}/save`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ state }),\n })\n ).json(),\n loadFonts: () => import('../../docx/fonts').then((m) => m.loadDocxFonts(fontBaseUrl)),\n baseUrl: arbi.getConnectionInfo()?.baseUrl || window.location.origin,\n author,\n subscribeTokenChanges: tokenChanges(arbi),\n onDirtyChange: support.onDirtyChange,\n // The document's row moves to the saved version in place: through the host when it keeps\n // the lists (its document tools refresh them), else here.\n onVersionSaved: async (id, version) => {\n if (onDocumentsChanged) await onDocumentsChanged([id], 'version')\n if (version || !onDocumentsChanged) {\n const fresh = await refreshDocuments(queries, arbi, [id])\n if (\n version &&\n !fresh.some((doc) => doc.external_id === id && (doc.current_version ?? 0) >= version)\n ) {\n throw new Error(\n 'The version was saved, but its current status could not be confirmed. Please try again.'\n )\n }\n }\n },\n notify,\n mentions: members?.map(({ user: member }) => ({\n id: member.external_id,\n name: [member.given_name, member.family_name].filter(Boolean).join(' '),\n kind: member.external_id.startsWith('agt-') ? 'agent' : 'human',\n })),\n savedSignature: {\n load: () => fetchSavedSignature(arbi.getClient().fetch),\n save: (signature) => storeSavedSignature(arbi.getClient().fetch, signature),\n defaultName: user?.name ?? '',\n },\n signatureSigners: members\n ?.filter(({ user: member }) => member.external_id.startsWith('usr-'))\n .map(({ user: member }) => ({\n email: member.email,\n name: [member.given_name, member.family_name].filter(Boolean).join(' '),\n })),\n requestAgent: async (id, request) => {\n const response = await arbi.editor.request(`/${encodeURIComponent(id)}/mentions`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n comment_id: request.commentId,\n instruction: request.instruction,\n request_id: request.requestId,\n recipient_ids: request.recipientIds,\n }),\n })\n const delivery = (await response.json()) as { response_ids: string[] }\n notify('Mention delivered.', 'success')\n return { responseIds: delivery.response_ids || [] }\n },\n getAgentStatus: async (responseId) => (await arbi.assistant.getResponse(responseId)).status,\n definitions: support.definitions,\n references,\n imageGeneration: support.imageGeneration,\n houseTemplate,\n }),\n [\n arbi,\n author,\n members,\n ensureWorkspaceOpen,\n fontBaseUrl,\n queries,\n notify,\n onDocumentsChanged,\n support,\n references,\n houseTemplate,\n user?.name,\n ]\n )\n return adapter\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
4
|
+
var chunk3GWWOYGS_cjs = require('./chunk-3GWWOYGS.cjs');
|
|
5
|
+
var chunkBUVIBHFU_cjs = require('./chunk-BUVIBHFU.cjs');
|
|
6
|
+
var chunkNLSWDP42_cjs = require('./chunk-NLSWDP42.cjs');
|
|
7
7
|
var chunkTMX7YFVM_cjs = require('./chunk-TMX7YFVM.cjs');
|
|
8
8
|
var react$1 = require('react');
|
|
9
9
|
var react = require('@arbidocs/react');
|
|
@@ -87,14 +87,14 @@ function ConnectedTagEntity({
|
|
|
87
87
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Created:" }),
|
|
88
88
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: ui.formatFriendlyDate(tag.created_at) }),
|
|
89
89
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "by" }),
|
|
90
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
90
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkBUVIBHFU_cjs.UserAvatar, { user: creator ?? void 0 })
|
|
91
91
|
] }),
|
|
92
92
|
tag.updated_at && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
93
93
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Updated:" }),
|
|
94
94
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: ui.formatFriendlyDate(tag.updated_at) }),
|
|
95
95
|
updater && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
96
96
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "by" }),
|
|
97
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
97
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkBUVIBHFU_cjs.UserAvatar, { user: updater })
|
|
98
98
|
] })
|
|
99
99
|
] })
|
|
100
100
|
] })
|
|
@@ -116,8 +116,8 @@ function FolderPicker({
|
|
|
116
116
|
value,
|
|
117
117
|
onSelect
|
|
118
118
|
}) {
|
|
119
|
-
const folders =
|
|
120
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
119
|
+
const folders = chunkBUVIBHFU_cjs.useDocumentFolders(documents, value);
|
|
120
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkNLSWDP42_cjs.FolderCommandList, { folders, value, onSelect, showRemove: !!value });
|
|
121
121
|
}
|
|
122
122
|
function RelatedDocuments({
|
|
123
123
|
doc,
|
|
@@ -129,7 +129,7 @@ function RelatedDocuments({
|
|
|
129
129
|
}) {
|
|
130
130
|
const viewingDocumentId = react.useOpenViewerDocumentId();
|
|
131
131
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
132
|
-
|
|
132
|
+
chunkBUVIBHFU_cjs.RelatedDocumentsCell,
|
|
133
133
|
{
|
|
134
134
|
currentDoc: doc,
|
|
135
135
|
related,
|
|
@@ -152,9 +152,9 @@ function DocTagAttribution({ doctag }) {
|
|
|
152
152
|
updater && `Updated ${ui.formatFriendlyDate(doctag.updated_at)} by ${updater.given_name || updater.email}`
|
|
153
153
|
].filter((line) => !!line);
|
|
154
154
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
155
|
-
|
|
155
|
+
chunkNLSWDP42_cjs.FieldAttribution,
|
|
156
156
|
{
|
|
157
|
-
avatar: /* @__PURE__ */ jsxRuntime.jsx(
|
|
157
|
+
avatar: /* @__PURE__ */ jsxRuntime.jsx(chunk3GWWOYGS_cjs.DocumentUser, { user: lastUser, tooltip: false }),
|
|
158
158
|
date: ui.formatFriendlyDate(updater ? doctag.updated_at : doctag.created_at),
|
|
159
159
|
lines
|
|
160
160
|
}
|
|
@@ -182,7 +182,7 @@ function LabelsCombobox({
|
|
|
182
182
|
else if (!appliedTagIds.has(existing.external_id)) onToggle(existing);
|
|
183
183
|
};
|
|
184
184
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
185
|
-
|
|
185
|
+
chunkNLSWDP42_cjs.FieldLabelsSelect,
|
|
186
186
|
{
|
|
187
187
|
options,
|
|
188
188
|
appliedIds: appliedTagIds,
|
|
@@ -204,15 +204,15 @@ var METADATA_FIELDS = {
|
|
|
204
204
|
};
|
|
205
205
|
var INPUT_CLASS = "text-sm bg-muted/40 focus:bg-background transition-colors";
|
|
206
206
|
var READ_ONLY_FIELDS = {
|
|
207
|
-
file_name: (doc) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
208
|
-
status: (doc) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
209
|
-
n_pages: (doc) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
210
|
-
created_at: (doc) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
211
|
-
updated_at: (doc) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
212
|
-
file_type: (doc) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
213
|
-
file_size: (doc) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
214
|
-
doc_id: (doc) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
215
|
-
content_hash: (doc) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
207
|
+
file_name: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkNLSWDP42_cjs.FieldValue, { tone: "strong", children: doc.file_name || "N/A" }),
|
|
208
|
+
status: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkNLSWDP42_cjs.FieldValue, { tone: "muted", children: doc.status || "N/A" }),
|
|
209
|
+
n_pages: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkNLSWDP42_cjs.FieldValue, { tone: "muted", children: doc.n_pages || "N/A" }),
|
|
210
|
+
created_at: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkNLSWDP42_cjs.FieldValue, { tone: "muted", children: doc.created_at ? ui.formatFriendlyDate(doc.created_at) : "N/A" }),
|
|
211
|
+
updated_at: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkNLSWDP42_cjs.FieldValue, { tone: "muted", children: doc.updated_at ? ui.formatFriendlyDate(doc.updated_at) : "N/A" }),
|
|
212
|
+
file_type: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkNLSWDP42_cjs.FieldValue, { tone: "muted", children: ui.friendlyFileType(doc.file_type, doc.file_name) }),
|
|
213
|
+
file_size: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkNLSWDP42_cjs.FieldValue, { tone: "muted", children: doc.file_size ? `${Math.round(doc.file_size / 1024)} KB` : "N/A" }),
|
|
214
|
+
doc_id: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkNLSWDP42_cjs.FieldValue, { tone: "muted", isMono: true, children: doc.external_id || "N/A" }),
|
|
215
|
+
content_hash: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkNLSWDP42_cjs.FieldValue, { tone: "muted", isMono: true, isTruncated: true, children: doc.content_hash || "N/A" })
|
|
216
216
|
};
|
|
217
217
|
function documentFieldContent(options) {
|
|
218
218
|
const { columnId, doc, canEdit, workspaceTags, getColumnLabel, getColumnIcon } = options;
|
|
@@ -235,16 +235,16 @@ function documentFieldContent(options) {
|
|
|
235
235
|
placeholder: `Add ${getColumnLabel(columnId).toLowerCase()}\u2026`,
|
|
236
236
|
className: INPUT_CLASS
|
|
237
237
|
}
|
|
238
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
238
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(chunkNLSWDP42_cjs.FieldValue, { children: metadata(doc) || "N/A" })
|
|
239
239
|
);
|
|
240
240
|
}
|
|
241
241
|
const readOnly = READ_ONLY_FIELDS[columnId];
|
|
242
242
|
if (readOnly) return standard(readOnly(doc));
|
|
243
|
-
if (columnId === "created_by") return standard(/* @__PURE__ */ jsxRuntime.jsx(
|
|
243
|
+
if (columnId === "created_by") return standard(/* @__PURE__ */ jsxRuntime.jsx(chunk3GWWOYGS_cjs.DocumentUser, { user: options.creator }));
|
|
244
244
|
if (columnId === "folder") {
|
|
245
245
|
return standard(
|
|
246
246
|
canEdit ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
247
|
-
|
|
247
|
+
chunkNLSWDP42_cjs.FieldFolderSelect,
|
|
248
248
|
{
|
|
249
249
|
folder: doc.folder,
|
|
250
250
|
picker: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -256,7 +256,7 @@ function documentFieldContent(options) {
|
|
|
256
256
|
}
|
|
257
257
|
)
|
|
258
258
|
}
|
|
259
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
259
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(chunkNLSWDP42_cjs.FieldFolderValue, { folder: doc.folder })
|
|
260
260
|
);
|
|
261
261
|
}
|
|
262
262
|
if (columnId === "related") {
|
|
@@ -299,7 +299,7 @@ function documentFieldContent(options) {
|
|
|
299
299
|
let value;
|
|
300
300
|
if (tag.tag_type.type === "select") {
|
|
301
301
|
value = /* @__PURE__ */ jsxRuntime.jsx(
|
|
302
|
-
|
|
302
|
+
chunkNLSWDP42_cjs.FieldNativeSelect,
|
|
303
303
|
{
|
|
304
304
|
value: doctag?.note || "",
|
|
305
305
|
options: tag.tag_type.options,
|
|
@@ -333,12 +333,12 @@ function documentFieldContent(options) {
|
|
|
333
333
|
return {
|
|
334
334
|
label: tag.name,
|
|
335
335
|
tag,
|
|
336
|
-
children: doctag ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
336
|
+
children: doctag ? /* @__PURE__ */ jsxRuntime.jsx(chunkNLSWDP42_cjs.FieldWithAttribution, { attribution: /* @__PURE__ */ jsxRuntime.jsx(DocTagAttribution, { doctag }), children: value }) : value
|
|
337
337
|
};
|
|
338
338
|
}
|
|
339
339
|
|
|
340
340
|
exports.ConnectedTagEntity = ConnectedTagEntity;
|
|
341
341
|
exports.documentFieldContent = documentFieldContent;
|
|
342
342
|
exports.useMemberLookup = useMemberLookup;
|
|
343
|
-
//# sourceMappingURL=chunk-
|
|
344
|
-
//# sourceMappingURL=chunk-
|
|
343
|
+
//# sourceMappingURL=chunk-HA66DHW6.cjs.map
|
|
344
|
+
//# sourceMappingURL=chunk-HA66DHW6.cjs.map
|