@arbidocs/react 0.5.77 → 0.5.79

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 (50) hide show
  1. package/README.md +31 -6
  2. package/dist/artifacts/index.cjs +11 -11
  3. package/dist/artifacts/index.js +4 -4
  4. package/dist/calls/livekit/index.cjs +43 -43
  5. package/dist/calls/livekit/index.js +4 -4
  6. package/dist/{chunk-LBAGMNGG.js → chunk-4MNYCQ3L.js} +3 -3
  7. package/dist/{chunk-LBAGMNGG.js.map → chunk-4MNYCQ3L.js.map} +1 -1
  8. package/dist/{chunk-RDERZWMO.cjs → chunk-5IN5OGBT.cjs} +33 -33
  9. package/dist/{chunk-RDERZWMO.cjs.map → chunk-5IN5OGBT.cjs.map} +1 -1
  10. package/dist/{chunk-O2HDONQE.js → chunk-5UJ4ZKJN.js} +3 -3
  11. package/dist/{chunk-O2HDONQE.js.map → chunk-5UJ4ZKJN.js.map} +1 -1
  12. package/dist/{chunk-2MECTZLS.js → chunk-DFA2W3YH.js} +5 -5
  13. package/dist/{chunk-2MECTZLS.js.map → chunk-DFA2W3YH.js.map} +1 -1
  14. package/dist/{chunk-IHKQPOPK.cjs → chunk-I3VG2ZOT.cjs} +3 -3
  15. package/dist/{chunk-IHKQPOPK.cjs.map → chunk-I3VG2ZOT.cjs.map} +1 -1
  16. package/dist/{chunk-PMHFLOXY.cjs → chunk-KNO6K35X.cjs} +50 -50
  17. package/dist/{chunk-PMHFLOXY.cjs.map → chunk-KNO6K35X.cjs.map} +1 -1
  18. package/dist/{chunk-33PVGKXT.js → chunk-OZWAKXB2.js} +232 -70
  19. package/dist/chunk-OZWAKXB2.js.map +1 -0
  20. package/dist/{chunk-MWW54PY6.cjs → chunk-RW3URTNE.cjs} +20 -20
  21. package/dist/{chunk-MWW54PY6.cjs.map → chunk-RW3URTNE.cjs.map} +1 -1
  22. package/dist/{chunk-AOEJ744V.js → chunk-TK7ERJPE.js} +5 -2
  23. package/dist/{chunk-AOEJ744V.js.map → chunk-TK7ERJPE.js.map} +1 -1
  24. package/dist/{chunk-GQAXAZN7.cjs → chunk-U4PWVSCT.cjs} +5 -2
  25. package/dist/{chunk-GQAXAZN7.cjs.map → chunk-U4PWVSCT.cjs.map} +1 -1
  26. package/dist/{chunk-6RSVGLQY.cjs → chunk-UHXU5MHV.cjs} +265 -99
  27. package/dist/chunk-UHXU5MHV.cjs.map +1 -0
  28. package/dist/{chunk-JHN4PKWX.js → chunk-YJEZEPUB.js} +3 -3
  29. package/dist/{chunk-JHN4PKWX.js.map → chunk-YJEZEPUB.js.map} +1 -1
  30. package/dist/document-tools/core.cjs +82 -82
  31. package/dist/document-tools/core.d.cts +2 -2
  32. package/dist/document-tools/core.d.ts +2 -2
  33. package/dist/document-tools/core.js +2 -2
  34. package/dist/document-tools/index.cjs +82 -82
  35. package/dist/document-tools/index.d.cts +1 -1
  36. package/dist/document-tools/index.d.ts +1 -1
  37. package/dist/document-tools/index.js +2 -2
  38. package/dist/index.cjs +1344 -1181
  39. package/dist/index.cjs.map +1 -1
  40. package/dist/index.d.cts +352 -550
  41. package/dist/index.d.ts +352 -550
  42. package/dist/index.js +176 -32
  43. package/dist/index.js.map +1 -1
  44. package/dist/{query-keys.d-BFKQVevT.d.ts → query-keys.d-Dm0NL9nr.d.cts} +3 -0
  45. package/dist/{query-keys.d-BFKQVevT.d.cts → query-keys.d-Dm0NL9nr.d.ts} +3 -0
  46. package/dist/ui/index.cjs +165 -165
  47. package/dist/ui/index.js +2 -2
  48. package/package.json +5 -3
  49. package/dist/chunk-33PVGKXT.js.map +0 -1
  50. package/dist/chunk-6RSVGLQY.cjs.map +0 -1
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkGQAXAZN7_cjs = require('./chunk-GQAXAZN7.cjs');
4
- var chunk5YGUBXXH_cjs = require('./chunk-5YGUBXXH.cjs');
5
3
  var chunkN73IMVFF_cjs = require('./chunk-N73IMVFF.cjs');
4
+ var chunkU4PWVSCT_cjs = require('./chunk-U4PWVSCT.cjs');
5
+ var chunk5YGUBXXH_cjs = require('./chunk-5YGUBXXH.cjs');
6
6
  var chunkZWFMFOGP_cjs = require('./chunk-ZWFMFOGP.cjs');
7
7
  var client = require('@arbidocs/client');
8
8
  var react = require('react');
@@ -708,6 +708,194 @@ function createArbiChatStore({
708
708
  };
709
709
  }
710
710
 
711
+ // src/session/documents.ts
712
+ var VIEWER_TABS = [
713
+ "pdf",
714
+ "edit",
715
+ "html",
716
+ "docx",
717
+ "xlsx",
718
+ "versions",
719
+ "preview"
720
+ ];
721
+ var DEFAULT_DOCUMENT_VIEWER_STATE = {
722
+ tab: "pdf",
723
+ compareId: null,
724
+ tabRequest: null,
725
+ textScale: 1,
726
+ phonePdfChosen: false,
727
+ commentTarget: null,
728
+ unsavedChanges: false,
729
+ detached: false
730
+ };
731
+ var NO_PASSAGE_CITATION = {
732
+ active: null,
733
+ highlighted: [],
734
+ picked: [],
735
+ unpicked: []
736
+ };
737
+ var EMPTY_DOCUMENT_STATE = {
738
+ viewingDocument: null,
739
+ documentViewer: DEFAULT_DOCUMENT_VIEWER_STATE,
740
+ selectedDocumentIds: [],
741
+ documentsToSelect: null,
742
+ pinnedDocumentId: null,
743
+ relatedDocuments: /* @__PURE__ */ new Map(),
744
+ draftDocuments: {},
745
+ passageCitation: NO_PASSAGE_CITATION
746
+ };
747
+ var DRAFT_TITLES = {
748
+ text: "New Doc",
749
+ audio: "New Audio",
750
+ photo: "New Photo",
751
+ video: "New Video"
752
+ };
753
+ function nextViewingDocument(current, input) {
754
+ if (!input) return null;
755
+ const same = current?.id === input.id;
756
+ return {
757
+ id: input.id,
758
+ page: input.page !== void 0 ? input.page : same ? current?.page ?? null : null,
759
+ passageId: input.passageId !== void 0 ? input.passageId : current?.passageId ?? null
760
+ };
761
+ }
762
+ var isRecord3 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
763
+ var isPage = (value) => typeof value === "number" && Number.isInteger(value) && value >= 1;
764
+ function parseSavedDocuments(saved) {
765
+ if (!isRecord3(saved) || saved.version !== 1) return null;
766
+ const viewing = isRecord3(saved.viewingDocument) ? saved.viewingDocument : null;
767
+ return {
768
+ version: 1,
769
+ viewingDocument: viewing && typeof viewing.id === "string" && viewing.id ? { id: viewing.id, page: isPage(viewing.page) ? viewing.page : null } : null,
770
+ pinnedDocumentId: typeof saved.pinnedDocumentId === "string" ? saved.pinnedDocumentId : null,
771
+ tab: VIEWER_TABS.includes(saved.tab) ? saved.tab : DEFAULT_DOCUMENT_VIEWER_STATE.tab,
772
+ textScale: typeof saved.textScale === "number" && Number.isFinite(saved.textScale) && saved.textScale > 0 ? saved.textScale : DEFAULT_DOCUMENT_VIEWER_STATE.textScale
773
+ };
774
+ }
775
+ function savedDocumentsOf(state) {
776
+ return {
777
+ version: 1,
778
+ viewingDocument: state.viewingDocument ? { id: state.viewingDocument.id, page: state.viewingDocument.page } : null,
779
+ pinnedDocumentId: state.pinnedDocumentId,
780
+ tab: state.documentViewer.tab,
781
+ textScale: state.documentViewer.textScale
782
+ };
783
+ }
784
+ function restoreSavedDocuments(base, saved) {
785
+ return {
786
+ ...base,
787
+ viewingDocument: saved.viewingDocument ? { id: saved.viewingDocument.id, page: saved.viewingDocument.page, passageId: null } : null,
788
+ pinnedDocumentId: saved.pinnedDocumentId,
789
+ documentViewer: { ...base.documentViewer, tab: saved.tab, textScale: saved.textScale }
790
+ };
791
+ }
792
+ function createArbiDocumentSessionStore({
793
+ initial = {},
794
+ persist,
795
+ showViewer
796
+ } = {}) {
797
+ let state = { ...EMPTY_DOCUMENT_STATE, ...initial };
798
+ if (persist) {
799
+ const saved = parseSavedDocuments(persist.load());
800
+ if (saved) state = restoreSavedDocuments(state, saved);
801
+ }
802
+ const listeners = /* @__PURE__ */ new Set();
803
+ const update = (patch) => {
804
+ const previous = state;
805
+ state = { ...state, ...patch };
806
+ if (persist && (state.viewingDocument !== previous.viewingDocument || state.pinnedDocumentId !== previous.pinnedDocumentId || state.documentViewer.tab !== previous.documentViewer.tab || state.documentViewer.textScale !== previous.documentViewer.textScale))
807
+ persist.save(savedDocumentsOf(state));
808
+ listeners.forEach((listener) => listener());
809
+ };
810
+ const setDocumentViewer = (change) => {
811
+ const next = { ...state.documentViewer, ...change };
812
+ const keys = Object.keys(change);
813
+ if (keys.some((key) => next[key] !== state.documentViewer[key]))
814
+ update({ documentViewer: next });
815
+ };
816
+ const updateDraft = (id, change) => {
817
+ const draft = state.draftDocuments[id];
818
+ if (draft) update({ draftDocuments: { ...state.draftDocuments, [id]: change(draft) } });
819
+ };
820
+ return {
821
+ getState: () => state,
822
+ subscribe: (listener) => {
823
+ listeners.add(listener);
824
+ return () => listeners.delete(listener);
825
+ },
826
+ setViewingDocument: (input) => update({ viewingDocument: nextViewingDocument(state.viewingDocument, input) }),
827
+ setDocumentViewer,
828
+ setSelectedDocumentIds: (ids) => update({ selectedDocumentIds: ids }),
829
+ setDocumentsToSelect: (ids) => update({ documentsToSelect: ids }),
830
+ setPinnedDocumentId: (pinnedDocumentId) => update({ pinnedDocumentId }),
831
+ setRelatedDocuments: (relatedDocuments) => update({ relatedDocuments }),
832
+ setPassageCitation: (change) => update({ passageCitation: { ...state.passageCitation, ...change } }),
833
+ showNewDocument: (documentId, tab) => {
834
+ update({
835
+ viewingDocument: { id: documentId, page: null, passageId: null },
836
+ documentViewer: tab ? { ...state.documentViewer, tab } : state.documentViewer
837
+ });
838
+ showViewer?.();
839
+ },
840
+ startDraftDocument: (kind) => {
841
+ const id = `draft-${crypto.randomUUID()}`;
842
+ const draft = {
843
+ id,
844
+ title: DRAFT_TITLES[kind],
845
+ kind,
846
+ content: "",
847
+ mediaBlob: null,
848
+ createdAt: (/* @__PURE__ */ new Date()).toISOString()
849
+ };
850
+ update({
851
+ draftDocuments: { ...state.draftDocuments, [id]: draft },
852
+ viewingDocument: { id, page: null, passageId: null },
853
+ // A text draft is written in the editor; a capture's recorder replaces the tabs.
854
+ documentViewer: kind === "text" ? { ...state.documentViewer, tab: "edit" } : state.documentViewer
855
+ });
856
+ showViewer?.();
857
+ return id;
858
+ },
859
+ updateDraftDocument: (id, change) => updateDraft(id, (draft) => ({ ...draft, ...change })),
860
+ setDraftDocumentKind: (id, kind) => updateDraft(id, (draft) => ({
861
+ ...draft,
862
+ kind,
863
+ mediaBlob: null,
864
+ title: Object.values(DRAFT_TITLES).includes(draft.title) ? DRAFT_TITLES[kind] : draft.title
865
+ })),
866
+ clearDraftDocument: (id) => {
867
+ if (!(id in state.draftDocuments)) return;
868
+ const rest = { ...state.draftDocuments };
869
+ delete rest[id];
870
+ update({ draftDocuments: rest });
871
+ },
872
+ leave: () => update({
873
+ viewingDocument: null,
874
+ selectedDocumentIds: [],
875
+ documentsToSelect: null,
876
+ pinnedDocumentId: null,
877
+ relatedDocuments: /* @__PURE__ */ new Map(),
878
+ passageCitation: NO_PASSAGE_CITATION,
879
+ documentViewer: {
880
+ ...state.documentViewer,
881
+ compareId: null,
882
+ tabRequest: null,
883
+ commentTarget: null,
884
+ unsavedChanges: false,
885
+ detached: false
886
+ }
887
+ }),
888
+ reset: () => update({
889
+ ...EMPTY_DOCUMENT_STATE,
890
+ relatedDocuments: /* @__PURE__ */ new Map(),
891
+ documentViewer: {
892
+ ...DEFAULT_DOCUMENT_VIEWER_STATE,
893
+ textScale: state.documentViewer.textScale
894
+ }
895
+ })
896
+ };
897
+ }
898
+
711
899
  // src/session/layout.ts
712
900
  var PANEL_MODES = ["main", "docked", "overlay", "popout"];
713
901
  var defaultPinned = () => typeof window === "undefined" || window.innerWidth >= 640;
@@ -733,22 +921,22 @@ function defaultLayoutState() {
733
921
  grid: { states: {}, rowHeights: {}, labelWidths: {}, savedViews: {} }
734
922
  };
735
923
  }
736
- var isRecord3 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
737
- var recordOf2 = (value, keep) => isRecord3(value) ? Object.fromEntries(Object.entries(value).filter(([, v]) => keep(v))) : {};
924
+ var isRecord4 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
925
+ var recordOf2 = (value, keep) => isRecord4(value) ? Object.fromEntries(Object.entries(value).filter(([, v]) => keep(v))) : {};
738
926
  var isString2 = (v) => typeof v === "string";
739
927
  var isNumber = (v) => typeof v === "number" && Number.isFinite(v);
740
928
  var isAny = (v) => v !== void 0;
741
929
  var isMode = (v) => PANEL_MODES.includes(v);
742
- var isSize = (v) => isRecord3(v) && isNumber(v.width) && isNumber(v.height);
930
+ var isSize = (v) => isRecord4(v) && isNumber(v.width) && isNumber(v.height);
743
931
  var isList = (v) => Array.isArray(v);
744
932
  var stringOrNull3 = (v) => isString2(v) ? v : null;
745
933
  function parseSavedLayout(saved) {
746
- if (!isRecord3(saved) || saved.version !== 1) return null;
747
- const shell = isRecord3(saved.shell) ? saved.shell : {};
748
- const panels = isRecord3(shell.panels) ? shell.panels : {};
749
- const tabs = isRecord3(saved.tabs) ? saved.tabs : {};
750
- const views = isRecord3(saved.views) ? saved.views : {};
751
- const grid = isRecord3(saved.grid) ? saved.grid : {};
934
+ if (!isRecord4(saved) || saved.version !== 1) return null;
935
+ const shell = isRecord4(saved.shell) ? saved.shell : {};
936
+ const panels = isRecord4(shell.panels) ? shell.panels : {};
937
+ const tabs = isRecord4(saved.tabs) ? saved.tabs : {};
938
+ const views = isRecord4(saved.views) ? saved.views : {};
939
+ const grid = isRecord4(saved.grid) ? saved.grid : {};
752
940
  const defaults = defaultLayoutState();
753
941
  return {
754
942
  version: 1,
@@ -770,7 +958,7 @@ function parseSavedLayout(saved) {
770
958
  values: recordOf2(views.values, isAny)
771
959
  },
772
960
  grid: {
773
- states: recordOf2(grid.states, isRecord3),
961
+ states: recordOf2(grid.states, isRecord4),
774
962
  rowHeights: recordOf2(grid.rowHeights, isNumber),
775
963
  labelWidths: recordOf2(grid.labelWidths, isNumber),
776
964
  savedViews: recordOf2(grid.savedViews, isList)
@@ -1097,19 +1285,6 @@ function readWorkspaceLastOpened(lastOpenedKey = WORKSPACE_LAST_OPENED_KEY) {
1097
1285
  }
1098
1286
 
1099
1287
  // src/session/store.ts
1100
- var DEFAULT_DOCUMENT_VIEWER_STATE = {
1101
- tab: "pdf",
1102
- compareId: null,
1103
- tabRequest: null,
1104
- textScale: 1,
1105
- phonePdfChosen: false
1106
- };
1107
- var EMPTY_DOCUMENT_STATE = {
1108
- viewingDocument: null,
1109
- documentViewer: DEFAULT_DOCUMENT_VIEWER_STATE,
1110
- selectedDocumentIds: [],
1111
- pinnedDocumentId: null
1112
- };
1113
1288
  var EMPTY_SESSION_STATE = {
1114
1289
  workspaceId: null,
1115
1290
  workspaceStatus: "closed",
@@ -1121,40 +1296,6 @@ var selectViewingDocumentId = (state) => state.viewingDocument ? chunkZWFMFOGP_c
1121
1296
  var conversationKey = (state) => state.conversationId ?? "new";
1122
1297
  var selectDraft = (state) => state.drafts[conversationKey(state)] ?? "";
1123
1298
  var selectIsGenerating = (conversationId) => (state) => !!conversationId && !!state.generating[conversationId]?.isGenerating;
1124
- function nextViewingDocument(current, input) {
1125
- if (!input) return null;
1126
- const same = current?.id === input.id;
1127
- return {
1128
- id: input.id,
1129
- page: input.page !== void 0 ? input.page : same ? current?.page ?? null : null,
1130
- passageId: input.passageId !== void 0 ? input.passageId : current?.passageId ?? null
1131
- };
1132
- }
1133
- function createArbiDocumentSessionStore(initial = {}) {
1134
- let state = { ...EMPTY_DOCUMENT_STATE, ...initial };
1135
- const listeners = /* @__PURE__ */ new Set();
1136
- const update = (patch) => {
1137
- state = { ...state, ...patch };
1138
- listeners.forEach((listener) => listener());
1139
- };
1140
- return {
1141
- getState: () => state,
1142
- subscribe: (listener) => {
1143
- listeners.add(listener);
1144
- return () => listeners.delete(listener);
1145
- },
1146
- setViewingDocument: (input) => update({ viewingDocument: nextViewingDocument(state.viewingDocument, input) }),
1147
- setDocumentViewer: (change) => {
1148
- const next = { ...state.documentViewer, ...change };
1149
- const keys = Object.keys(change);
1150
- if (keys.some((key) => next[key] !== state.documentViewer[key]))
1151
- update({ documentViewer: next });
1152
- },
1153
- setSelectedDocumentIds: (ids) => update({ selectedDocumentIds: ids }),
1154
- setPinnedDocumentId: (pinnedDocumentId) => update({ pinnedDocumentId }),
1155
- leave: () => update({ viewingDocument: null, selectedDocumentIds: [], pinnedDocumentId: null })
1156
- };
1157
- }
1158
1299
  function layoutActionsOf(layout) {
1159
1300
  const actions = { ...layout };
1160
1301
  delete actions.getLayout;
@@ -1179,6 +1320,14 @@ function chatActionsOf(chat) {
1179
1320
  delete actions.reset;
1180
1321
  return actions;
1181
1322
  }
1323
+ function documentActionsOf(documents) {
1324
+ const actions = { ...documents };
1325
+ delete actions.getState;
1326
+ delete actions.subscribe;
1327
+ delete actions.leave;
1328
+ delete actions.reset;
1329
+ return actions;
1330
+ }
1182
1331
  function composeArbiSessionStore({
1183
1332
  layout,
1184
1333
  workspace,
@@ -1203,6 +1352,7 @@ function composeArbiSessionStore({
1203
1352
  return {
1204
1353
  ...layoutActionsOf(layout),
1205
1354
  ...chatActionsOf(chat),
1355
+ ...documentActionsOf(documents),
1206
1356
  getState,
1207
1357
  layoutHydrated: () => layout.hydrated(),
1208
1358
  isLayoutHydrated: () => layout.isHydrated(),
@@ -1225,11 +1375,7 @@ function composeArbiSessionStore({
1225
1375
  workspace.setWorkspaceStatus("closed");
1226
1376
  chat.leave();
1227
1377
  documents.leave();
1228
- }),
1229
- setViewingDocument: (input) => documents.setViewingDocument(input),
1230
- setDocumentViewer: (change) => documents.setDocumentViewer(change),
1231
- setSelectedDocumentIds: (ids) => documents.setSelectedDocumentIds(ids),
1232
- setPinnedDocumentId: (id) => documents.setPinnedDocumentId(id)
1378
+ })
1233
1379
  };
1234
1380
  }
1235
1381
  function createArbiSessionStore(initial = {}, {
@@ -1246,7 +1392,11 @@ function createArbiSessionStore(initial = {}, {
1246
1392
  viewingDocument,
1247
1393
  documentViewer,
1248
1394
  selectedDocumentIds,
1395
+ documentsToSelect,
1249
1396
  pinnedDocumentId,
1397
+ relatedDocuments,
1398
+ draftDocuments,
1399
+ passageCitation,
1250
1400
  ...chatInitial
1251
1401
  } = initial;
1252
1402
  delete chatInitial.workspaceId;
@@ -1257,9 +1407,21 @@ function createArbiSessionStore(initial = {}, {
1257
1407
  layout,
1258
1408
  workspace,
1259
1409
  chat: createArbiChatStore({ layout, draftStorage, initial: chatInitial }),
1260
- documents: createArbiDocumentSessionStore(
1261
- defined({ viewingDocument, documentViewer, selectedDocumentIds, pinnedDocumentId })
1262
- )
1410
+ documents: createArbiDocumentSessionStore({
1411
+ initial: defined({
1412
+ viewingDocument,
1413
+ documentViewer: documentViewer && {
1414
+ ...EMPTY_DOCUMENT_STATE.documentViewer,
1415
+ ...documentViewer
1416
+ },
1417
+ selectedDocumentIds,
1418
+ documentsToSelect,
1419
+ pinnedDocumentId,
1420
+ relatedDocuments,
1421
+ draftDocuments,
1422
+ passageCitation
1423
+ })
1424
+ })
1263
1425
  });
1264
1426
  }
1265
1427
  var SAVE_DELAY_MS = 500;
@@ -1613,7 +1775,7 @@ function isUsageMetered(usage, subscription) {
1613
1775
  function useWorkspaces(options) {
1614
1776
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1615
1777
  return reactQuery.useQuery({
1616
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.workspaces(),
1778
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.workspaces(),
1617
1779
  queryFn: () => arbi.workspaces.list(),
1618
1780
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn
1619
1781
  });
@@ -1621,7 +1783,7 @@ function useWorkspaces(options) {
1621
1783
  function useDocumentVersionList(docId, options) {
1622
1784
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1623
1785
  return reactQuery.useQuery({
1624
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.documentVersions(docId ?? ""),
1786
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.documentVersions(docId ?? ""),
1625
1787
  queryFn: () => arbi.documents.versions(docId),
1626
1788
  enabled: (options?.enabled ?? true) && !!docId && arbi.hasWorkspace
1627
1789
  });
@@ -1630,7 +1792,7 @@ function useConversations(workspaceId, options) {
1630
1792
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1631
1793
  const live = options?.live === true;
1632
1794
  return reactQuery.useQuery({
1633
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.conversations(workspaceId ?? ""),
1795
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.conversations(workspaceId ?? ""),
1634
1796
  queryFn: () => arbi.readInWorkspace(workspaceId, () => arbi.conversations.list()),
1635
1797
  enabled: (options?.enabled ?? true) && !!workspaceId && arbi.hasWorkspace,
1636
1798
  placeholderData: (previous) => previous,
@@ -1642,7 +1804,7 @@ function useConversations(workspaceId, options) {
1642
1804
  function useBuiltinCommands() {
1643
1805
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1644
1806
  const query = reactQuery.useQuery({
1645
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.assistantCommands(),
1807
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.assistantCommands(),
1646
1808
  queryFn: () => arbi.assistant.commands(),
1647
1809
  staleTime: 30 * 1e3,
1648
1810
  enabled: arbi.isLoggedIn
@@ -1653,7 +1815,7 @@ function useBuiltinCommands() {
1653
1815
  function useMessageDetails(messageId, options) {
1654
1816
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1655
1817
  return reactQuery.useQuery({
1656
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.messageDetails(messageId ?? ""),
1818
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.messageDetails(messageId ?? ""),
1657
1819
  queryFn: () => arbi.conversations.getMessage(messageId),
1658
1820
  enabled: (options?.enabled ?? true) && !!messageId && arbi.isLoggedIn
1659
1821
  });
@@ -1662,7 +1824,7 @@ function useConversationThreads(conversationId, options) {
1662
1824
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1663
1825
  const session = useArbiSessionStore();
1664
1826
  return reactQuery.useQuery({
1665
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.conversationThreads(conversationId ?? ""),
1827
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.conversationThreads(conversationId ?? ""),
1666
1828
  queryFn: () => arbi.conversations.getThreads(conversationId),
1667
1829
  enabled: (options?.enabled ?? true) && !!conversationId && arbi.hasWorkspace,
1668
1830
  staleTime: 2 * 60 * 1e3,
@@ -1683,7 +1845,7 @@ function useTags(workspaceId, options) {
1683
1845
  const workspace = workspaceId ?? (arbi.hasWorkspace ? arbi.getWorkspaceId() : "");
1684
1846
  const key = tagListKey(query);
1685
1847
  return reactQuery.useQuery({
1686
- queryKey: key ? chunkGQAXAZN7_cjs.arbiQueryKeys.tagList(workspace, key) : chunkGQAXAZN7_cjs.arbiQueryKeys.tags(workspace),
1848
+ queryKey: key ? chunkU4PWVSCT_cjs.arbiQueryKeys.tagList(workspace, key) : chunkU4PWVSCT_cjs.arbiQueryKeys.tags(workspace),
1687
1849
  // The request names the workspace (opened for this session first when it is not the current
1688
1850
  // one), so another workspace's tags can be listed and a switch cannot answer for it. The
1689
1851
  // current workspace's list is also read under the switch guard.
@@ -1698,7 +1860,7 @@ function useTags(workspaceId, options) {
1698
1860
  function useThumbnails(docIds, options) {
1699
1861
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1700
1862
  return reactQuery.useQuery({
1701
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.thumbnails(docIds),
1863
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.thumbnails(docIds),
1702
1864
  queryFn: () => arbi.documents.getThumbnails(docIds),
1703
1865
  enabled: (options?.enabled ?? true) && docIds.length > 0 && arbi.hasWorkspace,
1704
1866
  staleTime: 5 * 6e4
@@ -1707,7 +1869,7 @@ function useThumbnails(docIds, options) {
1707
1869
  function useParsedDocument(docId, stage = "final", options) {
1708
1870
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1709
1871
  return reactQuery.useQuery({
1710
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.parsedDoc(docId ?? "", stage),
1872
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.parsedDoc(docId ?? "", stage),
1711
1873
  queryFn: () => {
1712
1874
  const { docId: id, version } = chunkZWFMFOGP_cjs.parseVersionRef(docId);
1713
1875
  return arbi.documents.getParsedContent(
@@ -1728,7 +1890,7 @@ function useAssistantQuery() {
1728
1890
  function useAgents(options) {
1729
1891
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1730
1892
  return reactQuery.useQuery({
1731
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.agents(),
1893
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.agents(),
1732
1894
  queryFn: () => arbi.agents.list(),
1733
1895
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn
1734
1896
  });
@@ -1740,14 +1902,14 @@ function useDeleteAgents() {
1740
1902
  mutationFn: ({ agentExtIds }) => arbi.agents.delete(agentExtIds),
1741
1903
  onSuccess: (_result, { agentExtIds }) => {
1742
1904
  for (const id of agentExtIds) {
1743
- qc.removeQueries({ queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.agentConfig(id) });
1744
- qc.removeQueries({ queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.agentWorkspaces(id) });
1905
+ qc.removeQueries({ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.agentConfig(id) });
1906
+ qc.removeQueries({ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.agentWorkspaces(id) });
1745
1907
  }
1746
1908
  return Promise.all([
1747
- qc.invalidateQueries({ queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.agents() }),
1748
- qc.invalidateQueries({ queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.workflows() }),
1749
- qc.invalidateQueries({ queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.allConversations() }),
1750
- qc.invalidateQueries({ queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.configs() })
1909
+ qc.invalidateQueries({ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.agents() }),
1910
+ qc.invalidateQueries({ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.workflows() }),
1911
+ qc.invalidateQueries({ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.allConversations() }),
1912
+ qc.invalidateQueries({ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.configs() })
1751
1913
  ]);
1752
1914
  }
1753
1915
  });
@@ -1755,7 +1917,7 @@ function useDeleteAgents() {
1755
1917
  function useHealth(options) {
1756
1918
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1757
1919
  return reactQuery.useQuery({
1758
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.health(),
1920
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.health(),
1759
1921
  queryFn: () => arbi.health.check(),
1760
1922
  enabled: options?.enabled
1761
1923
  });
@@ -1763,7 +1925,7 @@ function useHealth(options) {
1763
1925
  function useAvailableModels(options) {
1764
1926
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1765
1927
  return reactQuery.useQuery({
1766
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.availableModels(),
1928
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.availableModels(),
1767
1929
  queryFn: () => arbi.health.models(),
1768
1930
  staleTime: Infinity,
1769
1931
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn
@@ -1772,7 +1934,7 @@ function useAvailableModels(options) {
1772
1934
  function useConfigs(options) {
1773
1935
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1774
1936
  return reactQuery.useQuery({
1775
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.configVersions(),
1937
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.configVersions(),
1776
1938
  queryFn: () => arbi.agentConfig.list(),
1777
1939
  enabled: options?.enabled ?? arbi.isLoggedIn
1778
1940
  });
@@ -1780,7 +1942,7 @@ function useConfigs(options) {
1780
1942
  function useConfig(configId, options) {
1781
1943
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1782
1944
  return reactQuery.useQuery({
1783
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.config(configId ?? ""),
1945
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.config(configId ?? ""),
1784
1946
  queryFn: () => arbi.agentConfig.get(configId),
1785
1947
  staleTime: 10 * 60 * 1e3,
1786
1948
  enabled: (options?.enabled ?? true) && !!configId && arbi.isLoggedIn
@@ -1789,7 +1951,7 @@ function useConfig(configId, options) {
1789
1951
  function useActivity(options) {
1790
1952
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1791
1953
  return reactQuery.useQuery({
1792
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.activity(),
1954
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.activity(),
1793
1955
  queryFn: () => arbi.dm.listActivity({ limit: options?.limit, offset: options?.offset }),
1794
1956
  enabled: options?.enabled ?? arbi.isLoggedIn
1795
1957
  });
@@ -1797,7 +1959,7 @@ function useActivity(options) {
1797
1959
  function useWorkspaceActivity(workspaceId, options) {
1798
1960
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1799
1961
  return reactQuery.useInfiniteQuery({
1800
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.workspaceActivity(workspaceId ?? ""),
1962
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.workspaceActivity(workspaceId ?? ""),
1801
1963
  queryFn: async ({ pageParam }) => {
1802
1964
  await options?.beforeFetch?.();
1803
1965
  return arbi.workspaces.activity(workspaceId, {
@@ -1813,7 +1975,7 @@ function useWorkspaceActivity(workspaceId, options) {
1813
1975
  function useProjects(options) {
1814
1976
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1815
1977
  return reactQuery.useQuery({
1816
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.projects(),
1978
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.projects(),
1817
1979
  queryFn: () => arbi.projects.list(),
1818
1980
  enabled: options?.enabled ?? arbi.isLoggedIn
1819
1981
  });
@@ -1821,7 +1983,7 @@ function useProjects(options) {
1821
1983
  function useProjectUsage(projectExtId, monthsBack = 0, options) {
1822
1984
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1823
1985
  const usage = reactQuery.useQuery({
1824
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.projectUsage(projectExtId ?? "", monthsBack),
1986
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.projectUsage(projectExtId ?? "", monthsBack),
1825
1987
  queryFn: () => arbi.projects.usage(projectExtId, monthsBack),
1826
1988
  enabled: (options?.enabled ?? true) && !!projectExtId && arbi.isLoggedIn
1827
1989
  });
@@ -1836,7 +1998,7 @@ function useProjectsUsage(projectExtIds, monthsBack = 0, options) {
1836
1998
  const projects = useProjects({ enabled: enabled && projectExtIds.length > 0 });
1837
1999
  const results = reactQuery.useQueries({
1838
2000
  queries: projectExtIds.map((id) => ({
1839
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.projectUsage(id, monthsBack),
2001
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.projectUsage(id, monthsBack),
1840
2002
  queryFn: () => arbi.projects.usage(id, monthsBack),
1841
2003
  enabled: enabled && !!id
1842
2004
  }))
@@ -1907,7 +2069,7 @@ function useProjectsUsage(projectExtIds, monthsBack = 0, options) {
1907
2069
  function useProjectInvoices(projectExtId, options) {
1908
2070
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1909
2071
  return reactQuery.useQuery({
1910
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.projectInvoices(projectExtId ?? ""),
2072
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.projectInvoices(projectExtId ?? ""),
1911
2073
  queryFn: () => arbi.projects.invoices(projectExtId),
1912
2074
  enabled: (options?.enabled ?? true) && !!projectExtId && arbi.isLoggedIn
1913
2075
  });
@@ -1915,7 +2077,7 @@ function useProjectInvoices(projectExtId, options) {
1915
2077
  function useCurrentUser(options) {
1916
2078
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1917
2079
  return reactQuery.useQuery({
1918
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.currentUser(),
2080
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.currentUser(),
1919
2081
  queryFn: () => arbi.user.me(),
1920
2082
  enabled: options?.enabled ?? arbi.isLoggedIn,
1921
2083
  refetchOnWindowFocus: true,
@@ -1925,7 +2087,7 @@ function useCurrentUser(options) {
1925
2087
  function useFirmPool(options) {
1926
2088
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1927
2089
  return reactQuery.useQuery({
1928
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.firmPool(),
2090
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.firmPool(),
1929
2091
  queryFn: () => arbi.firm.pool(),
1930
2092
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn,
1931
2093
  retry: false,
@@ -1944,7 +2106,7 @@ function useTopUpFirmPool() {
1944
2106
  return reactQuery.useMutation({
1945
2107
  mutationFn: (aiAddons) => arbi.firm.topUp(aiAddons),
1946
2108
  onSuccess: (result) => {
1947
- queryClient.setQueryData(chunkGQAXAZN7_cjs.arbiQueryKeys.firmPool(), result.pool);
2109
+ queryClient.setQueryData(chunkU4PWVSCT_cjs.arbiQueryKeys.firmPool(), result.pool);
1948
2110
  }
1949
2111
  });
1950
2112
  }
@@ -1966,7 +2128,7 @@ function useCanCreateProjects() {
1966
2128
  function useUserUsageToday(options) {
1967
2129
  const arbi = chunk5YGUBXXH_cjs.useArbi();
1968
2130
  return reactQuery.useQuery({
1969
- queryKey: chunkGQAXAZN7_cjs.arbiQueryKeys.userUsageToday(),
2131
+ queryKey: chunkU4PWVSCT_cjs.arbiQueryKeys.userUsageToday(),
1970
2132
  queryFn: () => arbi.user.usageToday(),
1971
2133
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn,
1972
2134
  refetchOnWindowFocus: true,
@@ -1977,6 +2139,7 @@ function useUserUsageToday(options) {
1977
2139
 
1978
2140
  exports.DEFAULT_DOCUMENT_VIEWER_STATE = DEFAULT_DOCUMENT_VIEWER_STATE;
1979
2141
  exports.EMPTY_CHAT_STATE = EMPTY_CHAT_STATE;
2142
+ exports.EMPTY_DOCUMENT_STATE = EMPTY_DOCUMENT_STATE;
1980
2143
  exports.EMPTY_SESSION_STATE = EMPTY_SESSION_STATE;
1981
2144
  exports.MAX_THREAD_TABS = MAX_THREAD_TABS;
1982
2145
  exports.MIN_QUEUED_MESSAGE_VISIBILITY_MS = MIN_QUEUED_MESSAGE_VISIBILITY_MS;
@@ -2008,11 +2171,14 @@ exports.nextViewingDocument = nextViewingDocument;
2008
2171
  exports.openPanelIn = openPanelIn;
2009
2172
  exports.panelPlace = panelPlace;
2010
2173
  exports.parseSavedChat = parseSavedChat;
2174
+ exports.parseSavedDocuments = parseSavedDocuments;
2011
2175
  exports.parseSavedLayout = parseSavedLayout;
2012
2176
  exports.queuedMessages = queuedMessages;
2013
2177
  exports.readWorkspaceLastOpened = readWorkspaceLastOpened;
2014
2178
  exports.restoreLayout = restoreLayout;
2179
+ exports.restoreSavedDocuments = restoreSavedDocuments;
2015
2180
  exports.savedChatOf = savedChatOf;
2181
+ exports.savedDocumentsOf = savedDocumentsOf;
2016
2182
  exports.savedLayoutOf = savedLayoutOf;
2017
2183
  exports.selectDraft = selectDraft;
2018
2184
  exports.selectIsGenerating = selectIsGenerating;
@@ -2053,5 +2219,5 @@ exports.useTransientView = useTransientView;
2053
2219
  exports.useUserUsageToday = useUserUsageToday;
2054
2220
  exports.useWorkspaceActivity = useWorkspaceActivity;
2055
2221
  exports.useWorkspaces = useWorkspaces;
2056
- //# sourceMappingURL=chunk-6RSVGLQY.cjs.map
2057
- //# sourceMappingURL=chunk-6RSVGLQY.cjs.map
2222
+ //# sourceMappingURL=chunk-UHXU5MHV.cjs.map
2223
+ //# sourceMappingURL=chunk-UHXU5MHV.cjs.map