@arbidocs/blocks 0.5.8 → 0.5.10
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-VZLB7WWW.cjs → ConnectedNativeDocxComparison-E2QVYVVI.cjs} +8 -7
- package/dist/{ConnectedNativeDocxComparison-VZLB7WWW.cjs.map → ConnectedNativeDocxComparison-E2QVYVVI.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-4MI22H2R.js → ConnectedNativeDocxComparison-KPAQMOIF.js} +7 -6
- package/dist/{ConnectedNativeDocxComparison-4MI22H2R.js.map → ConnectedNativeDocxComparison-KPAQMOIF.js.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-YBHAQQSY.js → ConnectedNativeDocxEditor-5PF7J3CP.js} +6 -5
- package/dist/{ConnectedNativeDocxEditor-YBHAQQSY.js.map → ConnectedNativeDocxEditor-5PF7J3CP.js.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-74PFGTMR.cjs → ConnectedNativeDocxEditor-XV3K77ZB.cjs} +8 -7
- package/dist/{ConnectedNativeDocxEditor-74PFGTMR.cjs.map → ConnectedNativeDocxEditor-XV3K77ZB.cjs.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-63ME4QD5.cjs → ConnectedStreamedWordArtifact-3N5CIXZU.cjs} +8 -7
- package/dist/ConnectedStreamedWordArtifact-3N5CIXZU.cjs.map +1 -0
- package/dist/{ConnectedStreamedWordArtifact-ELHQ2VYL.js → ConnectedStreamedWordArtifact-L45BLBRH.js} +7 -6
- package/dist/{ConnectedStreamedWordArtifact-ELHQ2VYL.js.map → ConnectedStreamedWordArtifact-L45BLBRH.js.map} +1 -1
- package/dist/{WorkspaceTableView-3TIMUU2J.js → WorkspaceTableView-EZAFYKAJ.js} +4 -3
- package/dist/WorkspaceTableView-EZAFYKAJ.js.map +1 -0
- package/dist/{WorkspaceTableView-FROHEPCT.cjs → WorkspaceTableView-MQXVE3JB.cjs} +4 -3
- package/dist/WorkspaceTableView-MQXVE3JB.cjs.map +1 -0
- package/dist/agents/index.cjs +327 -326
- package/dist/agents/index.js +5 -4
- package/dist/calendar/EventAttachments.d.ts +17 -0
- package/dist/calendar/EventEditor.d.ts +1 -1
- package/dist/calendar/conference.d.ts +2 -0
- package/dist/calendar/index.cjs +117 -120
- package/dist/calendar/index.d.ts +0 -1
- package/dist/calendar/index.js +2 -1
- package/dist/calendar/types.d.ts +15 -35
- package/dist/{chunk-2A2QX3MS.js → chunk-3SKLWW5D.js} +4 -3
- package/dist/chunk-3SKLWW5D.js.map +1 -0
- package/dist/{chunk-Z7KGBVKI.js → chunk-6NSGSEYS.js} +5 -5
- package/dist/{chunk-Z7KGBVKI.js.map → chunk-6NSGSEYS.js.map} +1 -1
- package/dist/{chunk-FEYRHZYB.js → chunk-6SPVTPUQ.js} +3 -3
- package/dist/{chunk-FEYRHZYB.js.map → chunk-6SPVTPUQ.js.map} +1 -1
- package/dist/{chunk-M6Z7HTJ2.cjs → chunk-6TE3QA3Y.cjs} +6 -5
- package/dist/chunk-6TE3QA3Y.cjs.map +1 -0
- package/dist/{chunk-BJ24VPOA.js → chunk-AFIJCK66.js} +210 -214
- package/dist/chunk-AFIJCK66.js.map +1 -0
- package/dist/{chunk-2VHYOTWW.cjs → chunk-AQPZ4QMV.cjs} +3 -201
- package/dist/chunk-AQPZ4QMV.cjs.map +1 -0
- package/dist/{chunk-TUODUKDK.cjs → chunk-DP4GMPI3.cjs} +4 -4
- package/dist/{chunk-TUODUKDK.cjs.map → chunk-DP4GMPI3.cjs.map} +1 -1
- package/dist/{chunk-IK4AWPDW.js → chunk-ELH375VC.js} +3 -3
- package/dist/{chunk-IK4AWPDW.js.map → chunk-ELH375VC.js.map} +1 -1
- package/dist/{chunk-X5FS27BM.js → chunk-FJCSJLTM.js} +4 -4
- package/dist/{chunk-X5FS27BM.js.map → chunk-FJCSJLTM.js.map} +1 -1
- package/dist/{chunk-AQ2XKOQ7.js → chunk-FT22URKT.js} +4 -4
- package/dist/{chunk-AQ2XKOQ7.js.map → chunk-FT22URKT.js.map} +1 -1
- package/dist/{chunk-NUSBINUM.js → chunk-G4GLDQLY.js} +7 -203
- package/dist/chunk-G4GLDQLY.js.map +1 -0
- package/dist/{chunk-2CTG4DHL.cjs → chunk-I7GQO43N.cjs} +7 -7
- package/dist/{chunk-2CTG4DHL.cjs.map → chunk-I7GQO43N.cjs.map} +1 -1
- package/dist/{chunk-PSTA227J.cjs → chunk-NG6AGVZ4.cjs} +10 -10
- package/dist/{chunk-PSTA227J.cjs.map → chunk-NG6AGVZ4.cjs.map} +1 -1
- package/dist/{chunk-M7LMEVXY.cjs → chunk-PFJIGGNN.cjs} +50 -50
- package/dist/{chunk-M7LMEVXY.cjs.map → chunk-PFJIGGNN.cjs.map} +1 -1
- package/dist/{chunk-LLYZGH3L.cjs → chunk-PXVSZRCA.cjs} +208 -213
- package/dist/chunk-PXVSZRCA.cjs.map +1 -0
- package/dist/{chunk-AY66THUZ.cjs → chunk-RPWWMOYP.cjs} +9 -9
- package/dist/{chunk-AY66THUZ.cjs.map → chunk-RPWWMOYP.cjs.map} +1 -1
- package/dist/{chunk-3IQUMSJI.js → chunk-VMMRK4SR.js} +3 -3
- package/dist/{chunk-3IQUMSJI.js.map → chunk-VMMRK4SR.js.map} +1 -1
- package/dist/chunk-VZOOGA47.cjs +210 -0
- package/dist/chunk-VZOOGA47.cjs.map +1 -0
- package/dist/chunk-WNDIVNPT.js +207 -0
- package/dist/chunk-WNDIVNPT.js.map +1 -0
- package/dist/{chunk-6HPBSKXG.cjs → chunk-XUKQQCOK.cjs} +4 -4
- package/dist/{chunk-6HPBSKXG.cjs.map → chunk-XUKQQCOK.cjs.map} +1 -1
- package/dist/connect/docx.cjs +10 -9
- package/dist/connect/docx.js +6 -5
- package/dist/connect/index.cjs +381 -381
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.js +90 -90
- package/dist/connect/index.js.map +1 -1
- package/dist/connect/viewer.cjs +3 -3
- package/dist/connect/viewer.js +3 -3
- package/dist/index.cjs +382 -381
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/settings/index.cjs +10 -9
- package/dist/settings/index.js +2 -1
- package/dist/workflow-canvas/index.cjs +18 -17
- package/dist/workflow-canvas/index.cjs.map +1 -1
- package/dist/workflow-canvas/index.js +5 -4
- package/dist/workflow-canvas/index.js.map +1 -1
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/ConnectedStreamedWordArtifact-63ME4QD5.cjs.map +0 -1
- package/dist/WorkspaceTableView-3TIMUU2J.js.map +0 -1
- package/dist/WorkspaceTableView-FROHEPCT.cjs.map +0 -1
- package/dist/calendar/RoomFinder.d.ts +0 -2
- package/dist/chunk-2A2QX3MS.js.map +0 -1
- package/dist/chunk-2VHYOTWW.cjs.map +0 -1
- package/dist/chunk-BJ24VPOA.js.map +0 -1
- package/dist/chunk-LLYZGH3L.cjs.map +0 -1
- package/dist/chunk-M6Z7HTJ2.cjs.map +0 -1
- package/dist/chunk-NUSBINUM.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useConnectedNativeDocxAdapter } from './chunk-
|
|
2
|
+
import { useConnectedNativeDocxAdapter } from './chunk-FJCSJLTM.js';
|
|
3
3
|
import { NativeDocxComparison } from './chunk-I3MA7IHR.js';
|
|
4
4
|
import { jsx } from 'react/jsx-runtime';
|
|
5
5
|
|
|
@@ -12,5 +12,5 @@ function ConnectedNativeDocxComparison({
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
export { ConnectedNativeDocxComparison };
|
|
15
|
-
//# sourceMappingURL=chunk-
|
|
16
|
-
//# sourceMappingURL=chunk-
|
|
15
|
+
//# sourceMappingURL=chunk-VMMRK4SR.js.map
|
|
16
|
+
//# sourceMappingURL=chunk-VMMRK4SR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/docx/ConnectedNativeDocxComparison.tsx"],"names":[],"mappings":";;;;AAOO,SAAS,6BAAA,CAA8B;AAAA,EAC5C,WAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyF;AACvF,EAAA,MAAM,OAAA,GAAU,8BAA8B,WAAW,CAAA;AACzD,EAAA,2BAAQ,oBAAA,EAAA,EAAsB,GAAG,OAAO,OAAA,EAAkB,UAAA,EAAY,QAAQ,cAAA,EAAgB,CAAA;AAChG","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/connection/docx/ConnectedNativeDocxComparison.tsx"],"names":[],"mappings":";;;;AAOO,SAAS,6BAAA,CAA8B;AAAA,EAC5C,WAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyF;AACvF,EAAA,MAAM,OAAA,GAAU,8BAA8B,WAAW,CAAA;AACzD,EAAA,2BAAQ,oBAAA,EAAA,EAAsB,GAAG,OAAO,OAAA,EAAkB,UAAA,EAAY,QAAQ,cAAA,EAAgB,CAAA;AAChG","file":"chunk-VMMRK4SR.js","sourcesContent":["import {\n NativeDocxComparison,\n type NativeDocxComparisonProps,\n} from '../../docx/NativeDocxComparison'\nimport { useConnectedNativeDocxAdapter } from './ConnectedNativeDocxEditor'\n\n/** The Word redline of two documents or versions, on the signed-in session. */\nexport function ConnectedNativeDocxComparison({\n fontBaseUrl,\n ...props\n}: Omit<NativeDocxComparisonProps, 'adapter' | 'onCompared'> & { fontBaseUrl?: string }) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n return <NativeDocxComparison {...props} adapter={adapter} onCompared={adapter.onVersionSaved} />\n}\n"]}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var react = require('react');
|
|
5
|
+
var lucideReact = require('lucide-react');
|
|
6
|
+
var cmdk = require('cmdk');
|
|
7
|
+
var ui = require('@arbidocs/react/ui');
|
|
8
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
9
|
+
|
|
10
|
+
// src/settings/DocumentPicker.tsx
|
|
11
|
+
var TOKEN_WARNING_THRESHOLD = 15e4;
|
|
12
|
+
var TOKEN_DANGER_THRESHOLD = 19e4;
|
|
13
|
+
var DEFAULT_DOCUMENT_PICKER_LABELS = {
|
|
14
|
+
placeholder: "Select a document",
|
|
15
|
+
searchDocuments: "Search documents...",
|
|
16
|
+
noDocuments: "No documents found.",
|
|
17
|
+
selectedAsSource: "Selected as source",
|
|
18
|
+
selectAsSource: "Select as source",
|
|
19
|
+
largeDocument: "Large document \u2014 may take longer to process",
|
|
20
|
+
tooLong: "Document is too long to be read in its entirety",
|
|
21
|
+
pages: (n) => `${n.toLocaleString()} pages`,
|
|
22
|
+
tokens: (n) => `${n.toLocaleString()} tokens`
|
|
23
|
+
};
|
|
24
|
+
function DocumentPicker({
|
|
25
|
+
groups,
|
|
26
|
+
value,
|
|
27
|
+
onValueChange,
|
|
28
|
+
selected,
|
|
29
|
+
selectedIds,
|
|
30
|
+
onOpenDocument,
|
|
31
|
+
viewingId,
|
|
32
|
+
forceClosed = false,
|
|
33
|
+
listClassName,
|
|
34
|
+
labels
|
|
35
|
+
}) {
|
|
36
|
+
const l = react.useMemo(() => ({ ...DEFAULT_DOCUMENT_PICKER_LABELS, ...labels }), [labels]);
|
|
37
|
+
const multi = selectedIds !== void 0;
|
|
38
|
+
const isChosen = (id) => multi ? selectedIds.includes(id) : value === id;
|
|
39
|
+
const [open, setOpen] = react.useState(false);
|
|
40
|
+
react.useEffect(() => {
|
|
41
|
+
if (forceClosed) setOpen(false);
|
|
42
|
+
}, [forceClosed]);
|
|
43
|
+
const anchorRef = react.useRef(null);
|
|
44
|
+
const leadingControl = (id) => onOpenDocument ? (
|
|
45
|
+
// cmdk selects a row on click and prevents its mousedown (to keep input focus), which would
|
|
46
|
+
// swallow a checkbox press. Stopping the events lets the checkbox toggle on its own.
|
|
47
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
48
|
+
"span",
|
|
49
|
+
{
|
|
50
|
+
className: "mr-2 flex items-center",
|
|
51
|
+
onClick: (e) => e.stopPropagation(),
|
|
52
|
+
onMouseDown: (e) => e.stopPropagation(),
|
|
53
|
+
onPointerDown: (e) => e.stopPropagation(),
|
|
54
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
55
|
+
ui.Checkbox,
|
|
56
|
+
{
|
|
57
|
+
checked: isChosen(id),
|
|
58
|
+
onCheckedChange: () => onValueChange(id),
|
|
59
|
+
"aria-label": isChosen(id) ? l.selectedAsSource : l.selectAsSource,
|
|
60
|
+
"data-testid": `document-combobox-select-${id}`
|
|
61
|
+
}
|
|
62
|
+
)
|
|
63
|
+
}
|
|
64
|
+
)
|
|
65
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: ui.cn("mr-2 size-4", isChosen(id) ? "opacity-100" : "opacity-0") });
|
|
66
|
+
const itemClass = (id) => ui.cn(
|
|
67
|
+
onOpenDocument && "cursor-pointer",
|
|
68
|
+
onOpenDocument && isChosen(id) && "bg-primary/10 aria-selected:bg-primary/15",
|
|
69
|
+
// Inverted so the open one is unmistakable, over cmdk's own hover tint.
|
|
70
|
+
viewingId === id && "bg-foreground text-background data-[selected=true]:bg-foreground data-[selected=true]:text-background"
|
|
71
|
+
);
|
|
72
|
+
const renderGroups = () => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
73
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.CommandEmpty, { children: l.noDocuments }),
|
|
74
|
+
groups.map((group) => /* @__PURE__ */ jsxRuntime.jsx(ui.CommandGroup, { heading: group.heading, children: group.docs.map((doc) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
75
|
+
ui.CommandItem,
|
|
76
|
+
{
|
|
77
|
+
value: doc.id,
|
|
78
|
+
keywords: [doc.title],
|
|
79
|
+
className: itemClass(doc.id),
|
|
80
|
+
onSelect: () => {
|
|
81
|
+
if (onOpenDocument) {
|
|
82
|
+
onOpenDocument(doc.id);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
onValueChange(doc.id);
|
|
86
|
+
if (!multi) setOpen(false);
|
|
87
|
+
},
|
|
88
|
+
children: [
|
|
89
|
+
leadingControl(doc.id),
|
|
90
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mr-2 flex shrink-0 items-center", children: ui.getDocIcon(doc.fileName ?? void 0) }),
|
|
91
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: ui.cn("truncate", onOpenDocument && "hover:underline"), children: doc.title })
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
doc.id
|
|
95
|
+
)) }, group.id))
|
|
96
|
+
] });
|
|
97
|
+
const contentClass = "w-[var(--radix-popover-trigger-width)] border-0 bg-muted p-0 shadow-md";
|
|
98
|
+
const tokens = selected?.tokens ?? null;
|
|
99
|
+
const pages = selected?.pages ?? null;
|
|
100
|
+
const isDanger = tokens != null && tokens > TOKEN_DANGER_THRESHOLD;
|
|
101
|
+
const isWarning = tokens != null && tokens > TOKEN_WARNING_THRESHOLD && !isDanger;
|
|
102
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-slot": "document-picker", children: [
|
|
103
|
+
multi ? (
|
|
104
|
+
// The input IS the anchor: the list opens beneath the row as soon as it is focused or
|
|
105
|
+
// typed into. cmdk's context reaches the portaled list, so arrows/Enter still drive it.
|
|
106
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Command, { children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Popover, { open, onOpenChange: setOpen, children: [
|
|
107
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.PopoverAnchor, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
108
|
+
"div",
|
|
109
|
+
{
|
|
110
|
+
ref: anchorRef,
|
|
111
|
+
className: "flex h-9 w-full items-center gap-2 rounded-md border border-input bg-transparent px-3 shadow-sm transition-colors focus-within:ring-1 focus-within:ring-ring pointer-coarse:h-11",
|
|
112
|
+
"data-testid": "document-combobox-trigger",
|
|
113
|
+
children: [
|
|
114
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "size-4 shrink-0 opacity-50" }),
|
|
115
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
116
|
+
cmdk.Command.Input,
|
|
117
|
+
{
|
|
118
|
+
placeholder: l.placeholder,
|
|
119
|
+
"aria-expanded": open,
|
|
120
|
+
className: "h-full w-full bg-transparent text-base outline-none placeholder:text-muted-foreground md:text-sm",
|
|
121
|
+
onFocus: () => setOpen(true),
|
|
122
|
+
onValueChange: () => setOpen(true),
|
|
123
|
+
onKeyDown: (e) => {
|
|
124
|
+
if (e.key === "ArrowDown" || e.key === "ArrowUp") setOpen(true);
|
|
125
|
+
if (e.key === "Escape") setOpen(false);
|
|
126
|
+
},
|
|
127
|
+
"data-testid": "document-combobox-search"
|
|
128
|
+
}
|
|
129
|
+
)
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
) }),
|
|
133
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
134
|
+
ui.PopoverContent,
|
|
135
|
+
{
|
|
136
|
+
className: contentClass,
|
|
137
|
+
align: "start",
|
|
138
|
+
onOpenAutoFocus: (e) => e.preventDefault(),
|
|
139
|
+
onFocusOutside: (e) => e.preventDefault(),
|
|
140
|
+
onInteractOutside: (e) => {
|
|
141
|
+
const target = e.target;
|
|
142
|
+
if (anchorRef.current?.contains(target) || target?.closest(
|
|
143
|
+
'[data-testid="parsed-viewer"], [role="dialog"], [data-radix-popper-content-wrapper]'
|
|
144
|
+
)) {
|
|
145
|
+
e.preventDefault();
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(ui.CommandList, { className: listClassName, children: renderGroups() })
|
|
149
|
+
}
|
|
150
|
+
)
|
|
151
|
+
] }) })
|
|
152
|
+
) : /* @__PURE__ */ jsxRuntime.jsxs(ui.Popover, { open, onOpenChange: setOpen, children: [
|
|
153
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
154
|
+
"button",
|
|
155
|
+
{
|
|
156
|
+
type: "button",
|
|
157
|
+
role: "combobox",
|
|
158
|
+
"aria-expanded": open,
|
|
159
|
+
className: ui.cn(
|
|
160
|
+
"flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring md:text-sm pointer-coarse:h-11",
|
|
161
|
+
!value && "text-muted-foreground"
|
|
162
|
+
),
|
|
163
|
+
"data-testid": "document-combobox-trigger",
|
|
164
|
+
children: [
|
|
165
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: selected?.title || l.placeholder }),
|
|
166
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronsUpDown, { className: "ml-2 size-4 shrink-0 opacity-50" })
|
|
167
|
+
]
|
|
168
|
+
}
|
|
169
|
+
) }),
|
|
170
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.PopoverContent, { className: contentClass, align: "start", children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Command, { children: [
|
|
171
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.CommandInput, { placeholder: l.searchDocuments }),
|
|
172
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.CommandList, { className: listClassName, children: renderGroups() })
|
|
173
|
+
] }) })
|
|
174
|
+
] }),
|
|
175
|
+
selected && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 space-y-1", "data-testid": "document-combobox-info", children: [
|
|
176
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-muted-foreground", children: [
|
|
177
|
+
pages != null && /* @__PURE__ */ jsxRuntime.jsx("span", { children: l.pages(pages) }),
|
|
178
|
+
pages != null && tokens != null && /* @__PURE__ */ jsxRuntime.jsx("span", { children: " \xB7 " }),
|
|
179
|
+
tokens != null && /* @__PURE__ */ jsxRuntime.jsx("span", { children: l.tokens(tokens) })
|
|
180
|
+
] }),
|
|
181
|
+
isWarning && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
182
|
+
"p",
|
|
183
|
+
{
|
|
184
|
+
className: "flex items-center gap-1.5 text-sm text-yellow-text",
|
|
185
|
+
"data-testid": "document-combobox-warning",
|
|
186
|
+
children: [
|
|
187
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.TriangleAlert, { className: "size-3.5 shrink-0" }),
|
|
188
|
+
l.largeDocument
|
|
189
|
+
]
|
|
190
|
+
}
|
|
191
|
+
),
|
|
192
|
+
isDanger && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
193
|
+
"p",
|
|
194
|
+
{
|
|
195
|
+
className: "flex items-center gap-1.5 text-sm text-red-text",
|
|
196
|
+
"data-testid": "document-combobox-danger",
|
|
197
|
+
children: [
|
|
198
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.TriangleAlert, { className: "size-3.5 shrink-0" }),
|
|
199
|
+
l.tooLong
|
|
200
|
+
]
|
|
201
|
+
}
|
|
202
|
+
)
|
|
203
|
+
] })
|
|
204
|
+
] });
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
exports.DEFAULT_DOCUMENT_PICKER_LABELS = DEFAULT_DOCUMENT_PICKER_LABELS;
|
|
208
|
+
exports.DocumentPicker = DocumentPicker;
|
|
209
|
+
//# sourceMappingURL=chunk-VZOOGA47.cjs.map
|
|
210
|
+
//# sourceMappingURL=chunk-VZOOGA47.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/settings/DocumentPicker.tsx"],"names":["useMemo","useState","useEffect","useRef","jsx","Checkbox","Check","cn","jsxs","Fragment","CommandEmpty","CommandGroup","CommandItem","Command","Popover","PopoverAnchor","Search","CommandPrimitive","PopoverContent","CommandList","PopoverTrigger","ChevronsUpDown","CommandInput","TriangleAlert"],"mappings":";;;;;;;;;AAmBA,IAAM,uBAAA,GAA0B,IAAA;AAChC,IAAM,sBAAA,GAAyB,IAAA;AA+BxB,IAAM,8BAAA,GAAuD;AAAA,EAClE,WAAA,EAAa,mBAAA;AAAA,EACb,eAAA,EAAiB,qBAAA;AAAA,EACjB,WAAA,EAAa,qBAAA;AAAA,EACb,gBAAA,EAAkB,oBAAA;AAAA,EAClB,cAAA,EAAgB,kBAAA;AAAA,EAChB,aAAA,EAAe,kDAAA;AAAA,EACf,OAAA,EAAS,iDAAA;AAAA,EACT,OAAO,CAAC,CAAA,KAAM,CAAA,EAAG,CAAA,CAAE,gBAAgB,CAAA,MAAA,CAAA;AAAA,EACnC,QAAQ,CAAC,CAAA,KAAM,CAAA,EAAG,CAAA,CAAE,gBAAgB,CAAA,OAAA;AACtC;AAgCO,SAAS,cAAA,CAAe;AAAA,EAC7B,MAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,aAAA;AAAA,EACA;AACF,CAAA,EAAwB;AACtB,EAAA,MAAM,CAAA,GAAIA,aAAA,CAAQ,OAAO,EAAE,GAAG,8BAAA,EAAgC,GAAG,MAAA,EAAO,CAAA,EAAI,CAAC,MAAM,CAAC,CAAA;AACpF,EAAA,MAAM,QAAQ,WAAA,KAAgB,MAAA;AAC9B,EAAA,MAAM,QAAA,GAAW,CAAC,EAAA,KAAgB,KAAA,GAAQ,YAAY,QAAA,CAAS,EAAE,IAAI,KAAA,KAAU,EAAA;AAC/E,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIC,eAAS,KAAK,CAAA;AACtC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,WAAA,UAAqB,KAAK,CAAA;AAAA,EAChC,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAChB,EAAA,MAAM,SAAA,GAAYC,aAAuB,IAAI,CAAA;AAG7C,EAAA,MAAM,cAAA,GAAiB,CAAC,EAAA,KACtB,cAAA;AAAA;AAAA;AAAA,oBAGEC,cAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,wBAAA;AAAA,QACV,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,eAAA,EAAgB;AAAA,QAClC,WAAA,EAAa,CAAC,CAAA,KAAM,CAAA,CAAE,eAAA,EAAgB;AAAA,QACtC,aAAA,EAAe,CAAC,CAAA,KAAM,CAAA,CAAE,eAAA,EAAgB;AAAA,QAExC,QAAA,kBAAAA,cAAA;AAAA,UAACC,WAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,SAAS,EAAE,CAAA;AAAA,YACpB,eAAA,EAAiB,MAAM,aAAA,CAAc,EAAE,CAAA;AAAA,YACvC,cAAY,QAAA,CAAS,EAAE,CAAA,GAAI,CAAA,CAAE,mBAAmB,CAAA,CAAE,cAAA;AAAA,YAClD,aAAA,EAAa,4BAA4B,EAAE,CAAA;AAAA;AAAA;AAC7C;AAAA;AACF,sBAEAD,cAAA,CAACE,iBAAA,EAAA,EAAM,SAAA,EAAWC,KAAA,CAAG,aAAA,EAAe,SAAS,EAAE,CAAA,GAAI,aAAA,GAAgB,WAAW,CAAA,EAAG,CAAA;AAGrF,EAAA,MAAM,SAAA,GAAY,CAAC,EAAA,KACjBA,KAAA;AAAA,IACE,cAAA,IAAkB,gBAAA;AAAA,IAClB,cAAA,IAAkB,QAAA,CAAS,EAAE,CAAA,IAAK,2CAAA;AAAA;AAAA,IAElC,cAAc,EAAA,IACZ;AAAA,GACJ;AAEF,EAAA,MAAM,YAAA,GAAe,sBACnBC,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAL,cAAA,CAACM,eAAA,EAAA,EAAc,YAAE,WAAA,EAAY,CAAA;AAAA,IAC5B,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,qBACXN,cAAA,CAACO,eAAA,EAAA,EAA4B,OAAA,EAAS,KAAA,CAAM,OAAA,EACzC,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,qBACfH,eAAA;AAAA,MAACI,cAAA;AAAA,MAAA;AAAA,QAIC,OAAO,GAAA,CAAI,EAAA;AAAA,QACX,QAAA,EAAU,CAAC,GAAA,CAAI,KAAK,CAAA;AAAA,QACpB,SAAA,EAAW,SAAA,CAAU,GAAA,CAAI,EAAE,CAAA;AAAA,QAC3B,UAAU,MAAM;AACd,UAAA,IAAI,cAAA,EAAgB;AAClB,YAAA,cAAA,CAAe,IAAI,EAAE,CAAA;AACrB,YAAA;AAAA,UACF;AACA,UAAA,aAAA,CAAc,IAAI,EAAE,CAAA;AACpB,UAAA,IAAI,CAAC,KAAA,EAAO,OAAA,CAAQ,KAAK,CAAA;AAAA,QAC3B,CAAA;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,cAAA,CAAe,IAAI,EAAE,CAAA;AAAA,0BACtBR,cAAA,CAAC,UAAK,SAAA,EAAU,iCAAA,EACb,wBAAW,GAAA,CAAI,QAAA,IAAY,MAAS,CAAA,EACvC,CAAA;AAAA,0BACAA,cAAA,CAAC,UAAK,SAAA,EAAWG,KAAA,CAAG,YAAY,cAAA,IAAkB,iBAAiB,CAAA,EAChE,QAAA,EAAA,GAAA,CAAI,KAAA,EACP;AAAA;AAAA,OAAA;AAAA,MArBK,GAAA,CAAI;AAAA,KAuBZ,CAAA,EAAA,EA1BgB,KAAA,CAAM,EA2BzB,CACD;AAAA,GAAA,EACH,CAAA;AAGF,EAAA,MAAM,YAAA,GAAe,wEAAA;AACrB,EAAA,MAAM,MAAA,GAAS,UAAU,MAAA,IAAU,IAAA;AACnC,EAAA,MAAM,KAAA,GAAQ,UAAU,KAAA,IAAS,IAAA;AACjC,EAAA,MAAM,QAAA,GAAW,MAAA,IAAU,IAAA,IAAQ,MAAA,GAAS,sBAAA;AAC5C,EAAA,MAAM,SAAA,GAAY,MAAA,IAAU,IAAA,IAAQ,MAAA,GAAS,2BAA2B,CAAC,QAAA;AAEzE,EAAA,uBACEC,eAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,iBAAA,EACZ,QAAA,EAAA;AAAA,IAAA,KAAA;AAAA;AAAA;AAAA,qCAGEK,UAAA,EAAA,EACC,QAAA,kBAAAL,eAAA,CAACM,UAAA,EAAA,EAAQ,IAAA,EAAY,cAAc,OAAA,EACjC,QAAA,EAAA;AAAA,wBAAAV,cAAA,CAACW,gBAAA,EAAA,EAAc,SAAO,IAAA,EACpB,QAAA,kBAAAP,eAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,SAAA;AAAA,YACL,SAAA,EAAU,kLAAA;AAAA,YACV,aAAA,EAAY,2BAAA;AAAA,YAEZ,QAAA,EAAA;AAAA,8BAAAJ,cAAA,CAACY,kBAAA,EAAA,EAAO,WAAU,4BAAA,EAA6B,CAAA;AAAA,8BAC/CZ,cAAA;AAAA,gBAACa,YAAA,CAAiB,KAAA;AAAA,gBAAjB;AAAA,kBACC,aAAa,CAAA,CAAE,WAAA;AAAA,kBACf,eAAA,EAAe,IAAA;AAAA,kBACf,SAAA,EAAU,kGAAA;AAAA,kBACV,OAAA,EAAS,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,kBAC3B,aAAA,EAAe,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,kBACjC,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,oBAAA,IAAI,EAAE,GAAA,KAAQ,WAAA,IAAe,EAAE,GAAA,KAAQ,SAAA,UAAmB,IAAI,CAAA;AAC9D,oBAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU,OAAA,CAAQ,KAAK,CAAA;AAAA,kBACvC,CAAA;AAAA,kBACA,aAAA,EAAY;AAAA;AAAA;AACd;AAAA;AAAA,SACF,EACF,CAAA;AAAA,wBACAb,cAAA;AAAA,UAACc,iBAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,YAAA;AAAA,YACX,KAAA,EAAM,OAAA;AAAA,YAIN,eAAA,EAAiB,CAAC,CAAA,KAAM,CAAA,CAAE,cAAA,EAAe;AAAA,YACzC,cAAA,EAAgB,CAAC,CAAA,KAAM,CAAA,CAAE,cAAA,EAAe;AAAA,YACxC,iBAAA,EAAmB,CAAC,CAAA,KAAM;AACxB,cAAA,MAAM,SAAS,CAAA,CAAE,MAAA;AACjB,cAAA,IACE,SAAA,CAAU,OAAA,EAAS,QAAA,CAAS,MAAM,KAClC,MAAA,EAAQ,OAAA;AAAA,gBACN;AAAA,eACF,EACA;AACA,gBAAA,CAAA,CAAE,cAAA,EAAe;AAAA,cACnB;AAAA,YACF,CAAA;AAAA,YAEA,QAAA,kBAAAd,cAAA,CAACe,cAAA,EAAA,EAAY,SAAA,EAAW,aAAA,EAAgB,wBAAa,EAAE;AAAA;AAAA;AACzD,OAAA,EACF,CAAA,EACF;AAAA,wBAEAX,eAAA,CAACM,UAAA,EAAA,EAAQ,IAAA,EAAY,YAAA,EAAc,OAAA,EACjC,QAAA,EAAA;AAAA,sBAAAV,cAAA,CAACgB,iBAAA,EAAA,EAAe,SAAO,IAAA,EACrB,QAAA,kBAAAZ,eAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,IAAA,EAAK,UAAA;AAAA,UACL,eAAA,EAAe,IAAA;AAAA,UACf,SAAA,EAAWD,KAAA;AAAA,YACT,mPAAA;AAAA,YACA,CAAC,KAAA,IAAS;AAAA,WACZ;AAAA,UACA,aAAA,EAAY,2BAAA;AAAA,UAEZ,QAAA,EAAA;AAAA,4BAAAH,cAAA,CAAC,UAAK,SAAA,EAAU,UAAA,EAAY,QAAA,EAAA,QAAA,EAAU,KAAA,IAAS,EAAE,WAAA,EAAY,CAAA;AAAA,4BAC7DA,cAAA,CAACiB,0BAAA,EAAA,EAAe,SAAA,EAAU,iCAAA,EAAkC;AAAA;AAAA;AAAA,OAC9D,EACF,CAAA;AAAA,qCACCH,iBAAA,EAAA,EAAe,SAAA,EAAW,cAAc,KAAA,EAAM,OAAA,EAC7C,0CAACL,UAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAT,cAAA,CAACkB,eAAA,EAAA,EAAa,WAAA,EAAa,CAAA,CAAE,eAAA,EAAiB,CAAA;AAAA,wBAC9ClB,cAAA,CAACe,cAAA,EAAA,EAAY,SAAA,EAAW,aAAA,EAAgB,wBAAa,EAAE;AAAA,OAAA,EACzD,CAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,IAGD,4BACCX,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EAAiB,eAAY,wBAAA,EAC1C,QAAA,EAAA;AAAA,sBAAAA,eAAA,CAAC,GAAA,EAAA,EAAE,WAAU,+BAAA,EACV,QAAA,EAAA;AAAA,QAAA,KAAA,IAAS,wBAAQJ,cAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,CAAA,CAAE,KAAA,CAAM,KAAK,CAAA,EAAE,CAAA;AAAA,QACvC,SAAS,IAAA,IAAQ,MAAA,IAAU,IAAA,oBAAQA,cAAA,CAAC,UAAK,QAAA,EAAA,QAAA,EAAG,CAAA;AAAA,QAC5C,UAAU,IAAA,oBAAQA,cAAA,CAAC,UAAM,QAAA,EAAA,CAAA,CAAE,MAAA,CAAO,MAAM,CAAA,EAAE;AAAA,OAAA,EAC7C,CAAA;AAAA,MACC,SAAA,oBACCI,eAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,oDAAA;AAAA,UACV,aAAA,EAAY,2BAAA;AAAA,UAEZ,QAAA,EAAA;AAAA,4BAAAJ,cAAA,CAACmB,yBAAA,EAAA,EAAc,WAAU,mBAAA,EAAoB,CAAA;AAAA,YAC5C,CAAA,CAAE;AAAA;AAAA;AAAA,OACL;AAAA,MAED,QAAA,oBACCf,eAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,iDAAA;AAAA,UACV,aAAA,EAAY,0BAAA;AAAA,UAEZ,QAAA,EAAA;AAAA,4BAAAJ,cAAA,CAACmB,yBAAA,EAAA,EAAc,WAAU,mBAAA,EAAoB,CAAA;AAAA,YAC5C,CAAA,CAAE;AAAA;AAAA;AAAA;AACL,KAAA,EAEJ;AAAA,GAAA,EAEJ,CAAA;AAEJ","file":"chunk-VZOOGA47.cjs","sourcesContent":["import { useEffect, useMemo, useRef, useState, type ReactNode } from 'react'\nimport { Check, ChevronsUpDown, Search, TriangleAlert } from 'lucide-react'\nimport { Command as CommandPrimitive } from 'cmdk'\nimport {\n Checkbox,\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n Popover,\n PopoverAnchor,\n PopoverContent,\n PopoverTrigger,\n cn,\n getDocIcon,\n} from '@arbidocs/react/ui'\n\nconst TOKEN_WARNING_THRESHOLD = 150_000\nconst TOKEN_DANGER_THRESHOLD = 190_000\n\n/** A document the picker can offer. `pages`/`tokens` are null for images and unparsed files. */\nexport interface PickerDocument {\n id: string\n title: string\n fileName?: string | null\n pages?: number | null\n tokens?: number | null\n}\n\n/** A heading with its documents, already sorted. A group without heading is unlabeled. */\nexport interface PickerGroup {\n id: string\n heading?: string\n docs: PickerDocument[]\n}\n\n/** Every fixed string of the document picker. */\nexport interface DocumentPickerLabels {\n placeholder: string\n searchDocuments: string\n noDocuments: string\n selectedAsSource: string\n selectAsSource: string\n largeDocument: string\n tooLong: string\n pages: (n: number) => string\n tokens: (n: number) => string\n}\n\nexport const DEFAULT_DOCUMENT_PICKER_LABELS: DocumentPickerLabels = {\n placeholder: 'Select a document',\n searchDocuments: 'Search documents...',\n noDocuments: 'No documents found.',\n selectedAsSource: 'Selected as source',\n selectAsSource: 'Select as source',\n largeDocument: 'Large document — may take longer to process',\n tooLong: 'Document is too long to be read in its entirety',\n pages: (n) => `${n.toLocaleString()} pages`,\n tokens: (n) => `${n.toLocaleString()} tokens`,\n}\n\nexport interface DocumentPickerProps {\n groups: PickerGroup[]\n /** The picked document (single mode). */\n value: string\n onValueChange: (id: string) => void\n /** The picked document's details, shown under the picker (pages, tokens, size warnings). */\n selected?: PickerDocument\n /**\n * Ids already chosen. Supplying this switches to MULTI mode: the search box is inline, the\n * list stays open on select and ticks what is in.\n */\n selectedIds?: string[]\n /**\n * Splits each row in two: a click OPENS the document (this callback) and a leading checkbox\n * selects it as a source via `onValueChange`. Requires `selectedIds`.\n */\n onOpenDocument?: (id: string) => void\n /** The document open in the viewer: its row is inverted (multi mode). */\n viewingId?: string | null\n /** While true the list is shut (a neighbouring popup must not overlay it). */\n forceClosed?: boolean\n /** Extra classes of the results list, e.g. a taller `max-h-*` when the picker is the surface. */\n listClassName?: string\n labels?: Partial<DocumentPickerLabels>\n}\n\n/**\n * Searchable document picker. Single mode is a button that opens a searchable list; multi mode\n * puts the search inline. After a pick it shows page/token counts with size warnings.\n */\nexport function DocumentPicker({\n groups,\n value,\n onValueChange,\n selected,\n selectedIds,\n onOpenDocument,\n viewingId,\n forceClosed = false,\n listClassName,\n labels,\n}: DocumentPickerProps) {\n const l = useMemo(() => ({ ...DEFAULT_DOCUMENT_PICKER_LABELS, ...labels }), [labels])\n const multi = selectedIds !== undefined\n const isChosen = (id: string) => (multi ? selectedIds.includes(id) : value === id)\n const [open, setOpen] = useState(false)\n useEffect(() => {\n if (forceClosed) setOpen(false)\n }, [forceClosed])\n const anchorRef = useRef<HTMLDivElement>(null)\n\n // A real checkbox when rows open on click; otherwise the tick that mirrors the pick.\n const leadingControl = (id: string): ReactNode =>\n onOpenDocument ? (\n // cmdk selects a row on click and prevents its mousedown (to keep input focus), which would\n // swallow a checkbox press. Stopping the events lets the checkbox toggle on its own.\n <span\n className=\"mr-2 flex items-center\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.stopPropagation()}\n onPointerDown={(e) => e.stopPropagation()}\n >\n <Checkbox\n checked={isChosen(id)}\n onCheckedChange={() => onValueChange(id)}\n aria-label={isChosen(id) ? l.selectedAsSource : l.selectAsSource}\n data-testid={`document-combobox-select-${id}`}\n />\n </span>\n ) : (\n <Check className={cn('mr-2 size-4', isChosen(id) ? 'opacity-100' : 'opacity-0')} />\n )\n\n const itemClass = (id: string) =>\n cn(\n onOpenDocument && 'cursor-pointer',\n onOpenDocument && isChosen(id) && 'bg-primary/10 aria-selected:bg-primary/15',\n // Inverted so the open one is unmistakable, over cmdk's own hover tint.\n viewingId === id &&\n 'bg-foreground text-background data-[selected=true]:bg-foreground data-[selected=true]:text-background'\n )\n\n const renderGroups = () => (\n <>\n <CommandEmpty>{l.noDocuments}</CommandEmpty>\n {groups.map((group) => (\n <CommandGroup key={group.id} heading={group.heading}>\n {group.docs.map((doc) => (\n <CommandItem\n key={doc.id}\n // Identity is the id: two documents can share a name, and a title-valued item would\n // make cmdk treat them as one. The title stays searchable via keywords.\n value={doc.id}\n keywords={[doc.title]}\n className={itemClass(doc.id)}\n onSelect={() => {\n if (onOpenDocument) {\n onOpenDocument(doc.id)\n return\n }\n onValueChange(doc.id)\n if (!multi) setOpen(false)\n }}\n >\n {leadingControl(doc.id)}\n <span className=\"mr-2 flex shrink-0 items-center\">\n {getDocIcon(doc.fileName ?? undefined)}\n </span>\n <span className={cn('truncate', onOpenDocument && 'hover:underline')}>\n {doc.title}\n </span>\n </CommandItem>\n ))}\n </CommandGroup>\n ))}\n </>\n )\n\n const contentClass = 'w-[var(--radix-popover-trigger-width)] border-0 bg-muted p-0 shadow-md'\n const tokens = selected?.tokens ?? null\n const pages = selected?.pages ?? null\n const isDanger = tokens != null && tokens > TOKEN_DANGER_THRESHOLD\n const isWarning = tokens != null && tokens > TOKEN_WARNING_THRESHOLD && !isDanger\n\n return (\n <div data-slot=\"document-picker\">\n {multi ? (\n // The input IS the anchor: the list opens beneath the row as soon as it is focused or\n // typed into. cmdk's context reaches the portaled list, so arrows/Enter still drive it.\n <Command>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverAnchor asChild>\n <div\n ref={anchorRef}\n className=\"flex h-9 w-full items-center gap-2 rounded-md border border-input bg-transparent px-3 shadow-sm transition-colors focus-within:ring-1 focus-within:ring-ring pointer-coarse:h-11\"\n data-testid=\"document-combobox-trigger\"\n >\n <Search className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n placeholder={l.placeholder}\n aria-expanded={open}\n className=\"h-full w-full bg-transparent text-base outline-none placeholder:text-muted-foreground md:text-sm\"\n onFocus={() => setOpen(true)}\n onValueChange={() => setOpen(true)}\n onKeyDown={(e) => {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') setOpen(true)\n if (e.key === 'Escape') setOpen(false)\n }}\n data-testid=\"document-combobox-search\"\n />\n </div>\n </PopoverAnchor>\n <PopoverContent\n className={contentClass}\n align=\"start\"\n // Focus stays in the inline input, and opening a document hands focus to the viewer:\n // neither may count as an outside click. Pointer-downs in the viewer, dialogs and\n // poppers are ignored; Escape and any other outside click still close the list.\n onOpenAutoFocus={(e) => e.preventDefault()}\n onFocusOutside={(e) => e.preventDefault()}\n onInteractOutside={(e) => {\n const target = e.target as Element | null\n if (\n anchorRef.current?.contains(target) ||\n target?.closest(\n '[data-testid=\"parsed-viewer\"], [role=\"dialog\"], [data-radix-popper-content-wrapper]'\n )\n ) {\n e.preventDefault()\n }\n }}\n >\n <CommandList className={listClassName}>{renderGroups()}</CommandList>\n </PopoverContent>\n </Popover>\n </Command>\n ) : (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\n 'flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring md:text-sm pointer-coarse:h-11',\n !value && 'text-muted-foreground'\n )}\n data-testid=\"document-combobox-trigger\"\n >\n <span className=\"truncate\">{selected?.title || l.placeholder}</span>\n <ChevronsUpDown className=\"ml-2 size-4 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n <PopoverContent className={contentClass} align=\"start\">\n <Command>\n <CommandInput placeholder={l.searchDocuments} />\n <CommandList className={listClassName}>{renderGroups()}</CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n )}\n\n {selected && (\n <div className=\"mt-2 space-y-1\" data-testid=\"document-combobox-info\">\n <p className=\"text-sm text-muted-foreground\">\n {pages != null && <span>{l.pages(pages)}</span>}\n {pages != null && tokens != null && <span> · </span>}\n {tokens != null && <span>{l.tokens(tokens)}</span>}\n </p>\n {isWarning && (\n <p\n className=\"flex items-center gap-1.5 text-sm text-yellow-text\"\n data-testid=\"document-combobox-warning\"\n >\n <TriangleAlert className=\"size-3.5 shrink-0\" />\n {l.largeDocument}\n </p>\n )}\n {isDanger && (\n <p\n className=\"flex items-center gap-1.5 text-sm text-red-text\"\n data-testid=\"document-combobox-danger\"\n >\n <TriangleAlert className=\"size-3.5 shrink-0\" />\n {l.tooLong}\n </p>\n )}\n </div>\n )}\n </div>\n )\n}\n"]}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useMemo, useState, useEffect, useRef } from 'react';
|
|
3
|
+
import { Search, ChevronsUpDown, TriangleAlert, Check } from 'lucide-react';
|
|
4
|
+
import { Command as Command$1 } from 'cmdk';
|
|
5
|
+
import { Command, Popover, PopoverAnchor, PopoverContent, CommandList, PopoverTrigger, cn, CommandInput, CommandEmpty, CommandGroup, CommandItem, getDocIcon, Checkbox } from '@arbidocs/react/ui';
|
|
6
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
// src/settings/DocumentPicker.tsx
|
|
9
|
+
var TOKEN_WARNING_THRESHOLD = 15e4;
|
|
10
|
+
var TOKEN_DANGER_THRESHOLD = 19e4;
|
|
11
|
+
var DEFAULT_DOCUMENT_PICKER_LABELS = {
|
|
12
|
+
placeholder: "Select a document",
|
|
13
|
+
searchDocuments: "Search documents...",
|
|
14
|
+
noDocuments: "No documents found.",
|
|
15
|
+
selectedAsSource: "Selected as source",
|
|
16
|
+
selectAsSource: "Select as source",
|
|
17
|
+
largeDocument: "Large document \u2014 may take longer to process",
|
|
18
|
+
tooLong: "Document is too long to be read in its entirety",
|
|
19
|
+
pages: (n) => `${n.toLocaleString()} pages`,
|
|
20
|
+
tokens: (n) => `${n.toLocaleString()} tokens`
|
|
21
|
+
};
|
|
22
|
+
function DocumentPicker({
|
|
23
|
+
groups,
|
|
24
|
+
value,
|
|
25
|
+
onValueChange,
|
|
26
|
+
selected,
|
|
27
|
+
selectedIds,
|
|
28
|
+
onOpenDocument,
|
|
29
|
+
viewingId,
|
|
30
|
+
forceClosed = false,
|
|
31
|
+
listClassName,
|
|
32
|
+
labels
|
|
33
|
+
}) {
|
|
34
|
+
const l = useMemo(() => ({ ...DEFAULT_DOCUMENT_PICKER_LABELS, ...labels }), [labels]);
|
|
35
|
+
const multi = selectedIds !== void 0;
|
|
36
|
+
const isChosen = (id) => multi ? selectedIds.includes(id) : value === id;
|
|
37
|
+
const [open, setOpen] = useState(false);
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
if (forceClosed) setOpen(false);
|
|
40
|
+
}, [forceClosed]);
|
|
41
|
+
const anchorRef = useRef(null);
|
|
42
|
+
const leadingControl = (id) => onOpenDocument ? (
|
|
43
|
+
// cmdk selects a row on click and prevents its mousedown (to keep input focus), which would
|
|
44
|
+
// swallow a checkbox press. Stopping the events lets the checkbox toggle on its own.
|
|
45
|
+
/* @__PURE__ */ jsx(
|
|
46
|
+
"span",
|
|
47
|
+
{
|
|
48
|
+
className: "mr-2 flex items-center",
|
|
49
|
+
onClick: (e) => e.stopPropagation(),
|
|
50
|
+
onMouseDown: (e) => e.stopPropagation(),
|
|
51
|
+
onPointerDown: (e) => e.stopPropagation(),
|
|
52
|
+
children: /* @__PURE__ */ jsx(
|
|
53
|
+
Checkbox,
|
|
54
|
+
{
|
|
55
|
+
checked: isChosen(id),
|
|
56
|
+
onCheckedChange: () => onValueChange(id),
|
|
57
|
+
"aria-label": isChosen(id) ? l.selectedAsSource : l.selectAsSource,
|
|
58
|
+
"data-testid": `document-combobox-select-${id}`
|
|
59
|
+
}
|
|
60
|
+
)
|
|
61
|
+
}
|
|
62
|
+
)
|
|
63
|
+
) : /* @__PURE__ */ jsx(Check, { className: cn("mr-2 size-4", isChosen(id) ? "opacity-100" : "opacity-0") });
|
|
64
|
+
const itemClass = (id) => cn(
|
|
65
|
+
onOpenDocument && "cursor-pointer",
|
|
66
|
+
onOpenDocument && isChosen(id) && "bg-primary/10 aria-selected:bg-primary/15",
|
|
67
|
+
// Inverted so the open one is unmistakable, over cmdk's own hover tint.
|
|
68
|
+
viewingId === id && "bg-foreground text-background data-[selected=true]:bg-foreground data-[selected=true]:text-background"
|
|
69
|
+
);
|
|
70
|
+
const renderGroups = () => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
71
|
+
/* @__PURE__ */ jsx(CommandEmpty, { children: l.noDocuments }),
|
|
72
|
+
groups.map((group) => /* @__PURE__ */ jsx(CommandGroup, { heading: group.heading, children: group.docs.map((doc) => /* @__PURE__ */ jsxs(
|
|
73
|
+
CommandItem,
|
|
74
|
+
{
|
|
75
|
+
value: doc.id,
|
|
76
|
+
keywords: [doc.title],
|
|
77
|
+
className: itemClass(doc.id),
|
|
78
|
+
onSelect: () => {
|
|
79
|
+
if (onOpenDocument) {
|
|
80
|
+
onOpenDocument(doc.id);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
onValueChange(doc.id);
|
|
84
|
+
if (!multi) setOpen(false);
|
|
85
|
+
},
|
|
86
|
+
children: [
|
|
87
|
+
leadingControl(doc.id),
|
|
88
|
+
/* @__PURE__ */ jsx("span", { className: "mr-2 flex shrink-0 items-center", children: getDocIcon(doc.fileName ?? void 0) }),
|
|
89
|
+
/* @__PURE__ */ jsx("span", { className: cn("truncate", onOpenDocument && "hover:underline"), children: doc.title })
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
doc.id
|
|
93
|
+
)) }, group.id))
|
|
94
|
+
] });
|
|
95
|
+
const contentClass = "w-[var(--radix-popover-trigger-width)] border-0 bg-muted p-0 shadow-md";
|
|
96
|
+
const tokens = selected?.tokens ?? null;
|
|
97
|
+
const pages = selected?.pages ?? null;
|
|
98
|
+
const isDanger = tokens != null && tokens > TOKEN_DANGER_THRESHOLD;
|
|
99
|
+
const isWarning = tokens != null && tokens > TOKEN_WARNING_THRESHOLD && !isDanger;
|
|
100
|
+
return /* @__PURE__ */ jsxs("div", { "data-slot": "document-picker", children: [
|
|
101
|
+
multi ? (
|
|
102
|
+
// The input IS the anchor: the list opens beneath the row as soon as it is focused or
|
|
103
|
+
// typed into. cmdk's context reaches the portaled list, so arrows/Enter still drive it.
|
|
104
|
+
/* @__PURE__ */ jsx(Command, { children: /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
|
|
105
|
+
/* @__PURE__ */ jsx(PopoverAnchor, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
106
|
+
"div",
|
|
107
|
+
{
|
|
108
|
+
ref: anchorRef,
|
|
109
|
+
className: "flex h-9 w-full items-center gap-2 rounded-md border border-input bg-transparent px-3 shadow-sm transition-colors focus-within:ring-1 focus-within:ring-ring pointer-coarse:h-11",
|
|
110
|
+
"data-testid": "document-combobox-trigger",
|
|
111
|
+
children: [
|
|
112
|
+
/* @__PURE__ */ jsx(Search, { className: "size-4 shrink-0 opacity-50" }),
|
|
113
|
+
/* @__PURE__ */ jsx(
|
|
114
|
+
Command$1.Input,
|
|
115
|
+
{
|
|
116
|
+
placeholder: l.placeholder,
|
|
117
|
+
"aria-expanded": open,
|
|
118
|
+
className: "h-full w-full bg-transparent text-base outline-none placeholder:text-muted-foreground md:text-sm",
|
|
119
|
+
onFocus: () => setOpen(true),
|
|
120
|
+
onValueChange: () => setOpen(true),
|
|
121
|
+
onKeyDown: (e) => {
|
|
122
|
+
if (e.key === "ArrowDown" || e.key === "ArrowUp") setOpen(true);
|
|
123
|
+
if (e.key === "Escape") setOpen(false);
|
|
124
|
+
},
|
|
125
|
+
"data-testid": "document-combobox-search"
|
|
126
|
+
}
|
|
127
|
+
)
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
) }),
|
|
131
|
+
/* @__PURE__ */ jsx(
|
|
132
|
+
PopoverContent,
|
|
133
|
+
{
|
|
134
|
+
className: contentClass,
|
|
135
|
+
align: "start",
|
|
136
|
+
onOpenAutoFocus: (e) => e.preventDefault(),
|
|
137
|
+
onFocusOutside: (e) => e.preventDefault(),
|
|
138
|
+
onInteractOutside: (e) => {
|
|
139
|
+
const target = e.target;
|
|
140
|
+
if (anchorRef.current?.contains(target) || target?.closest(
|
|
141
|
+
'[data-testid="parsed-viewer"], [role="dialog"], [data-radix-popper-content-wrapper]'
|
|
142
|
+
)) {
|
|
143
|
+
e.preventDefault();
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
children: /* @__PURE__ */ jsx(CommandList, { className: listClassName, children: renderGroups() })
|
|
147
|
+
}
|
|
148
|
+
)
|
|
149
|
+
] }) })
|
|
150
|
+
) : /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
|
|
151
|
+
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
152
|
+
"button",
|
|
153
|
+
{
|
|
154
|
+
type: "button",
|
|
155
|
+
role: "combobox",
|
|
156
|
+
"aria-expanded": open,
|
|
157
|
+
className: cn(
|
|
158
|
+
"flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring md:text-sm pointer-coarse:h-11",
|
|
159
|
+
!value && "text-muted-foreground"
|
|
160
|
+
),
|
|
161
|
+
"data-testid": "document-combobox-trigger",
|
|
162
|
+
children: [
|
|
163
|
+
/* @__PURE__ */ jsx("span", { className: "truncate", children: selected?.title || l.placeholder }),
|
|
164
|
+
/* @__PURE__ */ jsx(ChevronsUpDown, { className: "ml-2 size-4 shrink-0 opacity-50" })
|
|
165
|
+
]
|
|
166
|
+
}
|
|
167
|
+
) }),
|
|
168
|
+
/* @__PURE__ */ jsx(PopoverContent, { className: contentClass, align: "start", children: /* @__PURE__ */ jsxs(Command, { children: [
|
|
169
|
+
/* @__PURE__ */ jsx(CommandInput, { placeholder: l.searchDocuments }),
|
|
170
|
+
/* @__PURE__ */ jsx(CommandList, { className: listClassName, children: renderGroups() })
|
|
171
|
+
] }) })
|
|
172
|
+
] }),
|
|
173
|
+
selected && /* @__PURE__ */ jsxs("div", { className: "mt-2 space-y-1", "data-testid": "document-combobox-info", children: [
|
|
174
|
+
/* @__PURE__ */ jsxs("p", { className: "text-sm text-muted-foreground", children: [
|
|
175
|
+
pages != null && /* @__PURE__ */ jsx("span", { children: l.pages(pages) }),
|
|
176
|
+
pages != null && tokens != null && /* @__PURE__ */ jsx("span", { children: " \xB7 " }),
|
|
177
|
+
tokens != null && /* @__PURE__ */ jsx("span", { children: l.tokens(tokens) })
|
|
178
|
+
] }),
|
|
179
|
+
isWarning && /* @__PURE__ */ jsxs(
|
|
180
|
+
"p",
|
|
181
|
+
{
|
|
182
|
+
className: "flex items-center gap-1.5 text-sm text-yellow-text",
|
|
183
|
+
"data-testid": "document-combobox-warning",
|
|
184
|
+
children: [
|
|
185
|
+
/* @__PURE__ */ jsx(TriangleAlert, { className: "size-3.5 shrink-0" }),
|
|
186
|
+
l.largeDocument
|
|
187
|
+
]
|
|
188
|
+
}
|
|
189
|
+
),
|
|
190
|
+
isDanger && /* @__PURE__ */ jsxs(
|
|
191
|
+
"p",
|
|
192
|
+
{
|
|
193
|
+
className: "flex items-center gap-1.5 text-sm text-red-text",
|
|
194
|
+
"data-testid": "document-combobox-danger",
|
|
195
|
+
children: [
|
|
196
|
+
/* @__PURE__ */ jsx(TriangleAlert, { className: "size-3.5 shrink-0" }),
|
|
197
|
+
l.tooLong
|
|
198
|
+
]
|
|
199
|
+
}
|
|
200
|
+
)
|
|
201
|
+
] })
|
|
202
|
+
] });
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export { DEFAULT_DOCUMENT_PICKER_LABELS, DocumentPicker };
|
|
206
|
+
//# sourceMappingURL=chunk-WNDIVNPT.js.map
|
|
207
|
+
//# sourceMappingURL=chunk-WNDIVNPT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/settings/DocumentPicker.tsx"],"names":["CommandPrimitive"],"mappings":"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","file":"chunk-WNDIVNPT.js","sourcesContent":["import { useEffect, useMemo, useRef, useState, type ReactNode } from 'react'\nimport { Check, ChevronsUpDown, Search, TriangleAlert } from 'lucide-react'\nimport { Command as CommandPrimitive } from 'cmdk'\nimport {\n Checkbox,\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n Popover,\n PopoverAnchor,\n PopoverContent,\n PopoverTrigger,\n cn,\n getDocIcon,\n} from '@arbidocs/react/ui'\n\nconst TOKEN_WARNING_THRESHOLD = 150_000\nconst TOKEN_DANGER_THRESHOLD = 190_000\n\n/** A document the picker can offer. `pages`/`tokens` are null for images and unparsed files. */\nexport interface PickerDocument {\n id: string\n title: string\n fileName?: string | null\n pages?: number | null\n tokens?: number | null\n}\n\n/** A heading with its documents, already sorted. A group without heading is unlabeled. */\nexport interface PickerGroup {\n id: string\n heading?: string\n docs: PickerDocument[]\n}\n\n/** Every fixed string of the document picker. */\nexport interface DocumentPickerLabels {\n placeholder: string\n searchDocuments: string\n noDocuments: string\n selectedAsSource: string\n selectAsSource: string\n largeDocument: string\n tooLong: string\n pages: (n: number) => string\n tokens: (n: number) => string\n}\n\nexport const DEFAULT_DOCUMENT_PICKER_LABELS: DocumentPickerLabels = {\n placeholder: 'Select a document',\n searchDocuments: 'Search documents...',\n noDocuments: 'No documents found.',\n selectedAsSource: 'Selected as source',\n selectAsSource: 'Select as source',\n largeDocument: 'Large document — may take longer to process',\n tooLong: 'Document is too long to be read in its entirety',\n pages: (n) => `${n.toLocaleString()} pages`,\n tokens: (n) => `${n.toLocaleString()} tokens`,\n}\n\nexport interface DocumentPickerProps {\n groups: PickerGroup[]\n /** The picked document (single mode). */\n value: string\n onValueChange: (id: string) => void\n /** The picked document's details, shown under the picker (pages, tokens, size warnings). */\n selected?: PickerDocument\n /**\n * Ids already chosen. Supplying this switches to MULTI mode: the search box is inline, the\n * list stays open on select and ticks what is in.\n */\n selectedIds?: string[]\n /**\n * Splits each row in two: a click OPENS the document (this callback) and a leading checkbox\n * selects it as a source via `onValueChange`. Requires `selectedIds`.\n */\n onOpenDocument?: (id: string) => void\n /** The document open in the viewer: its row is inverted (multi mode). */\n viewingId?: string | null\n /** While true the list is shut (a neighbouring popup must not overlay it). */\n forceClosed?: boolean\n /** Extra classes of the results list, e.g. a taller `max-h-*` when the picker is the surface. */\n listClassName?: string\n labels?: Partial<DocumentPickerLabels>\n}\n\n/**\n * Searchable document picker. Single mode is a button that opens a searchable list; multi mode\n * puts the search inline. After a pick it shows page/token counts with size warnings.\n */\nexport function DocumentPicker({\n groups,\n value,\n onValueChange,\n selected,\n selectedIds,\n onOpenDocument,\n viewingId,\n forceClosed = false,\n listClassName,\n labels,\n}: DocumentPickerProps) {\n const l = useMemo(() => ({ ...DEFAULT_DOCUMENT_PICKER_LABELS, ...labels }), [labels])\n const multi = selectedIds !== undefined\n const isChosen = (id: string) => (multi ? selectedIds.includes(id) : value === id)\n const [open, setOpen] = useState(false)\n useEffect(() => {\n if (forceClosed) setOpen(false)\n }, [forceClosed])\n const anchorRef = useRef<HTMLDivElement>(null)\n\n // A real checkbox when rows open on click; otherwise the tick that mirrors the pick.\n const leadingControl = (id: string): ReactNode =>\n onOpenDocument ? (\n // cmdk selects a row on click and prevents its mousedown (to keep input focus), which would\n // swallow a checkbox press. Stopping the events lets the checkbox toggle on its own.\n <span\n className=\"mr-2 flex items-center\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.stopPropagation()}\n onPointerDown={(e) => e.stopPropagation()}\n >\n <Checkbox\n checked={isChosen(id)}\n onCheckedChange={() => onValueChange(id)}\n aria-label={isChosen(id) ? l.selectedAsSource : l.selectAsSource}\n data-testid={`document-combobox-select-${id}`}\n />\n </span>\n ) : (\n <Check className={cn('mr-2 size-4', isChosen(id) ? 'opacity-100' : 'opacity-0')} />\n )\n\n const itemClass = (id: string) =>\n cn(\n onOpenDocument && 'cursor-pointer',\n onOpenDocument && isChosen(id) && 'bg-primary/10 aria-selected:bg-primary/15',\n // Inverted so the open one is unmistakable, over cmdk's own hover tint.\n viewingId === id &&\n 'bg-foreground text-background data-[selected=true]:bg-foreground data-[selected=true]:text-background'\n )\n\n const renderGroups = () => (\n <>\n <CommandEmpty>{l.noDocuments}</CommandEmpty>\n {groups.map((group) => (\n <CommandGroup key={group.id} heading={group.heading}>\n {group.docs.map((doc) => (\n <CommandItem\n key={doc.id}\n // Identity is the id: two documents can share a name, and a title-valued item would\n // make cmdk treat them as one. The title stays searchable via keywords.\n value={doc.id}\n keywords={[doc.title]}\n className={itemClass(doc.id)}\n onSelect={() => {\n if (onOpenDocument) {\n onOpenDocument(doc.id)\n return\n }\n onValueChange(doc.id)\n if (!multi) setOpen(false)\n }}\n >\n {leadingControl(doc.id)}\n <span className=\"mr-2 flex shrink-0 items-center\">\n {getDocIcon(doc.fileName ?? undefined)}\n </span>\n <span className={cn('truncate', onOpenDocument && 'hover:underline')}>\n {doc.title}\n </span>\n </CommandItem>\n ))}\n </CommandGroup>\n ))}\n </>\n )\n\n const contentClass = 'w-[var(--radix-popover-trigger-width)] border-0 bg-muted p-0 shadow-md'\n const tokens = selected?.tokens ?? null\n const pages = selected?.pages ?? null\n const isDanger = tokens != null && tokens > TOKEN_DANGER_THRESHOLD\n const isWarning = tokens != null && tokens > TOKEN_WARNING_THRESHOLD && !isDanger\n\n return (\n <div data-slot=\"document-picker\">\n {multi ? (\n // The input IS the anchor: the list opens beneath the row as soon as it is focused or\n // typed into. cmdk's context reaches the portaled list, so arrows/Enter still drive it.\n <Command>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverAnchor asChild>\n <div\n ref={anchorRef}\n className=\"flex h-9 w-full items-center gap-2 rounded-md border border-input bg-transparent px-3 shadow-sm transition-colors focus-within:ring-1 focus-within:ring-ring pointer-coarse:h-11\"\n data-testid=\"document-combobox-trigger\"\n >\n <Search className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n placeholder={l.placeholder}\n aria-expanded={open}\n className=\"h-full w-full bg-transparent text-base outline-none placeholder:text-muted-foreground md:text-sm\"\n onFocus={() => setOpen(true)}\n onValueChange={() => setOpen(true)}\n onKeyDown={(e) => {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') setOpen(true)\n if (e.key === 'Escape') setOpen(false)\n }}\n data-testid=\"document-combobox-search\"\n />\n </div>\n </PopoverAnchor>\n <PopoverContent\n className={contentClass}\n align=\"start\"\n // Focus stays in the inline input, and opening a document hands focus to the viewer:\n // neither may count as an outside click. Pointer-downs in the viewer, dialogs and\n // poppers are ignored; Escape and any other outside click still close the list.\n onOpenAutoFocus={(e) => e.preventDefault()}\n onFocusOutside={(e) => e.preventDefault()}\n onInteractOutside={(e) => {\n const target = e.target as Element | null\n if (\n anchorRef.current?.contains(target) ||\n target?.closest(\n '[data-testid=\"parsed-viewer\"], [role=\"dialog\"], [data-radix-popper-content-wrapper]'\n )\n ) {\n e.preventDefault()\n }\n }}\n >\n <CommandList className={listClassName}>{renderGroups()}</CommandList>\n </PopoverContent>\n </Popover>\n </Command>\n ) : (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\n 'flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring md:text-sm pointer-coarse:h-11',\n !value && 'text-muted-foreground'\n )}\n data-testid=\"document-combobox-trigger\"\n >\n <span className=\"truncate\">{selected?.title || l.placeholder}</span>\n <ChevronsUpDown className=\"ml-2 size-4 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n <PopoverContent className={contentClass} align=\"start\">\n <Command>\n <CommandInput placeholder={l.searchDocuments} />\n <CommandList className={listClassName}>{renderGroups()}</CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n )}\n\n {selected && (\n <div className=\"mt-2 space-y-1\" data-testid=\"document-combobox-info\">\n <p className=\"text-sm text-muted-foreground\">\n {pages != null && <span>{l.pages(pages)}</span>}\n {pages != null && tokens != null && <span> · </span>}\n {tokens != null && <span>{l.tokens(tokens)}</span>}\n </p>\n {isWarning && (\n <p\n className=\"flex items-center gap-1.5 text-sm text-yellow-text\"\n data-testid=\"document-combobox-warning\"\n >\n <TriangleAlert className=\"size-3.5 shrink-0\" />\n {l.largeDocument}\n </p>\n )}\n {isDanger && (\n <p\n className=\"flex items-center gap-1.5 text-sm text-red-text\"\n data-testid=\"document-combobox-danger\"\n >\n <TriangleAlert className=\"size-3.5 shrink-0\" />\n {l.tooLong}\n </p>\n )}\n </div>\n )}\n </div>\n )\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkNG6AGVZ4_cjs = require('./chunk-NG6AGVZ4.cjs');
|
|
5
5
|
var chunkZVJA66P7_cjs = require('./chunk-ZVJA66P7.cjs');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
|
|
@@ -9,10 +9,10 @@ function ConnectedNativeDocxComparison({
|
|
|
9
9
|
fontBaseUrl,
|
|
10
10
|
...props
|
|
11
11
|
}) {
|
|
12
|
-
const adapter =
|
|
12
|
+
const adapter = chunkNG6AGVZ4_cjs.useConnectedNativeDocxAdapter(fontBaseUrl);
|
|
13
13
|
return /* @__PURE__ */ jsxRuntime.jsx(chunkZVJA66P7_cjs.NativeDocxComparison, { ...props, adapter, onCompared: adapter.onVersionSaved });
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
exports.ConnectedNativeDocxComparison = ConnectedNativeDocxComparison;
|
|
17
|
-
//# sourceMappingURL=chunk-
|
|
18
|
-
//# sourceMappingURL=chunk-
|
|
17
|
+
//# sourceMappingURL=chunk-XUKQQCOK.cjs.map
|
|
18
|
+
//# sourceMappingURL=chunk-XUKQQCOK.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/docx/ConnectedNativeDocxComparison.tsx"],"names":["useConnectedNativeDocxAdapter","NativeDocxComparison"],"mappings":";;;;;;AAOO,SAAS,6BAAA,CAA8B;AAAA,EAC5C,WAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyF;AACvF,EAAA,MAAM,OAAA,GAAUA,gDAA8B,WAAW,CAAA;AACzD,EAAA,sCAAQC,sCAAA,EAAA,EAAsB,GAAG,OAAO,OAAA,EAAkB,UAAA,EAAY,QAAQ,cAAA,EAAgB,CAAA;AAChG","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/connection/docx/ConnectedNativeDocxComparison.tsx"],"names":["useConnectedNativeDocxAdapter","NativeDocxComparison"],"mappings":";;;;;;AAOO,SAAS,6BAAA,CAA8B;AAAA,EAC5C,WAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyF;AACvF,EAAA,MAAM,OAAA,GAAUA,gDAA8B,WAAW,CAAA;AACzD,EAAA,sCAAQC,sCAAA,EAAA,EAAsB,GAAG,OAAO,OAAA,EAAkB,UAAA,EAAY,QAAQ,cAAA,EAAgB,CAAA;AAChG","file":"chunk-XUKQQCOK.cjs","sourcesContent":["import {\n NativeDocxComparison,\n type NativeDocxComparisonProps,\n} from '../../docx/NativeDocxComparison'\nimport { useConnectedNativeDocxAdapter } from './ConnectedNativeDocxEditor'\n\n/** The Word redline of two documents or versions, on the signed-in session. */\nexport function ConnectedNativeDocxComparison({\n fontBaseUrl,\n ...props\n}: Omit<NativeDocxComparisonProps, 'adapter' | 'onCompared'> & { fontBaseUrl?: string }) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n return <NativeDocxComparison {...props} adapter={adapter} onCompared={adapter.onVersionSaved} />\n}\n"]}
|
package/dist/connect/docx.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
4
|
+
var chunkXUKQQCOK_cjs = require('../chunk-XUKQQCOK.cjs');
|
|
5
|
+
var chunkDP4GMPI3_cjs = require('../chunk-DP4GMPI3.cjs');
|
|
6
|
+
var chunkNG6AGVZ4_cjs = require('../chunk-NG6AGVZ4.cjs');
|
|
7
7
|
require('../chunk-ZVJA66P7.cjs');
|
|
8
8
|
require('../chunk-Z2CVGUWR.cjs');
|
|
9
9
|
require('../chunk-464YPRAE.cjs');
|
|
@@ -12,14 +12,15 @@ require('../chunk-5FYU7ZIU.cjs');
|
|
|
12
12
|
require('../chunk-JPWPR6QU.cjs');
|
|
13
13
|
require('../chunk-QT3A4PFC.cjs');
|
|
14
14
|
require('../chunk-RC25WMVB.cjs');
|
|
15
|
-
require('../chunk-
|
|
15
|
+
require('../chunk-6TE3QA3Y.cjs');
|
|
16
16
|
require('../chunk-BYCGAAV5.cjs');
|
|
17
|
-
require('../chunk-
|
|
17
|
+
require('../chunk-AQPZ4QMV.cjs');
|
|
18
18
|
require('../chunk-V4ISCZJ7.cjs');
|
|
19
19
|
require('../chunk-AHDJXIUB.cjs');
|
|
20
20
|
require('../chunk-2EI7NCUA.cjs');
|
|
21
21
|
require('../chunk-HSAEIBRA.cjs');
|
|
22
22
|
require('../chunk-C2CWWEHO.cjs');
|
|
23
|
+
require('../chunk-VZOOGA47.cjs');
|
|
23
24
|
require('../chunk-QGSVHWXR.cjs');
|
|
24
25
|
require('../chunk-3LDVSHRD.cjs');
|
|
25
26
|
require('../chunk-MB3S2ETI.cjs');
|
|
@@ -41,19 +42,19 @@ require('../chunk-DES3K4SD.cjs');
|
|
|
41
42
|
|
|
42
43
|
Object.defineProperty(exports, "ConnectedNativeDocxComparison", {
|
|
43
44
|
enumerable: true,
|
|
44
|
-
get: function () { return
|
|
45
|
+
get: function () { return chunkXUKQQCOK_cjs.ConnectedNativeDocxComparison; }
|
|
45
46
|
});
|
|
46
47
|
Object.defineProperty(exports, "ConnectedStreamedWordArtifact", {
|
|
47
48
|
enumerable: true,
|
|
48
|
-
get: function () { return
|
|
49
|
+
get: function () { return chunkDP4GMPI3_cjs.ConnectedStreamedWordArtifact; }
|
|
49
50
|
});
|
|
50
51
|
Object.defineProperty(exports, "ConnectedNativeDocxEditor", {
|
|
51
52
|
enumerable: true,
|
|
52
|
-
get: function () { return
|
|
53
|
+
get: function () { return chunkNG6AGVZ4_cjs.ConnectedNativeDocxEditor; }
|
|
53
54
|
});
|
|
54
55
|
Object.defineProperty(exports, "useConnectedNativeDocxAdapter", {
|
|
55
56
|
enumerable: true,
|
|
56
|
-
get: function () { return
|
|
57
|
+
get: function () { return chunkNG6AGVZ4_cjs.useConnectedNativeDocxAdapter; }
|
|
57
58
|
});
|
|
58
59
|
//# sourceMappingURL=docx.cjs.map
|
|
59
60
|
//# sourceMappingURL=docx.cjs.map
|