@arbidocs/blocks 0.4.33 → 0.4.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/agents/index.cjs +225 -225
  2. package/dist/agents/index.js +6 -6
  3. package/dist/chat/index.cjs +66 -66
  4. package/dist/chat/index.js +2 -2
  5. package/dist/{chunk-PXFJDX2C.js → chunk-4WWM3GQ5.js} +4 -3
  6. package/dist/chunk-4WWM3GQ5.js.map +1 -0
  7. package/dist/{chunk-6DNYPLCD.cjs → chunk-7RGLTF76.cjs} +4 -3
  8. package/dist/chunk-7RGLTF76.cjs.map +1 -0
  9. package/dist/{chunk-SEQWI6E4.cjs → chunk-AMXQQCCB.cjs} +21 -21
  10. package/dist/{chunk-SEQWI6E4.cjs.map → chunk-AMXQQCCB.cjs.map} +1 -1
  11. package/dist/{chunk-4AWS54US.js → chunk-CKB64Z4R.js} +4 -3
  12. package/dist/chunk-CKB64Z4R.js.map +1 -0
  13. package/dist/{chunk-C7FGONCM.js → chunk-DDW3M22Z.js} +5 -3
  14. package/dist/chunk-DDW3M22Z.js.map +1 -0
  15. package/dist/{chunk-6YVI74BC.js → chunk-JH25QIZW.js} +439 -12
  16. package/dist/chunk-JH25QIZW.js.map +1 -0
  17. package/dist/{chunk-AZ75JUIH.cjs → chunk-L7B4W4LA.cjs} +3 -3
  18. package/dist/{chunk-AZ75JUIH.cjs.map → chunk-L7B4W4LA.cjs.map} +1 -1
  19. package/dist/{chunk-VMCOH3AY.cjs → chunk-NUF2WGGF.cjs} +527 -96
  20. package/dist/chunk-NUF2WGGF.cjs.map +1 -0
  21. package/dist/{chunk-V6U5KVAR.js → chunk-PE7Z53RB.js} +3 -3
  22. package/dist/{chunk-V6U5KVAR.js.map → chunk-PE7Z53RB.js.map} +1 -1
  23. package/dist/{chunk-MZL67U2E.cjs → chunk-Q6LF7N3A.cjs} +5 -3
  24. package/dist/chunk-Q6LF7N3A.cjs.map +1 -0
  25. package/dist/{chunk-2QTT2RZE.cjs → chunk-YJQVLVBJ.cjs} +4 -3
  26. package/dist/chunk-YJQVLVBJ.cjs.map +1 -0
  27. package/dist/{chunk-6RXUMBTK.js → chunk-ZDA5CZPS.js} +6 -6
  28. package/dist/{chunk-6RXUMBTK.js.map → chunk-ZDA5CZPS.js.map} +1 -1
  29. package/dist/connect/docx.cjs +4 -4
  30. package/dist/connect/docx.js +1 -1
  31. package/dist/connect/index.cjs +1 -1
  32. package/dist/connect/index.js +1 -1
  33. package/dist/docx/NativeDocxEditor.d.ts +2 -2
  34. package/dist/docx/index.cjs +33 -30
  35. package/dist/docx/index.cjs.map +1 -1
  36. package/dist/docx/index.d.ts +2 -2
  37. package/dist/docx/index.js +3 -4
  38. package/dist/docx/index.js.map +1 -1
  39. package/dist/docx/review/DocxEditorReview.d.ts +16 -0
  40. package/dist/docx/review/index.d.ts +3 -0
  41. package/dist/docx/review/reviewModule.d.ts +6 -0
  42. package/dist/docx/review/useReview.d.ts +29 -0
  43. package/dist/facts/index.cjs +9 -9
  44. package/dist/facts/index.js +5 -5
  45. package/dist/files/index.cjs +3 -3
  46. package/dist/files/index.js +2 -2
  47. package/dist/home/index.cjs +1 -1
  48. package/dist/home/index.js +1 -1
  49. package/dist/index.cjs +648 -648
  50. package/dist/index.js +15 -15
  51. package/dist/settings/TriStateFilterMenu.d.ts +3 -1
  52. package/dist/settings/index.cjs +9 -9
  53. package/dist/settings/index.js +2 -2
  54. package/dist/shell/FilterInput.d.ts +3 -1
  55. package/dist/shell/TabHeader.d.ts +2 -0
  56. package/dist/shell/index.cjs +8 -8
  57. package/dist/shell/index.js +3 -3
  58. package/dist/studio/index.cjs +1 -1
  59. package/dist/studio/index.js +1 -1
  60. package/package.json +9 -13
  61. package/src/docx/styles.css +488 -43
  62. package/dist/chunk-2QTT2RZE.cjs.map +0 -1
  63. package/dist/chunk-4AWS54US.js.map +0 -1
  64. package/dist/chunk-6DNYPLCD.cjs.map +0 -1
  65. package/dist/chunk-6YVI74BC.js.map +0 -1
  66. package/dist/chunk-C7FGONCM.js.map +0 -1
  67. package/dist/chunk-MZL67U2E.cjs.map +0 -1
  68. package/dist/chunk-PXFJDX2C.js.map +0 -1
  69. package/dist/chunk-VMCOH3AY.cjs.map +0 -1
@@ -2,7 +2,7 @@
2
2
  'use strict';
3
3
 
4
4
  var chunkTLQQV7WW_cjs = require('../chunk-TLQQV7WW.cjs');
5
- var chunkVMCOH3AY_cjs = require('../chunk-VMCOH3AY.cjs');
5
+ var chunkNUF2WGGF_cjs = require('../chunk-NUF2WGGF.cjs');
6
6
  require('../chunk-7UTB4PHM.cjs');
7
7
  require('../chunk-MHVNT4J3.cjs');
8
8
  var react$1 = require('react');
@@ -15,7 +15,7 @@ function ConnectedNativeDocxEditor({
15
15
  ...props
16
16
  }) {
17
17
  const adapter = useConnectedNativeDocxAdapter(fontBaseUrl);
18
- return /* @__PURE__ */ jsxRuntime.jsx(chunkVMCOH3AY_cjs.NativeDocxEditor, { ...props, adapter });
18
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkNUF2WGGF_cjs.NativeDocxEditor, { ...props, adapter });
19
19
  }
20
20
  function useConnectedNativeDocxAdapter(fontBaseUrl = "/native-docx/fonts") {
21
21
  const arbi = react.useArbi();
@@ -44,7 +44,7 @@ function useConnectedNativeDocxAdapter(fontBaseUrl = "/native-docx/fonts") {
44
44
  headers: { "Content-Type": "application/json" },
45
45
  body: JSON.stringify({ state })
46
46
  })).json(),
47
- loadFonts: () => chunkVMCOH3AY_cjs.loadDocxFonts(fontBaseUrl),
47
+ loadFonts: () => chunkNUF2WGGF_cjs.loadDocxFonts(fontBaseUrl),
48
48
  baseUrl: apiUrl,
49
49
  author: user?.name || "You",
50
50
  onVersionSaved: async (id) => {
@@ -95,7 +95,7 @@ function ConnectedStreamedWordArtifact({
95
95
  ...props
96
96
  }) {
97
97
  const adapter = useConnectedNativeDocxAdapter(fontBaseUrl);
98
- return /* @__PURE__ */ jsxRuntime.jsx(chunkVMCOH3AY_cjs.StreamedWordArtifact, { ...props, adapter });
98
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkNUF2WGGF_cjs.StreamedWordArtifact, { ...props, adapter });
99
99
  }
100
100
 
101
101
  exports.ConnectedNativeDocxEditor = ConnectedNativeDocxEditor;
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { useConnection } from '../chunk-EHXSBH6U.js';
3
- import { NativeDocxEditor, loadDocxFonts, StreamedWordArtifact } from '../chunk-6YVI74BC.js';
3
+ import { NativeDocxEditor, loadDocxFonts, StreamedWordArtifact } from '../chunk-JH25QIZW.js';
4
4
  import '../chunk-AA3PT6KR.js';
5
5
  import '../chunk-7F6CBP3Z.js';
6
6
  import { useMemo } from 'react';
@@ -3,8 +3,8 @@
3
3
 
4
4
  var chunkM2YGPC5N_cjs = require('../chunk-M2YGPC5N.cjs');
5
5
  var chunkVUEZARW5_cjs = require('../chunk-VUEZARW5.cjs');
6
- require('../chunk-ADOKTJHV.cjs');
7
6
  var chunkQVBZESYQ_cjs = require('../chunk-QVBZESYQ.cjs');
7
+ require('../chunk-ADOKTJHV.cjs');
8
8
  var chunkDLVX6R6B_cjs = require('../chunk-DLVX6R6B.cjs');
9
9
  require('../chunk-VGOFFCMT.cjs');
10
10
  require('../chunk-PPCATBOY.cjs');
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  export { ConnectedAssistantDock, redlineStats, textToArtifact, toRedlineMarkdown, useConnectedAiTask, useConnectedChat, useSemanticSearch, useWorkspaceDocs } from '../chunk-24KQJYSB.js';
3
3
  import { SettingsSection, ProfileCard, AvatarPicker, SettingsCard, SettingsActionRow, PasswordChangeDialog, EMAIL_NOTIFICATION_KEYS, EMAIL_NOTIFICATION_CATEGORIES, NotificationCategoryList, toNotificationCategories, toActiveSessionViews, SettingsRow, ActiveSessionsDialog, LogoutDialog, toLogoutSessionViews, SettingsDangerZone, DeleteAccountDialog, toDeleteBlockerViews } from '../chunk-VZGBCBYB.js';
4
- import '../chunk-VILAPTCB.js';
5
4
  import { StreamedArtifactFrame } from '../chunk-LOJVUGBJ.js';
5
+ import '../chunk-VILAPTCB.js';
6
6
  import { ChatPage } from '../chunk-XWEJ5LV2.js';
7
7
  import '../chunk-KZJAG7T3.js';
8
8
  import '../chunk-NPLYHR2E.js';
@@ -1,7 +1,7 @@
1
1
  import { type DocxMention, type DocxAgentCommentRequest, type DocxMentionDelivery, type DocxAgentRunStatus } from './DocxMentions';
2
2
  import React from 'react';
3
3
  import { type FontConfiguration } from '@docx-editor.dev/react';
4
- import { type DocumentCollaborationSession } from '@docx-editor.dev/pro/collaboration';
4
+ import type { DocxCollaborationSession } from '@arbidocs/coedit';
5
5
  /** Host integration: no application store, router, or authentication singleton is required. */
6
6
  export interface NativeDocxAdapter {
7
7
  request: (path: string, options?: RequestInit) => Promise<Response>;
@@ -50,7 +50,7 @@ export interface NativeDocxEditorProps {
50
50
  };
51
51
  }
52
52
  export declare function DocxParticipants({ session }: {
53
- session?: DocumentCollaborationSession;
53
+ session?: DocxCollaborationSession;
54
54
  }): React.JSX.Element;
55
55
  export declare function DocxRibbon({ onSave }: {
56
56
  onSave: () => void;
@@ -1,13 +1,12 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkVMCOH3AY_cjs = require('../chunk-VMCOH3AY.cjs');
4
+ var chunkNUF2WGGF_cjs = require('../chunk-NUF2WGGF.cjs');
5
5
  require('../chunk-7UTB4PHM.cjs');
6
6
  require('../chunk-MHVNT4J3.cjs');
7
7
  var react = require('@docx-editor.dev/react');
8
- var react$1 = require('@docx-editor.dev/pro/react');
9
- var hocuspocus = require('@docx-editor.dev/pro/collaboration/hocuspocus');
10
- var react$2 = require('react');
8
+ var hocuspocus = require('@arbidocs/coedit/hocuspocus');
9
+ var react$1 = require('react');
11
10
  var jsxRuntime = require('react/jsx-runtime');
12
11
 
13
12
  function NativeDocxComparison({
@@ -17,12 +16,12 @@ function NativeDocxComparison({
17
16
  title,
18
17
  onCompared
19
18
  }) {
20
- const host = react$2.useRef({ adapter, onCompared });
19
+ const host = react$1.useRef({ adapter, onCompared });
21
20
  host.current = { adapter, onCompared };
22
- const [documentId, setDocumentId] = react$2.useState("");
23
- const [error, setError] = react$2.useState("");
24
- const [attempt, setAttempt] = react$2.useState(0);
25
- react$2.useEffect(() => {
21
+ const [documentId, setDocumentId] = react$1.useState("");
22
+ const [error, setError] = react$1.useState("");
23
+ const [attempt, setAttempt] = react$1.useState(0);
24
+ react$1.useEffect(() => {
26
25
  let cancelled = false;
27
26
  setDocumentId("");
28
27
  setError("");
@@ -49,7 +48,7 @@ function NativeDocxComparison({
49
48
  if (!documentId)
50
49
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "native-docx-error", role: "status", children: "Comparing Word documents\u2026" });
51
50
  return /* @__PURE__ */ jsxRuntime.jsx(
52
- chunkVMCOH3AY_cjs.NativeDocxEditor,
51
+ chunkNUF2WGGF_cjs.NativeDocxEditor,
53
52
  {
54
53
  adapter,
55
54
  documentId,
@@ -61,59 +60,63 @@ function NativeDocxComparison({
61
60
 
62
61
  Object.defineProperty(exports, "DocxCommentActivity", {
63
62
  enumerable: true,
64
- get: function () { return chunkVMCOH3AY_cjs.DocxCommentActivity; }
63
+ get: function () { return chunkNUF2WGGF_cjs.DocxCommentActivity; }
64
+ });
65
+ Object.defineProperty(exports, "DocxEditorReview", {
66
+ enumerable: true,
67
+ get: function () { return chunkNUF2WGGF_cjs.DocxEditorReview; }
65
68
  });
66
69
  Object.defineProperty(exports, "DocxMentions", {
67
70
  enumerable: true,
68
- get: function () { return chunkVMCOH3AY_cjs.DocxMentions; }
71
+ get: function () { return chunkNUF2WGGF_cjs.DocxMentions; }
69
72
  });
70
73
  Object.defineProperty(exports, "DocxParticipants", {
71
74
  enumerable: true,
72
- get: function () { return chunkVMCOH3AY_cjs.DocxParticipants; }
75
+ get: function () { return chunkNUF2WGGF_cjs.DocxParticipants; }
73
76
  });
74
77
  Object.defineProperty(exports, "DocxRibbon", {
75
78
  enumerable: true,
76
- get: function () { return chunkVMCOH3AY_cjs.DocxRibbon; }
79
+ get: function () { return chunkNUF2WGGF_cjs.DocxRibbon; }
77
80
  });
78
81
  Object.defineProperty(exports, "NativeDocxEditor", {
79
82
  enumerable: true,
80
- get: function () { return chunkVMCOH3AY_cjs.NativeDocxEditor; }
83
+ get: function () { return chunkNUF2WGGF_cjs.NativeDocxEditor; }
81
84
  });
82
85
  Object.defineProperty(exports, "StreamedWordArtifact", {
83
86
  enumerable: true,
84
- get: function () { return chunkVMCOH3AY_cjs.StreamedWordArtifact; }
87
+ get: function () { return chunkNUF2WGGF_cjs.StreamedWordArtifact; }
85
88
  });
86
89
  Object.defineProperty(exports, "loadDocxFonts", {
87
90
  enumerable: true,
88
- get: function () { return chunkVMCOH3AY_cjs.loadDocxFonts; }
91
+ get: function () { return chunkNUF2WGGF_cjs.loadDocxFonts; }
89
92
  });
90
93
  Object.defineProperty(exports, "normalizeDocxExport", {
91
94
  enumerable: true,
92
- get: function () { return chunkVMCOH3AY_cjs.normalizeDocxExport; }
95
+ get: function () { return chunkNUF2WGGF_cjs.normalizeDocxExport; }
93
96
  });
94
- Object.defineProperty(exports, "DocxEditor", {
97
+ Object.defineProperty(exports, "reviewModule", {
95
98
  enumerable: true,
96
- get: function () { return react.DocxEditor; }
99
+ get: function () { return chunkNUF2WGGF_cjs.reviewModule; }
97
100
  });
98
- Object.defineProperty(exports, "useDocxEditor", {
101
+ Object.defineProperty(exports, "useReview", {
99
102
  enumerable: true,
100
- get: function () { return react.useDocxEditor; }
103
+ get: function () { return chunkNUF2WGGF_cjs.useReview; }
101
104
  });
102
- Object.defineProperty(exports, "useEditorState", {
105
+ Object.defineProperty(exports, "useReviewItem", {
103
106
  enumerable: true,
104
- get: function () { return react.useEditorState; }
107
+ get: function () { return chunkNUF2WGGF_cjs.useReviewItem; }
105
108
  });
106
- Object.defineProperty(exports, "DocxEditorReview", {
109
+ Object.defineProperty(exports, "DocxEditor", {
107
110
  enumerable: true,
108
- get: function () { return react$1.DocxEditorReview; }
111
+ get: function () { return react.DocxEditor; }
109
112
  });
110
- Object.defineProperty(exports, "useReview", {
113
+ Object.defineProperty(exports, "useDocxEditor", {
111
114
  enumerable: true,
112
- get: function () { return react$1.useReview; }
115
+ get: function () { return react.useDocxEditor; }
113
116
  });
114
- Object.defineProperty(exports, "useReviewItem", {
117
+ Object.defineProperty(exports, "useEditorState", {
115
118
  enumerable: true,
116
- get: function () { return react$1.useReviewItem; }
119
+ get: function () { return react.useEditorState; }
117
120
  });
118
121
  Object.defineProperty(exports, "createHocuspocusCollaboration", {
119
122
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/docx/NativeDocxComparison.tsx"],"names":["useRef","useState","useEffect","error","jsxs","jsx","NativeDocxEditor"],"mappings":"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","file":"index.cjs","sourcesContent":["import { useEffect, useRef, useState } from 'react'\nimport { NativeDocxEditor, type NativeDocxAdapter } from './NativeDocxEditor'\n\nexport interface NativeDocxComparisonProps {\n adapter: NativeDocxAdapter\n baseId: string\n revisedId: string\n title: string\n onCompared?: (documentId: string) => void | Promise<void>\n}\n\n/** Word comparison through the host's authenticated transport and LibreOffice service. */\nexport function NativeDocxComparison({\n adapter,\n baseId,\n revisedId,\n title,\n onCompared,\n}: NativeDocxComparisonProps) {\n const host = useRef({ adapter, onCompared })\n host.current = { adapter, onCompared }\n const [documentId, setDocumentId] = useState('')\n const [error, setError] = useState('')\n const [attempt, setAttempt] = useState(0)\n useEffect(() => {\n let cancelled = false\n setDocumentId('')\n setError('')\n const query = new URLSearchParams({ base_ext_id: baseId, revised_ext_id: revisedId })\n void host.current.adapter\n .request(`/redline?${query}`, { method: 'POST' })\n .then((response) => response.json())\n .then((result: { document_ext_id: string }) => {\n if (!result.document_ext_id) throw new Error('Comparison did not return a Word document.')\n if (!cancelled) {\n setDocumentId(result.document_ext_id)\n void Promise.resolve(host.current.onCompared?.(result.document_ext_id)).catch(() => {})\n }\n })\n .catch((error) => {\n if (!cancelled) setError(error instanceof Error ? error.message : String(error))\n })\n return () => {\n cancelled = true\n }\n }, [baseId, revisedId, attempt])\n if (error)\n return (\n <div className=\"native-docx-error\" role=\"alert\">\n <p>{error}</p>\n <button onClick={() => setAttempt((value) => value + 1)}>Retry comparison</button>\n </div>\n )\n if (!documentId)\n return (\n <div className=\"native-docx-error\" role=\"status\">\n Comparing Word documents…\n </div>\n )\n return (\n <NativeDocxEditor\n key={documentId}\n adapter={adapter}\n documentId={documentId}\n title={`${title.replace(/\\.[^.]+$/, '')} (redline).docx`}\n />\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/docx/NativeDocxComparison.tsx"],"names":["useRef","useState","useEffect","error","jsxs","jsx","NativeDocxEditor"],"mappings":"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","file":"index.cjs","sourcesContent":["import { useEffect, useRef, useState } from 'react'\nimport { NativeDocxEditor, type NativeDocxAdapter } from './NativeDocxEditor'\n\nexport interface NativeDocxComparisonProps {\n adapter: NativeDocxAdapter\n baseId: string\n revisedId: string\n title: string\n onCompared?: (documentId: string) => void | Promise<void>\n}\n\n/** Word comparison through the host's authenticated transport and LibreOffice service. */\nexport function NativeDocxComparison({\n adapter,\n baseId,\n revisedId,\n title,\n onCompared,\n}: NativeDocxComparisonProps) {\n const host = useRef({ adapter, onCompared })\n host.current = { adapter, onCompared }\n const [documentId, setDocumentId] = useState('')\n const [error, setError] = useState('')\n const [attempt, setAttempt] = useState(0)\n useEffect(() => {\n let cancelled = false\n setDocumentId('')\n setError('')\n const query = new URLSearchParams({ base_ext_id: baseId, revised_ext_id: revisedId })\n void host.current.adapter\n .request(`/redline?${query}`, { method: 'POST' })\n .then((response) => response.json())\n .then((result: { document_ext_id: string }) => {\n if (!result.document_ext_id) throw new Error('Comparison did not return a Word document.')\n if (!cancelled) {\n setDocumentId(result.document_ext_id)\n void Promise.resolve(host.current.onCompared?.(result.document_ext_id)).catch(() => {})\n }\n })\n .catch((error) => {\n if (!cancelled) setError(error instanceof Error ? error.message : String(error))\n })\n return () => {\n cancelled = true\n }\n }, [baseId, revisedId, attempt])\n if (error)\n return (\n <div className=\"native-docx-error\" role=\"alert\">\n <p>{error}</p>\n <button onClick={() => setAttempt((value) => value + 1)}>Retry comparison</button>\n </div>\n )\n if (!documentId)\n return (\n <div className=\"native-docx-error\" role=\"status\">\n Comparing Word documents…\n </div>\n )\n return (\n <NativeDocxEditor\n key={documentId}\n adapter={adapter}\n documentId={documentId}\n title={`${title.replace(/\\.[^.]+$/, '')} (redline).docx`}\n />\n )\n}\n"]}
@@ -3,8 +3,8 @@ export { DocxMentions, DocxCommentActivity } from './DocxMentions';
3
3
  export type { DocxMention, DocxAgentCommentRequest, DocxMentionDelivery, DocxAgentRunStatus, } from './DocxMentions';
4
4
  export type { NativeDocxAdapter, NativeDocxEditorProps } from './NativeDocxEditor';
5
5
  export { DocxEditor, useDocxEditor, useEditorState } from '@docx-editor.dev/react';
6
- export { DocxEditorReview, useReview, useReviewItem } from '@docx-editor.dev/pro/react';
7
- export { createHocuspocusCollaboration } from '@docx-editor.dev/pro/collaboration/hocuspocus';
6
+ export { DocxEditorReview, useReview, useReviewItem, reviewModule } from './review';
7
+ export { createHocuspocusCollaboration } from '@arbidocs/coedit/hocuspocus';
8
8
  export { loadDocxFonts } from './fonts';
9
9
  export { normalizeDocxExport } from './export';
10
10
  export { StreamedWordArtifact, type StreamedWordArtifactProps } from './StreamedWordArtifact';
@@ -1,11 +1,10 @@
1
1
  "use client";
2
- import { NativeDocxEditor } from '../chunk-6YVI74BC.js';
3
- export { DocxCommentActivity, DocxMentions, DocxParticipants, DocxRibbon, NativeDocxEditor, StreamedWordArtifact, loadDocxFonts, normalizeDocxExport } from '../chunk-6YVI74BC.js';
2
+ import { NativeDocxEditor } from '../chunk-JH25QIZW.js';
3
+ export { DocxCommentActivity, DocxEditorReview, DocxMentions, DocxParticipants, DocxRibbon, NativeDocxEditor, StreamedWordArtifact, loadDocxFonts, normalizeDocxExport, reviewModule, useReview, useReviewItem } from '../chunk-JH25QIZW.js';
4
4
  import '../chunk-AA3PT6KR.js';
5
5
  import '../chunk-7F6CBP3Z.js';
6
6
  export { DocxEditor, useDocxEditor, useEditorState } from '@docx-editor.dev/react';
7
- export { DocxEditorReview, useReview, useReviewItem } from '@docx-editor.dev/pro/react';
8
- export { createHocuspocusCollaboration } from '@docx-editor.dev/pro/collaboration/hocuspocus';
7
+ export { createHocuspocusCollaboration } from '@arbidocs/coedit/hocuspocus';
9
8
  import { useRef, useState, useEffect } from 'react';
10
9
  import { jsxs, jsx } from 'react/jsx-runtime';
11
10
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/docx/NativeDocxComparison.tsx"],"names":["error"],"mappings":";;;;;;;;;;AAYO,SAAS,oBAAA,CAAqB;AAAA,EACnC,OAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA8B;AAC5B,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,EAAE,OAAA,EAAS,YAAY,CAAA;AAC3C,EAAA,IAAA,CAAK,OAAA,GAAU,EAAE,OAAA,EAAS,UAAA,EAAW;AACrC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,EAAE,CAAA;AAC/C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,EAAE,CAAA;AACrC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,CAAC,CAAA;AACxC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,GAAY,KAAA;AAChB,IAAA,aAAA,CAAc,EAAE,CAAA;AAChB,IAAA,QAAA,CAAS,EAAE,CAAA;AACX,IAAA,MAAM,KAAA,GAAQ,IAAI,eAAA,CAAgB,EAAE,aAAa,MAAA,EAAQ,cAAA,EAAgB,WAAW,CAAA;AACpF,IAAA,KAAK,IAAA,CAAK,QAAQ,OAAA,CACf,OAAA,CAAQ,YAAY,KAAK,CAAA,CAAA,EAAI,EAAE,MAAA,EAAQ,MAAA,EAAQ,CAAA,CAC/C,IAAA,CAAK,CAAC,QAAA,KAAa,QAAA,CAAS,MAAM,CAAA,CAClC,IAAA,CAAK,CAAC,MAAA,KAAwC;AAC7C,MAAA,IAAI,CAAC,MAAA,CAAO,eAAA,EAAiB,MAAM,IAAI,MAAM,4CAA4C,CAAA;AACzF,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,aAAA,CAAc,OAAO,eAAe,CAAA;AACpC,QAAA,KAAK,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,OAAA,CAAQ,UAAA,GAAa,OAAO,eAAe,CAAC,CAAA,CAAE,KAAA,CAAM,MAAM;AAAA,QAAC,CAAC,CAAA;AAAA,MACxF;AAAA,IACF,CAAC,CAAA,CACA,KAAA,CAAM,CAACA,MAAAA,KAAU;AAChB,MAAA,IAAI,CAAC,WAAW,QAAA,CAASA,MAAAA,YAAiB,QAAQA,MAAAA,CAAM,OAAA,GAAU,MAAA,CAAOA,MAAK,CAAC,CAAA;AAAA,IACjF,CAAC,CAAA;AACH,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,IAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,SAAA,EAAW,OAAO,CAAC,CAAA;AAC/B,EAAA,IAAI,KAAA;AACF,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EAAoB,MAAK,OAAA,EACtC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,OAAG,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBACV,GAAA,CAAC,QAAA,EAAA,EAAO,OAAA,EAAS,MAAM,UAAA,CAAW,CAAC,KAAA,KAAU,KAAA,GAAQ,CAAC,CAAA,EAAG,QAAA,EAAA,kBAAA,EAAgB;AAAA,KAAA,EAC3E,CAAA;AAEJ,EAAA,IAAI,CAAC,UAAA;AACH,IAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EAAoB,IAAA,EAAK,UAAS,QAAA,EAAA,gCAAA,EAEjD,CAAA;AAEJ,EAAA,uBACE,GAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MAEC,OAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAO,CAAA,EAAG,KAAA,CAAM,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAC,CAAA,eAAA;AAAA,KAAA;AAAA,IAHlC;AAAA,GAIP;AAEJ","file":"index.js","sourcesContent":["import { useEffect, useRef, useState } from 'react'\nimport { NativeDocxEditor, type NativeDocxAdapter } from './NativeDocxEditor'\n\nexport interface NativeDocxComparisonProps {\n adapter: NativeDocxAdapter\n baseId: string\n revisedId: string\n title: string\n onCompared?: (documentId: string) => void | Promise<void>\n}\n\n/** Word comparison through the host's authenticated transport and LibreOffice service. */\nexport function NativeDocxComparison({\n adapter,\n baseId,\n revisedId,\n title,\n onCompared,\n}: NativeDocxComparisonProps) {\n const host = useRef({ adapter, onCompared })\n host.current = { adapter, onCompared }\n const [documentId, setDocumentId] = useState('')\n const [error, setError] = useState('')\n const [attempt, setAttempt] = useState(0)\n useEffect(() => {\n let cancelled = false\n setDocumentId('')\n setError('')\n const query = new URLSearchParams({ base_ext_id: baseId, revised_ext_id: revisedId })\n void host.current.adapter\n .request(`/redline?${query}`, { method: 'POST' })\n .then((response) => response.json())\n .then((result: { document_ext_id: string }) => {\n if (!result.document_ext_id) throw new Error('Comparison did not return a Word document.')\n if (!cancelled) {\n setDocumentId(result.document_ext_id)\n void Promise.resolve(host.current.onCompared?.(result.document_ext_id)).catch(() => {})\n }\n })\n .catch((error) => {\n if (!cancelled) setError(error instanceof Error ? error.message : String(error))\n })\n return () => {\n cancelled = true\n }\n }, [baseId, revisedId, attempt])\n if (error)\n return (\n <div className=\"native-docx-error\" role=\"alert\">\n <p>{error}</p>\n <button onClick={() => setAttempt((value) => value + 1)}>Retry comparison</button>\n </div>\n )\n if (!documentId)\n return (\n <div className=\"native-docx-error\" role=\"status\">\n Comparing Word documents…\n </div>\n )\n return (\n <NativeDocxEditor\n key={documentId}\n adapter={adapter}\n documentId={documentId}\n title={`${title.replace(/\\.[^.]+$/, '')} (redline).docx`}\n />\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/docx/NativeDocxComparison.tsx"],"names":["error"],"mappings":";;;;;;;;;AAYO,SAAS,oBAAA,CAAqB;AAAA,EACnC,OAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA8B;AAC5B,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,EAAE,OAAA,EAAS,YAAY,CAAA;AAC3C,EAAA,IAAA,CAAK,OAAA,GAAU,EAAE,OAAA,EAAS,UAAA,EAAW;AACrC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,EAAE,CAAA;AAC/C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,EAAE,CAAA;AACrC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,CAAC,CAAA;AACxC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,GAAY,KAAA;AAChB,IAAA,aAAA,CAAc,EAAE,CAAA;AAChB,IAAA,QAAA,CAAS,EAAE,CAAA;AACX,IAAA,MAAM,KAAA,GAAQ,IAAI,eAAA,CAAgB,EAAE,aAAa,MAAA,EAAQ,cAAA,EAAgB,WAAW,CAAA;AACpF,IAAA,KAAK,IAAA,CAAK,QAAQ,OAAA,CACf,OAAA,CAAQ,YAAY,KAAK,CAAA,CAAA,EAAI,EAAE,MAAA,EAAQ,MAAA,EAAQ,CAAA,CAC/C,IAAA,CAAK,CAAC,QAAA,KAAa,QAAA,CAAS,MAAM,CAAA,CAClC,IAAA,CAAK,CAAC,MAAA,KAAwC;AAC7C,MAAA,IAAI,CAAC,MAAA,CAAO,eAAA,EAAiB,MAAM,IAAI,MAAM,4CAA4C,CAAA;AACzF,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,aAAA,CAAc,OAAO,eAAe,CAAA;AACpC,QAAA,KAAK,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,OAAA,CAAQ,UAAA,GAAa,OAAO,eAAe,CAAC,CAAA,CAAE,KAAA,CAAM,MAAM;AAAA,QAAC,CAAC,CAAA;AAAA,MACxF;AAAA,IACF,CAAC,CAAA,CACA,KAAA,CAAM,CAACA,MAAAA,KAAU;AAChB,MAAA,IAAI,CAAC,WAAW,QAAA,CAASA,MAAAA,YAAiB,QAAQA,MAAAA,CAAM,OAAA,GAAU,MAAA,CAAOA,MAAK,CAAC,CAAA;AAAA,IACjF,CAAC,CAAA;AACH,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,IAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,SAAA,EAAW,OAAO,CAAC,CAAA;AAC/B,EAAA,IAAI,KAAA;AACF,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EAAoB,MAAK,OAAA,EACtC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,OAAG,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBACV,GAAA,CAAC,QAAA,EAAA,EAAO,OAAA,EAAS,MAAM,UAAA,CAAW,CAAC,KAAA,KAAU,KAAA,GAAQ,CAAC,CAAA,EAAG,QAAA,EAAA,kBAAA,EAAgB;AAAA,KAAA,EAC3E,CAAA;AAEJ,EAAA,IAAI,CAAC,UAAA;AACH,IAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EAAoB,IAAA,EAAK,UAAS,QAAA,EAAA,gCAAA,EAEjD,CAAA;AAEJ,EAAA,uBACE,GAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MAEC,OAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAO,CAAA,EAAG,KAAA,CAAM,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAC,CAAA,eAAA;AAAA,KAAA;AAAA,IAHlC;AAAA,GAIP;AAEJ","file":"index.js","sourcesContent":["import { useEffect, useRef, useState } from 'react'\nimport { NativeDocxEditor, type NativeDocxAdapter } from './NativeDocxEditor'\n\nexport interface NativeDocxComparisonProps {\n adapter: NativeDocxAdapter\n baseId: string\n revisedId: string\n title: string\n onCompared?: (documentId: string) => void | Promise<void>\n}\n\n/** Word comparison through the host's authenticated transport and LibreOffice service. */\nexport function NativeDocxComparison({\n adapter,\n baseId,\n revisedId,\n title,\n onCompared,\n}: NativeDocxComparisonProps) {\n const host = useRef({ adapter, onCompared })\n host.current = { adapter, onCompared }\n const [documentId, setDocumentId] = useState('')\n const [error, setError] = useState('')\n const [attempt, setAttempt] = useState(0)\n useEffect(() => {\n let cancelled = false\n setDocumentId('')\n setError('')\n const query = new URLSearchParams({ base_ext_id: baseId, revised_ext_id: revisedId })\n void host.current.adapter\n .request(`/redline?${query}`, { method: 'POST' })\n .then((response) => response.json())\n .then((result: { document_ext_id: string }) => {\n if (!result.document_ext_id) throw new Error('Comparison did not return a Word document.')\n if (!cancelled) {\n setDocumentId(result.document_ext_id)\n void Promise.resolve(host.current.onCompared?.(result.document_ext_id)).catch(() => {})\n }\n })\n .catch((error) => {\n if (!cancelled) setError(error instanceof Error ? error.message : String(error))\n })\n return () => {\n cancelled = true\n }\n }, [baseId, revisedId, attempt])\n if (error)\n return (\n <div className=\"native-docx-error\" role=\"alert\">\n <p>{error}</p>\n <button onClick={() => setAttempt((value) => value + 1)}>Retry comparison</button>\n </div>\n )\n if (!documentId)\n return (\n <div className=\"native-docx-error\" role=\"status\">\n Comparing Word documents…\n </div>\n )\n return (\n <NativeDocxEditor\n key={documentId}\n adapter={adapter}\n documentId={documentId}\n title={`${title.replace(/\\.[^.]+$/, '')} (redline).docx`}\n />\n )\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { type ReviewEntry } from './useReview';
3
+ /**
4
+ * The review rail: one card per comment thread or tracked change, aligned to its place in the page.
5
+ * Everything it shows and every action it takes goes through the editor's own review API.
6
+ */
7
+ declare function DocxEditorReviewRail({ children, }: {
8
+ children?: (entry: ReviewEntry) => React.ReactNode;
9
+ }): React.JSX.Element | null;
10
+ declare function ReviewCardSlot({ children }: {
11
+ children?: React.ReactNode;
12
+ }): React.JSX.Element;
13
+ export declare const DocxEditorReview: typeof DocxEditorReviewRail & {
14
+ Card: typeof ReviewCardSlot;
15
+ };
16
+ export {};
@@ -0,0 +1,3 @@
1
+ export { reviewModule } from './reviewModule';
2
+ export { DocxEditorReview } from './DocxEditorReview';
3
+ export { useReview, useReviewItem, type ReviewApi, type ReviewEntry } from './useReview';
@@ -0,0 +1,6 @@
1
+ import type { EditorModule } from '@docx-editor.dev/core';
2
+ /**
3
+ * Comments and tracked changes: the review queue derivation and the markup display modes, both
4
+ * provided by the Apache-2.0 core engine.
5
+ */
6
+ export declare function reviewModule(): EditorModule;
@@ -0,0 +1,29 @@
1
+ import type { ReviewItemPlacement } from '@docx-editor.dev/core';
2
+ export type ReviewEntry = ReviewItemPlacement;
3
+ export interface ReviewApi {
4
+ /** False until the editor has mounted. */
5
+ ready: boolean;
6
+ /** Every pending decision, in document order. */
7
+ items: readonly ReviewEntry[];
8
+ activeKey: string | null;
9
+ paneOpen: boolean;
10
+ setPaneOpen(open: boolean): void;
11
+ /** Focus a card's range in the document. Returns false when the engine refuses. */
12
+ setActive(key: string | null, options?: {
13
+ reveal?: false;
14
+ }): boolean;
15
+ reply(entry: ReviewEntry, text: string): boolean;
16
+ accept(entry: ReviewEntry): boolean;
17
+ reject(entry: ReviewEntry): boolean;
18
+ resolve(entry: ReviewEntry, resolved: boolean): boolean;
19
+ remove(entry: ReviewEntry): boolean;
20
+ addComment(text: string): boolean;
21
+ /** Move the document caret to the next or previous tracked change, wrapping at the ends. */
22
+ navigate(direction: 'next' | 'previous'): boolean;
23
+ /** Accept or reject every change shown, as one undo step. */
24
+ resolveAll(action: 'accept' | 'reject'): boolean;
25
+ }
26
+ export declare function useReview(): ReviewApi;
27
+ export declare const ReviewItemContext: import("react").Context<ReviewItemPlacement | null>;
28
+ /** The card being rendered. Null outside a card. */
29
+ export declare function useReviewItem(): ReviewEntry | null;
@@ -2,14 +2,14 @@
2
2
  'use strict';
3
3
 
4
4
  var chunkZPERNIMP_cjs = require('../chunk-ZPERNIMP.cjs');
5
- var chunkOUW6G4O2_cjs = require('../chunk-OUW6G4O2.cjs');
6
5
  var chunkVPPX5XUF_cjs = require('../chunk-VPPX5XUF.cjs');
6
+ var chunkOUW6G4O2_cjs = require('../chunk-OUW6G4O2.cjs');
7
7
  var chunkIA7RTPT3_cjs = require('../chunk-IA7RTPT3.cjs');
8
- var chunkMZL67U2E_cjs = require('../chunk-MZL67U2E.cjs');
9
- var chunk6DNYPLCD_cjs = require('../chunk-6DNYPLCD.cjs');
8
+ var chunkQ6LF7N3A_cjs = require('../chunk-Q6LF7N3A.cjs');
9
+ var chunk7RGLTF76_cjs = require('../chunk-7RGLTF76.cjs');
10
+ require('../chunk-C54XEN5T.cjs');
10
11
  require('../chunk-FX3K6LNZ.cjs');
11
12
  var chunkPPCATBOY_cjs = require('../chunk-PPCATBOY.cjs');
12
- require('../chunk-C54XEN5T.cjs');
13
13
  var chunkKDG6FER6_cjs = require('../chunk-KDG6FER6.cjs');
14
14
  var chunkMHVNT4J3_cjs = require('../chunk-MHVNT4J3.cjs');
15
15
  var lucideReact = require('lucide-react');
@@ -1918,7 +1918,7 @@ function FactsToolbar({
1918
1918
  ];
1919
1919
  const filterControls = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: isNarrow ? "flex w-full items-center gap-1.5" : "flex items-center gap-1.5", children: [
1920
1920
  /* @__PURE__ */ jsxRuntime.jsx(
1921
- chunkMZL67U2E_cjs.FilterInput,
1921
+ chunkQ6LF7N3A_cjs.FilterInput,
1922
1922
  {
1923
1923
  value: filterText,
1924
1924
  onChange: onFilterTextChange,
@@ -1947,7 +1947,7 @@ function FactsToolbar({
1947
1947
  ] });
1948
1948
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: headerRef, className: "sticky top-0 z-10 bg-background", "data-slot": "facts-toolbar", children: [
1949
1949
  /* @__PURE__ */ jsxRuntime.jsx(
1950
- chunk6DNYPLCD_cjs.TabHeader,
1950
+ chunk7RGLTF76_cjs.TabHeader,
1951
1951
  {
1952
1952
  tabs,
1953
1953
  activeTabId: "notes",
@@ -2246,15 +2246,15 @@ function FactSearchResult({
2246
2246
 
2247
2247
  Object.defineProperty(exports, "DEFAULT_FACTS_FILTER_INPUT_LABELS", {
2248
2248
  enumerable: true,
2249
- get: function () { return chunkMZL67U2E_cjs.DEFAULT_FILTER_INPUT_LABELS; }
2249
+ get: function () { return chunkQ6LF7N3A_cjs.DEFAULT_FILTER_INPUT_LABELS; }
2250
2250
  });
2251
2251
  Object.defineProperty(exports, "FACTS_SEARCH_FIELD_OPTIONS", {
2252
2252
  enumerable: true,
2253
- get: function () { return chunkMZL67U2E_cjs.DEFAULT_FILTER_FIELDS; }
2253
+ get: function () { return chunkQ6LF7N3A_cjs.DEFAULT_FILTER_FIELDS; }
2254
2254
  });
2255
2255
  Object.defineProperty(exports, "FactsFilterInput", {
2256
2256
  enumerable: true,
2257
- get: function () { return chunkMZL67U2E_cjs.FilterInput; }
2257
+ get: function () { return chunkQ6LF7N3A_cjs.FilterInput; }
2258
2258
  });
2259
2259
  exports.DEFAULT_FACTS_BULK_BAR_LABELS = DEFAULT_FACTS_BULK_BAR_LABELS;
2260
2260
  exports.DEFAULT_FACTS_EMPTY_STATE_LABELS = DEFAULT_FACTS_EMPTY_STATE_LABELS;
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  import { ViewToggle } from '../chunk-IC2VHFWR.js';
3
- import { SearchHit } from '../chunk-A2YAC22G.js';
4
3
  import { formatSpan, TimelineCalendar, TimelineGantt } from '../chunk-4EZVCGRL.js';
4
+ import { SearchHit } from '../chunk-A2YAC22G.js';
5
5
  import { GridView, SelectionBar, SelectionBarAction } from '../chunk-BUHKUKKB.js';
6
- import { FilterInput } from '../chunk-C7FGONCM.js';
7
- export { DEFAULT_FILTER_INPUT_LABELS as DEFAULT_FACTS_FILTER_INPUT_LABELS, DEFAULT_FILTER_FIELDS as FACTS_SEARCH_FIELD_OPTIONS, FilterInput as FactsFilterInput } from '../chunk-C7FGONCM.js';
8
- import { TabHeader } from '../chunk-PXFJDX2C.js';
6
+ import { FilterInput } from '../chunk-DDW3M22Z.js';
7
+ export { DEFAULT_FILTER_INPUT_LABELS as DEFAULT_FACTS_FILTER_INPUT_LABELS, DEFAULT_FILTER_FIELDS as FACTS_SEARCH_FIELD_OPTIONS, FilterInput as FactsFilterInput } from '../chunk-DDW3M22Z.js';
8
+ import { TabHeader } from '../chunk-4WWM3GQ5.js';
9
+ import '../chunk-76JDDMSP.js';
9
10
  import '../chunk-SLSBJRWW.js';
10
11
  import { observeResize } from '../chunk-NPLYHR2E.js';
11
- import '../chunk-76JDDMSP.js';
12
12
  import { initials } from '../chunk-OXF2IFXG.js';
13
13
  import { testIdOr } from '../chunk-7F6CBP3Z.js';
14
14
  import { PencilLine, Check, MoreVertical, Pencil, Trash2, CalendarDays, X, Columns3, ChevronDown, RotateCcw, Milestone, CalendarClock, Scale, Lightbulb, ArrowRight, Loader2, Info, PinOff, Pin, Tags, MoreHorizontal, FolderUp, BookMarked, Plus, Search, CheckCircle2, CornerDownLeft, Quote, ChevronLeft, ChevronRight, Table2, CalendarRange, GanttChartSquare } from 'lucide-react';
@@ -5,12 +5,12 @@ var chunkZPERNIMP_cjs = require('../chunk-ZPERNIMP.cjs');
5
5
  var chunk223D4727_cjs = require('../chunk-223D4727.cjs');
6
6
  var chunk3AFWGEDJ_cjs = require('../chunk-3AFWGEDJ.cjs');
7
7
  var chunkIA7RTPT3_cjs = require('../chunk-IA7RTPT3.cjs');
8
- var chunkMZL67U2E_cjs = require('../chunk-MZL67U2E.cjs');
8
+ var chunkQ6LF7N3A_cjs = require('../chunk-Q6LF7N3A.cjs');
9
9
  var chunkOB5F4577_cjs = require('../chunk-OB5F4577.cjs');
10
10
  var chunkVFUWWH52_cjs = require('../chunk-VFUWWH52.cjs');
11
+ require('../chunk-C54XEN5T.cjs');
11
12
  require('../chunk-FX3K6LNZ.cjs');
12
13
  require('../chunk-PPCATBOY.cjs');
13
- require('../chunk-C54XEN5T.cjs');
14
14
  var chunkKDG6FER6_cjs = require('../chunk-KDG6FER6.cjs');
15
15
  var chunkVLCY46K6_cjs = require('../chunk-VLCY46K6.cjs');
16
16
  var chunk2ZTONLT5_cjs = require('../chunk-2ZTONLT5.cjs');
@@ -216,7 +216,7 @@ var DEFAULT_FILES_SEARCH_LABELS = {
216
216
  };
217
217
  function FilesSearchInput(props) {
218
218
  return /* @__PURE__ */ jsxRuntime.jsx(
219
- chunkMZL67U2E_cjs.FilterInput,
219
+ chunkQ6LF7N3A_cjs.FilterInput,
220
220
  {
221
221
  value: props.value,
222
222
  onChange: props.onChange,
@@ -5,12 +5,12 @@ import { CellHoverIcon } from '../chunk-RFXJYIDV.js';
5
5
  export { CellHoverIcon, HoverIconCell } from '../chunk-RFXJYIDV.js';
6
6
  import { GridView, SelectionBar, SelectionBarAction } from '../chunk-BUHKUKKB.js';
7
7
  export { DEFAULT_SELECTION_BAR_LABELS, GridView, SelectionBar, SelectionBarAction } from '../chunk-BUHKUKKB.js';
8
- import { FilterInput } from '../chunk-C7FGONCM.js';
8
+ import { FilterInput } from '../chunk-DDW3M22Z.js';
9
9
  import { ActionLink } from '../chunk-S7PSMMRG.js';
10
10
  import { TONE_SURFACE, ToneBadge } from '../chunk-DPLRHEJZ.js';
11
+ import '../chunk-76JDDMSP.js';
11
12
  import '../chunk-SLSBJRWW.js';
12
13
  import '../chunk-NPLYHR2E.js';
13
- import '../chunk-76JDDMSP.js';
14
14
  import { formatCount } from '../chunk-OXF2IFXG.js';
15
15
  import { ShareControl } from '../chunk-K4BGOPGG.js';
16
16
  import { ModalSection, ModalSectionTitle, ModalHeader } from '../chunk-CPMNAJLF.js';
@@ -5,8 +5,8 @@ var chunkXZIYRKLW_cjs = require('../chunk-XZIYRKLW.cjs');
5
5
  var chunkPCB2BPN3_cjs = require('../chunk-PCB2BPN3.cjs');
6
6
  var chunkWBDK4PIA_cjs = require('../chunk-WBDK4PIA.cjs');
7
7
  var chunkOB5F4577_cjs = require('../chunk-OB5F4577.cjs');
8
- require('../chunk-PPCATBOY.cjs');
9
8
  require('../chunk-C54XEN5T.cjs');
9
+ require('../chunk-PPCATBOY.cjs');
10
10
  require('../chunk-KDG6FER6.cjs');
11
11
  var chunkMHVNT4J3_cjs = require('../chunk-MHVNT4J3.cjs');
12
12
  var lucideReact = require('lucide-react');
@@ -4,8 +4,8 @@ import { Callout } from '../chunk-UJE32SST.js';
4
4
  import { SectionHeader, EmptyStrip, QuickActionDialogHeader } from '../chunk-LFGJAZ5H.js';
5
5
  export { AddFilesFirst, DEFAULT_ADD_FILES_FIRST_LABELS, DEFAULT_SCOPE_PICKER_LABELS, EmptyStrip, FoldSection, QuickActionDialogHeader, ScopePicker, SectionHeader, SectionLabel, StartTiles, useScopeSelection } from '../chunk-LFGJAZ5H.js';
6
6
  import { ActionLink } from '../chunk-S7PSMMRG.js';
7
- import '../chunk-NPLYHR2E.js';
8
7
  import '../chunk-76JDDMSP.js';
8
+ import '../chunk-NPLYHR2E.js';
9
9
  import '../chunk-OXF2IFXG.js';
10
10
  import { testIdOr, prefixedTestId } from '../chunk-7F6CBP3Z.js';
11
11
  import { Plus, PartyPopper, X, Pin, Trash2 } from 'lucide-react';