@arbidocs/blocks 0.4.101 → 0.4.103
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-6MG62I5B.cjs +272 -0
- package/dist/chunk-6MG62I5B.cjs.map +1 -0
- package/dist/{chunk-MYALCKDR.js → chunk-CVYY4X5R.js} +306 -75
- package/dist/chunk-CVYY4X5R.js.map +1 -0
- package/dist/chunk-EQB3WELX.js +269 -0
- package/dist/chunk-EQB3WELX.js.map +1 -0
- package/dist/{chunk-G5JH2YMQ.js → chunk-GQTIAATM.js} +3 -3
- package/dist/{chunk-G5JH2YMQ.js.map → chunk-GQTIAATM.js.map} +1 -1
- package/dist/{chunk-YGREW5TZ.js → chunk-H6DFXG5N.js} +3 -3
- package/dist/{chunk-YGREW5TZ.js.map → chunk-H6DFXG5N.js.map} +1 -1
- package/dist/{chunk-ZT2EBBSC.cjs → chunk-N36PWG7A.cjs} +5 -5
- package/dist/{chunk-ZT2EBBSC.cjs.map → chunk-N36PWG7A.cjs.map} +1 -1
- package/dist/{chunk-FAGQTB3D.cjs → chunk-O33EBMIX.cjs} +305 -74
- package/dist/chunk-O33EBMIX.cjs.map +1 -0
- package/dist/{chunk-Y5XW57U4.cjs → chunk-TFDU2KGS.cjs} +5 -5
- package/dist/{chunk-Y5XW57U4.cjs.map → chunk-TFDU2KGS.cjs.map} +1 -1
- package/dist/connect/docx.cjs +6 -6
- package/dist/connect/docx.js +4 -4
- package/dist/connect/index.cjs +3 -3
- package/dist/connect/index.js +2 -2
- package/dist/document-tools/AdoptSignatureDialog.d.ts +25 -0
- package/dist/document-tools/DocumentToolButtons.d.ts +2 -0
- package/dist/document-tools/SignatureRequestBanner.d.ts +18 -0
- package/dist/document-tools/index.cjs +175 -0
- package/dist/document-tools/index.cjs.map +1 -1
- package/dist/document-tools/index.d.ts +3 -1
- package/dist/document-tools/index.js +168 -3
- package/dist/document-tools/index.js.map +1 -1
- package/dist/document-tools/viewer/GuidedSigningViewer.d.ts +26 -0
- package/dist/document-tools/viewer/SignatureFieldsOverlay.d.ts +41 -0
- package/dist/document-tools/viewer/SignatureRequestEditor.d.ts +26 -0
- package/dist/document-tools/viewer/index.cjs +983 -0
- package/dist/document-tools/viewer/index.cjs.map +1 -1
- package/dist/document-tools/viewer/index.d.ts +3 -0
- package/dist/document-tools/viewer/index.js +983 -5
- package/dist/document-tools/viewer/index.js.map +1 -1
- package/dist/docx/RibbonMenu.d.ts +4 -1
- package/dist/docx/RibbonOverflow.d.ts +27 -0
- package/dist/docx/WordReferences.d.ts +3 -2
- package/dist/docx/index.cjs +35 -35
- package/dist/docx/index.js +3 -3
- package/dist/docx/noteStyles.d.ts +46 -0
- package/dist/docx/overflowPlan.d.ts +15 -0
- package/dist/index.cjs +5 -5
- package/dist/index.js +1 -1
- package/node_modules/@arbidocs/coedit/LICENSE +21 -0
- package/node_modules/@arbidocs/coedit/dist/encoding.cjs +751 -0
- package/node_modules/@arbidocs/coedit/dist/encoding.cjs.map +1 -0
- package/node_modules/@arbidocs/coedit/dist/encoding.d.cts +192 -0
- package/node_modules/@arbidocs/coedit/dist/encoding.d.ts +192 -0
- package/node_modules/@arbidocs/coedit/dist/encoding.js +716 -0
- package/node_modules/@arbidocs/coedit/dist/encoding.js.map +1 -0
- package/node_modules/@arbidocs/coedit/dist/hocuspocus.cjs +1759 -0
- package/node_modules/@arbidocs/coedit/dist/hocuspocus.cjs.map +1 -0
- package/node_modules/@arbidocs/coedit/dist/hocuspocus.d.cts +39 -0
- package/node_modules/@arbidocs/coedit/dist/hocuspocus.d.ts +39 -0
- package/node_modules/@arbidocs/coedit/dist/hocuspocus.js +1736 -0
- package/node_modules/@arbidocs/coedit/dist/hocuspocus.js.map +1 -0
- package/node_modules/@arbidocs/coedit/dist/index.cjs +1692 -0
- package/node_modules/@arbidocs/coedit/dist/index.cjs.map +1 -0
- package/node_modules/@arbidocs/coedit/dist/index.d.cts +16 -0
- package/node_modules/@arbidocs/coedit/dist/index.d.ts +16 -0
- package/node_modules/@arbidocs/coedit/dist/index.js +1664 -0
- package/node_modules/@arbidocs/coedit/dist/index.js.map +1 -0
- package/node_modules/@arbidocs/coedit/dist/server.cjs +1852 -0
- package/node_modules/@arbidocs/coedit/dist/server.cjs.map +1 -0
- package/node_modules/@arbidocs/coedit/dist/server.d.cts +43 -0
- package/node_modules/@arbidocs/coedit/dist/server.d.ts +43 -0
- package/node_modules/@arbidocs/coedit/dist/server.js +1822 -0
- package/node_modules/@arbidocs/coedit/dist/server.js.map +1 -0
- package/node_modules/@arbidocs/coedit/dist/session-Cf9iu1Vt.d.cts +82 -0
- package/node_modules/@arbidocs/coedit/dist/session-Cf9iu1Vt.d.ts +82 -0
- package/node_modules/@arbidocs/coedit/dist/template.cjs +1627 -0
- package/node_modules/@arbidocs/coedit/dist/template.cjs.map +1 -0
- package/node_modules/@arbidocs/coedit/dist/template.d.cts +125 -0
- package/node_modules/@arbidocs/coedit/dist/template.d.ts +125 -0
- package/node_modules/@arbidocs/coedit/dist/template.js +1612 -0
- package/node_modules/@arbidocs/coedit/dist/template.js.map +1 -0
- package/node_modules/@arbidocs/coedit/dist/versions-DXiFQMA6.d.cts +8 -0
- package/node_modules/@arbidocs/coedit/dist/versions-DXiFQMA6.d.ts +8 -0
- package/node_modules/@arbidocs/coedit/package.json +68 -0
- package/node_modules/@docx-editor.dev/core/LICENSE +201 -0
- package/node_modules/@docx-editor.dev/core/README.md +125 -0
- package/node_modules/@docx-editor.dev/core/THIRD_PARTY_NOTICES.md +56 -0
- package/node_modules/@docx-editor.dev/core/dist/automation.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/automation.d.ts +162 -0
- package/node_modules/@docx-editor.dev/core/dist/automation.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/binding.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/binding.d.ts +164 -0
- package/node_modules/@docx-editor.dev/core/dist/binding.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-2GO5T2JU.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-2RC2EPND.js +3 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-4GBTELJV.cjs +28 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-4R3TEXMN.js +18 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-5CSUYANV.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-6APGXLBB.cjs +3 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-6AWEKBLB.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-6EYYL7FL.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-6JIJOZDW.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-BTQKU64Q.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-E7BQA6UP.js +2 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-EO4C5QJW.cjs +2 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-ETTO6GK3.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-FIJZIQXA.cjs +18 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-FRXAOVTB.js +28 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-J6BVWIDB.js +2 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-JGNVNT2A.cjs +2 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-K5U2PLDP.cjs +2 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-KKIJG3C6.js +2 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-LWDSDCMO.js +27 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-NBCVVZOM.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-O2AL2HSJ.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-O5INAWZQ.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-QMLCVPCD.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-RCHS4ZEH.cjs +27 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-RIYSCEFQ.js +2 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-S6J4O5XP.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-SRPILEWV.cjs +5 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-TSLBZ26X.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-UKVVUHZL.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-VDNNLG6X.js +2 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-VHAVHCQY.js +7 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-VX43VBAX.cjs +7 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-Z6WBFXJU.js +5 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-ZUHOMK52.cjs +2 -0
- package/node_modules/@docx-editor.dev/core/dist/collaboration/replication.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/collaboration/replication.d.ts +270 -0
- package/node_modules/@docx-editor.dev/core/dist/collaboration/replication.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/collaboration.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/collaboration.d.ts +269 -0
- package/node_modules/@docx-editor.dev/core/dist/collaboration.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/contracts/document.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/contracts/document.d.ts +290 -0
- package/node_modules/@docx-editor.dev/core/dist/contracts/document.js +0 -0
- package/node_modules/@docx-editor.dev/core/dist/contracts/editor.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/contracts/editor.d.ts +22 -0
- package/node_modules/@docx-editor.dev/core/dist/contracts/editor.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/contracts/interaction.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/contracts/interaction.d.ts +103 -0
- package/node_modules/@docx-editor.dev/core/dist/contracts/interaction.js +0 -0
- package/node_modules/@docx-editor.dev/core/dist/contracts/modules.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/contracts/modules.d.ts +143 -0
- package/node_modules/@docx-editor.dev/core/dist/contracts/modules.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/contracts/types.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/contracts/types.d.ts +11 -0
- package/node_modules/@docx-editor.dev/core/dist/contracts/types.js +0 -0
- package/node_modules/@docx-editor.dev/core/dist/custom-node-writes-cvL5rhcD.d.ts +323 -0
- package/node_modules/@docx-editor.dev/core/dist/dist-PKZR6RSH.js +2 -0
- package/node_modules/@docx-editor.dev/core/dist/document-protection-BAGVGqaP.d.ts +20 -0
- package/node_modules/@docx-editor.dev/core/dist/editor-Ci7IZGmG.d.ts +2448 -0
- package/node_modules/@docx-editor.dev/core/dist/editor-scope-OHPwVQ5l.d.ts +84 -0
- package/node_modules/@docx-editor.dev/core/dist/editor.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/editor.css +15 -0
- package/node_modules/@docx-editor.dev/core/dist/editor.d.ts +1394 -0
- package/node_modules/@docx-editor.dev/core/dist/editor.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/export.cjs +2 -0
- package/node_modules/@docx-editor.dev/core/dist/export.d.ts +391 -0
- package/node_modules/@docx-editor.dev/core/dist/export.js +2 -0
- package/node_modules/@docx-editor.dev/core/dist/failure-NS2lsya4.d.ts +115 -0
- package/node_modules/@docx-editor.dev/core/dist/font-resolver-BVQB14qT.d.ts +256 -0
- package/node_modules/@docx-editor.dev/core/dist/harfbuzz.wasm +0 -0
- package/node_modules/@docx-editor.dev/core/dist/headless-document-view-qH331moE.d.ts +143 -0
- package/node_modules/@docx-editor.dev/core/dist/image-resources-BN-hUgCn.d.ts +211 -0
- package/node_modules/@docx-editor.dev/core/dist/index-Bsg7oIKP.d.ts +3869 -0
- package/node_modules/@docx-editor.dev/core/dist/index.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/index.d.ts +53 -0
- package/node_modules/@docx-editor.dev/core/dist/index.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/layout-shaping-BEyuiQOk.d.ts +246 -0
- package/node_modules/@docx-editor.dev/core/dist/layout.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/layout.d.ts +3151 -0
- package/node_modules/@docx-editor.dev/core/dist/layout.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/node-module-shim-TTKTT66I.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/note-properties-4Y9o6Gyk.d.ts +68 -0
- package/node_modules/@docx-editor.dev/core/dist/omml-equation-CuzBL5DD.d.ts +85 -0
- package/node_modules/@docx-editor.dev/core/dist/output.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/output.d.ts +97 -0
- package/node_modules/@docx-editor.dev/core/dist/output.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/protocol-Bqk4Izjc.d.ts +1651 -0
- package/node_modules/@docx-editor.dev/core/dist/review-pane-D9jm8DcY.d.ts +128 -0
- package/node_modules/@docx-editor.dev/core/dist/review-paragraph-order-DT-n6ouC.d.ts +85 -0
- package/node_modules/@docx-editor.dev/core/dist/revision-projection-DZ4kKVev.d.ts +242 -0
- package/node_modules/@docx-editor.dev/core/dist/semantic-cell-selection-D9D1KSXq.d.ts +464 -0
- package/node_modules/@docx-editor.dev/core/dist/semantic-interaction-CIC-PooQ.d.ts +135 -0
- package/node_modules/@docx-editor.dev/core/dist/semantic-paint-BME37OMv.d.ts +326 -0
- package/node_modules/@docx-editor.dev/core/dist/semantic-record-queries-CBlZqZNa.d.ts +177 -0
- package/node_modules/@docx-editor.dev/core/dist/semantic-records-4B3WwFAi.d.ts +3532 -0
- package/node_modules/@docx-editor.dev/core/dist/store.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/store.d.ts +2706 -0
- package/node_modules/@docx-editor.dev/core/dist/store.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/tree-package-fragment-BeeKxDw8.d.ts +1201 -0
- package/node_modules/@docx-editor.dev/core/dist/tree-session-contract-CVbmlMlq.d.ts +664 -0
- package/node_modules/@docx-editor.dev/core/dist/types-barrel-D3xCgQX6.d.ts +4269 -0
- package/node_modules/@docx-editor.dev/core/licenses/HarfBuzz-COPYING.txt +42 -0
- package/node_modules/@docx-editor.dev/core/package.json +140 -0
- package/node_modules/@docx-editor.dev/react/LICENSE +201 -0
- package/node_modules/@docx-editor.dev/react/README.md +141 -0
- package/node_modules/@docx-editor.dev/react/THIRD_PARTY_NOTICES.md +18 -0
- package/node_modules/@docx-editor.dev/react/dist/index.d.mts +4928 -0
- package/node_modules/@docx-editor.dev/react/dist/index.d.ts +4928 -0
- package/node_modules/@docx-editor.dev/react/dist/index.js +4 -0
- package/node_modules/@docx-editor.dev/react/dist/index.mjs +4 -0
- package/node_modules/@docx-editor.dev/react/package.json +74 -0
- package/node_modules/@docx-editor.dev/react/src/styles/editor.css +6 -0
- package/node_modules/@docx-editor.dev/react/src/styles/zIndex.ts +28 -0
- package/package.json +26 -15
- package/src/docx/README.md +10 -0
- package/src/docx/styles.css +73 -5
- package/dist/chunk-FAGQTB3D.cjs.map +0 -1
- package/dist/chunk-MYALCKDR.js.map +0 -1
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { ModalScaffold } from './chunk-TX2ZICS7.js';
|
|
3
|
+
import { useState, useRef, useEffect } from 'react';
|
|
4
|
+
import { initialsOf, intentText } from '@arbidocs/react/document-tools';
|
|
5
|
+
import { Label, Input, Tabs, TabsList, TabsTrigger, TabsContent, Button } from '@arbidocs/react/ui';
|
|
6
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
var CANVAS_W = 600;
|
|
9
|
+
var CANVAS_H = 200;
|
|
10
|
+
var TYPED_SIGNATURE_STYLE = {
|
|
11
|
+
fontFamily: '"Times New Roman", Times, serif',
|
|
12
|
+
fontStyle: "italic",
|
|
13
|
+
color: "#0d1a59"
|
|
14
|
+
};
|
|
15
|
+
function blank(canvas) {
|
|
16
|
+
const ctx = canvas?.getContext("2d");
|
|
17
|
+
if (!canvas || !ctx) return true;
|
|
18
|
+
const { data } = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
|
19
|
+
for (let i = 3; i < data.length; i += 4) if (data[i] > 0) return false;
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
async function drawUpload(canvas, file) {
|
|
23
|
+
const url = URL.createObjectURL(file);
|
|
24
|
+
try {
|
|
25
|
+
const img = new Image();
|
|
26
|
+
await new Promise((resolve, reject) => {
|
|
27
|
+
img.onload = () => resolve();
|
|
28
|
+
img.onerror = () => reject(new Error("That file is not an image"));
|
|
29
|
+
img.src = url;
|
|
30
|
+
});
|
|
31
|
+
const ctx = canvas.getContext("2d");
|
|
32
|
+
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
33
|
+
const scale = Math.min(canvas.width / img.width, canvas.height / img.height);
|
|
34
|
+
const w = img.width * scale;
|
|
35
|
+
const h = img.height * scale;
|
|
36
|
+
ctx.drawImage(img, (canvas.width - w) / 2, (canvas.height - h) / 2, w, h);
|
|
37
|
+
const pixels = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
|
38
|
+
for (let i = 0; i < pixels.data.length; i += 4) {
|
|
39
|
+
const [r, g, b] = [pixels.data[i], pixels.data[i + 1], pixels.data[i + 2]];
|
|
40
|
+
if (r > 225 && g > 225 && b > 225) pixels.data[i + 3] = 0;
|
|
41
|
+
}
|
|
42
|
+
ctx.putImageData(pixels, 0, 0);
|
|
43
|
+
} finally {
|
|
44
|
+
URL.revokeObjectURL(url);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function AdoptSignatureDialog({
|
|
48
|
+
open,
|
|
49
|
+
onOpenChange,
|
|
50
|
+
defaultName,
|
|
51
|
+
onAdopt
|
|
52
|
+
}) {
|
|
53
|
+
const [name, setName] = useState(defaultName);
|
|
54
|
+
const [initials, setInitials] = useState(() => initialsOf(defaultName));
|
|
55
|
+
const [style, setStyle] = useState("typed");
|
|
56
|
+
const [hasInk, setHasInk] = useState(false);
|
|
57
|
+
const [error, setError] = useState(null);
|
|
58
|
+
const drawRef = useRef(null);
|
|
59
|
+
const uploadRef = useRef(null);
|
|
60
|
+
const drawing = useRef(false);
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
if (open) {
|
|
63
|
+
setName(defaultName);
|
|
64
|
+
setInitials(initialsOf(defaultName));
|
|
65
|
+
}
|
|
66
|
+
}, [open, defaultName]);
|
|
67
|
+
const canvas = () => style === "drawn" ? drawRef.current : uploadRef.current;
|
|
68
|
+
const pos = (e) => {
|
|
69
|
+
const r = e.currentTarget.getBoundingClientRect();
|
|
70
|
+
return {
|
|
71
|
+
x: (e.clientX - r.left) / r.width * CANVAS_W,
|
|
72
|
+
y: (e.clientY - r.top) / r.height * CANVAS_H
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
const start = (e) => {
|
|
76
|
+
const ctx = e.currentTarget.getContext("2d");
|
|
77
|
+
if (!ctx) return;
|
|
78
|
+
e.currentTarget.setPointerCapture?.(e.pointerId);
|
|
79
|
+
drawing.current = true;
|
|
80
|
+
const p = pos(e);
|
|
81
|
+
ctx.lineWidth = 3.5;
|
|
82
|
+
ctx.lineCap = "round";
|
|
83
|
+
ctx.lineJoin = "round";
|
|
84
|
+
ctx.strokeStyle = TYPED_SIGNATURE_STYLE.color;
|
|
85
|
+
ctx.beginPath();
|
|
86
|
+
ctx.moveTo(p.x, p.y);
|
|
87
|
+
};
|
|
88
|
+
const move = (e) => {
|
|
89
|
+
if (!drawing.current) return;
|
|
90
|
+
const ctx = e.currentTarget.getContext("2d");
|
|
91
|
+
const p = pos(e);
|
|
92
|
+
ctx?.lineTo(p.x, p.y);
|
|
93
|
+
ctx?.stroke();
|
|
94
|
+
setHasInk(true);
|
|
95
|
+
};
|
|
96
|
+
const clear = () => {
|
|
97
|
+
const c = canvas();
|
|
98
|
+
c?.getContext("2d")?.clearRect(0, 0, CANVAS_W, CANVAS_H);
|
|
99
|
+
setHasInk(false);
|
|
100
|
+
};
|
|
101
|
+
const adopt = () => {
|
|
102
|
+
setError(null);
|
|
103
|
+
if (!name.trim() || !initials.trim()) return;
|
|
104
|
+
if (style === "typed") {
|
|
105
|
+
onAdopt({
|
|
106
|
+
adopted: { name: name.trim(), initials: initials.trim(), style },
|
|
107
|
+
signatureUrl: null
|
|
108
|
+
});
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const c = canvas();
|
|
112
|
+
if (!c || blank(c)) {
|
|
113
|
+
setError(style === "drawn" ? "Draw your signature first." : "Choose an image first.");
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const url = c.toDataURL("image/png");
|
|
117
|
+
onAdopt({
|
|
118
|
+
adopted: {
|
|
119
|
+
name: name.trim(),
|
|
120
|
+
initials: initials.trim(),
|
|
121
|
+
style,
|
|
122
|
+
signature_image: url.slice(url.indexOf(",") + 1)
|
|
123
|
+
},
|
|
124
|
+
signatureUrl: url
|
|
125
|
+
});
|
|
126
|
+
};
|
|
127
|
+
return /* @__PURE__ */ jsxs(
|
|
128
|
+
ModalScaffold,
|
|
129
|
+
{
|
|
130
|
+
open,
|
|
131
|
+
onOpenChange,
|
|
132
|
+
title: "Adopt your signature",
|
|
133
|
+
description: "You adopt it once and apply it at each place you are asked to sign.",
|
|
134
|
+
showDescription: true,
|
|
135
|
+
testId: "adopt-signature-dialog",
|
|
136
|
+
children: [
|
|
137
|
+
/* @__PURE__ */ jsxs(ModalScaffold.Body, { children: [
|
|
138
|
+
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-[1fr_7rem] gap-3", children: [
|
|
139
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
140
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "adopt-name", children: "Full name" }),
|
|
141
|
+
/* @__PURE__ */ jsx(
|
|
142
|
+
Input,
|
|
143
|
+
{
|
|
144
|
+
id: "adopt-name",
|
|
145
|
+
value: name,
|
|
146
|
+
onChange: (e) => {
|
|
147
|
+
setName(e.target.value);
|
|
148
|
+
setInitials(initialsOf(e.target.value));
|
|
149
|
+
},
|
|
150
|
+
"data-testid": "adopt-signature-name"
|
|
151
|
+
}
|
|
152
|
+
)
|
|
153
|
+
] }),
|
|
154
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
155
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "adopt-initials", children: "Initials" }),
|
|
156
|
+
/* @__PURE__ */ jsx(
|
|
157
|
+
Input,
|
|
158
|
+
{
|
|
159
|
+
id: "adopt-initials",
|
|
160
|
+
value: initials,
|
|
161
|
+
maxLength: 12,
|
|
162
|
+
onChange: (e) => setInitials(e.target.value),
|
|
163
|
+
"data-testid": "adopt-signature-initials"
|
|
164
|
+
}
|
|
165
|
+
)
|
|
166
|
+
] })
|
|
167
|
+
] }),
|
|
168
|
+
/* @__PURE__ */ jsxs(
|
|
169
|
+
Tabs,
|
|
170
|
+
{
|
|
171
|
+
value: style,
|
|
172
|
+
onValueChange: (v) => {
|
|
173
|
+
setStyle(v);
|
|
174
|
+
setError(null);
|
|
175
|
+
},
|
|
176
|
+
children: [
|
|
177
|
+
/* @__PURE__ */ jsxs(TabsList, { className: "grid w-full grid-cols-3", children: [
|
|
178
|
+
/* @__PURE__ */ jsx(TabsTrigger, { value: "typed", "data-testid": "adopt-tab-typed", children: "Type" }),
|
|
179
|
+
/* @__PURE__ */ jsx(TabsTrigger, { value: "drawn", "data-testid": "adopt-tab-drawn", children: "Draw" }),
|
|
180
|
+
/* @__PURE__ */ jsx(TabsTrigger, { value: "uploaded", "data-testid": "adopt-tab-uploaded", children: "Upload" })
|
|
181
|
+
] }),
|
|
182
|
+
/* @__PURE__ */ jsx(TabsContent, { value: "typed", children: /* @__PURE__ */ jsx(
|
|
183
|
+
"div",
|
|
184
|
+
{
|
|
185
|
+
className: "flex h-28 items-center justify-center rounded-md border bg-white px-4 text-4xl",
|
|
186
|
+
style: TYPED_SIGNATURE_STYLE,
|
|
187
|
+
"data-testid": "adopt-signature-typed-preview",
|
|
188
|
+
children: name.trim() || "Your name"
|
|
189
|
+
}
|
|
190
|
+
) }),
|
|
191
|
+
/* @__PURE__ */ jsx(TabsContent, { value: "drawn", forceMount: true, hidden: style !== "drawn", children: /* @__PURE__ */ jsx(
|
|
192
|
+
"canvas",
|
|
193
|
+
{
|
|
194
|
+
ref: drawRef,
|
|
195
|
+
width: CANVAS_W,
|
|
196
|
+
height: CANVAS_H,
|
|
197
|
+
className: "h-28 w-full touch-none rounded-md border bg-white",
|
|
198
|
+
"aria-label": "Draw your signature",
|
|
199
|
+
onPointerDown: start,
|
|
200
|
+
onPointerMove: move,
|
|
201
|
+
onPointerUp: () => drawing.current = false,
|
|
202
|
+
onPointerLeave: () => drawing.current = false,
|
|
203
|
+
"data-testid": "adopt-signature-canvas"
|
|
204
|
+
}
|
|
205
|
+
) }),
|
|
206
|
+
/* @__PURE__ */ jsxs(TabsContent, { value: "uploaded", forceMount: true, hidden: style !== "uploaded", children: [
|
|
207
|
+
/* @__PURE__ */ jsx(
|
|
208
|
+
"canvas",
|
|
209
|
+
{
|
|
210
|
+
ref: uploadRef,
|
|
211
|
+
width: CANVAS_W,
|
|
212
|
+
height: CANVAS_H,
|
|
213
|
+
className: "h-28 w-full rounded-md border bg-white",
|
|
214
|
+
"aria-label": "Uploaded signature"
|
|
215
|
+
}
|
|
216
|
+
),
|
|
217
|
+
/* @__PURE__ */ jsx(
|
|
218
|
+
Input,
|
|
219
|
+
{
|
|
220
|
+
type: "file",
|
|
221
|
+
accept: "image/png,image/jpeg,image/webp",
|
|
222
|
+
className: "mt-2",
|
|
223
|
+
onChange: async (e) => {
|
|
224
|
+
const file = e.target.files?.[0];
|
|
225
|
+
if (!file || !uploadRef.current) return;
|
|
226
|
+
try {
|
|
227
|
+
await drawUpload(uploadRef.current, file);
|
|
228
|
+
setHasInk(true);
|
|
229
|
+
setError(null);
|
|
230
|
+
} catch (err) {
|
|
231
|
+
setError(err instanceof Error ? err.message : "The image could not be read");
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
"data-testid": "adopt-signature-upload"
|
|
235
|
+
}
|
|
236
|
+
)
|
|
237
|
+
] })
|
|
238
|
+
]
|
|
239
|
+
}
|
|
240
|
+
),
|
|
241
|
+
style !== "typed" && /* @__PURE__ */ jsx(Button, { type: "button", variant: "ghost", size: "sm", onClick: clear, disabled: !hasInk, children: "Clear" }),
|
|
242
|
+
name.trim() && /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
|
|
243
|
+
"By adopting it you agree to sign electronically: \u201C",
|
|
244
|
+
intentText({ name }),
|
|
245
|
+
"\u201D"
|
|
246
|
+
] }),
|
|
247
|
+
error && /* @__PURE__ */ jsx("p", { className: "text-sm text-red-text", role: "alert", children: error })
|
|
248
|
+
] }),
|
|
249
|
+
/* @__PURE__ */ jsxs(ModalScaffold.Footer, { children: [
|
|
250
|
+
/* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", onClick: () => onOpenChange(false), children: "Cancel" }),
|
|
251
|
+
/* @__PURE__ */ jsx(
|
|
252
|
+
Button,
|
|
253
|
+
{
|
|
254
|
+
type: "button",
|
|
255
|
+
onClick: adopt,
|
|
256
|
+
disabled: !name.trim() || !initials.trim(),
|
|
257
|
+
"data-testid": "adopt-signature-submit",
|
|
258
|
+
children: "Adopt and sign"
|
|
259
|
+
}
|
|
260
|
+
)
|
|
261
|
+
] })
|
|
262
|
+
]
|
|
263
|
+
}
|
|
264
|
+
);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
export { AdoptSignatureDialog, TYPED_SIGNATURE_STYLE };
|
|
268
|
+
//# sourceMappingURL=chunk-EQB3WELX.js.map
|
|
269
|
+
//# sourceMappingURL=chunk-EQB3WELX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/document-tools/AdoptSignatureDialog.tsx"],"names":[],"mappings":"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","file":"chunk-EQB3WELX.js","sourcesContent":["/**\n * Adopt a signature once, before applying it at each field: type it (the name in a signature\n * face, as the signed PDF draws it), draw it, or upload an image of it. Initials are typed. A drawn\n * or uploaded signature is handed on as a PNG (white made transparent); the server re-encodes it.\n */\n\nimport { useEffect, useRef, useState, type PointerEvent, type ReactElement } from 'react'\nimport { initialsOf, intentText, type AdoptedSignature } from '@arbidocs/react/document-tools'\nimport { Button, Input, Label, Tabs, TabsContent, TabsList, TabsTrigger } from '@arbidocs/react/ui'\nimport { ModalScaffold } from '../settings/ModalScaffold'\n\nexport interface AdoptedMark {\n adopted: AdoptedSignature\n /** A data URL of the drawn/uploaded signature, for showing it at each field; null when typed. */\n signatureUrl: string | null\n}\n\nexport interface AdoptSignatureDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n defaultName: string\n onAdopt: (mark: AdoptedMark) => void\n}\n\nconst CANVAS_W = 600\nconst CANVAS_H = 200\n/** Typed signatures look like the PDF will: an italic serif in ink blue. */\nexport const TYPED_SIGNATURE_STYLE = {\n fontFamily: '\"Times New Roman\", Times, serif',\n fontStyle: 'italic',\n color: '#0d1a59',\n} as const\n\ntype Style = AdoptedSignature['style']\n\nfunction blank(canvas: HTMLCanvasElement | null): boolean {\n const ctx = canvas?.getContext('2d')\n if (!canvas || !ctx) return true\n const { data } = ctx.getImageData(0, 0, canvas.width, canvas.height)\n for (let i = 3; i < data.length; i += 4) if (data[i]! > 0) return false\n return true\n}\n\n/** Draw an uploaded image into the canvas, fitted, with near-white made transparent. */\nasync function drawUpload(canvas: HTMLCanvasElement, file: File): Promise<void> {\n const url = URL.createObjectURL(file)\n try {\n const img = new Image()\n await new Promise<void>((resolve, reject) => {\n img.onload = () => resolve()\n img.onerror = () => reject(new Error('That file is not an image'))\n img.src = url\n })\n const ctx = canvas.getContext('2d')!\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n const scale = Math.min(canvas.width / img.width, canvas.height / img.height)\n const w = img.width * scale\n const h = img.height * scale\n ctx.drawImage(img, (canvas.width - w) / 2, (canvas.height - h) / 2, w, h)\n const pixels = ctx.getImageData(0, 0, canvas.width, canvas.height)\n for (let i = 0; i < pixels.data.length; i += 4) {\n const [r, g, b] = [pixels.data[i]!, pixels.data[i + 1]!, pixels.data[i + 2]!]\n if (r > 225 && g > 225 && b > 225) pixels.data[i + 3] = 0\n }\n ctx.putImageData(pixels, 0, 0)\n } finally {\n URL.revokeObjectURL(url)\n }\n}\n\nexport function AdoptSignatureDialog({\n open,\n onOpenChange,\n defaultName,\n onAdopt,\n}: AdoptSignatureDialogProps): ReactElement {\n const [name, setName] = useState(defaultName)\n const [initials, setInitials] = useState(() => initialsOf(defaultName))\n const [style, setStyle] = useState<Style>('typed')\n const [hasInk, setHasInk] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const drawRef = useRef<HTMLCanvasElement>(null)\n const uploadRef = useRef<HTMLCanvasElement>(null)\n const drawing = useRef(false)\n\n useEffect(() => {\n if (open) {\n setName(defaultName)\n setInitials(initialsOf(defaultName))\n }\n }, [open, defaultName])\n\n const canvas = () => (style === 'drawn' ? drawRef.current : uploadRef.current)\n\n const pos = (e: PointerEvent<HTMLCanvasElement>) => {\n const r = e.currentTarget.getBoundingClientRect()\n return {\n x: ((e.clientX - r.left) / r.width) * CANVAS_W,\n y: ((e.clientY - r.top) / r.height) * CANVAS_H,\n }\n }\n\n const start = (e: PointerEvent<HTMLCanvasElement>) => {\n const ctx = e.currentTarget.getContext('2d')\n if (!ctx) return\n e.currentTarget.setPointerCapture?.(e.pointerId)\n drawing.current = true\n const p = pos(e)\n ctx.lineWidth = 3.5\n ctx.lineCap = 'round'\n ctx.lineJoin = 'round'\n ctx.strokeStyle = TYPED_SIGNATURE_STYLE.color\n ctx.beginPath()\n ctx.moveTo(p.x, p.y)\n }\n const move = (e: PointerEvent<HTMLCanvasElement>) => {\n if (!drawing.current) return\n const ctx = e.currentTarget.getContext('2d')\n const p = pos(e)\n ctx?.lineTo(p.x, p.y)\n ctx?.stroke()\n setHasInk(true)\n }\n const clear = () => {\n const c = canvas()\n c?.getContext('2d')?.clearRect(0, 0, CANVAS_W, CANVAS_H)\n setHasInk(false)\n }\n\n const adopt = () => {\n setError(null)\n if (!name.trim() || !initials.trim()) return\n if (style === 'typed') {\n onAdopt({\n adopted: { name: name.trim(), initials: initials.trim(), style },\n signatureUrl: null,\n })\n return\n }\n const c = canvas()\n if (!c || blank(c)) {\n setError(style === 'drawn' ? 'Draw your signature first.' : 'Choose an image first.')\n return\n }\n const url = c.toDataURL('image/png')\n onAdopt({\n adopted: {\n name: name.trim(),\n initials: initials.trim(),\n style,\n signature_image: url.slice(url.indexOf(',') + 1),\n },\n signatureUrl: url,\n })\n }\n\n return (\n <ModalScaffold\n open={open}\n onOpenChange={onOpenChange}\n title=\"Adopt your signature\"\n description=\"You adopt it once and apply it at each place you are asked to sign.\"\n showDescription\n testId=\"adopt-signature-dialog\"\n >\n <ModalScaffold.Body>\n <div className=\"grid grid-cols-[1fr_7rem] gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"adopt-name\">Full name</Label>\n <Input\n id=\"adopt-name\"\n value={name}\n onChange={(e) => {\n setName(e.target.value)\n setInitials(initialsOf(e.target.value))\n }}\n data-testid=\"adopt-signature-name\"\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"adopt-initials\">Initials</Label>\n <Input\n id=\"adopt-initials\"\n value={initials}\n maxLength={12}\n onChange={(e) => setInitials(e.target.value)}\n data-testid=\"adopt-signature-initials\"\n />\n </div>\n </div>\n <Tabs\n value={style}\n onValueChange={(v) => {\n setStyle(v as Style)\n setError(null)\n }}\n >\n <TabsList className=\"grid w-full grid-cols-3\">\n <TabsTrigger value=\"typed\" data-testid=\"adopt-tab-typed\">\n Type\n </TabsTrigger>\n <TabsTrigger value=\"drawn\" data-testid=\"adopt-tab-drawn\">\n Draw\n </TabsTrigger>\n <TabsTrigger value=\"uploaded\" data-testid=\"adopt-tab-uploaded\">\n Upload\n </TabsTrigger>\n </TabsList>\n <TabsContent value=\"typed\">\n <div\n className=\"flex h-28 items-center justify-center rounded-md border bg-white px-4 text-4xl\"\n style={TYPED_SIGNATURE_STYLE}\n data-testid=\"adopt-signature-typed-preview\"\n >\n {name.trim() || 'Your name'}\n </div>\n </TabsContent>\n <TabsContent value=\"drawn\" forceMount hidden={style !== 'drawn'}>\n <canvas\n ref={drawRef}\n width={CANVAS_W}\n height={CANVAS_H}\n className=\"h-28 w-full touch-none rounded-md border bg-white\"\n aria-label=\"Draw your signature\"\n onPointerDown={start}\n onPointerMove={move}\n onPointerUp={() => (drawing.current = false)}\n onPointerLeave={() => (drawing.current = false)}\n data-testid=\"adopt-signature-canvas\"\n />\n </TabsContent>\n <TabsContent value=\"uploaded\" forceMount hidden={style !== 'uploaded'}>\n <canvas\n ref={uploadRef}\n width={CANVAS_W}\n height={CANVAS_H}\n className=\"h-28 w-full rounded-md border bg-white\"\n aria-label=\"Uploaded signature\"\n />\n <Input\n type=\"file\"\n accept=\"image/png,image/jpeg,image/webp\"\n className=\"mt-2\"\n onChange={async (e) => {\n const file = e.target.files?.[0]\n if (!file || !uploadRef.current) return\n try {\n await drawUpload(uploadRef.current, file)\n setHasInk(true)\n setError(null)\n } catch (err) {\n setError(err instanceof Error ? err.message : 'The image could not be read')\n }\n }}\n data-testid=\"adopt-signature-upload\"\n />\n </TabsContent>\n </Tabs>\n {style !== 'typed' && (\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={clear} disabled={!hasInk}>\n Clear\n </Button>\n )}\n {name.trim() && (\n <p className=\"text-xs text-muted-foreground\">\n By adopting it you agree to sign electronically: “{intentText({ name })}”\n </p>\n )}\n {error && (\n <p className=\"text-sm text-red-text\" role=\"alert\">\n {error}\n </p>\n )}\n </ModalScaffold.Body>\n <ModalScaffold.Footer>\n <Button type=\"button\" variant=\"outline\" onClick={() => onOpenChange(false)}>\n Cancel\n </Button>\n <Button\n type=\"button\"\n onClick={adopt}\n disabled={!name.trim() || !initials.trim()}\n data-testid=\"adopt-signature-submit\"\n >\n Adopt and sign\n </Button>\n </ModalScaffold.Footer>\n </ModalScaffold>\n )\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useConnection } from './chunk-OYMWV45N.js';
|
|
3
|
-
import { NativeDocxEditor, loadDocxFonts } from './chunk-
|
|
3
|
+
import { NativeDocxEditor, loadDocxFonts } from './chunk-CVYY4X5R.js';
|
|
4
4
|
import { useMemo } from 'react';
|
|
5
5
|
import { useQueryClient, useQuery } from '@tanstack/react-query';
|
|
6
6
|
import { useArbi, notify, arbiQueryKeys } from '@arbidocs/react';
|
|
@@ -88,5 +88,5 @@ function useConnectedNativeDocxAdapter(fontBaseUrl = "/native-docx/fonts") {
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
export { ConnectedNativeDocxEditor, useConnectedNativeDocxAdapter };
|
|
91
|
-
//# sourceMappingURL=chunk-
|
|
92
|
-
//# sourceMappingURL=chunk-
|
|
91
|
+
//# sourceMappingURL=chunk-GQTIAATM.js.map
|
|
92
|
+
//# sourceMappingURL=chunk-GQTIAATM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/ConnectedNativeDocxEditor.tsx"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/connection/ConnectedNativeDocxEditor.tsx"],"names":[],"mappings":"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","file":"chunk-GQTIAATM.js","sourcesContent":["import { useMemo } from 'react'\nimport { useQuery, useQueryClient } from '@tanstack/react-query'\nimport { useArbi, notify, arbiQueryKeys } from '@arbidocs/react'\nimport { useConnection } from './ConnectionProvider'\nimport {\n NativeDocxEditor,\n type NativeDocxAdapter,\n type NativeDocxEditorProps,\n} from '../docx/NativeDocxEditor'\nimport { loadDocxFonts } from '../docx/fonts'\n\n/** Native Word widget bound to the standard blocks connection and SDK session. */\nexport function ConnectedNativeDocxEditor({\n fontBaseUrl = '/native-docx/fonts',\n ...props\n}: Omit<NativeDocxEditorProps, 'adapter'> & { fontBaseUrl?: string }) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n return <NativeDocxEditor {...props} adapter={adapter} />\n}\n\nexport function useConnectedNativeDocxAdapter(fontBaseUrl = '/native-docx/fonts') {\n const arbi = useArbi()\n const { workspaceId, apiUrl, user, ensureWorkspaceOpen } = useConnection()\n const queries = useQueryClient()\n const { data: members } = useQuery({\n queryKey: ['native-docx-members', apiUrl, user?.externalId, workspaceId],\n enabled: arbi.isLoggedIn && !!workspaceId,\n queryFn: async () => {\n await ensureWorkspaceOpen()\n return arbi.workspaces.listUsers()\n },\n })\n const adapter = useMemo<NativeDocxAdapter>(\n () => ({\n request: async (path, options) => {\n await ensureWorkspaceOpen()\n return arbi.editor.request(path, options)\n },\n open: async (id) => {\n await ensureWorkspaceOpen()\n return (\n await arbi.editor.request(`/${encodeURIComponent(id)}/session`, { method: 'POST' })\n ).json()\n },\n save: async (id, state) =>\n (\n await arbi.editor.request(`/${encodeURIComponent(id)}/save`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ state }),\n })\n ).json(),\n loadFonts: () => loadDocxFonts(fontBaseUrl),\n baseUrl: apiUrl,\n author: user?.name || 'You',\n onVersionSaved: async (id) => {\n if (!workspaceId) return\n const key = arbiQueryKeys.documents(workspaceId)\n try {\n const documents = await arbi.documents.get([id])\n if (!documents.length) throw new Error('The saved version is not available yet.')\n queries.setQueryData<Awaited<ReturnType<typeof arbi.documents.list>>>(key, (previous) => [\n ...documents,\n ...(previous || []).filter(\n (doc) => !documents.some((saved) => saved.external_id === doc.external_id)\n ),\n ])\n } catch {\n await queries.invalidateQueries({ queryKey: key })\n }\n },\n notify: (message, kind) => notify[kind](message),\n mentions: members?.map(({ user: member }) => ({\n id: member.external_id,\n name: [member.given_name, member.family_name].filter(Boolean).join(' '),\n kind: member.external_id.startsWith('agt-') ? 'agent' : 'human',\n })),\n requestAgent: async (id, request) => {\n const response = await arbi.editor.request(`/${encodeURIComponent(id)}/mentions`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n comment_id: request.commentId,\n instruction: request.instruction,\n request_id: request.requestId,\n recipient_ids: request.recipientIds,\n }),\n })\n const delivery = (await response.json()) as { response_ids: string[] }\n notify.success('Mention delivered.')\n return { responseIds: delivery.response_ids || [] }\n },\n getAgentStatus: async (responseId) => (await arbi.assistant.getResponse(responseId)).status,\n }),\n [arbi, apiUrl, user?.name, members, ensureWorkspaceOpen, fontBaseUrl, queries, workspaceId]\n )\n return adapter\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { NativeDocxEditor } from './chunk-
|
|
2
|
+
import { NativeDocxEditor } from './chunk-CVYY4X5R.js';
|
|
3
3
|
import { jsx } from 'react/jsx-runtime';
|
|
4
4
|
|
|
5
5
|
function StreamedWordArtifact({
|
|
@@ -37,5 +37,5 @@ function StreamedWordArtifact({
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
export { StreamedWordArtifact };
|
|
40
|
-
//# sourceMappingURL=chunk-
|
|
41
|
-
//# sourceMappingURL=chunk-
|
|
40
|
+
//# sourceMappingURL=chunk-H6DFXG5N.js.map
|
|
41
|
+
//# sourceMappingURL=chunk-H6DFXG5N.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/docx/StreamedWordArtifact.tsx"],"names":[],"mappings":";;;AAmBO,SAAS,oBAAA,CAAqB;AAAA,EACnC,OAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAA8B;AAC5B,EAAA,IAAI,CAAC,QAAQ,UAAA,EAAY;AACvB,IAAA,uBACE,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QAEC,OAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OAAA;AAAA,MAJK;AAAA,KAKP;AAAA,EAEJ;AACA,EAAA,uBACE,GAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MAEC,OAAA;AAAA,MACA,UAAA,EAAW,gBAAA;AAAA,MACX,KAAA;AAAA,MACA,YAAA,EAAa,EAAA;AAAA,MACb,MAAA,EAAQ,EAAE,OAAA,EAAS,IAAA,EAAM,KAAA;AAAM,KAAA;AAAA,IAL3B;AAAA,GAMN;AAEJ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/docx/StreamedWordArtifact.tsx"],"names":[],"mappings":";;;AAmBO,SAAS,oBAAA,CAAqB;AAAA,EACnC,OAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAA8B;AAC5B,EAAA,IAAI,CAAC,QAAQ,UAAA,EAAY;AACvB,IAAA,uBACE,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QAEC,OAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OAAA;AAAA,MAJK;AAAA,KAKP;AAAA,EAEJ;AACA,EAAA,uBACE,GAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MAEC,OAAA;AAAA,MACA,UAAA,EAAW,gBAAA;AAAA,MACX,KAAA;AAAA,MACA,YAAA,EAAa,EAAA;AAAA,MACb,MAAA,EAAQ,EAAE,OAAA,EAAS,IAAA,EAAM,KAAA;AAAM,KAAA;AAAA,IAL3B;AAAA,GAMN;AAEJ","file":"chunk-H6DFXG5N.js","sourcesContent":["import { NativeDocxEditor, type NativeDocxAdapter } from './NativeDocxEditor'\n\nexport interface StreamedWordArtifactProps {\n adapter: NativeDocxAdapter\n /** Streamed Markdown, shown as a read-only preview while the draft is generated. */\n content: string\n title: string\n busy: boolean\n error?: string | null\n /** The DOCX draft the server stored for this generation (`doc-…`), once known. */\n documentId?: string\n onSaved?: (documentId: string) => void\n}\n\n/**\n * One drafting surface for an AI document draft. The server stores every draft as DOCX, so\n * this component never creates a document: it previews the streamed Markdown until generation\n * ends and the stored DOCX is known, then opens that DOCX in the live collaborative editor.\n */\nexport function StreamedWordArtifact({\n adapter,\n content,\n title,\n busy,\n error,\n documentId,\n onSaved,\n}: StreamedWordArtifactProps) {\n if (!busy && documentId) {\n return (\n <NativeDocxEditor\n key={documentId}\n adapter={adapter}\n documentId={documentId}\n title={title}\n onSaved={onSaved}\n />\n )\n }\n return (\n <NativeDocxEditor\n key=\"stream-preview\"\n adapter={adapter}\n documentId=\"stream-preview\"\n title={title}\n draftContent=\"\"\n stream={{ content, busy, error }}\n />\n )\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkO33EBMIX_cjs = require('./chunk-O33EBMIX.cjs');
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
|
|
7
7
|
function StreamedWordArtifact({
|
|
@@ -15,7 +15,7 @@ function StreamedWordArtifact({
|
|
|
15
15
|
}) {
|
|
16
16
|
if (!busy && documentId) {
|
|
17
17
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
18
|
-
|
|
18
|
+
chunkO33EBMIX_cjs.NativeDocxEditor,
|
|
19
19
|
{
|
|
20
20
|
adapter,
|
|
21
21
|
documentId,
|
|
@@ -26,7 +26,7 @@ function StreamedWordArtifact({
|
|
|
26
26
|
);
|
|
27
27
|
}
|
|
28
28
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
29
|
-
|
|
29
|
+
chunkO33EBMIX_cjs.NativeDocxEditor,
|
|
30
30
|
{
|
|
31
31
|
adapter,
|
|
32
32
|
documentId: "stream-preview",
|
|
@@ -39,5 +39,5 @@ function StreamedWordArtifact({
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
exports.StreamedWordArtifact = StreamedWordArtifact;
|
|
42
|
-
//# sourceMappingURL=chunk-
|
|
43
|
-
//# sourceMappingURL=chunk-
|
|
42
|
+
//# sourceMappingURL=chunk-N36PWG7A.cjs.map
|
|
43
|
+
//# sourceMappingURL=chunk-N36PWG7A.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/docx/StreamedWordArtifact.tsx"],"names":["jsx","NativeDocxEditor"],"mappings":";;;;;AAmBO,SAAS,oBAAA,CAAqB;AAAA,EACnC,OAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAA8B;AAC5B,EAAA,IAAI,CAAC,QAAQ,UAAA,EAAY;AACvB,IAAA,uBACEA,cAAA;AAAA,MAACC,kCAAA;AAAA,MAAA;AAAA,QAEC,OAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OAAA;AAAA,MAJK;AAAA,KAKP;AAAA,EAEJ;AACA,EAAA,uBACED,cAAA;AAAA,IAACC,kCAAA;AAAA,IAAA;AAAA,MAEC,OAAA;AAAA,MACA,UAAA,EAAW,gBAAA;AAAA,MACX,KAAA;AAAA,MACA,YAAA,EAAa,EAAA;AAAA,MACb,MAAA,EAAQ,EAAE,OAAA,EAAS,IAAA,EAAM,KAAA;AAAM,KAAA;AAAA,IAL3B;AAAA,GAMN;AAEJ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/docx/StreamedWordArtifact.tsx"],"names":["jsx","NativeDocxEditor"],"mappings":";;;;;AAmBO,SAAS,oBAAA,CAAqB;AAAA,EACnC,OAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAA8B;AAC5B,EAAA,IAAI,CAAC,QAAQ,UAAA,EAAY;AACvB,IAAA,uBACEA,cAAA;AAAA,MAACC,kCAAA;AAAA,MAAA;AAAA,QAEC,OAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OAAA;AAAA,MAJK;AAAA,KAKP;AAAA,EAEJ;AACA,EAAA,uBACED,cAAA;AAAA,IAACC,kCAAA;AAAA,IAAA;AAAA,MAEC,OAAA;AAAA,MACA,UAAA,EAAW,gBAAA;AAAA,MACX,KAAA;AAAA,MACA,YAAA,EAAa,EAAA;AAAA,MACb,MAAA,EAAQ,EAAE,OAAA,EAAS,IAAA,EAAM,KAAA;AAAM,KAAA;AAAA,IAL3B;AAAA,GAMN;AAEJ","file":"chunk-N36PWG7A.cjs","sourcesContent":["import { NativeDocxEditor, type NativeDocxAdapter } from './NativeDocxEditor'\n\nexport interface StreamedWordArtifactProps {\n adapter: NativeDocxAdapter\n /** Streamed Markdown, shown as a read-only preview while the draft is generated. */\n content: string\n title: string\n busy: boolean\n error?: string | null\n /** The DOCX draft the server stored for this generation (`doc-…`), once known. */\n documentId?: string\n onSaved?: (documentId: string) => void\n}\n\n/**\n * One drafting surface for an AI document draft. The server stores every draft as DOCX, so\n * this component never creates a document: it previews the streamed Markdown until generation\n * ends and the stored DOCX is known, then opens that DOCX in the live collaborative editor.\n */\nexport function StreamedWordArtifact({\n adapter,\n content,\n title,\n busy,\n error,\n documentId,\n onSaved,\n}: StreamedWordArtifactProps) {\n if (!busy && documentId) {\n return (\n <NativeDocxEditor\n key={documentId}\n adapter={adapter}\n documentId={documentId}\n title={title}\n onSaved={onSaved}\n />\n )\n }\n return (\n <NativeDocxEditor\n key=\"stream-preview\"\n adapter={adapter}\n documentId=\"stream-preview\"\n title={title}\n draftContent=\"\"\n stream={{ content, busy, error }}\n />\n )\n}\n"]}
|