@arbidocs/blocks 0.4.70 → 0.4.72
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 +90 -14
- package/bin/arbidocs-copy-pdf-assets.mjs +112 -0
- package/dist/{StreamedArtifactEditor-OPL4KXOT.js → StreamedArtifactEditor-HTNPG4NB.js} +3 -2
- package/dist/StreamedArtifactEditor-HTNPG4NB.js.map +1 -0
- package/dist/{StreamedArtifactEditor-RIKG6CJQ.cjs → StreamedArtifactEditor-IZWYNFMM.cjs} +3 -2
- package/dist/StreamedArtifactEditor-IZWYNFMM.cjs.map +1 -0
- package/dist/agents/index.cjs +224 -224
- package/dist/agents/index.js +8 -8
- package/dist/artifacts/editor/index.cjs +1 -0
- package/dist/artifacts/editor/index.js +1 -0
- package/dist/artifacts/index.cjs +1 -0
- package/dist/artifacts/index.js +1 -0
- package/dist/auth/index.cjs +1 -0
- package/dist/auth/index.js +1 -0
- package/dist/calendar/CalendarGrid.d.ts +2 -0
- package/dist/calendar/CalendarList.d.ts +2 -0
- package/dist/calendar/CalendarSettingsForm.d.ts +2 -0
- package/dist/calendar/EventDetails.d.ts +2 -0
- package/dist/calendar/EventEditor.d.ts +2 -0
- package/dist/calendar/MiniMonth.d.ts +2 -0
- package/dist/calendar/RecurrenceEditor.d.ts +13 -0
- package/dist/calendar/RoomFinder.d.ts +2 -0
- package/dist/calendar/SchedulingAssistant.d.ts +2 -0
- package/dist/calendar/ScopeDialog.d.ts +2 -0
- package/dist/calendar/TimeZonePicker.d.ts +2 -0
- package/dist/calendar/colors.d.ts +4 -0
- package/dist/calendar/draft.d.ts +43 -0
- package/dist/calendar/format.d.ts +14 -0
- package/dist/calendar/grid-model.d.ts +24 -0
- package/dist/calendar/index.cjs +4122 -0
- package/dist/calendar/index.cjs.map +1 -0
- package/dist/calendar/index.d.ts +30 -0
- package/dist/calendar/index.js +4043 -0
- package/dist/calendar/index.js.map +1 -0
- package/dist/calendar/labels.d.ts +4 -0
- package/dist/calendar/recurrence-labels.d.ts +22 -0
- package/dist/calendar/recurrence.d.ts +66 -0
- package/dist/calendar/reminders.d.ts +26 -0
- package/dist/calendar/scheduling.d.ts +27 -0
- package/dist/calendar/types.d.ts +605 -0
- package/dist/calendar/ui.d.ts +16 -0
- package/dist/calendar/zone.d.ts +56 -0
- package/dist/chat/index.cjs +124 -123
- package/dist/chat/index.js +4 -3
- package/dist/{chunk-XNRGCQPZ.cjs → chunk-3SFFTSOI.cjs} +5 -5
- package/dist/{chunk-XNRGCQPZ.cjs.map → chunk-3SFFTSOI.cjs.map} +1 -1
- package/dist/{chunk-EHXSBH6U.js → chunk-5HOAOKZL.js} +4 -2
- package/dist/chunk-5HOAOKZL.js.map +1 -0
- package/dist/{chunk-7WM62NMM.cjs → chunk-6OL5S7MJ.cjs} +5 -2
- package/dist/chunk-6OL5S7MJ.cjs.map +1 -0
- package/dist/{chunk-VUEZARW5.cjs → chunk-B3WCKBJ7.cjs} +278 -5
- package/dist/chunk-B3WCKBJ7.cjs.map +1 -0
- package/dist/{chunk-L5UPP2HC.js → chunk-D46ZAPEE.js} +5 -2
- package/dist/chunk-D46ZAPEE.js.map +1 -0
- package/dist/chunk-DES3K4SD.cjs +18 -0
- package/dist/chunk-DES3K4SD.cjs.map +1 -0
- package/dist/{chunk-7M22KND4.cjs → chunk-DH7C2UJO.cjs} +10 -10
- package/dist/{chunk-7M22KND4.cjs.map → chunk-DH7C2UJO.cjs.map} +1 -1
- package/dist/{chunk-CXWESDIZ.cjs → chunk-F4RUCUXF.cjs} +6 -6
- package/dist/{chunk-CXWESDIZ.cjs.map → chunk-F4RUCUXF.cjs.map} +1 -1
- package/dist/{chunk-DABEWNL2.js → chunk-G5DP27DU.js} +3 -3
- package/dist/{chunk-DABEWNL2.js.map → chunk-G5DP27DU.js.map} +1 -1
- package/dist/{chunk-BR2CPKFU.cjs → chunk-G5QTGKDJ.cjs} +8 -8
- package/dist/{chunk-BR2CPKFU.cjs.map → chunk-G5QTGKDJ.cjs.map} +1 -1
- package/dist/{chunk-VZGBCBYB.js → chunk-GJV2G4FC.js} +276 -7
- package/dist/chunk-GJV2G4FC.js.map +1 -0
- package/dist/{chunk-HLMFU7L2.js → chunk-IMC2Z32C.js} +8 -8
- package/dist/{chunk-HLMFU7L2.js.map → chunk-IMC2Z32C.js.map} +1 -1
- package/dist/{chunk-5DM6VU4L.cjs → chunk-KJ3QEKOJ.cjs} +3 -3
- package/dist/{chunk-5DM6VU4L.cjs.map → chunk-KJ3QEKOJ.cjs.map} +1 -1
- package/dist/{chunk-CW4WXGEN.js → chunk-KOXUBCLL.js} +4 -4
- package/dist/{chunk-CW4WXGEN.js.map → chunk-KOXUBCLL.js.map} +1 -1
- package/dist/{chunk-ILGHS6ZV.js → chunk-SB5ZKOYN.js} +3 -3
- package/dist/{chunk-ILGHS6ZV.js.map → chunk-SB5ZKOYN.js.map} +1 -1
- package/dist/{chunk-TLQQV7WW.cjs → chunk-THO7DZNN.cjs} +4 -2
- package/dist/chunk-THO7DZNN.cjs.map +1 -0
- package/dist/{chunk-CPMNAJLF.js → chunk-TX2ZICS7.js} +24 -4
- package/dist/chunk-TX2ZICS7.js.map +1 -0
- package/dist/{chunk-2ZTONLT5.cjs → chunk-ULWRNGGE.cjs} +25 -4
- package/dist/chunk-ULWRNGGE.cjs.map +1 -0
- package/dist/{chunk-BMWZTNZB.js → chunk-VRPRAU3J.js} +3 -3
- package/dist/{chunk-BMWZTNZB.js.map → chunk-VRPRAU3J.js.map} +1 -1
- package/dist/chunk-VUNV25KB.js +15 -0
- package/dist/chunk-VUNV25KB.js.map +1 -0
- package/dist/citations/index.cjs +1 -0
- package/dist/citations/index.js +1 -0
- package/dist/collaboration/index.cjs +45 -45
- package/dist/collaboration/index.js +3 -3
- package/dist/connect/docx.cjs +3 -2
- package/dist/connect/docx.cjs.map +1 -1
- package/dist/connect/docx.js +2 -1
- package/dist/connect/docx.js.map +1 -1
- package/dist/connect/index.cjs +79 -49
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.d.ts +1 -1
- package/dist/connect/index.js +39 -11
- package/dist/connect/index.js.map +1 -1
- package/dist/connection/ConnectedSettings.d.ts +13 -0
- package/dist/connection/ConnectionProvider.d.ts +5 -0
- package/dist/connection/types.d.ts +6 -0
- package/dist/document-tools/SignatureStatus.d.ts +4 -2
- package/dist/document-tools/index.cjs +14 -11
- package/dist/document-tools/index.cjs.map +1 -1
- package/dist/document-tools/index.js +12 -9
- package/dist/document-tools/index.js.map +1 -1
- package/dist/document-tools/production/ProductionSetDialog.d.ts +23 -0
- package/dist/document-tools/production/index.cjs +102 -0
- package/dist/document-tools/production/index.cjs.map +1 -0
- package/dist/document-tools/production/index.d.ts +1 -0
- package/dist/document-tools/production/index.js +100 -0
- package/dist/document-tools/production/index.js.map +1 -0
- package/dist/document-tools/viewer/index.cjs +1 -1
- package/dist/document-tools/viewer/index.js +1 -1
- package/dist/docx/index.cjs +1 -0
- package/dist/docx/index.cjs.map +1 -1
- package/dist/docx/index.js +1 -0
- package/dist/docx/index.js.map +1 -1
- package/dist/facts/index.cjs +3 -2
- package/dist/facts/index.cjs.map +1 -1
- package/dist/facts/index.js +3 -2
- package/dist/facts/index.js.map +1 -1
- package/dist/files/import/index.d.ts +0 -1
- package/dist/files/index.cjs +25 -88
- package/dist/files/index.cjs.map +1 -1
- package/dist/files/index.js +7 -68
- package/dist/files/index.js.map +1 -1
- package/dist/home/index.cjs +2 -1
- package/dist/home/index.cjs.map +1 -1
- package/dist/home/index.js +2 -1
- package/dist/home/index.js.map +1 -1
- package/dist/index.cjs +537 -537
- package/dist/index.js +14 -14
- package/dist/lib-6QPUXAQS.cjs +9674 -0
- package/dist/lib-6QPUXAQS.cjs.map +1 -0
- package/dist/lib-NRGL2JGF.js +9672 -0
- package/dist/lib-NRGL2JGF.js.map +1 -0
- package/dist/retrieval/index.cjs +1 -0
- package/dist/retrieval/index.js +1 -0
- package/dist/settings/Billing.d.ts +4 -0
- package/dist/settings/IdentityVerification.d.ts +83 -0
- package/dist/settings/PlanBadge.d.ts +2 -2
- package/dist/settings/PlanCard.d.ts +6 -1
- package/dist/settings/ProfileCard.d.ts +5 -1
- package/dist/settings/SubscriptionParts.d.ts +6 -2
- package/dist/settings/index.cjs +129 -95
- package/dist/settings/index.cjs.map +1 -1
- package/dist/settings/index.d.ts +1 -0
- package/dist/settings/index.js +65 -47
- package/dist/settings/index.js.map +1 -1
- package/dist/shell/ActionCluster.d.ts +3 -1
- package/dist/shell/index.cjs +56 -55
- package/dist/shell/index.js +4 -3
- package/dist/site/index.cjs +1 -0
- package/dist/site/index.js +1 -0
- package/dist/studio/index.cjs +8 -7
- package/dist/studio/index.cjs.map +1 -1
- package/dist/studio/index.js +6 -5
- package/dist/studio/index.js.map +1 -1
- package/dist/timeline/index.cjs +1 -0
- package/dist/timeline/index.js +1 -0
- package/dist/workspaces/index.cjs +3 -3
- package/dist/workspaces/index.js +2 -2
- package/package.json +35 -5
- package/src/calendar/calendar.css +316 -0
- package/dist/StreamedArtifactEditor-OPL4KXOT.js.map +0 -1
- package/dist/StreamedArtifactEditor-RIKG6CJQ.cjs.map +0 -1
- package/dist/chunk-2ZTONLT5.cjs.map +0 -1
- package/dist/chunk-7WM62NMM.cjs.map +0 -1
- package/dist/chunk-CPMNAJLF.js.map +0 -1
- package/dist/chunk-DCDVWPMB.cjs +0 -29
- package/dist/chunk-DCDVWPMB.cjs.map +0 -1
- package/dist/chunk-EHXSBH6U.js.map +0 -1
- package/dist/chunk-L5UPP2HC.js.map +0 -1
- package/dist/chunk-TJMKFY5P.js +0 -27
- package/dist/chunk-TJMKFY5P.js.map +0 -1
- package/dist/chunk-TLQQV7WW.cjs.map +0 -1
- package/dist/chunk-VUEZARW5.cjs.map +0 -1
- package/dist/chunk-VZGBCBYB.js.map +0 -1
- package/dist/files/import/CalendarImportRow.d.ts +0 -26
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
require('../../chunk-DES3K4SD.cjs');
|
|
5
|
+
var react = require('react');
|
|
6
|
+
var annotations = require('@arbidocs/react/annotations');
|
|
7
|
+
var documentTools = require('@arbidocs/react/document-tools');
|
|
8
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
9
|
+
|
|
10
|
+
function ProductionSetDialog({
|
|
11
|
+
open,
|
|
12
|
+
onOpenChange,
|
|
13
|
+
documents,
|
|
14
|
+
documentUrl
|
|
15
|
+
}) {
|
|
16
|
+
const { client, user, notify, saveFile, uploadDocument, onDocumentsChanged, openDocument } = documentTools.useDocumentTools();
|
|
17
|
+
const [busy, setBusy] = react.useState(false);
|
|
18
|
+
const [progress, setProgress] = react.useState(null);
|
|
19
|
+
const [error, setError] = react.useState(null);
|
|
20
|
+
const { candidates, leftOut } = react.useMemo(
|
|
21
|
+
() => ({
|
|
22
|
+
candidates: documents.filter((doc) => !documentTools.hasNoRendition(doc)),
|
|
23
|
+
leftOut: documents.filter(documentTools.hasNoRendition)
|
|
24
|
+
}),
|
|
25
|
+
[documents]
|
|
26
|
+
);
|
|
27
|
+
async function handleConfirm(choices) {
|
|
28
|
+
setBusy(true);
|
|
29
|
+
setError(null);
|
|
30
|
+
try {
|
|
31
|
+
const production = await documentTools.buildProduction(client, candidates, choices, {
|
|
32
|
+
documentUrl,
|
|
33
|
+
author: user?.name,
|
|
34
|
+
onProgress: (done, total) => setProgress({ done, total })
|
|
35
|
+
});
|
|
36
|
+
const { files, title, folder } = production;
|
|
37
|
+
if (files.length === 1) {
|
|
38
|
+
const [file] = files;
|
|
39
|
+
saveFile(new Blob([file.bytes], { type: "application/pdf" }), file.name);
|
|
40
|
+
} else {
|
|
41
|
+
const { default: JSZip } = await import('../../lib-6QPUXAQS.cjs');
|
|
42
|
+
const zip = new JSZip();
|
|
43
|
+
for (const file of files) zip.file(file.name, file.bytes);
|
|
44
|
+
zip.file("index.csv", documentTools.productionIndexCsv(production.index));
|
|
45
|
+
saveFile(await zip.generateAsync({ type: "blob" }), `${title}.zip`);
|
|
46
|
+
}
|
|
47
|
+
let savedIds = [];
|
|
48
|
+
if (choices.saveToWorkspace) {
|
|
49
|
+
try {
|
|
50
|
+
savedIds = await documentTools.saveProductionFiles(uploadDocument, production.uploads, folder);
|
|
51
|
+
if (savedIds.length) await onDocumentsChanged?.(savedIds, "copy");
|
|
52
|
+
} catch (e) {
|
|
53
|
+
notify(
|
|
54
|
+
`The production was downloaded but not saved to the workspace: ${e instanceof Error ? e.message : "upload failed"}`,
|
|
55
|
+
"error"
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (production.noRendition.length > 0) {
|
|
60
|
+
notify(
|
|
61
|
+
`Left out, with no PDF version yet: ${production.noRendition.map(documentTools.productionDocumentName).join(", ")}`,
|
|
62
|
+
"warning"
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
const openSaved = savedIds.length === 1 && openDocument ? savedIds[0] : null;
|
|
66
|
+
notify(
|
|
67
|
+
savedIds.length > 0 ? "Production set downloaded and saved to the workspace" : "Production set downloaded",
|
|
68
|
+
"success",
|
|
69
|
+
{
|
|
70
|
+
description: savedIds.length > 0 ? `In ${folder}` : void 0,
|
|
71
|
+
action: openSaved ? { label: "Open", onClick: () => openDocument?.(openSaved) } : void 0
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
onOpenChange(false);
|
|
75
|
+
} catch (e) {
|
|
76
|
+
setError(e instanceof Error ? e.message : "The production set could not be created");
|
|
77
|
+
} finally {
|
|
78
|
+
setBusy(false);
|
|
79
|
+
setProgress(null);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
83
|
+
annotations.ProductionDialog,
|
|
84
|
+
{
|
|
85
|
+
open,
|
|
86
|
+
onOpenChange,
|
|
87
|
+
documents: candidates.map((doc) => ({
|
|
88
|
+
id: doc.external_id,
|
|
89
|
+
name: documentTools.productionDocumentName(doc)
|
|
90
|
+
})),
|
|
91
|
+
leftOut: leftOut.map(documentTools.productionDocumentName),
|
|
92
|
+
onConfirm: (choices) => void handleConfirm(choices),
|
|
93
|
+
busy,
|
|
94
|
+
progress,
|
|
95
|
+
error
|
|
96
|
+
}
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
exports.ProductionSetDialog = ProductionSetDialog;
|
|
101
|
+
//# sourceMappingURL=index.cjs.map
|
|
102
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/document-tools/production/ProductionSetDialog.tsx"],"names":["useDocumentTools","useState","useMemo","hasNoRendition","buildProduction","productionIndexCsv","saveProductionFiles","productionDocumentName","jsx","ProductionDialog"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Number the selected documents as a production set: Bates labels, optional QR codes back to each\n * document, an optional index page. The result is downloaded (one PDF, or a ZIP with each file and\n * an `index.csv`) and, unless turned off, saved to the workspace as new documents derived from\n * their sources (role `production`) in the Productions folder. The originals never change.\n *\n * Needs a `<DocumentToolsProvider>`: the API client fetches each PDF, `uploadDocument` saves the\n * result, `saveFile` downloads it, `notify` reports, `onDocumentsChanged(ids, 'copy')` refreshes the\n * host's lists and `openDocument` backs the \"Open\" action. The selected documents are used as\n * they are (select a frozen or redacted copy to produce that copy); a non-PDF is numbered through\n * its PDF version and one without a PDF version is left out. pdf-lib and JSZip load on confirm.\n */\n\nimport { useMemo, useState, type ReactElement } from 'react'\nimport { ProductionDialog, type ProductionChoices } from '@arbidocs/react/annotations'\nimport {\n buildProduction,\n hasNoRendition,\n productionDocumentName,\n productionIndexCsv,\n saveProductionFiles,\n useDocumentTools,\n type ProductionSource,\n} from '@arbidocs/react/document-tools'\n\nexport interface ProductionSetDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n /** The selected documents, in list order (the dialog lets the user reorder them). */\n documents: readonly ProductionSource[]\n /** The link a document's QR code opens: the document in this app. */\n documentUrl: (documentId: string) => string\n}\n\nexport function ProductionSetDialog({\n open,\n onOpenChange,\n documents,\n documentUrl,\n}: ProductionSetDialogProps): ReactElement {\n const { client, user, notify, saveFile, uploadDocument, onDocumentsChanged, openDocument } =\n useDocumentTools()\n const [busy, setBusy] = useState(false)\n const [progress, setProgress] = useState<{ done: number; total: number } | null>(null)\n const [error, setError] = useState<string | null>(null)\n\n const { candidates, leftOut } = useMemo(\n () => ({\n candidates: documents.filter((doc) => !hasNoRendition(doc)),\n leftOut: documents.filter(hasNoRendition),\n }),\n [documents]\n )\n\n async function handleConfirm(choices: ProductionChoices) {\n setBusy(true)\n setError(null)\n try {\n const production = await buildProduction(client, candidates, choices, {\n documentUrl,\n author: user?.name,\n onProgress: (done, total) => setProgress({ done, total }),\n })\n const { files, title, folder } = production\n\n if (files.length === 1) {\n const [file] = files\n saveFile(new Blob([file.bytes as BlobPart], { type: 'application/pdf' }), file.name)\n } else {\n const { default: JSZip } = await import('jszip')\n const zip = new JSZip()\n for (const file of files) zip.file(file.name, file.bytes)\n zip.file('index.csv', productionIndexCsv(production.index))\n saveFile(await zip.generateAsync({ type: 'blob' }), `${title}.zip`)\n }\n\n let savedIds: string[] = []\n if (choices.saveToWorkspace) {\n try {\n savedIds = await saveProductionFiles(uploadDocument, production.uploads, folder)\n if (savedIds.length) await onDocumentsChanged?.(savedIds, 'copy')\n } catch (e) {\n notify(\n `The production was downloaded but not saved to the workspace: ${\n e instanceof Error ? e.message : 'upload failed'\n }`,\n 'error'\n )\n }\n }\n\n if (production.noRendition.length > 0) {\n notify(\n `Left out, with no PDF version yet: ${production.noRendition\n .map(productionDocumentName)\n .join(', ')}`,\n 'warning'\n )\n }\n const openSaved = savedIds.length === 1 && openDocument ? savedIds[0] : null\n notify(\n savedIds.length > 0\n ? 'Production set downloaded and saved to the workspace'\n : 'Production set downloaded',\n 'success',\n {\n description: savedIds.length > 0 ? `In ${folder}` : undefined,\n action: openSaved\n ? { label: 'Open', onClick: () => openDocument?.(openSaved) }\n : undefined,\n }\n )\n onOpenChange(false)\n } catch (e) {\n setError(e instanceof Error ? e.message : 'The production set could not be created')\n } finally {\n setBusy(false)\n setProgress(null)\n }\n }\n\n return (\n <ProductionDialog\n open={open}\n onOpenChange={onOpenChange}\n documents={candidates.map((doc) => ({\n id: doc.external_id,\n name: productionDocumentName(doc),\n }))}\n leftOut={leftOut.map(productionDocumentName)}\n onConfirm={(choices) => void handleConfirm(choices)}\n busy={busy}\n progress={progress}\n error={error}\n />\n )\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ProductionSetDialog, type ProductionSetDialogProps } from './ProductionSetDialog';
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import '../../chunk-VUNV25KB.js';
|
|
3
|
+
import { useState, useMemo } from 'react';
|
|
4
|
+
import { ProductionDialog } from '@arbidocs/react/annotations';
|
|
5
|
+
import { useDocumentTools, hasNoRendition, productionDocumentName, buildProduction, productionIndexCsv, saveProductionFiles } from '@arbidocs/react/document-tools';
|
|
6
|
+
import { jsx } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
function ProductionSetDialog({
|
|
9
|
+
open,
|
|
10
|
+
onOpenChange,
|
|
11
|
+
documents,
|
|
12
|
+
documentUrl
|
|
13
|
+
}) {
|
|
14
|
+
const { client, user, notify, saveFile, uploadDocument, onDocumentsChanged, openDocument } = useDocumentTools();
|
|
15
|
+
const [busy, setBusy] = useState(false);
|
|
16
|
+
const [progress, setProgress] = useState(null);
|
|
17
|
+
const [error, setError] = useState(null);
|
|
18
|
+
const { candidates, leftOut } = useMemo(
|
|
19
|
+
() => ({
|
|
20
|
+
candidates: documents.filter((doc) => !hasNoRendition(doc)),
|
|
21
|
+
leftOut: documents.filter(hasNoRendition)
|
|
22
|
+
}),
|
|
23
|
+
[documents]
|
|
24
|
+
);
|
|
25
|
+
async function handleConfirm(choices) {
|
|
26
|
+
setBusy(true);
|
|
27
|
+
setError(null);
|
|
28
|
+
try {
|
|
29
|
+
const production = await buildProduction(client, candidates, choices, {
|
|
30
|
+
documentUrl,
|
|
31
|
+
author: user?.name,
|
|
32
|
+
onProgress: (done, total) => setProgress({ done, total })
|
|
33
|
+
});
|
|
34
|
+
const { files, title, folder } = production;
|
|
35
|
+
if (files.length === 1) {
|
|
36
|
+
const [file] = files;
|
|
37
|
+
saveFile(new Blob([file.bytes], { type: "application/pdf" }), file.name);
|
|
38
|
+
} else {
|
|
39
|
+
const { default: JSZip } = await import('../../lib-NRGL2JGF.js');
|
|
40
|
+
const zip = new JSZip();
|
|
41
|
+
for (const file of files) zip.file(file.name, file.bytes);
|
|
42
|
+
zip.file("index.csv", productionIndexCsv(production.index));
|
|
43
|
+
saveFile(await zip.generateAsync({ type: "blob" }), `${title}.zip`);
|
|
44
|
+
}
|
|
45
|
+
let savedIds = [];
|
|
46
|
+
if (choices.saveToWorkspace) {
|
|
47
|
+
try {
|
|
48
|
+
savedIds = await saveProductionFiles(uploadDocument, production.uploads, folder);
|
|
49
|
+
if (savedIds.length) await onDocumentsChanged?.(savedIds, "copy");
|
|
50
|
+
} catch (e) {
|
|
51
|
+
notify(
|
|
52
|
+
`The production was downloaded but not saved to the workspace: ${e instanceof Error ? e.message : "upload failed"}`,
|
|
53
|
+
"error"
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (production.noRendition.length > 0) {
|
|
58
|
+
notify(
|
|
59
|
+
`Left out, with no PDF version yet: ${production.noRendition.map(productionDocumentName).join(", ")}`,
|
|
60
|
+
"warning"
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
const openSaved = savedIds.length === 1 && openDocument ? savedIds[0] : null;
|
|
64
|
+
notify(
|
|
65
|
+
savedIds.length > 0 ? "Production set downloaded and saved to the workspace" : "Production set downloaded",
|
|
66
|
+
"success",
|
|
67
|
+
{
|
|
68
|
+
description: savedIds.length > 0 ? `In ${folder}` : void 0,
|
|
69
|
+
action: openSaved ? { label: "Open", onClick: () => openDocument?.(openSaved) } : void 0
|
|
70
|
+
}
|
|
71
|
+
);
|
|
72
|
+
onOpenChange(false);
|
|
73
|
+
} catch (e) {
|
|
74
|
+
setError(e instanceof Error ? e.message : "The production set could not be created");
|
|
75
|
+
} finally {
|
|
76
|
+
setBusy(false);
|
|
77
|
+
setProgress(null);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return /* @__PURE__ */ jsx(
|
|
81
|
+
ProductionDialog,
|
|
82
|
+
{
|
|
83
|
+
open,
|
|
84
|
+
onOpenChange,
|
|
85
|
+
documents: candidates.map((doc) => ({
|
|
86
|
+
id: doc.external_id,
|
|
87
|
+
name: productionDocumentName(doc)
|
|
88
|
+
})),
|
|
89
|
+
leftOut: leftOut.map(productionDocumentName),
|
|
90
|
+
onConfirm: (choices) => void handleConfirm(choices),
|
|
91
|
+
busy,
|
|
92
|
+
progress,
|
|
93
|
+
error
|
|
94
|
+
}
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export { ProductionSetDialog };
|
|
99
|
+
//# sourceMappingURL=index.js.map
|
|
100
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/document-tools/production/ProductionSetDialog.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Number the selected documents as a production set: Bates labels, optional QR codes back to each\n * document, an optional index page. The result is downloaded (one PDF, or a ZIP with each file and\n * an `index.csv`) and, unless turned off, saved to the workspace as new documents derived from\n * their sources (role `production`) in the Productions folder. The originals never change.\n *\n * Needs a `<DocumentToolsProvider>`: the API client fetches each PDF, `uploadDocument` saves the\n * result, `saveFile` downloads it, `notify` reports, `onDocumentsChanged(ids, 'copy')` refreshes the\n * host's lists and `openDocument` backs the \"Open\" action. The selected documents are used as\n * they are (select a frozen or redacted copy to produce that copy); a non-PDF is numbered through\n * its PDF version and one without a PDF version is left out. pdf-lib and JSZip load on confirm.\n */\n\nimport { useMemo, useState, type ReactElement } from 'react'\nimport { ProductionDialog, type ProductionChoices } from '@arbidocs/react/annotations'\nimport {\n buildProduction,\n hasNoRendition,\n productionDocumentName,\n productionIndexCsv,\n saveProductionFiles,\n useDocumentTools,\n type ProductionSource,\n} from '@arbidocs/react/document-tools'\n\nexport interface ProductionSetDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n /** The selected documents, in list order (the dialog lets the user reorder them). */\n documents: readonly ProductionSource[]\n /** The link a document's QR code opens: the document in this app. */\n documentUrl: (documentId: string) => string\n}\n\nexport function ProductionSetDialog({\n open,\n onOpenChange,\n documents,\n documentUrl,\n}: ProductionSetDialogProps): ReactElement {\n const { client, user, notify, saveFile, uploadDocument, onDocumentsChanged, openDocument } =\n useDocumentTools()\n const [busy, setBusy] = useState(false)\n const [progress, setProgress] = useState<{ done: number; total: number } | null>(null)\n const [error, setError] = useState<string | null>(null)\n\n const { candidates, leftOut } = useMemo(\n () => ({\n candidates: documents.filter((doc) => !hasNoRendition(doc)),\n leftOut: documents.filter(hasNoRendition),\n }),\n [documents]\n )\n\n async function handleConfirm(choices: ProductionChoices) {\n setBusy(true)\n setError(null)\n try {\n const production = await buildProduction(client, candidates, choices, {\n documentUrl,\n author: user?.name,\n onProgress: (done, total) => setProgress({ done, total }),\n })\n const { files, title, folder } = production\n\n if (files.length === 1) {\n const [file] = files\n saveFile(new Blob([file.bytes as BlobPart], { type: 'application/pdf' }), file.name)\n } else {\n const { default: JSZip } = await import('jszip')\n const zip = new JSZip()\n for (const file of files) zip.file(file.name, file.bytes)\n zip.file('index.csv', productionIndexCsv(production.index))\n saveFile(await zip.generateAsync({ type: 'blob' }), `${title}.zip`)\n }\n\n let savedIds: string[] = []\n if (choices.saveToWorkspace) {\n try {\n savedIds = await saveProductionFiles(uploadDocument, production.uploads, folder)\n if (savedIds.length) await onDocumentsChanged?.(savedIds, 'copy')\n } catch (e) {\n notify(\n `The production was downloaded but not saved to the workspace: ${\n e instanceof Error ? e.message : 'upload failed'\n }`,\n 'error'\n )\n }\n }\n\n if (production.noRendition.length > 0) {\n notify(\n `Left out, with no PDF version yet: ${production.noRendition\n .map(productionDocumentName)\n .join(', ')}`,\n 'warning'\n )\n }\n const openSaved = savedIds.length === 1 && openDocument ? savedIds[0] : null\n notify(\n savedIds.length > 0\n ? 'Production set downloaded and saved to the workspace'\n : 'Production set downloaded',\n 'success',\n {\n description: savedIds.length > 0 ? `In ${folder}` : undefined,\n action: openSaved\n ? { label: 'Open', onClick: () => openDocument?.(openSaved) }\n : undefined,\n }\n )\n onOpenChange(false)\n } catch (e) {\n setError(e instanceof Error ? e.message : 'The production set could not be created')\n } finally {\n setBusy(false)\n setProgress(null)\n }\n }\n\n return (\n <ProductionDialog\n open={open}\n onOpenChange={onOpenChange}\n documents={candidates.map((doc) => ({\n id: doc.external_id,\n name: productionDocumentName(doc),\n }))}\n leftOut={leftOut.map(productionDocumentName)}\n onConfirm={(choices) => void handleConfirm(choices)}\n busy={busy}\n progress={progress}\n error={error}\n />\n )\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
+
require('../../chunk-DES3K4SD.cjs');
|
|
4
5
|
var react = require('react');
|
|
5
6
|
var annotations = require('@arbidocs/react/annotations');
|
|
6
7
|
var freeze = require('@arbidocs/react/annotations/freeze');
|
|
@@ -10,7 +11,6 @@ var lucideReact = require('lucide-react');
|
|
|
10
11
|
var jsxRuntime = require('react/jsx-runtime');
|
|
11
12
|
var ui = require('@arbidocs/react/ui');
|
|
12
13
|
|
|
13
|
-
// src/document-tools/viewer/AnnotatedPdfViewer.tsx
|
|
14
14
|
var MARKUP_AUTOSAVE_MS = 2500;
|
|
15
15
|
var MARKUP_PULL_MS = 2e4;
|
|
16
16
|
var FALLBACK_AUTHOR = "You";
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import '../../chunk-VUNV25KB.js';
|
|
2
3
|
import { useRef, useMemo, useEffect, useState, useCallback } from 'react';
|
|
3
4
|
import { useAnnotationLayer, redactionLogCsv, AnnotationPageOverlay, AnnotationToolbar, FreezeDialog, createMemoryStore } from '@arbidocs/react/annotations';
|
|
4
5
|
import { freezePdfInBrowser } from '@arbidocs/react/annotations/freeze';
|
|
@@ -8,7 +9,6 @@ import { Download } from 'lucide-react';
|
|
|
8
9
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
9
10
|
import { Button } from '@arbidocs/react/ui';
|
|
10
11
|
|
|
11
|
-
// src/document-tools/viewer/AnnotatedPdfViewer.tsx
|
|
12
12
|
var MARKUP_AUTOSAVE_MS = 2500;
|
|
13
13
|
var MARKUP_PULL_MS = 2e4;
|
|
14
14
|
var FALLBACK_AUTHOR = "You";
|
package/dist/docx/index.cjs
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
var chunkZWA7UUZL_cjs = require('../chunk-ZWA7UUZL.cjs');
|
|
5
5
|
require('../chunk-7UTB4PHM.cjs');
|
|
6
6
|
require('../chunk-MHVNT4J3.cjs');
|
|
7
|
+
require('../chunk-DES3K4SD.cjs');
|
|
7
8
|
var react = require('@docx-editor.dev/react');
|
|
8
9
|
var hocuspocus = require('@arbidocs/coedit/hocuspocus');
|
|
9
10
|
var react$1 = require('react');
|
package/dist/docx/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/docx/NativeDocxComparison.tsx"],"names":["parseVersionRef","useRef","useState","useEffect","error","jsxs","jsx","NativeDocxEditor"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/docx/NativeDocxComparison.tsx"],"names":["parseVersionRef","useRef","useState","useEffect","error","jsxs","jsx","NativeDocxEditor"],"mappings":"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","file":"index.cjs","sourcesContent":["import { useEffect, useRef, useState } from 'react'\nimport { parseVersionRef } from '@arbidocs/react/artifacts'\nimport { NativeDocxEditor, type NativeDocxAdapter } from './NativeDocxEditor'\n\nexport interface NativeDocxComparisonProps {\n adapter: NativeDocxAdapter\n baseId: string\n revisedId: string\n title: string\n onCompared?: (documentId: string) => void | Promise<void>\n}\n\n/** A `doc-…@v{n}` side names an older version: the endpoint takes its document and version apart. */\nfunction redlineQuery(baseId: string, revisedId: string): URLSearchParams {\n const base = parseVersionRef(baseId)\n const revised = parseVersionRef(revisedId)\n const query = new URLSearchParams({ base_ext_id: base.docId, revised_ext_id: revised.docId })\n if (base.version) query.set('base_version', String(base.version))\n if (revised.version) query.set('revised_version', String(revised.version))\n return query\n}\n\n/** Word comparison through the host's authenticated transport and LibreOffice service. */\nexport function NativeDocxComparison({\n adapter,\n baseId,\n revisedId,\n title,\n onCompared,\n}: NativeDocxComparisonProps) {\n const host = useRef({ adapter, onCompared })\n host.current = { adapter, onCompared }\n const [documentId, setDocumentId] = useState('')\n const [error, setError] = useState('')\n const [attempt, setAttempt] = useState(0)\n useEffect(() => {\n let cancelled = false\n setDocumentId('')\n setError('')\n void host.current.adapter\n .request(`/redline?${redlineQuery(baseId, revisedId)}`, { method: 'POST' })\n .then((response) => response.json())\n .then((result: { document_ext_id: string }) => {\n if (!result.document_ext_id) throw new Error('Comparison did not return a Word document.')\n if (!cancelled) {\n setDocumentId(result.document_ext_id)\n void Promise.resolve(host.current.onCompared?.(result.document_ext_id)).catch(() => {})\n }\n })\n .catch((error) => {\n if (!cancelled) setError(error instanceof Error ? error.message : String(error))\n })\n return () => {\n cancelled = true\n }\n }, [baseId, revisedId, attempt])\n if (error)\n return (\n <div className=\"native-docx-error\" role=\"alert\">\n <p>{error}</p>\n <button onClick={() => setAttempt((value) => value + 1)}>Retry comparison</button>\n </div>\n )\n if (!documentId)\n return (\n <div className=\"native-docx-error\" role=\"status\">\n Comparing Word documents…\n </div>\n )\n return (\n <NativeDocxEditor\n key={documentId}\n adapter={adapter}\n documentId={documentId}\n title={`${title.replace(/\\.[^.]+$/, '')} (redline).docx`}\n />\n )\n}\n"]}
|
package/dist/docx/index.js
CHANGED
|
@@ -3,6 +3,7 @@ import { NativeDocxEditor } from '../chunk-5EBGRG3X.js';
|
|
|
3
3
|
export { DocxCommentActivity, DocxEditorReview, DocxMentions, DocxParticipants, DocxRibbon, NativeDocxEditor, StreamedWordArtifact, loadDocxFonts, normalizeDocxExport, reviewModule, useReview, useReviewItem } from '../chunk-5EBGRG3X.js';
|
|
4
4
|
import '../chunk-AA3PT6KR.js';
|
|
5
5
|
import '../chunk-7F6CBP3Z.js';
|
|
6
|
+
import '../chunk-VUNV25KB.js';
|
|
6
7
|
export { DocxEditor, useDocxEditor, useEditorState } from '@docx-editor.dev/react';
|
|
7
8
|
export { createHocuspocusCollaboration } from '@arbidocs/coedit/hocuspocus';
|
|
8
9
|
import { useRef, useState, useEffect } from 'react';
|
package/dist/docx/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/docx/NativeDocxComparison.tsx"],"names":["error"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/docx/NativeDocxComparison.tsx"],"names":["error"],"mappings":"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","file":"index.js","sourcesContent":["import { useEffect, useRef, useState } from 'react'\nimport { parseVersionRef } from '@arbidocs/react/artifacts'\nimport { NativeDocxEditor, type NativeDocxAdapter } from './NativeDocxEditor'\n\nexport interface NativeDocxComparisonProps {\n adapter: NativeDocxAdapter\n baseId: string\n revisedId: string\n title: string\n onCompared?: (documentId: string) => void | Promise<void>\n}\n\n/** A `doc-…@v{n}` side names an older version: the endpoint takes its document and version apart. */\nfunction redlineQuery(baseId: string, revisedId: string): URLSearchParams {\n const base = parseVersionRef(baseId)\n const revised = parseVersionRef(revisedId)\n const query = new URLSearchParams({ base_ext_id: base.docId, revised_ext_id: revised.docId })\n if (base.version) query.set('base_version', String(base.version))\n if (revised.version) query.set('revised_version', String(revised.version))\n return query\n}\n\n/** Word comparison through the host's authenticated transport and LibreOffice service. */\nexport function NativeDocxComparison({\n adapter,\n baseId,\n revisedId,\n title,\n onCompared,\n}: NativeDocxComparisonProps) {\n const host = useRef({ adapter, onCompared })\n host.current = { adapter, onCompared }\n const [documentId, setDocumentId] = useState('')\n const [error, setError] = useState('')\n const [attempt, setAttempt] = useState(0)\n useEffect(() => {\n let cancelled = false\n setDocumentId('')\n setError('')\n void host.current.adapter\n .request(`/redline?${redlineQuery(baseId, revisedId)}`, { method: 'POST' })\n .then((response) => response.json())\n .then((result: { document_ext_id: string }) => {\n if (!result.document_ext_id) throw new Error('Comparison did not return a Word document.')\n if (!cancelled) {\n setDocumentId(result.document_ext_id)\n void Promise.resolve(host.current.onCompared?.(result.document_ext_id)).catch(() => {})\n }\n })\n .catch((error) => {\n if (!cancelled) setError(error instanceof Error ? error.message : String(error))\n })\n return () => {\n cancelled = true\n }\n }, [baseId, revisedId, attempt])\n if (error)\n return (\n <div className=\"native-docx-error\" role=\"alert\">\n <p>{error}</p>\n <button onClick={() => setAttempt((value) => value + 1)}>Retry comparison</button>\n </div>\n )\n if (!documentId)\n return (\n <div className=\"native-docx-error\" role=\"status\">\n Comparing Word documents…\n </div>\n )\n return (\n <NativeDocxEditor\n key={documentId}\n adapter={adapter}\n documentId={documentId}\n title={`${title.replace(/\\.[^.]+$/, '')} (redline).docx`}\n />\n )\n}\n"]}
|
package/dist/facts/index.cjs
CHANGED
|
@@ -4,14 +4,15 @@
|
|
|
4
4
|
var chunkZPERNIMP_cjs = require('../chunk-ZPERNIMP.cjs');
|
|
5
5
|
var chunkVPPX5XUF_cjs = require('../chunk-VPPX5XUF.cjs');
|
|
6
6
|
var chunkOUW6G4O2_cjs = require('../chunk-OUW6G4O2.cjs');
|
|
7
|
+
var chunk7RGLTF76_cjs = require('../chunk-7RGLTF76.cjs');
|
|
7
8
|
var chunkIA7RTPT3_cjs = require('../chunk-IA7RTPT3.cjs');
|
|
8
9
|
var chunk2EI7NCUA_cjs = require('../chunk-2EI7NCUA.cjs');
|
|
9
|
-
|
|
10
|
+
require('../chunk-C54XEN5T.cjs');
|
|
10
11
|
require('../chunk-FX3K6LNZ.cjs');
|
|
11
12
|
var chunkPPCATBOY_cjs = require('../chunk-PPCATBOY.cjs');
|
|
12
|
-
require('../chunk-C54XEN5T.cjs');
|
|
13
13
|
var chunkKDG6FER6_cjs = require('../chunk-KDG6FER6.cjs');
|
|
14
14
|
var chunkMHVNT4J3_cjs = require('../chunk-MHVNT4J3.cjs');
|
|
15
|
+
require('../chunk-DES3K4SD.cjs');
|
|
15
16
|
var lucideReact = require('lucide-react');
|
|
16
17
|
var ui = require('@arbidocs/react/ui');
|
|
17
18
|
var jsxRuntime = require('react/jsx-runtime');
|