@arbidocs/blocks 0.5.67 → 0.5.69
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/README.md +16 -12
- package/dist/{ConnectedCallDock-VMEBH4LG.js → ConnectedCallDock-3EHDHB5D.js} +4 -4
- package/dist/{ConnectedCallDock-VMEBH4LG.js.map → ConnectedCallDock-3EHDHB5D.js.map} +1 -1
- package/dist/{ConnectedCallDock-FFIDDYGH.cjs → ConnectedCallDock-NXF2YSY2.cjs} +4 -4
- package/dist/{ConnectedCallDock-FFIDDYGH.cjs.map → ConnectedCallDock-NXF2YSY2.cjs.map} +1 -1
- package/dist/ConnectedCallRoom-2FNSX2VG.js +2 -2
- package/dist/ConnectedCallRoom-HYRLJUIV.cjs +2 -2
- package/dist/{ConnectedDocumentViewer-NIZBKBJN.js → ConnectedDocumentViewer-2GU4SA5L.js} +11 -11
- package/dist/{ConnectedDocumentViewer-NIZBKBJN.js.map → ConnectedDocumentViewer-2GU4SA5L.js.map} +1 -1
- package/dist/{ConnectedDocumentViewer-IQHDCAZ5.cjs → ConnectedDocumentViewer-R5GFEUPB.cjs} +12 -12
- package/dist/{ConnectedDocumentViewer-IQHDCAZ5.cjs.map → ConnectedDocumentViewer-R5GFEUPB.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-FPW3BNBN.js → ConnectedNativeDocxComparison-KGRT2RSK.js} +8 -8
- package/dist/{ConnectedNativeDocxComparison-FPW3BNBN.js.map → ConnectedNativeDocxComparison-KGRT2RSK.js.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-HJ4FTVH6.cjs → ConnectedNativeDocxComparison-NMVGZYYW.cjs} +9 -9
- package/dist/{ConnectedNativeDocxComparison-HJ4FTVH6.cjs.map → ConnectedNativeDocxComparison-NMVGZYYW.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-PF46MU5H.cjs → ConnectedNativeDocxEditor-NZZSG4N7.cjs} +9 -9
- package/dist/{ConnectedNativeDocxEditor-PF46MU5H.cjs.map → ConnectedNativeDocxEditor-NZZSG4N7.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-S7NJMDSU.js → ConnectedNativeDocxEditor-WO4MQUEJ.js} +7 -7
- package/dist/{ConnectedNativeDocxEditor-S7NJMDSU.js.map → ConnectedNativeDocxEditor-WO4MQUEJ.js.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-5MHLV24V.js → ConnectedStreamedWordArtifact-PETCKJXL.js} +8 -8
- package/dist/ConnectedStreamedWordArtifact-PETCKJXL.js.map +1 -0
- package/dist/{ConnectedStreamedWordArtifact-LNGW7YGV.cjs → ConnectedStreamedWordArtifact-UIXR3P3H.cjs} +9 -9
- package/dist/ConnectedStreamedWordArtifact-UIXR3P3H.cjs.map +1 -0
- package/dist/DocumentReviewCard-5U3TGJZA.js +2 -2
- package/dist/DocumentReviewCard-VFNMJSK7.cjs +2 -2
- package/dist/{WorkspaceTableView-EH5CEB44.js → WorkspaceTableView-LBESYCXW.js} +4 -4
- package/dist/{WorkspaceTableView-EH5CEB44.js.map → WorkspaceTableView-LBESYCXW.js.map} +1 -1
- package/dist/{WorkspaceTableView-DHMCJRC6.cjs → WorkspaceTableView-OIMBOLG6.cjs} +4 -4
- package/dist/{WorkspaceTableView-DHMCJRC6.cjs.map → WorkspaceTableView-OIMBOLG6.cjs.map} +1 -1
- package/dist/agents/index.cjs +283 -287
- package/dist/agents/index.js +6 -6
- package/dist/agents/tasks/ConversationListView.d.ts +0 -2
- package/dist/agents/tasks/PersonPill.d.ts +1 -2
- package/dist/agents/tasks/TaskTable.d.ts +0 -14
- package/dist/agents/tasks/ThreadStatusLine.d.ts +1 -4
- package/dist/agents/tasks/UploadTaskList.d.ts +1 -5
- package/dist/agents/tasks/WorkflowComposer.d.ts +1 -1
- package/dist/agents/tasks/WorkflowsTable.d.ts +3 -4
- package/dist/agents/tasks/index.d.ts +0 -2
- package/dist/agents/tasks/taskComposerTypes.d.ts +0 -1
- package/dist/agents/workflows/WorkflowConfigDialog.d.ts +2 -3
- package/dist/agents/workflows/WorkflowRunner.d.ts +3 -7
- package/dist/calendar/index.cjs +116 -116
- package/dist/calendar/index.js +1 -1
- package/dist/calls/index.cjs +1 -1
- package/dist/calls/index.js +1 -1
- package/dist/chat/index.cjs +2 -2
- package/dist/chat/index.js +2 -2
- package/dist/{chunk-PVPGD6QR.js → chunk-34DWIXUN.js} +3 -3
- package/dist/{chunk-PVPGD6QR.js.map → chunk-34DWIXUN.js.map} +1 -1
- package/dist/{chunk-QUZPQWPX.js → chunk-4SXG6ACE.js} +237 -5
- package/dist/chunk-4SXG6ACE.js.map +1 -0
- package/dist/{chunk-23ACBETH.cjs → chunk-5CKTUHNS.cjs} +4 -4
- package/dist/{chunk-23ACBETH.cjs.map → chunk-5CKTUHNS.cjs.map} +1 -1
- package/dist/{chunk-3VFQYKB5.cjs → chunk-7TOBKEOV.cjs} +284 -74
- package/dist/chunk-7TOBKEOV.cjs.map +1 -0
- package/dist/{chunk-45Y7ASBC.cjs → chunk-7ZVL44YM.cjs} +49 -51
- package/dist/chunk-7ZVL44YM.cjs.map +1 -0
- package/dist/{chunk-COZDIUG7.cjs → chunk-BI6O7OMA.cjs} +32 -14
- package/dist/chunk-BI6O7OMA.cjs.map +1 -0
- package/dist/{chunk-JWRTUYLC.js → chunk-BPPX3ESB.js} +3 -3
- package/dist/{chunk-JWRTUYLC.js.map → chunk-BPPX3ESB.js.map} +1 -1
- package/dist/{chunk-FHXXDPNU.cjs → chunk-CCTNZ25D.cjs} +32 -460
- package/dist/chunk-CCTNZ25D.cjs.map +1 -0
- package/dist/{chunk-HGFU47TY.js → chunk-D4LZKHIL.js} +3 -3
- package/dist/{chunk-HGFU47TY.js.map → chunk-D4LZKHIL.js.map} +1 -1
- package/dist/{chunk-EOIJ5JYP.cjs → chunk-DDUHNTD3.cjs} +4 -4
- package/dist/{chunk-EOIJ5JYP.cjs.map → chunk-DDUHNTD3.cjs.map} +1 -1
- package/dist/{chunk-AWVGKHJT.js → chunk-E5RN3LWS.js} +2 -2
- package/dist/{chunk-AWVGKHJT.js.map → chunk-E5RN3LWS.js.map} +1 -1
- package/dist/{chunk-Z4KXF7WS.cjs → chunk-EG6YBT7G.cjs} +7 -7
- package/dist/{chunk-Z4KXF7WS.cjs.map → chunk-EG6YBT7G.cjs.map} +1 -1
- package/dist/{chunk-2FRUMQLS.cjs → chunk-EUGCT5MB.cjs} +3 -3
- package/dist/{chunk-2FRUMQLS.cjs.map → chunk-EUGCT5MB.cjs.map} +1 -1
- package/dist/{chunk-RFKAE6WS.js → chunk-G7GPG5NO.js} +26 -453
- package/dist/chunk-G7GPG5NO.js.map +1 -0
- package/dist/{chunk-YBVBDVQX.cjs → chunk-GE45EHTG.cjs} +18 -18
- package/dist/{chunk-YBVBDVQX.cjs.map → chunk-GE45EHTG.cjs.map} +1 -1
- package/dist/{chunk-PGKZBAJB.js → chunk-KIDUTH2V.js} +9 -11
- package/dist/chunk-KIDUTH2V.js.map +1 -0
- package/dist/{chunk-TAI23FCY.js → chunk-KVNXCL2Y.js} +8 -9
- package/dist/chunk-KVNXCL2Y.js.map +1 -0
- package/dist/{chunk-W3PSIIMN.cjs → chunk-LM7DVT7C.cjs} +2 -2
- package/dist/{chunk-W3PSIIMN.cjs.map → chunk-LM7DVT7C.cjs.map} +1 -1
- package/dist/{chunk-Y6ZNWC7E.cjs → chunk-OYRORWS2.cjs} +13 -14
- package/dist/chunk-OYRORWS2.cjs.map +1 -0
- package/dist/{chunk-OZL5ABLF.js → chunk-PLUMPQA4.js} +6 -9
- package/dist/chunk-PLUMPQA4.js.map +1 -0
- package/dist/{chunk-323R76RZ.js → chunk-PTBGTGFG.js} +3 -3
- package/dist/{chunk-323R76RZ.js.map → chunk-PTBGTGFG.js.map} +1 -1
- package/dist/{chunk-BWWND4Y7.js → chunk-QQLGNNZI.js} +3 -3
- package/dist/{chunk-BWWND4Y7.js.map → chunk-QQLGNNZI.js.map} +1 -1
- package/dist/{chunk-UDMII47W.cjs → chunk-SU374FEM.cjs} +10 -13
- package/dist/chunk-SU374FEM.cjs.map +1 -0
- package/dist/{chunk-APXW5XGA.js → chunk-TJJE3XOO.js} +3 -3
- package/dist/{chunk-APXW5XGA.js.map → chunk-TJJE3XOO.js.map} +1 -1
- package/dist/{chunk-ZIQGSFHG.cjs → chunk-VSABGETQ.cjs} +5 -5
- package/dist/{chunk-ZIQGSFHG.cjs.map → chunk-VSABGETQ.cjs.map} +1 -1
- package/dist/{chunk-SBVOYSOO.js → chunk-WH2BIMAZ.js} +3 -3
- package/dist/{chunk-SBVOYSOO.js.map → chunk-WH2BIMAZ.js.map} +1 -1
- package/dist/{chunk-F73EZQT4.cjs → chunk-WJEJF5NT.cjs} +242 -3
- package/dist/chunk-WJEJF5NT.cjs.map +1 -0
- package/dist/{chunk-W5D5GFP2.js → chunk-WLA3DA62.js} +281 -71
- package/dist/chunk-WLA3DA62.js.map +1 -0
- package/dist/{chunk-ZDZY6OPL.cjs → chunk-XUEJYHEP.cjs} +3 -3
- package/dist/{chunk-ZDZY6OPL.cjs.map → chunk-XUEJYHEP.cjs.map} +1 -1
- package/dist/{chunk-NDVLCOWS.js → chunk-Z6LX4ZGL.js} +31 -13
- package/dist/chunk-Z6LX4ZGL.js.map +1 -0
- package/dist/connect/docx.cjs +13 -13
- package/dist/connect/docx.js +9 -9
- package/dist/connect/index.cjs +609 -655
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.d.ts +1 -0
- package/dist/connect/index.js +210 -257
- package/dist/connect/index.js.map +1 -1
- package/dist/connect/viewer.cjs +10 -10
- package/dist/connect/viewer.js +9 -9
- package/dist/connection/ConnectedWorkflowBuilder.d.ts +1 -4
- package/dist/connection/ConnectedWorkflowHistory.d.ts +1 -4
- package/dist/connection/ConnectedWorkflowRunner.d.ts +3 -4
- package/dist/connection/ConnectedWorkflowsTable.d.ts +5 -4
- package/dist/connection/conversation/ConnectedMessageArea.d.ts +2 -0
- package/dist/connection/conversation/ConnectedMessageList.d.ts +4 -1
- package/dist/connection/embedded/EmbeddedChatPanel.d.ts +3 -1
- package/dist/connection/facts/ConnectedFactsPage.d.ts +8 -8
- package/dist/connection/facts/ConnectedFactsSmartSearch.d.ts +9 -0
- package/dist/connection/facts/types.d.ts +1 -6
- package/dist/connection/threads-page/ConnectedThreadsPage.d.ts +1 -4
- package/dist/connection/viewer/useImageCrop.d.ts +6 -3
- package/dist/connection/workflows/ConnectedWorkflowsPage.d.ts +4 -13
- package/dist/connection/workflows/support.d.ts +1 -1
- package/dist/dashboards/index.cjs +1 -1
- package/dist/dashboards/index.js +1 -1
- package/dist/embed/index.cjs +19 -11
- package/dist/embed/index.d.ts +2 -0
- package/dist/embed/index.js +8 -8
- package/dist/facts/index.cjs +70 -281
- package/dist/facts/index.cjs.map +1 -1
- package/dist/facts/index.js +9 -241
- package/dist/facts/index.js.map +1 -1
- package/dist/files/index.cjs +1 -1
- package/dist/files/index.js +1 -1
- package/dist/home/index.cjs +31 -31
- package/dist/home/index.js +4 -4
- package/dist/index.cjs +571 -575
- package/dist/index.js +20 -20
- package/dist/settings/index.cjs +2 -2
- package/dist/settings/index.js +2 -2
- package/dist/studio/index.cjs +2 -2
- package/dist/studio/index.js +2 -2
- package/dist/workflow-canvas/index.cjs +26 -31
- package/dist/workflow-canvas/index.cjs.map +1 -1
- package/dist/workflow-canvas/index.js +11 -16
- 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-5MHLV24V.js.map +0 -1
- package/dist/ConnectedStreamedWordArtifact-LNGW7YGV.cjs.map +0 -1
- package/dist/agents/tasks/TaskInbox.d.ts +0 -26
- package/dist/chunk-3VFQYKB5.cjs.map +0 -1
- package/dist/chunk-45Y7ASBC.cjs.map +0 -1
- package/dist/chunk-COZDIUG7.cjs.map +0 -1
- package/dist/chunk-F73EZQT4.cjs.map +0 -1
- package/dist/chunk-FHXXDPNU.cjs.map +0 -1
- package/dist/chunk-NDVLCOWS.js.map +0 -1
- package/dist/chunk-OZL5ABLF.js.map +0 -1
- package/dist/chunk-PGKZBAJB.js.map +0 -1
- package/dist/chunk-QUZPQWPX.js.map +0 -1
- package/dist/chunk-RFKAE6WS.js.map +0 -1
- package/dist/chunk-TAI23FCY.js.map +0 -1
- package/dist/chunk-UDMII47W.cjs.map +0 -1
- package/dist/chunk-W5D5GFP2.js.map +0 -1
- package/dist/chunk-Y6ZNWC7E.cjs.map +0 -1
package/dist/facts/index.cjs
CHANGED
|
@@ -1,30 +1,29 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkWJEJF5NT_cjs = require('../chunk-WJEJF5NT.cjs');
|
|
5
5
|
var chunkXFL67STW_cjs = require('../chunk-XFL67STW.cjs');
|
|
6
6
|
var chunk5FYU7ZIU_cjs = require('../chunk-5FYU7ZIU.cjs');
|
|
7
7
|
require('../chunk-2WLXQGWC.cjs');
|
|
8
|
+
require('../chunk-QUMUAJ2P.cjs');
|
|
9
|
+
require('../chunk-YCO4ZBBL.cjs');
|
|
8
10
|
require('../chunk-VPPX5XUF.cjs');
|
|
9
|
-
var chunkYCO4ZBBL_cjs = require('../chunk-YCO4ZBBL.cjs');
|
|
10
11
|
var chunkRC25WMVB_cjs = require('../chunk-RC25WMVB.cjs');
|
|
11
12
|
require('../chunk-V4ISCZJ7.cjs');
|
|
12
13
|
var chunk2EI7NCUA_cjs = require('../chunk-2EI7NCUA.cjs');
|
|
13
14
|
var chunkLKK52DEY_cjs = require('../chunk-LKK52DEY.cjs');
|
|
14
|
-
require('../chunk-QUMUAJ2P.cjs');
|
|
15
15
|
require('../chunk-WVEFRQSW.cjs');
|
|
16
|
-
var chunkUFEXJIEY_cjs = require('../chunk-UFEXJIEY.cjs');
|
|
17
16
|
require('../chunk-FX3K6LNZ.cjs');
|
|
18
17
|
require('../chunk-PPCATBOY.cjs');
|
|
18
|
+
var chunkUFEXJIEY_cjs = require('../chunk-UFEXJIEY.cjs');
|
|
19
19
|
require('../chunk-T6GRWWRY.cjs');
|
|
20
20
|
require('../chunk-GMM3RBIB.cjs');
|
|
21
21
|
require('../chunk-ULWRNGGE.cjs');
|
|
22
|
-
|
|
22
|
+
require('../chunk-MHVNT4J3.cjs');
|
|
23
23
|
require('../chunk-DES3K4SD.cjs');
|
|
24
24
|
var react = require('react');
|
|
25
25
|
var ui = require('@arbidocs/react/ui');
|
|
26
26
|
var jsxRuntime = require('react/jsx-runtime');
|
|
27
|
-
var lucideReact = require('lucide-react');
|
|
28
27
|
|
|
29
28
|
function FactSwitch({ checked, label, onToggle, testId }) {
|
|
30
29
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -77,13 +76,13 @@ function FactsTable({
|
|
|
77
76
|
gridProps,
|
|
78
77
|
testId = "facts-table"
|
|
79
78
|
}) {
|
|
80
|
-
const l = { ...
|
|
79
|
+
const l = { ...chunkWJEJF5NT_cjs.DEFAULT_FACT_COLUMN_LABELS, ...columnLabels };
|
|
81
80
|
const columnDefs = react.useMemo(
|
|
82
|
-
() =>
|
|
81
|
+
() => chunkWJEJF5NT_cjs.createFactColumns({
|
|
83
82
|
isInChat,
|
|
84
83
|
onToggleInChat,
|
|
85
84
|
renderHeader: (params) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[12.5px] font-medium", children: params.displayName }),
|
|
86
|
-
renderRowActions: (fact) => onEdit && onDelete ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
85
|
+
renderRowActions: (fact) => onEdit && onDelete ? /* @__PURE__ */ jsxRuntime.jsx(chunkWJEJF5NT_cjs.FactRowActions, { onEdit: () => onEdit(fact), onDelete: () => onDelete(fact) }) : null,
|
|
87
86
|
renderLabels: (fact) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex flex-wrap items-center gap-1", children: (fact.tags ?? []).map((tag) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
88
87
|
"span",
|
|
89
88
|
{
|
|
@@ -179,373 +178,170 @@ function toFactRow(record) {
|
|
|
179
178
|
function toFactRows(records) {
|
|
180
179
|
return records.map(toFactRow);
|
|
181
180
|
}
|
|
182
|
-
var DEFAULT_FACT_SEARCH_BAR_LABELS = {
|
|
183
|
-
search: "Search:",
|
|
184
|
-
// An example query rather than an instruction: shows the quoted-phrase syntax.
|
|
185
|
-
placeholder: 'e.g. "board meeting" decision on the budget',
|
|
186
|
-
clear: "Clear search",
|
|
187
|
-
submit: "Search"
|
|
188
|
-
};
|
|
189
|
-
var DEFAULT_FACT_SEARCH_RESULT_LABELS = {
|
|
190
|
-
inChat: "In this chat",
|
|
191
|
-
verified: "Verified",
|
|
192
|
-
open: "Open"
|
|
193
|
-
};
|
|
194
|
-
function FactSearchBar({
|
|
195
|
-
query,
|
|
196
|
-
onQueryChange,
|
|
197
|
-
onSubmit,
|
|
198
|
-
onClear,
|
|
199
|
-
isSearching,
|
|
200
|
-
placeholder,
|
|
201
|
-
labels,
|
|
202
|
-
testIds
|
|
203
|
-
}) {
|
|
204
|
-
const l = { ...DEFAULT_FACT_SEARCH_BAR_LABELS, ...labels };
|
|
205
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-t border-border px-6 pb-4 pt-6", "data-slot": "fact-search-bar", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
206
|
-
"form",
|
|
207
|
-
{
|
|
208
|
-
onSubmit: (e) => {
|
|
209
|
-
e.preventDefault();
|
|
210
|
-
onSubmit();
|
|
211
|
-
},
|
|
212
|
-
className: "mx-auto flex w-full max-w-2xl items-center gap-3",
|
|
213
|
-
children: [
|
|
214
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
215
|
-
"label",
|
|
216
|
-
{
|
|
217
|
-
htmlFor: "facts-smart-search-input",
|
|
218
|
-
className: "shrink-0 text-base font-medium text-foreground",
|
|
219
|
-
children: l.search
|
|
220
|
-
}
|
|
221
|
-
),
|
|
222
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 items-start gap-2 rounded-lg border border-border bg-background px-3.5 py-2.5 transition-colors focus-within:border-ring focus-within:ring-2 focus-within:ring-ring", children: [
|
|
223
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
224
|
-
"textarea",
|
|
225
|
-
{
|
|
226
|
-
id: "facts-smart-search-input",
|
|
227
|
-
rows: 1,
|
|
228
|
-
value: query,
|
|
229
|
-
onChange: (e) => {
|
|
230
|
-
onQueryChange(e.target.value);
|
|
231
|
-
e.target.style.height = "auto";
|
|
232
|
-
e.target.style.height = `${e.target.scrollHeight}px`;
|
|
233
|
-
},
|
|
234
|
-
onKeyDown: (e) => {
|
|
235
|
-
if (e.key === "Enter" && !e.shiftKey) {
|
|
236
|
-
e.preventDefault();
|
|
237
|
-
onSubmit();
|
|
238
|
-
}
|
|
239
|
-
},
|
|
240
|
-
placeholder: placeholder ?? l.placeholder,
|
|
241
|
-
className: "flex-1 resize-none overflow-hidden border-0 bg-transparent p-0 text-base leading-relaxed text-foreground outline-none placeholder:text-muted-foreground",
|
|
242
|
-
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.input, { testId: "facts-smart-search-input" }),
|
|
243
|
-
autoFocus: true
|
|
244
|
-
}
|
|
245
|
-
),
|
|
246
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [
|
|
247
|
-
query && /* @__PURE__ */ jsxRuntime.jsx(
|
|
248
|
-
ui.Button,
|
|
249
|
-
{
|
|
250
|
-
type: "button",
|
|
251
|
-
variant: "ghost",
|
|
252
|
-
size: "icon",
|
|
253
|
-
className: "size-7 text-muted-foreground hover:text-foreground pointer-coarse:size-11",
|
|
254
|
-
onClick: onClear,
|
|
255
|
-
"aria-label": l.clear,
|
|
256
|
-
title: l.clear,
|
|
257
|
-
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.clear, { testId: "facts-smart-search-clear" }),
|
|
258
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "size-4" })
|
|
259
|
-
}
|
|
260
|
-
),
|
|
261
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
262
|
-
ui.Button,
|
|
263
|
-
{
|
|
264
|
-
type: "submit",
|
|
265
|
-
size: "icon",
|
|
266
|
-
disabled: !query.trim() || isSearching,
|
|
267
|
-
className: "size-7 pointer-coarse:size-11",
|
|
268
|
-
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.submit, { testId: "facts-smart-search-submit" }),
|
|
269
|
-
title: l.submit,
|
|
270
|
-
children: isSearching ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-4 animate-spin" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "size-4" })
|
|
271
|
-
}
|
|
272
|
-
)
|
|
273
|
-
] })
|
|
274
|
-
] })
|
|
275
|
-
]
|
|
276
|
-
}
|
|
277
|
-
) });
|
|
278
|
-
}
|
|
279
|
-
function FactSearchTotals({ children, testId }) {
|
|
280
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 pb-3", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
281
|
-
"p",
|
|
282
|
-
{
|
|
283
|
-
className: "font-sans text-base font-semibold tabular-nums text-foreground",
|
|
284
|
-
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "facts-smart-search-totals" }),
|
|
285
|
-
children
|
|
286
|
-
}
|
|
287
|
-
) });
|
|
288
|
-
}
|
|
289
|
-
function FactSearchPending({ children }) {
|
|
290
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 py-16 text-sm text-muted-foreground", children: [
|
|
291
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-4 animate-spin" }),
|
|
292
|
-
" ",
|
|
293
|
-
children
|
|
294
|
-
] });
|
|
295
|
-
}
|
|
296
|
-
function FactSearchNoMatches({
|
|
297
|
-
children,
|
|
298
|
-
testId
|
|
299
|
-
}) {
|
|
300
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
301
|
-
"div",
|
|
302
|
-
{
|
|
303
|
-
className: "py-16 text-center text-sm text-muted-foreground",
|
|
304
|
-
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "facts-smart-search-empty" }),
|
|
305
|
-
children
|
|
306
|
-
}
|
|
307
|
-
);
|
|
308
|
-
}
|
|
309
|
-
function FactSearchResult({
|
|
310
|
-
id,
|
|
311
|
-
rank,
|
|
312
|
-
text,
|
|
313
|
-
terms,
|
|
314
|
-
renderSnippet,
|
|
315
|
-
labels,
|
|
316
|
-
isInChat,
|
|
317
|
-
isVerified,
|
|
318
|
-
isSelected,
|
|
319
|
-
onOpen,
|
|
320
|
-
uiLabels: labelOverrides,
|
|
321
|
-
testIds,
|
|
322
|
-
href
|
|
323
|
-
}) {
|
|
324
|
-
const l = { ...DEFAULT_FACT_SEARCH_RESULT_LABELS, ...labelOverrides };
|
|
325
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2", "data-slot": "fact-search-hit", children: [
|
|
326
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
327
|
-
"span",
|
|
328
|
-
{
|
|
329
|
-
className: "w-5 shrink-0 pt-3 text-right text-xs tabular-nums text-muted-foreground",
|
|
330
|
-
"aria-hidden": "true",
|
|
331
|
-
children: rank
|
|
332
|
-
}
|
|
333
|
-
),
|
|
334
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
335
|
-
chunkYCO4ZBBL_cjs.SearchHit,
|
|
336
|
-
{
|
|
337
|
-
className: "min-w-0 flex-1",
|
|
338
|
-
testId: chunkMHVNT4J3_cjs.testIdOr(testIds?.hit?.(id), { testId: `facts-smart-search-hit-${id}` }),
|
|
339
|
-
href,
|
|
340
|
-
selected: isSelected,
|
|
341
|
-
onClick: onOpen,
|
|
342
|
-
content: text,
|
|
343
|
-
terms,
|
|
344
|
-
renderSnippet,
|
|
345
|
-
header: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
346
|
-
"div",
|
|
347
|
-
{
|
|
348
|
-
className: "flex min-w-0 flex-1 flex-wrap items-center gap-1 text-xs text-muted-foreground",
|
|
349
|
-
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.labels?.(id), {
|
|
350
|
-
testId: `facts-smart-search-hit-labels-${id}`
|
|
351
|
-
}),
|
|
352
|
-
children: [
|
|
353
|
-
isInChat && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
354
|
-
"span",
|
|
355
|
-
{
|
|
356
|
-
className: "inline-flex items-center gap-1 pr-1",
|
|
357
|
-
"data-testid": `facts-smart-search-hit-in-chat-${id}`,
|
|
358
|
-
children: [
|
|
359
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Paperclip, { className: "size-3" }),
|
|
360
|
-
" ",
|
|
361
|
-
l.inChat
|
|
362
|
-
]
|
|
363
|
-
}
|
|
364
|
-
),
|
|
365
|
-
labels.map((tag) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
366
|
-
"span",
|
|
367
|
-
{
|
|
368
|
-
className: "inline-flex shrink-0 items-center gap-1 rounded border px-1.5 py-0.5 text-xs font-medium text-foreground",
|
|
369
|
-
title: tag.name,
|
|
370
|
-
style: { borderColor: tag.color },
|
|
371
|
-
children: [
|
|
372
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
373
|
-
"span",
|
|
374
|
-
{
|
|
375
|
-
className: "flex size-3.5 shrink-0 items-center justify-center rounded",
|
|
376
|
-
style: { backgroundColor: tag.color },
|
|
377
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "size-2.5 text-white", strokeWidth: 3 })
|
|
378
|
-
}
|
|
379
|
-
),
|
|
380
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "max-w-[120px] truncate", children: tag.name })
|
|
381
|
-
]
|
|
382
|
-
},
|
|
383
|
-
tag.id
|
|
384
|
-
))
|
|
385
|
-
]
|
|
386
|
-
}
|
|
387
|
-
),
|
|
388
|
-
headerRight: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-3 text-xs text-muted-foreground", children: [
|
|
389
|
-
isVerified && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
390
|
-
"span",
|
|
391
|
-
{
|
|
392
|
-
className: "inline-flex shrink-0 items-center gap-1 text-green-text",
|
|
393
|
-
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.verified?.(id), {
|
|
394
|
-
testId: `facts-smart-search-hit-verified-${id}`
|
|
395
|
-
}),
|
|
396
|
-
children: [
|
|
397
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { className: "size-3" }),
|
|
398
|
-
" ",
|
|
399
|
-
l.verified
|
|
400
|
-
]
|
|
401
|
-
}
|
|
402
|
-
),
|
|
403
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1", children: [
|
|
404
|
-
l.open,
|
|
405
|
-
" ",
|
|
406
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CornerDownLeft, { className: "size-3" })
|
|
407
|
-
] })
|
|
408
|
-
] })
|
|
409
|
-
}
|
|
410
|
-
)
|
|
411
|
-
] });
|
|
412
|
-
}
|
|
413
181
|
|
|
414
182
|
Object.defineProperty(exports, "DEFAULT_FACTS_BULK_BAR_LABELS", {
|
|
415
183
|
enumerable: true,
|
|
416
|
-
get: function () { return
|
|
184
|
+
get: function () { return chunkWJEJF5NT_cjs.DEFAULT_FACTS_BULK_BAR_LABELS; }
|
|
417
185
|
});
|
|
418
186
|
Object.defineProperty(exports, "DEFAULT_FACTS_EMPTY_STATE_LABELS", {
|
|
419
187
|
enumerable: true,
|
|
420
|
-
get: function () { return
|
|
188
|
+
get: function () { return chunkWJEJF5NT_cjs.DEFAULT_FACTS_EMPTY_STATE_LABELS; }
|
|
421
189
|
});
|
|
422
190
|
Object.defineProperty(exports, "DEFAULT_FACTS_FIELDS_BUTTON_LABELS", {
|
|
423
191
|
enumerable: true,
|
|
424
|
-
get: function () { return
|
|
192
|
+
get: function () { return chunkWJEJF5NT_cjs.DEFAULT_FACTS_FIELDS_BUTTON_LABELS; }
|
|
425
193
|
});
|
|
426
194
|
Object.defineProperty(exports, "DEFAULT_FACTS_TOOLBAR_LABELS", {
|
|
427
195
|
enumerable: true,
|
|
428
|
-
get: function () { return
|
|
196
|
+
get: function () { return chunkWJEJF5NT_cjs.DEFAULT_FACTS_TOOLBAR_LABELS; }
|
|
429
197
|
});
|
|
430
198
|
Object.defineProperty(exports, "DEFAULT_FACTS_VIEW_TOGGLE_LABELS", {
|
|
431
199
|
enumerable: true,
|
|
432
|
-
get: function () { return
|
|
200
|
+
get: function () { return chunkWJEJF5NT_cjs.DEFAULT_FACTS_VIEW_TOGGLE_LABELS; }
|
|
433
201
|
});
|
|
434
202
|
Object.defineProperty(exports, "DEFAULT_FACT_COLUMN_LABELS", {
|
|
435
203
|
enumerable: true,
|
|
436
|
-
get: function () { return
|
|
204
|
+
get: function () { return chunkWJEJF5NT_cjs.DEFAULT_FACT_COLUMN_LABELS; }
|
|
437
205
|
});
|
|
438
206
|
Object.defineProperty(exports, "DEFAULT_FACT_COLUMN_ORDER", {
|
|
439
207
|
enumerable: true,
|
|
440
|
-
get: function () { return
|
|
208
|
+
get: function () { return chunkWJEJF5NT_cjs.DEFAULT_FACT_COLUMN_ORDER; }
|
|
441
209
|
});
|
|
442
210
|
Object.defineProperty(exports, "DEFAULT_FACT_COMPOSER_LABELS", {
|
|
443
211
|
enumerable: true,
|
|
444
|
-
get: function () { return
|
|
212
|
+
get: function () { return chunkWJEJF5NT_cjs.DEFAULT_FACT_COMPOSER_LABELS; }
|
|
445
213
|
});
|
|
446
214
|
Object.defineProperty(exports, "DEFAULT_FACT_DATE_INPUT_LABELS", {
|
|
447
215
|
enumerable: true,
|
|
448
|
-
get: function () { return
|
|
216
|
+
get: function () { return chunkWJEJF5NT_cjs.DEFAULT_FACT_DATE_INPUT_LABELS; }
|
|
449
217
|
});
|
|
450
218
|
Object.defineProperty(exports, "DEFAULT_FACT_LABELS_CELL_LABELS", {
|
|
451
219
|
enumerable: true,
|
|
452
|
-
get: function () { return
|
|
220
|
+
get: function () { return chunkWJEJF5NT_cjs.DEFAULT_FACT_LABELS_CELL_LABELS; }
|
|
453
221
|
});
|
|
454
222
|
Object.defineProperty(exports, "DEFAULT_FACT_ROW_ACTIONS_LABELS", {
|
|
455
223
|
enumerable: true,
|
|
456
|
-
get: function () { return
|
|
224
|
+
get: function () { return chunkWJEJF5NT_cjs.DEFAULT_FACT_ROW_ACTIONS_LABELS; }
|
|
225
|
+
});
|
|
226
|
+
Object.defineProperty(exports, "DEFAULT_FACT_SEARCH_BAR_LABELS", {
|
|
227
|
+
enumerable: true,
|
|
228
|
+
get: function () { return chunkWJEJF5NT_cjs.DEFAULT_FACT_SEARCH_BAR_LABELS; }
|
|
229
|
+
});
|
|
230
|
+
Object.defineProperty(exports, "DEFAULT_FACT_SEARCH_RESULT_LABELS", {
|
|
231
|
+
enumerable: true,
|
|
232
|
+
get: function () { return chunkWJEJF5NT_cjs.DEFAULT_FACT_SEARCH_RESULT_LABELS; }
|
|
457
233
|
});
|
|
458
234
|
Object.defineProperty(exports, "DEFAULT_FACT_SOURCES_ROW_LABELS", {
|
|
459
235
|
enumerable: true,
|
|
460
|
-
get: function () { return
|
|
236
|
+
get: function () { return chunkWJEJF5NT_cjs.DEFAULT_FACT_SOURCES_ROW_LABELS; }
|
|
461
237
|
});
|
|
462
238
|
Object.defineProperty(exports, "DEFAULT_FACT_SOURCE_GROUP_LABELS", {
|
|
463
239
|
enumerable: true,
|
|
464
|
-
get: function () { return
|
|
240
|
+
get: function () { return chunkWJEJF5NT_cjs.DEFAULT_FACT_SOURCE_GROUP_LABELS; }
|
|
465
241
|
});
|
|
466
242
|
Object.defineProperty(exports, "DEFAULT_FACT_TIMELINE_LABELS", {
|
|
467
243
|
enumerable: true,
|
|
468
|
-
get: function () { return
|
|
244
|
+
get: function () { return chunkWJEJF5NT_cjs.DEFAULT_FACT_TIMELINE_LABELS; }
|
|
469
245
|
});
|
|
470
246
|
Object.defineProperty(exports, "FactComposer", {
|
|
471
247
|
enumerable: true,
|
|
472
|
-
get: function () { return
|
|
248
|
+
get: function () { return chunkWJEJF5NT_cjs.FactComposer; }
|
|
473
249
|
});
|
|
474
250
|
Object.defineProperty(exports, "FactDateInput", {
|
|
475
251
|
enumerable: true,
|
|
476
|
-
get: function () { return
|
|
252
|
+
get: function () { return chunkWJEJF5NT_cjs.FactDateInput; }
|
|
477
253
|
});
|
|
478
254
|
Object.defineProperty(exports, "FactFieldRow", {
|
|
479
255
|
enumerable: true,
|
|
480
|
-
get: function () { return
|
|
256
|
+
get: function () { return chunkWJEJF5NT_cjs.FactFieldRow; }
|
|
481
257
|
});
|
|
482
258
|
Object.defineProperty(exports, "FactLabelsCell", {
|
|
483
259
|
enumerable: true,
|
|
484
|
-
get: function () { return
|
|
260
|
+
get: function () { return chunkWJEJF5NT_cjs.FactLabelsCell; }
|
|
485
261
|
});
|
|
486
262
|
Object.defineProperty(exports, "FactRowActions", {
|
|
487
263
|
enumerable: true,
|
|
488
|
-
get: function () { return
|
|
264
|
+
get: function () { return chunkWJEJF5NT_cjs.FactRowActions; }
|
|
265
|
+
});
|
|
266
|
+
Object.defineProperty(exports, "FactSearchBar", {
|
|
267
|
+
enumerable: true,
|
|
268
|
+
get: function () { return chunkWJEJF5NT_cjs.FactSearchBar; }
|
|
269
|
+
});
|
|
270
|
+
Object.defineProperty(exports, "FactSearchNoMatches", {
|
|
271
|
+
enumerable: true,
|
|
272
|
+
get: function () { return chunkWJEJF5NT_cjs.FactSearchNoMatches; }
|
|
273
|
+
});
|
|
274
|
+
Object.defineProperty(exports, "FactSearchPending", {
|
|
275
|
+
enumerable: true,
|
|
276
|
+
get: function () { return chunkWJEJF5NT_cjs.FactSearchPending; }
|
|
277
|
+
});
|
|
278
|
+
Object.defineProperty(exports, "FactSearchResult", {
|
|
279
|
+
enumerable: true,
|
|
280
|
+
get: function () { return chunkWJEJF5NT_cjs.FactSearchResult; }
|
|
281
|
+
});
|
|
282
|
+
Object.defineProperty(exports, "FactSearchTotals", {
|
|
283
|
+
enumerable: true,
|
|
284
|
+
get: function () { return chunkWJEJF5NT_cjs.FactSearchTotals; }
|
|
489
285
|
});
|
|
490
286
|
Object.defineProperty(exports, "FactSourceGroup", {
|
|
491
287
|
enumerable: true,
|
|
492
|
-
get: function () { return
|
|
288
|
+
get: function () { return chunkWJEJF5NT_cjs.FactSourceGroup; }
|
|
493
289
|
});
|
|
494
290
|
Object.defineProperty(exports, "FactSourcesRow", {
|
|
495
291
|
enumerable: true,
|
|
496
|
-
get: function () { return
|
|
292
|
+
get: function () { return chunkWJEJF5NT_cjs.FactSourcesRow; }
|
|
497
293
|
});
|
|
498
294
|
Object.defineProperty(exports, "FactsBulkBar", {
|
|
499
295
|
enumerable: true,
|
|
500
|
-
get: function () { return
|
|
296
|
+
get: function () { return chunkWJEJF5NT_cjs.FactsBulkBar; }
|
|
501
297
|
});
|
|
502
298
|
Object.defineProperty(exports, "FactsCalendar", {
|
|
503
299
|
enumerable: true,
|
|
504
|
-
get: function () { return
|
|
300
|
+
get: function () { return chunkWJEJF5NT_cjs.FactsCalendar; }
|
|
505
301
|
});
|
|
506
302
|
Object.defineProperty(exports, "FactsEmptyState", {
|
|
507
303
|
enumerable: true,
|
|
508
|
-
get: function () { return
|
|
304
|
+
get: function () { return chunkWJEJF5NT_cjs.FactsEmptyState; }
|
|
509
305
|
});
|
|
510
306
|
Object.defineProperty(exports, "FactsFieldsButton", {
|
|
511
307
|
enumerable: true,
|
|
512
|
-
get: function () { return
|
|
308
|
+
get: function () { return chunkWJEJF5NT_cjs.FactsFieldsButton; }
|
|
513
309
|
});
|
|
514
310
|
Object.defineProperty(exports, "FactsGanttPane", {
|
|
515
311
|
enumerable: true,
|
|
516
|
-
get: function () { return
|
|
312
|
+
get: function () { return chunkWJEJF5NT_cjs.FactsGanttPane; }
|
|
517
313
|
});
|
|
518
314
|
Object.defineProperty(exports, "FactsLoadError", {
|
|
519
315
|
enumerable: true,
|
|
520
|
-
get: function () { return
|
|
316
|
+
get: function () { return chunkWJEJF5NT_cjs.FactsLoadError; }
|
|
521
317
|
});
|
|
522
318
|
Object.defineProperty(exports, "FactsLoading", {
|
|
523
319
|
enumerable: true,
|
|
524
|
-
get: function () { return
|
|
320
|
+
get: function () { return chunkWJEJF5NT_cjs.FactsLoading; }
|
|
525
321
|
});
|
|
526
322
|
Object.defineProperty(exports, "FactsToolbar", {
|
|
527
323
|
enumerable: true,
|
|
528
|
-
get: function () { return
|
|
324
|
+
get: function () { return chunkWJEJF5NT_cjs.FactsToolbar; }
|
|
529
325
|
});
|
|
530
326
|
Object.defineProperty(exports, "FactsViewToggle", {
|
|
531
327
|
enumerable: true,
|
|
532
|
-
get: function () { return
|
|
328
|
+
get: function () { return chunkWJEJF5NT_cjs.FactsViewToggle; }
|
|
533
329
|
});
|
|
534
330
|
Object.defineProperty(exports, "ISO_DATE_FILTER_PARAMS", {
|
|
535
331
|
enumerable: true,
|
|
536
|
-
get: function () { return
|
|
332
|
+
get: function () { return chunkWJEJF5NT_cjs.ISO_DATE_FILTER_PARAMS; }
|
|
537
333
|
});
|
|
538
334
|
Object.defineProperty(exports, "createFactColumns", {
|
|
539
335
|
enumerable: true,
|
|
540
|
-
get: function () { return
|
|
336
|
+
get: function () { return chunkWJEJF5NT_cjs.createFactColumns; }
|
|
541
337
|
});
|
|
542
338
|
Object.defineProperty(exports, "enableFactTableColumnResize", {
|
|
543
339
|
enumerable: true,
|
|
544
|
-
get: function () { return
|
|
340
|
+
get: function () { return chunkWJEJF5NT_cjs.enableFactTableColumnResize; }
|
|
545
341
|
});
|
|
546
342
|
Object.defineProperty(exports, "sourceDocCount", {
|
|
547
343
|
enumerable: true,
|
|
548
|
-
get: function () { return
|
|
344
|
+
get: function () { return chunkWJEJF5NT_cjs.sourceDocCount; }
|
|
549
345
|
});
|
|
550
346
|
Object.defineProperty(exports, "EMPTY_FACT_DATE_FIELDS", {
|
|
551
347
|
enumerable: true,
|
|
@@ -647,13 +443,6 @@ Object.defineProperty(exports, "FactsFilterInput", {
|
|
|
647
443
|
enumerable: true,
|
|
648
444
|
get: function () { return chunk2EI7NCUA_cjs.FilterInput; }
|
|
649
445
|
});
|
|
650
|
-
exports.DEFAULT_FACT_SEARCH_BAR_LABELS = DEFAULT_FACT_SEARCH_BAR_LABELS;
|
|
651
|
-
exports.DEFAULT_FACT_SEARCH_RESULT_LABELS = DEFAULT_FACT_SEARCH_RESULT_LABELS;
|
|
652
|
-
exports.FactSearchBar = FactSearchBar;
|
|
653
|
-
exports.FactSearchNoMatches = FactSearchNoMatches;
|
|
654
|
-
exports.FactSearchPending = FactSearchPending;
|
|
655
|
-
exports.FactSearchResult = FactSearchResult;
|
|
656
|
-
exports.FactSearchTotals = FactSearchTotals;
|
|
657
446
|
exports.FactsTable = FactsTable;
|
|
658
447
|
exports.toFactRow = toFactRow;
|
|
659
448
|
exports.toFactRows = toFactRows;
|
package/dist/facts/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/facts/FactsTable.tsx","../../src/facts/fact-row.ts","../../src/facts/FactSearchParts.tsx"],"names":["jsx","cn","DEFAULT_FACT_COLUMN_LABELS","useMemo","createFactColumns","FactRowActions","GridView","jsxs","testIdOr","Button","X","Loader2","Search","SearchHit","Paperclip","Check","CheckCircle2","CornerDownLeft"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * FactsTable: the default facts grid. `createFactColumns` wired to `GridView` with ready-made\n * cells (in-chat, verified and shared switches, label chips, creator initials, row menu), so a host\n * only supplies rows and handlers. Hosts that need custom cells call `createFactColumns` with\n * their own slots and render `GridView` themselves.\n */\nimport { useMemo, type ReactNode } from 'react'\nimport type { ColDef, ICellRendererParams } from 'ag-grid-community'\nimport { cn } from '@arbidocs/react/ui'\nimport { GridView, type GridViewProps } from '../files/GridView'\nimport { initials } from '../lib/format'\nimport { FactRowActions } from './FactRowActions'\nimport {\n DEFAULT_FACT_COLUMN_LABELS,\n createFactColumns,\n type FactColumnLabels,\n type FactRowView,\n} from './factColumns'\n\nexport interface FactsTableProps<T extends FactRowView> {\n facts: T[]\n /** With `onToggleInChat`, shows the In chat column (whether a fact is in the host's chat). */\n isInChat?: (fact: T) => boolean\n onToggleInChat?: (fact: T) => void\n onToggleConfirmed: (fact: T) => void\n onToggleShared: (fact: T) => void\n /** The row menu appears when both `onEdit` and `onDelete` are provided. */\n onEdit?: (fact: T) => void\n onDelete?: (fact: T) => void\n /** Row click (opens the fact). */\n onOpen?: (fact: T) => void\n /** Display name of the fact's creator (sorting, filtering and the initials chip). */\n getCreatorName?: (fact: T) => string\n /** Friendly display of an ISO timestamp. Defaults to the locale date. */\n formatDate?: (iso: string) => string\n columnLabels?: Partial<FactColumnLabels>\n isLoading?: boolean\n /** Saved column state key (AG Grid persists by it). */\n gridId?: string\n height?: GridViewProps<T>['height']\n rowHeight?: number\n /** Escape hatch for any other `GridView` prop. */\n gridProps?: Partial<Omit<GridViewProps<T>, 'items' | 'columnDefs' | 'getItemId'>>\n testId?: string\n}\n\ninterface FactSwitchProps {\n checked: boolean\n label: string\n onToggle: () => void\n testId: string\n}\n\nfunction FactSwitch({ checked, label, onToggle, testId }: FactSwitchProps) {\n return (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n aria-label={label}\n onClick={onToggle}\n data-testid={testId}\n className={cn(\n 'inline-flex h-5 w-9 items-center rounded-full p-0.5 transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n checked ? 'bg-green-solid' : 'bg-muted-foreground/30'\n )}\n >\n <span\n className={cn(\n 'size-4 rounded-full bg-background transition-transform',\n checked && 'translate-x-4'\n )}\n />\n </button>\n )\n}\n\nconst defaultFormatDate = (iso: string): string => {\n const d = new Date(iso)\n return Number.isNaN(d.getTime()) ? iso : d.toLocaleDateString()\n}\n\nconst EMPTY_STATE = { title: 'No facts yet' }\n\n/** The default facts table: columns, cells and the grid in one component. */\nexport function FactsTable<T extends FactRowView>({\n facts,\n isInChat,\n onToggleInChat,\n onToggleConfirmed,\n onToggleShared,\n onEdit,\n onDelete,\n onOpen,\n getCreatorName,\n formatDate = defaultFormatDate,\n columnLabels,\n isLoading,\n gridId = 'facts-table-v1',\n height = '100%',\n rowHeight = 52,\n gridProps,\n testId = 'facts-table',\n}: FactsTableProps<T>) {\n const l = { ...DEFAULT_FACT_COLUMN_LABELS, ...columnLabels }\n\n const columnDefs = useMemo<ColDef<T>[]>(\n () =>\n createFactColumns<T>({\n isInChat,\n onToggleInChat,\n renderHeader: (params) => (\n <span className=\"text-[12.5px] font-medium\">{params.displayName}</span>\n ),\n renderRowActions: (fact) =>\n onEdit && onDelete ? (\n <FactRowActions onEdit={() => onEdit(fact)} onDelete={() => onDelete(fact)} />\n ) : null,\n renderLabels: (fact): ReactNode => (\n <span className=\"flex flex-wrap items-center gap-1\">\n {(fact.tags ?? []).map((tag) => (\n <span\n key={tag.name}\n className=\"rounded-full bg-muted px-2 py-px text-xs text-muted-foreground\"\n >\n {tag.name}\n </span>\n ))}\n </span>\n ),\n renderVerified: (fact) => (\n <FactSwitch\n checked={fact.confirmed}\n label={l.verified}\n onToggle={() => onToggleConfirmed(fact)}\n testId={`facts-grid-confirmed-${fact.external_id}`}\n />\n ),\n renderShared: (fact) => (\n <FactSwitch\n checked={fact.shared}\n label={l.shared}\n onToggle={() => onToggleShared(fact)}\n testId={`facts-grid-shared-${fact.external_id}`}\n />\n ),\n renderCreator: (fact, _params: ICellRendererParams<T>) => {\n const name = getCreatorName?.(fact) ?? ''\n return name ? (\n <span\n title={name}\n className=\"inline-flex size-6 items-center justify-center rounded-full bg-muted text-[10px] font-medium text-muted-foreground\"\n >\n {initials(name)}\n </span>\n ) : null\n },\n getCreatorName: (params) => (params.data ? (getCreatorName?.(params.data) ?? '') : ''),\n formatDate,\n labels: columnLabels,\n }),\n [\n isInChat,\n onToggleInChat,\n onToggleConfirmed,\n onToggleShared,\n onEdit,\n onDelete,\n getCreatorName,\n formatDate,\n columnLabels,\n l.verified,\n l.shared,\n ]\n )\n\n return (\n <GridView<T>\n testId={testId}\n items={facts}\n columnDefs={columnDefs}\n getItemId={(fact) => fact.external_id}\n onRowClick={onOpen}\n isLoading={isLoading}\n emptyState={EMPTY_STATE}\n gridId={gridId}\n height={height}\n rowHeight={rowHeight}\n {...gridProps}\n gridOptions={{ suppressClickEdit: true, ...gridProps?.gridOptions }}\n />\n )\n}\n","import type { FactRowView } from './factColumns'\n\n/**\n * A fact as a host with plain records usually holds it: camelCase, optional flags, tags as\n * strings. `toFactRow` maps it to the `FactRowView` that `FactsTable` and `createFactColumns`\n * read, so a host without the SDK type needs no adapter of its own.\n */\nexport interface PlainFactRecord {\n id: string\n text: string\n confirmed?: boolean\n shared?: boolean\n /** ISO date (or date-time) the fact starts. */\n dateStart?: string | null\n dateEnd?: string | null\n timezone?: string | null\n tags?: Array<string | { name: string }> | null\n /** Passages that support the fact; only their count is shown. */\n citations?: unknown[] | null\n createdBy?: string | null\n createdAt?: string | null\n updatedAt?: string | null\n}\n\n/** The row plus the record it came from, so callbacks can hand the host its own object back. */\nexport type PlainFactRow<T extends PlainFactRecord> = FactRowView & { record: T }\n\n/** Map one plain record to a grid row. Missing flags are `false`, missing lists are empty. */\nexport function toFactRow<T extends PlainFactRecord>(record: T): PlainFactRow<T> {\n return {\n external_id: record.id,\n text: record.text,\n confirmed: record.confirmed ?? false,\n shared: record.shared ?? false,\n date_start: record.dateStart ?? null,\n date_end: record.dateEnd ?? null,\n timezone: record.timezone ?? null,\n tags: (record.tags ?? []).map((t) => (typeof t === 'string' ? { name: t } : t)),\n citations: record.citations ?? [],\n created_by_ext_id: record.createdBy ?? null,\n created_at: record.createdAt ?? null,\n updated_at: record.updatedAt ?? null,\n record,\n }\n}\n\nexport function toFactRows<T extends PlainFactRecord>(records: T[]): PlainFactRow<T>[] {\n return records.map(toFactRow)\n}\n","import type { ReactNode } from 'react'\nimport { Check, CheckCircle2, CornerDownLeft, Loader2, Paperclip, Search, X } from 'lucide-react'\nimport { Button } from '@arbidocs/react/ui'\nimport { SearchHit } from '../retrieval/SearchHit'\nimport { testIdOr } from '../chat/test-id'\n\nexport interface FactSearchBarLabels {\n search: string\n placeholder: string\n clear: string\n submit: string\n}\n\nexport const DEFAULT_FACT_SEARCH_BAR_LABELS: FactSearchBarLabels = {\n search: 'Search:',\n // An example query rather than an instruction: shows the quoted-phrase syntax.\n placeholder: 'e.g. \"board meeting\" decision on the budget',\n clear: 'Clear search',\n submit: 'Search',\n}\n\nexport interface FactSearchBarTestIds {\n input: string\n clear: string\n submit: string\n}\n\nexport interface FactSearchResultLabels {\n inChat: string\n verified: string\n open: string\n}\n\nexport const DEFAULT_FACT_SEARCH_RESULT_LABELS: FactSearchResultLabels = {\n inChat: 'In this chat',\n verified: 'Verified',\n open: 'Open',\n}\n\nexport interface FactSearchResultTestIds {\n hit: (id: string) => string\n labels: (id: string) => string\n verified: (id: string) => string\n}\n\nexport interface FactSearchBarProps {\n query: string\n onQueryChange: (query: string) => void\n onSubmit: () => void\n onClear: () => void\n isSearching: boolean\n /** Wins over `labels.placeholder`. */\n placeholder?: string\n labels?: Partial<FactSearchBarLabels>\n testIds?: Partial<FactSearchBarTestIds>\n}\n\n/**\n * The facts Smart Search bar: the same bordered, auto-growing box as the Files Smart Search.\n * Enter searches; Shift+Enter breaks a line.\n */\nexport function FactSearchBar({\n query,\n onQueryChange,\n onSubmit,\n onClear,\n isSearching,\n placeholder,\n labels,\n testIds,\n}: FactSearchBarProps) {\n const l = { ...DEFAULT_FACT_SEARCH_BAR_LABELS, ...labels }\n return (\n <div className=\"border-t border-border px-6 pb-4 pt-6\" data-slot=\"fact-search-bar\">\n <form\n onSubmit={(e) => {\n e.preventDefault()\n onSubmit()\n }}\n className=\"mx-auto flex w-full max-w-2xl items-center gap-3\"\n >\n <label\n htmlFor=\"facts-smart-search-input\"\n className=\"shrink-0 text-base font-medium text-foreground\"\n >\n {l.search}\n </label>\n <div className=\"flex min-w-0 flex-1 items-start gap-2 rounded-lg border border-border bg-background px-3.5 py-2.5 transition-colors focus-within:border-ring focus-within:ring-2 focus-within:ring-ring\">\n <textarea\n id=\"facts-smart-search-input\"\n rows={1}\n value={query}\n onChange={(e) => {\n onQueryChange(e.target.value)\n e.target.style.height = 'auto'\n e.target.style.height = `${e.target.scrollHeight}px`\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n onSubmit()\n }\n }}\n placeholder={placeholder ?? l.placeholder}\n className=\"flex-1 resize-none overflow-hidden border-0 bg-transparent p-0 text-base leading-relaxed text-foreground outline-none placeholder:text-muted-foreground\"\n data-testid={testIdOr(testIds?.input, { testId: 'facts-smart-search-input' })}\n autoFocus\n />\n <div className=\"flex shrink-0 items-center gap-1\">\n {query && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-7 text-muted-foreground hover:text-foreground pointer-coarse:size-11\"\n onClick={onClear}\n aria-label={l.clear}\n title={l.clear}\n data-testid={testIdOr(testIds?.clear, { testId: 'facts-smart-search-clear' })}\n >\n <X className=\"size-4\" />\n </Button>\n )}\n <Button\n type=\"submit\"\n size=\"icon\"\n disabled={!query.trim() || isSearching}\n className=\"size-7 pointer-coarse:size-11\"\n data-testid={testIdOr(testIds?.submit, { testId: 'facts-smart-search-submit' })}\n title={l.submit}\n >\n {isSearching ? (\n <Loader2 className=\"size-4 animate-spin\" />\n ) : (\n <Search className=\"size-4\" />\n )}\n </Button>\n </div>\n </div>\n </form>\n </div>\n )\n}\n\n/** Totals headline pinned between the search bar and the scrolling results. */\nexport function FactSearchTotals({ children, testId }: { children: ReactNode; testId?: string }) {\n return (\n <div className=\"px-4 pb-3\">\n <p\n className=\"font-sans text-base font-semibold tabular-nums text-foreground\"\n data-testid={testIdOr(testId, { testId: 'facts-smart-search-totals' })}\n >\n {children}\n </p>\n </div>\n )\n}\n\n/** \"Searching facts…\" line. */\nexport function FactSearchPending({ children }: { children: ReactNode }) {\n return (\n <div className=\"flex items-center justify-center gap-2 py-16 text-sm text-muted-foreground\">\n <Loader2 className=\"size-4 animate-spin\" /> {children}\n </div>\n )\n}\n\n/** No-matches message. */\nexport function FactSearchNoMatches({\n children,\n testId,\n}: {\n children: ReactNode\n testId?: string\n}) {\n return (\n <div\n className=\"py-16 text-center text-sm text-muted-foreground\"\n data-testid={testIdOr(testId, { testId: 'facts-smart-search-empty' })}\n >\n {children}\n </div>\n )\n}\n\nexport interface FactSearchResultLabel {\n id: string\n name: string\n color: string\n}\n\nexport interface FactSearchResultProps {\n /** Fact id: keys the test ids. */\n id: string\n /** 1-based rank, shown outside the card (it numbers the results, it is not part of the hit). */\n rank: number\n text: string\n terms: string[]\n renderSnippet: (content: string, terms: string[]) => ReactNode\n labels: FactSearchResultLabel[]\n /** The fact is in the host's current chat. */\n isInChat?: boolean\n isVerified?: boolean\n /** The fact open in the composer. */\n isSelected?: boolean\n onOpen: () => void\n uiLabels?: Partial<FactSearchResultLabels>\n testIds?: Partial<FactSearchResultTestIds>\n /** Destination of the fact; the card stays a click target (see SearchHit `href`). */\n href?: string\n}\n\n/** One facts search result: rank, highlighted text, labels (and In this chat) and the Verified mark. */\nexport function FactSearchResult({\n id,\n rank,\n text,\n terms,\n renderSnippet,\n labels,\n isInChat,\n isVerified,\n isSelected,\n onOpen,\n uiLabels: labelOverrides,\n testIds,\n href,\n}: FactSearchResultProps) {\n const l = { ...DEFAULT_FACT_SEARCH_RESULT_LABELS, ...labelOverrides }\n return (\n <div className=\"flex items-start gap-2\" data-slot=\"fact-search-hit\">\n <span\n className=\"w-5 shrink-0 pt-3 text-right text-xs tabular-nums text-muted-foreground\"\n aria-hidden=\"true\"\n >\n {rank}\n </span>\n <SearchHit\n className=\"min-w-0 flex-1\"\n testId={testIdOr(testIds?.hit?.(id), { testId: `facts-smart-search-hit-${id}` })}\n href={href}\n selected={isSelected}\n onClick={onOpen}\n content={text}\n terms={terms}\n renderSnippet={renderSnippet}\n header={\n <div\n className=\"flex min-w-0 flex-1 flex-wrap items-center gap-1 text-xs text-muted-foreground\"\n data-testid={testIdOr(testIds?.labels?.(id), {\n testId: `facts-smart-search-hit-labels-${id}`,\n })}\n >\n {isInChat && (\n <span\n className=\"inline-flex items-center gap-1 pr-1\"\n data-testid={`facts-smart-search-hit-in-chat-${id}`}\n >\n <Paperclip className=\"size-3\" /> {l.inChat}\n </span>\n )}\n {labels.map((tag) => (\n <span\n key={tag.id}\n className=\"inline-flex shrink-0 items-center gap-1 rounded border px-1.5 py-0.5 text-xs font-medium text-foreground\"\n title={tag.name}\n style={{ borderColor: tag.color }}\n >\n <span\n className=\"flex size-3.5 shrink-0 items-center justify-center rounded\"\n style={{ backgroundColor: tag.color }}\n >\n <Check className=\"size-2.5 text-white\" strokeWidth={3} />\n </span>\n <span className=\"max-w-[120px] truncate\">{tag.name}</span>\n </span>\n ))}\n </div>\n }\n headerRight={\n <span className=\"flex items-center gap-3 text-xs text-muted-foreground\">\n {isVerified && (\n <span\n className=\"inline-flex shrink-0 items-center gap-1 text-green-text\"\n data-testid={testIdOr(testIds?.verified?.(id), {\n testId: `facts-smart-search-hit-verified-${id}`,\n })}\n >\n <CheckCircle2 className=\"size-3\" /> {l.verified}\n </span>\n )}\n <span className=\"inline-flex items-center gap-1\">\n {l.open} <CornerDownLeft className=\"size-3\" />\n </span>\n </span>\n }\n />\n </div>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/facts/FactsTable.tsx","../../src/facts/fact-row.ts"],"names":["jsx","cn","DEFAULT_FACT_COLUMN_LABELS","useMemo","createFactColumns","FactRowActions","GridView"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * FactsTable: the default facts grid. `createFactColumns` wired to `GridView` with ready-made\n * cells (in-chat, verified and shared switches, label chips, creator initials, row menu), so a host\n * only supplies rows and handlers. Hosts that need custom cells call `createFactColumns` with\n * their own slots and render `GridView` themselves.\n */\nimport { useMemo, type ReactNode } from 'react'\nimport type { ColDef, ICellRendererParams } from 'ag-grid-community'\nimport { cn } from '@arbidocs/react/ui'\nimport { GridView, type GridViewProps } from '../files/GridView'\nimport { initials } from '../lib/format'\nimport { FactRowActions } from './FactRowActions'\nimport {\n DEFAULT_FACT_COLUMN_LABELS,\n createFactColumns,\n type FactColumnLabels,\n type FactRowView,\n} from './factColumns'\n\nexport interface FactsTableProps<T extends FactRowView> {\n facts: T[]\n /** With `onToggleInChat`, shows the In chat column (whether a fact is in the host's chat). */\n isInChat?: (fact: T) => boolean\n onToggleInChat?: (fact: T) => void\n onToggleConfirmed: (fact: T) => void\n onToggleShared: (fact: T) => void\n /** The row menu appears when both `onEdit` and `onDelete` are provided. */\n onEdit?: (fact: T) => void\n onDelete?: (fact: T) => void\n /** Row click (opens the fact). */\n onOpen?: (fact: T) => void\n /** Display name of the fact's creator (sorting, filtering and the initials chip). */\n getCreatorName?: (fact: T) => string\n /** Friendly display of an ISO timestamp. Defaults to the locale date. */\n formatDate?: (iso: string) => string\n columnLabels?: Partial<FactColumnLabels>\n isLoading?: boolean\n /** Saved column state key (AG Grid persists by it). */\n gridId?: string\n height?: GridViewProps<T>['height']\n rowHeight?: number\n /** Escape hatch for any other `GridView` prop. */\n gridProps?: Partial<Omit<GridViewProps<T>, 'items' | 'columnDefs' | 'getItemId'>>\n testId?: string\n}\n\ninterface FactSwitchProps {\n checked: boolean\n label: string\n onToggle: () => void\n testId: string\n}\n\nfunction FactSwitch({ checked, label, onToggle, testId }: FactSwitchProps) {\n return (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n aria-label={label}\n onClick={onToggle}\n data-testid={testId}\n className={cn(\n 'inline-flex h-5 w-9 items-center rounded-full p-0.5 transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n checked ? 'bg-green-solid' : 'bg-muted-foreground/30'\n )}\n >\n <span\n className={cn(\n 'size-4 rounded-full bg-background transition-transform',\n checked && 'translate-x-4'\n )}\n />\n </button>\n )\n}\n\nconst defaultFormatDate = (iso: string): string => {\n const d = new Date(iso)\n return Number.isNaN(d.getTime()) ? iso : d.toLocaleDateString()\n}\n\nconst EMPTY_STATE = { title: 'No facts yet' }\n\n/** The default facts table: columns, cells and the grid in one component. */\nexport function FactsTable<T extends FactRowView>({\n facts,\n isInChat,\n onToggleInChat,\n onToggleConfirmed,\n onToggleShared,\n onEdit,\n onDelete,\n onOpen,\n getCreatorName,\n formatDate = defaultFormatDate,\n columnLabels,\n isLoading,\n gridId = 'facts-table-v1',\n height = '100%',\n rowHeight = 52,\n gridProps,\n testId = 'facts-table',\n}: FactsTableProps<T>) {\n const l = { ...DEFAULT_FACT_COLUMN_LABELS, ...columnLabels }\n\n const columnDefs = useMemo<ColDef<T>[]>(\n () =>\n createFactColumns<T>({\n isInChat,\n onToggleInChat,\n renderHeader: (params) => (\n <span className=\"text-[12.5px] font-medium\">{params.displayName}</span>\n ),\n renderRowActions: (fact) =>\n onEdit && onDelete ? (\n <FactRowActions onEdit={() => onEdit(fact)} onDelete={() => onDelete(fact)} />\n ) : null,\n renderLabels: (fact): ReactNode => (\n <span className=\"flex flex-wrap items-center gap-1\">\n {(fact.tags ?? []).map((tag) => (\n <span\n key={tag.name}\n className=\"rounded-full bg-muted px-2 py-px text-xs text-muted-foreground\"\n >\n {tag.name}\n </span>\n ))}\n </span>\n ),\n renderVerified: (fact) => (\n <FactSwitch\n checked={fact.confirmed}\n label={l.verified}\n onToggle={() => onToggleConfirmed(fact)}\n testId={`facts-grid-confirmed-${fact.external_id}`}\n />\n ),\n renderShared: (fact) => (\n <FactSwitch\n checked={fact.shared}\n label={l.shared}\n onToggle={() => onToggleShared(fact)}\n testId={`facts-grid-shared-${fact.external_id}`}\n />\n ),\n renderCreator: (fact, _params: ICellRendererParams<T>) => {\n const name = getCreatorName?.(fact) ?? ''\n return name ? (\n <span\n title={name}\n className=\"inline-flex size-6 items-center justify-center rounded-full bg-muted text-[10px] font-medium text-muted-foreground\"\n >\n {initials(name)}\n </span>\n ) : null\n },\n getCreatorName: (params) => (params.data ? (getCreatorName?.(params.data) ?? '') : ''),\n formatDate,\n labels: columnLabels,\n }),\n [\n isInChat,\n onToggleInChat,\n onToggleConfirmed,\n onToggleShared,\n onEdit,\n onDelete,\n getCreatorName,\n formatDate,\n columnLabels,\n l.verified,\n l.shared,\n ]\n )\n\n return (\n <GridView<T>\n testId={testId}\n items={facts}\n columnDefs={columnDefs}\n getItemId={(fact) => fact.external_id}\n onRowClick={onOpen}\n isLoading={isLoading}\n emptyState={EMPTY_STATE}\n gridId={gridId}\n height={height}\n rowHeight={rowHeight}\n {...gridProps}\n gridOptions={{ suppressClickEdit: true, ...gridProps?.gridOptions }}\n />\n )\n}\n","import type { FactRowView } from './factColumns'\n\n/**\n * A fact as a host with plain records usually holds it: camelCase, optional flags, tags as\n * strings. `toFactRow` maps it to the `FactRowView` that `FactsTable` and `createFactColumns`\n * read, so a host without the SDK type needs no adapter of its own.\n */\nexport interface PlainFactRecord {\n id: string\n text: string\n confirmed?: boolean\n shared?: boolean\n /** ISO date (or date-time) the fact starts. */\n dateStart?: string | null\n dateEnd?: string | null\n timezone?: string | null\n tags?: Array<string | { name: string }> | null\n /** Passages that support the fact; only their count is shown. */\n citations?: unknown[] | null\n createdBy?: string | null\n createdAt?: string | null\n updatedAt?: string | null\n}\n\n/** The row plus the record it came from, so callbacks can hand the host its own object back. */\nexport type PlainFactRow<T extends PlainFactRecord> = FactRowView & { record: T }\n\n/** Map one plain record to a grid row. Missing flags are `false`, missing lists are empty. */\nexport function toFactRow<T extends PlainFactRecord>(record: T): PlainFactRow<T> {\n return {\n external_id: record.id,\n text: record.text,\n confirmed: record.confirmed ?? false,\n shared: record.shared ?? false,\n date_start: record.dateStart ?? null,\n date_end: record.dateEnd ?? null,\n timezone: record.timezone ?? null,\n tags: (record.tags ?? []).map((t) => (typeof t === 'string' ? { name: t } : t)),\n citations: record.citations ?? [],\n created_by_ext_id: record.createdBy ?? null,\n created_at: record.createdAt ?? null,\n updated_at: record.updatedAt ?? null,\n record,\n }\n}\n\nexport function toFactRows<T extends PlainFactRecord>(records: T[]): PlainFactRow<T>[] {\n return records.map(toFactRow)\n}\n"]}
|