@arbidocs/blocks 0.5.20 → 0.5.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ConnectedNativeDocxComparison-KUDFJ3GG.js → ConnectedNativeDocxComparison-4X7H57LE.js} +9 -9
- package/dist/{ConnectedStreamedWordArtifact-JD2XZCYP.js.map → ConnectedNativeDocxComparison-4X7H57LE.js.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-FUNR66KP.cjs → ConnectedNativeDocxComparison-7WTVHEKI.cjs} +10 -10
- package/dist/{ConnectedNativeDocxComparison-FUNR66KP.cjs.map → ConnectedNativeDocxComparison-7WTVHEKI.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-G6R3SFZ3.js → ConnectedNativeDocxEditor-I6RQUSR3.js} +7 -7
- package/dist/{ConnectedNativeDocxEditor-G6R3SFZ3.js.map → ConnectedNativeDocxEditor-I6RQUSR3.js.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-XVCAXAAU.cjs → ConnectedNativeDocxEditor-PZ2ASQO3.cjs} +9 -9
- package/dist/{ConnectedNativeDocxEditor-XVCAXAAU.cjs.map → ConnectedNativeDocxEditor-PZ2ASQO3.cjs.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-JD2XZCYP.js → ConnectedStreamedWordArtifact-KCYSJ3B2.js} +9 -9
- package/dist/{ConnectedNativeDocxComparison-KUDFJ3GG.js.map → ConnectedStreamedWordArtifact-KCYSJ3B2.js.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-P55WP3MC.cjs → ConnectedStreamedWordArtifact-Q5KC4W7O.cjs} +10 -10
- package/dist/ConnectedStreamedWordArtifact-Q5KC4W7O.cjs.map +1 -0
- package/dist/{NativeDocxEditor-6O7UMP7Y.cjs → NativeDocxEditor-JUTTA46L.cjs} +8 -8
- package/dist/{NativeDocxEditor-6O7UMP7Y.cjs.map → NativeDocxEditor-JUTTA46L.cjs.map} +1 -1
- package/dist/{NativeDocxEditor-MHO7LF4E.js → NativeDocxEditor-PSC3JWWA.js} +4 -4
- package/dist/{NativeDocxEditor-MHO7LF4E.js.map → NativeDocxEditor-PSC3JWWA.js.map} +1 -1
- package/dist/{WorkspaceTableView-UR3WLSJG.cjs → WorkspaceTableView-6JVHGDUB.cjs} +8 -8
- package/dist/{WorkspaceTableView-UR3WLSJG.cjs.map → WorkspaceTableView-6JVHGDUB.cjs.map} +1 -1
- package/dist/{WorkspaceTableView-TNUEU6OO.js → WorkspaceTableView-ECPHGWHF.js} +6 -6
- package/dist/{WorkspaceTableView-TNUEU6OO.js.map → WorkspaceTableView-ECPHGWHF.js.map} +1 -1
- package/dist/agents/index.cjs +326 -326
- package/dist/agents/index.js +4 -4
- package/dist/auth/index.cjs +44 -44
- package/dist/auth/index.js +2 -2
- package/dist/auth0/index.cjs +4 -3
- package/dist/auth0/index.cjs.map +1 -1
- package/dist/auth0/index.js +4 -3
- package/dist/auth0/index.js.map +1 -1
- package/dist/{chunk-BQNDBWLB.js → chunk-4ML5AMMO.js} +3 -3
- package/dist/{chunk-BQNDBWLB.js.map → chunk-4ML5AMMO.js.map} +1 -1
- package/dist/{chunk-ODFDMORE.cjs → chunk-4S34OHJX.cjs} +4 -4
- package/dist/{chunk-ODFDMORE.cjs.map → chunk-4S34OHJX.cjs.map} +1 -1
- package/dist/{chunk-QS3AJ3FT.cjs → chunk-5H37UWWS.cjs} +5 -5
- package/dist/{chunk-QS3AJ3FT.cjs.map → chunk-5H37UWWS.cjs.map} +1 -1
- package/dist/{chunk-2FQ4CMRY.cjs → chunk-5ZU2XYXO.cjs} +278 -4
- package/dist/chunk-5ZU2XYXO.cjs.map +1 -0
- package/dist/{chunk-JS7KJRKG.js → chunk-75Z5AUMM.js} +3 -3
- package/dist/{chunk-JS7KJRKG.js.map → chunk-75Z5AUMM.js.map} +1 -1
- package/dist/chunk-BITGO5LI.cjs +18 -0
- package/dist/{chunk-WDCD3OZH.cjs.map → chunk-BITGO5LI.cjs.map} +1 -1
- package/dist/{chunk-E2SKI6VO.js → chunk-D3BHUDOU.js} +3 -3
- package/dist/{chunk-E2SKI6VO.js.map → chunk-D3BHUDOU.js.map} +1 -1
- package/dist/{chunk-WJZK5GAV.js → chunk-DTENNALR.js} +3 -3
- package/dist/{chunk-WJZK5GAV.js.map → chunk-DTENNALR.js.map} +1 -1
- package/dist/{chunk-P5RZPEHW.cjs → chunk-F2BYURQZ.cjs} +5 -5
- package/dist/{chunk-P5RZPEHW.cjs.map → chunk-F2BYURQZ.cjs.map} +1 -1
- package/dist/{chunk-HNGGKANF.js → chunk-F6LC2CRB.js} +5 -5
- package/dist/{chunk-HNGGKANF.js.map → chunk-F6LC2CRB.js.map} +1 -1
- package/dist/{chunk-MBRUUST5.js → chunk-F7IQGPZH.js} +4 -4
- package/dist/{chunk-MBRUUST5.js.map → chunk-F7IQGPZH.js.map} +1 -1
- package/dist/{chunk-X2SQZY7U.js → chunk-FERNQVSH.js} +274 -8
- package/dist/chunk-FERNQVSH.js.map +1 -0
- package/dist/{chunk-KBSKN3NF.cjs → chunk-FQIJICZE.cjs} +9 -9
- package/dist/{chunk-KBSKN3NF.cjs.map → chunk-FQIJICZE.cjs.map} +1 -1
- package/dist/{chunk-SSJLYCX7.cjs → chunk-FV32BTXV.cjs} +84 -56
- package/dist/chunk-FV32BTXV.cjs.map +1 -0
- package/dist/{chunk-2YZ35KKK.cjs → chunk-FZVAJFRH.cjs} +80 -84
- package/dist/chunk-FZVAJFRH.cjs.map +1 -0
- package/dist/{chunk-HHJALHRS.js → chunk-H5XHCIWY.js} +83 -55
- package/dist/chunk-H5XHCIWY.js.map +1 -0
- package/dist/{chunk-TBNXJHTP.js → chunk-IA5BYEO7.js} +7 -5
- package/dist/chunk-IA5BYEO7.js.map +1 -0
- package/dist/{chunk-NFTANEP6.cjs → chunk-IJQ5DIZT.cjs} +5 -5
- package/dist/{chunk-NFTANEP6.cjs.map → chunk-IJQ5DIZT.cjs.map} +1 -1
- package/dist/{chunk-NMZI3K6R.cjs → chunk-IRY63R4L.cjs} +16 -2
- package/dist/chunk-IRY63R4L.cjs.map +1 -0
- package/dist/{chunk-MVP7METT.js → chunk-IXBJEQH5.js} +4 -80
- package/dist/chunk-IXBJEQH5.js.map +1 -0
- package/dist/{chunk-PAKPD3LB.js → chunk-JKJI5SRF.js} +3 -3
- package/dist/{chunk-PAKPD3LB.js.map → chunk-JKJI5SRF.js.map} +1 -1
- package/dist/{chunk-EWRRV37Z.cjs → chunk-K237IYOD.cjs} +2 -80
- package/dist/chunk-K237IYOD.cjs.map +1 -0
- package/dist/chunk-KL6XOSEN.js +156 -0
- package/dist/chunk-KL6XOSEN.js.map +1 -0
- package/dist/{chunk-TRDY3ZT7.js → chunk-LU23I2HS.js} +3 -3
- package/dist/{chunk-TRDY3ZT7.js.map → chunk-LU23I2HS.js.map} +1 -1
- package/dist/{chunk-SAYEQE5R.cjs → chunk-MJT7KHHT.cjs} +48 -48
- package/dist/{chunk-SAYEQE5R.cjs.map → chunk-MJT7KHHT.cjs.map} +1 -1
- package/dist/chunk-MSCDYRSA.cjs +18 -0
- package/dist/{chunk-JPNFVDH4.cjs.map → chunk-MSCDYRSA.cjs.map} +1 -1
- package/dist/chunk-MSPNYW6Z.cjs +165 -0
- package/dist/chunk-MSPNYW6Z.cjs.map +1 -0
- package/dist/{chunk-2R3GGNPA.js → chunk-MZA7GMOH.js} +16 -3
- package/dist/chunk-MZA7GMOH.js.map +1 -0
- package/dist/{chunk-4UGVMOTK.cjs → chunk-NML42O7Q.cjs} +4 -4
- package/dist/{chunk-4UGVMOTK.cjs.map → chunk-NML42O7Q.cjs.map} +1 -1
- package/dist/{chunk-YKGZG353.js → chunk-NVRJ6WTR.js} +3 -3
- package/dist/{chunk-YKGZG353.js.map → chunk-NVRJ6WTR.js.map} +1 -1
- package/dist/{chunk-ZW4QFL3Y.cjs → chunk-PFVCOUU6.cjs} +13 -13
- package/dist/{chunk-ZW4QFL3Y.cjs.map → chunk-PFVCOUU6.cjs.map} +1 -1
- package/dist/{chunk-QLLV5UUI.cjs → chunk-PSIKUQYM.cjs} +5 -5
- package/dist/{chunk-QLLV5UUI.cjs.map → chunk-PSIKUQYM.cjs.map} +1 -1
- package/dist/{chunk-R53JJZNW.js → chunk-RVKVGS72.js} +76 -79
- package/dist/chunk-RVKVGS72.js.map +1 -0
- package/dist/{chunk-H32DV7XS.cjs → chunk-UAEYU2NN.cjs} +136 -2
- package/dist/chunk-UAEYU2NN.cjs.map +1 -0
- package/dist/{chunk-USZ32EKR.js → chunk-VFZLZSJ3.js} +4 -4
- package/dist/{chunk-USZ32EKR.js.map → chunk-VFZLZSJ3.js.map} +1 -1
- package/dist/{chunk-XRL4R2TT.js → chunk-WZ63HE2C.js} +136 -4
- package/dist/chunk-WZ63HE2C.js.map +1 -0
- package/dist/{chunk-F72ZD5Q2.cjs → chunk-YD3RN2FY.cjs} +3 -3
- package/dist/{chunk-F72ZD5Q2.cjs.map → chunk-YD3RN2FY.cjs.map} +1 -1
- package/dist/{chunk-VYFRW6NN.cjs → chunk-YRHQ7OLG.cjs} +3 -3
- package/dist/{chunk-VYFRW6NN.cjs.map → chunk-YRHQ7OLG.cjs.map} +1 -1
- package/dist/{chunk-PYJUIEYV.js → chunk-YT5OOFK3.js} +3 -3
- package/dist/{chunk-PYJUIEYV.js.map → chunk-YT5OOFK3.js.map} +1 -1
- package/dist/{chunk-XCL6ZCI5.js → chunk-Z6CAKLA5.js} +3 -3
- package/dist/{chunk-XCL6ZCI5.js.map → chunk-Z6CAKLA5.js.map} +1 -1
- package/dist/{chunk-RAYCOBF7.cjs → chunk-ZESMRGDV.cjs} +7 -5
- package/dist/chunk-ZESMRGDV.cjs.map +1 -0
- package/dist/{chunk-6FWUZGPF.js → chunk-ZMYK7XTS.js} +4 -4
- package/dist/{chunk-6FWUZGPF.js.map → chunk-ZMYK7XTS.js.map} +1 -1
- package/dist/connect/docx.cjs +13 -13
- package/dist/connect/docx.js +9 -9
- package/dist/connect/index.cjs +1138 -906
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.d.ts +1 -0
- package/dist/connect/index.js +480 -249
- package/dist/connect/index.js.map +1 -1
- package/dist/connect/viewer.cjs +17 -17
- package/dist/connect/viewer.js +6 -6
- package/dist/connection/ConnectedAccountAccessBadge.d.ts +1 -0
- package/dist/connection/ConnectedSettings.d.ts +6 -2
- package/dist/connection/ConnectedSsoDisconnect.d.ts +2 -0
- package/dist/connection/auth/support.d.ts +1 -0
- package/dist/connection/auth/useLoginActions.d.ts +1 -1
- package/dist/connection/settings-page/ConnectedAccountSettings.d.ts +5 -1
- package/dist/document-tools/AdoptSignatureDialog.d.ts +3 -1
- package/dist/document-tools/index.cjs +20 -20
- package/dist/document-tools/index.js +3 -3
- package/dist/document-tools/viewer/index.cjs +10 -10
- package/dist/document-tools/viewer/index.js +3 -3
- package/dist/docx/index.cjs +51 -51
- package/dist/docx/index.js +4 -4
- package/dist/facts/index.cjs +55 -55
- package/dist/facts/index.js +3 -3
- package/dist/home/index.cjs +15 -16
- package/dist/home/index.cjs.map +1 -1
- package/dist/home/index.js +1 -2
- package/dist/home/index.js.map +1 -1
- package/dist/index.cjs +425 -425
- package/dist/index.js +7 -7
- package/dist/settings/IdentityVerification.d.ts +3 -1
- package/dist/settings/ProfileCard.d.ts +3 -1
- package/dist/settings/SettingsPanel.d.ts +6 -0
- package/dist/settings/SubscriptionParts.d.ts +0 -11
- package/dist/settings/index.cjs +162 -166
- package/dist/settings/index.d.ts +1 -1
- package/dist/settings/index.js +3 -3
- package/dist/workflow-canvas/index.cjs +17 -17
- package/dist/workflow-canvas/index.js +4 -4
- package/dist/workspaces/WorkspaceFormParts.d.ts +10 -2
- package/dist/workspaces/index.cjs +52 -287
- package/dist/workspaces/index.cjs.map +1 -1
- package/dist/workspaces/index.js +9 -268
- package/dist/workspaces/index.js.map +1 -1
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/ConnectedStreamedWordArtifact-P55WP3MC.cjs.map +0 -1
- package/dist/chunk-2FQ4CMRY.cjs.map +0 -1
- package/dist/chunk-2R3GGNPA.js.map +0 -1
- package/dist/chunk-2YZ35KKK.cjs.map +0 -1
- package/dist/chunk-5TDGVOR5.js +0 -142
- package/dist/chunk-5TDGVOR5.js.map +0 -1
- package/dist/chunk-6AXJBTHM.js +0 -77
- package/dist/chunk-6AXJBTHM.js.map +0 -1
- package/dist/chunk-EWRRV37Z.cjs.map +0 -1
- package/dist/chunk-H32DV7XS.cjs.map +0 -1
- package/dist/chunk-HHJALHRS.js.map +0 -1
- package/dist/chunk-JPNFVDH4.cjs +0 -18
- package/dist/chunk-MKNSIZWR.cjs +0 -84
- package/dist/chunk-MKNSIZWR.cjs.map +0 -1
- package/dist/chunk-MVP7METT.js.map +0 -1
- package/dist/chunk-NMZI3K6R.cjs.map +0 -1
- package/dist/chunk-R53JJZNW.js.map +0 -1
- package/dist/chunk-RAYCOBF7.cjs.map +0 -1
- package/dist/chunk-REH7PX3N.cjs +0 -145
- package/dist/chunk-REH7PX3N.cjs.map +0 -1
- package/dist/chunk-SSJLYCX7.cjs.map +0 -1
- package/dist/chunk-TBNXJHTP.js.map +0 -1
- package/dist/chunk-WDCD3OZH.cjs +0 -18
- package/dist/chunk-X2SQZY7U.js.map +0 -1
- package/dist/chunk-XRL4R2TT.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { NativeDocxEditor } from './chunk-
|
|
2
|
+
import { NativeDocxEditor } from './chunk-LU23I2HS.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-Z6CAKLA5.js.map
|
|
41
|
+
//# sourceMappingURL=chunk-Z6CAKLA5.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-Z6CAKLA5.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"]}
|
|
@@ -171,7 +171,8 @@ function AdoptSignatureDialog({
|
|
|
171
171
|
onAdopt,
|
|
172
172
|
saved = null,
|
|
173
173
|
onSave,
|
|
174
|
-
mode = "adopt"
|
|
174
|
+
mode = "adopt",
|
|
175
|
+
initialStyle
|
|
175
176
|
}) {
|
|
176
177
|
const saving = mode === "save";
|
|
177
178
|
const [saveToAccount, setSaveToAccount] = react.useState(false);
|
|
@@ -195,7 +196,7 @@ function AdoptSignatureDialog({
|
|
|
195
196
|
if (saved) {
|
|
196
197
|
setName(saved.name);
|
|
197
198
|
setInitials(saved.initials);
|
|
198
|
-
setStyle(saved.style);
|
|
199
|
+
setStyle(initialStyle ?? saved.style);
|
|
199
200
|
setInitialsStyle(saved.initials_style);
|
|
200
201
|
setSavedDrawing(saved.style === "drawn" ? dataUrlOf(saved.signature_png) : null);
|
|
201
202
|
setUpload(saved.style === "uploaded" ? dataUrlOf(saved.signature_png) : null);
|
|
@@ -203,8 +204,9 @@ function AdoptSignatureDialog({
|
|
|
203
204
|
} else {
|
|
204
205
|
setName(defaultName);
|
|
205
206
|
setInitials(documentTools.initialsOf(defaultName));
|
|
207
|
+
setStyle(initialStyle ?? "typed");
|
|
206
208
|
}
|
|
207
|
-
}, [open, defaultName, saved]);
|
|
209
|
+
}, [open, defaultName, saved, initialStyle]);
|
|
208
210
|
const adopt = async () => {
|
|
209
211
|
setError(null);
|
|
210
212
|
if (!name.trim() || !initials.trim()) return;
|
|
@@ -481,5 +483,5 @@ function AdoptSignatureDialog({
|
|
|
481
483
|
|
|
482
484
|
exports.AdoptSignatureDialog = AdoptSignatureDialog;
|
|
483
485
|
exports.TYPED_SIGNATURE_STYLE = TYPED_SIGNATURE_STYLE;
|
|
484
|
-
//# sourceMappingURL=chunk-
|
|
485
|
-
//# sourceMappingURL=chunk-
|
|
486
|
+
//# sourceMappingURL=chunk-ZESMRGDV.cjs.map
|
|
487
|
+
//# sourceMappingURL=chunk-ZESMRGDV.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/document-tools/AdoptSignatureDialog.tsx"],"names":["forwardRef","SignaturePad","useRef","useCallback","useEffect","useImperativeHandle","jsx","cn","useState","initialsOf","jsxs","ModalScaffold","Label","Input","Tabs","TabsList","TabsTrigger","TabsContent","Button","Checkbox","intentText"],"mappings":"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","file":"chunk-ZESMRGDV.cjs","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 likewise typed or\n * drawn. A drawn or uploaded mark is handed on as a PNG (white made transparent); the server\n * re-encodes it.\n *\n * The drawing pad spans the screen's width on a phone and is a generous box on a tablet or desktop.\n * Its canvas is backed at the device's pixel ratio (crisp strokes on a retina screen), and it takes\n * every touch for itself (`touch-action: none`): drawing with a finger never scrolls or zooms the\n * page. Strokes are kept as points, so a resize (turning the phone) redraws them at the new size.\n *\n * With `onSave`, the person may also tick \"Save to my account for future use\": the signature and\n * initials are then sealed to their own key and kept for next time (`saved` prefills the dialog).\n * In `mode=\"save\"` (account settings) the dialog only saves.\n */\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n type PointerEvent,\n type ReactElement,\n} from 'react'\nimport {\n initialsOf,\n intentText,\n type AdoptedSignature,\n type SavedSignature,\n} from '@arbidocs/react/document-tools'\nimport {\n Button,\n Checkbox,\n Input,\n Label,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n cn,\n} 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 /** A data URL of the drawn initials; null when typed. */\n initialsUrl?: string | null\n}\n\nexport interface AdoptSignatureDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n defaultName: string\n onAdopt: (mark: AdoptedMark) => void\n /** The signature saved to the account: the dialog starts from it. */\n saved?: SavedSignature | null\n /** Present: offer \"Save to my account for future use\" (and save when ticked). */\n onSave?: (signature: SavedSignature) => Promise<void>\n /** `save`: account settings, the dialog only saves the signature (no signing). */\n mode?: 'adopt' | 'save'\n /** Start on a particular input tab, for the account's Upload action. */\n initialStyle?: AdoptedSignature['style']\n}\n\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']\ntype InitialsStyle = 'typed' | 'drawn'\ntype Point = { x: number; y: number }\n\ninterface SignaturePadHandle {\n isBlank: () => boolean\n toDataUrl: () => string | null\n clear: () => void\n}\n\n/**\n * A drawing pad: strokes in fractions of the pad, painted on a canvas at the device's pixel ratio.\n * `onInk` fires when the first stroke lands or the pad is cleared.\n */\nconst SignaturePad = forwardRef<\n SignaturePadHandle,\n { label: string; className?: string; onInk: (has: boolean) => void; testId?: string }\n>(function SignaturePad({ label, className, onInk, testId }, ref) {\n const canvas = useRef<HTMLCanvasElement>(null)\n const strokes = useRef<Point[][]>([])\n const drawing = useRef<Point[] | null>(null)\n\n const paint = useCallback(() => {\n const c = canvas.current\n const ctx = c?.getContext('2d')\n if (!c || !ctx) return\n const ratio = window.devicePixelRatio || 1\n const width = c.width / ratio\n const height = c.height / ratio\n ctx.setTransform(ratio, 0, 0, ratio, 0, 0)\n ctx.clearRect(0, 0, width, height)\n ctx.lineWidth = Math.min(4, Math.max(2, height * 0.018))\n ctx.lineCap = 'round'\n ctx.lineJoin = 'round'\n ctx.strokeStyle = TYPED_SIGNATURE_STYLE.color\n for (const stroke of strokes.current) {\n if (!stroke.length) continue\n ctx.beginPath()\n ctx.moveTo(stroke[0]!.x * width, stroke[0]!.y * height)\n // A dot is a stroke too.\n if (stroke.length === 1) ctx.lineTo(stroke[0]!.x * width + 0.1, stroke[0]!.y * height)\n for (const p of stroke.slice(1)) ctx.lineTo(p.x * width, p.y * height)\n ctx.stroke()\n }\n }, [])\n\n // Back the canvas at the device's pixel ratio, and redraw on every resize.\n useEffect(() => {\n const c = canvas.current\n if (!c) return\n const fit = () => {\n const rect = c.getBoundingClientRect()\n const ratio = window.devicePixelRatio || 1\n const width = Math.max(1, Math.round(rect.width * ratio))\n const height = Math.max(1, Math.round(rect.height * ratio))\n if (c.width !== width || c.height !== height) {\n c.width = width\n c.height = height\n }\n paint()\n }\n fit()\n const observer = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(fit)\n observer?.observe(c)\n return () => observer?.disconnect()\n }, [paint])\n\n useImperativeHandle(\n ref,\n () => ({\n isBlank: () => strokes.current.every((s) => s.length === 0),\n toDataUrl: () =>\n strokes.current.some((s) => s.length)\n ? (canvas.current?.toDataURL('image/png') ?? null)\n : null,\n clear: () => {\n strokes.current = []\n paint()\n onInk(false)\n },\n }),\n [paint, onInk]\n )\n\n const at = (e: PointerEvent<HTMLCanvasElement>): Point => {\n const r = e.currentTarget.getBoundingClientRect()\n return {\n x: Math.min(1, Math.max(0, (e.clientX - r.left) / (r.width || 1))),\n y: Math.min(1, Math.max(0, (e.clientY - r.top) / (r.height || 1))),\n }\n }\n\n return (\n <canvas\n ref={canvas}\n className={cn(\n 'block touch-none rounded-md border bg-white select-none [overscroll-behavior:contain]',\n className\n )}\n style={{ touchAction: 'none' }}\n aria-label={label}\n role=\"img\"\n onPointerDown={(e) => {\n e.preventDefault()\n e.currentTarget.setPointerCapture?.(e.pointerId)\n drawing.current = [at(e)]\n strokes.current.push(drawing.current)\n paint()\n onInk(true)\n }}\n onPointerMove={(e) => {\n if (!drawing.current) return\n e.preventDefault()\n // Every sample the browser coalesced, for a smooth line from a fast finger or pen.\n const native = e.nativeEvent as globalThis.PointerEvent\n const samples = native.getCoalescedEvents?.() ?? []\n if (samples.length) {\n const r = e.currentTarget.getBoundingClientRect()\n for (const s of samples)\n drawing.current.push({\n x: Math.min(1, Math.max(0, (s.clientX - r.left) / (r.width || 1))),\n y: Math.min(1, Math.max(0, (s.clientY - r.top) / (r.height || 1))),\n })\n } else drawing.current.push(at(e))\n paint()\n }}\n onPointerUp={() => (drawing.current = null)}\n onPointerCancel={() => (drawing.current = null)}\n data-testid={testId}\n />\n )\n})\n\n/** Draw an uploaded image onto a fresh canvas, fitted, with near-white made transparent. */\nasync function uploadedPng(file: File): Promise<string> {\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 canvas = document.createElement('canvas')\n canvas.width = 900\n canvas.height = 300\n const ctx = canvas.getContext('2d')!\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 return canvas.toDataURL('image/png')\n } finally {\n URL.revokeObjectURL(url)\n }\n}\n\nconst base64Of = (dataUrl: string) => dataUrl.slice(dataUrl.indexOf(',') + 1)\nconst dataUrlOf = (png: string) => `data:image/png;base64,${png}`\n\n/** A typed mark as a picture (transparent, ink blue, the signature face): what is saved for it. */\nfunction typedPng(text: string, height = 120): string {\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')\n if (!ctx) return ''\n const font = `italic ${Math.round(height * 0.6)}px ${TYPED_SIGNATURE_STYLE.fontFamily}`\n ctx.font = font\n const width = Math.max(height, Math.ceil(ctx.measureText(text).width + height * 0.4))\n canvas.width = width\n canvas.height = height\n ctx.font = font\n ctx.fillStyle = TYPED_SIGNATURE_STYLE.color\n ctx.textBaseline = 'middle'\n ctx.fillText(text, height * 0.2, height / 2)\n return base64Of(canvas.toDataURL('image/png'))\n}\n\n/** Full width of the screen on a phone (past the dialog's padding), a large box on wider screens. */\nconst PAD_SIGNATURE = '-mx-6 w-[calc(100%+3rem)] h-[44vw] min-h-36 sm:mx-0 sm:w-full sm:h-56'\nconst PAD_INITIALS = '-mx-6 w-[calc(100%+3rem)] h-[34vw] min-h-28 sm:mx-0 sm:w-80 sm:h-40'\n\nexport function AdoptSignatureDialog({\n open,\n onOpenChange,\n defaultName,\n onAdopt,\n saved = null,\n onSave,\n mode = 'adopt',\n initialStyle,\n}: AdoptSignatureDialogProps): ReactElement {\n const saving = mode === 'save'\n const [saveToAccount, setSaveToAccount] = useState(false)\n const [busy, setBusy] = useState(false)\n /** The saved drawing, shown on the pad until the person draws a new one. */\n const [savedDrawing, setSavedDrawing] = useState<string | null>(null)\n const [savedInitials, setSavedInitials] = useState<string | null>(null)\n const [name, setName] = useState(defaultName)\n const [initials, setInitials] = useState(() => initialsOf(defaultName))\n const [style, setStyle] = useState<Style>('typed')\n const [initialsStyle, setInitialsStyle] = useState<InitialsStyle>('typed')\n const [hasInk, setHasInk] = useState(false)\n const [hasInitialsInk, setHasInitialsInk] = useState(false)\n const [upload, setUpload] = useState<string | null>(null)\n const [error, setError] = useState<string | null>(null)\n const signaturePad = useRef<SignaturePadHandle>(null)\n const initialsPad = useRef<SignaturePadHandle>(null)\n\n useEffect(() => {\n if (!open) return\n setSaveToAccount(false)\n setError(null)\n if (saved) {\n setName(saved.name)\n setInitials(saved.initials)\n setStyle(initialStyle ?? saved.style)\n setInitialsStyle(saved.initials_style)\n setSavedDrawing(saved.style === 'drawn' ? dataUrlOf(saved.signature_png) : null)\n setUpload(saved.style === 'uploaded' ? dataUrlOf(saved.signature_png) : null)\n setSavedInitials(saved.initials_style === 'drawn' ? dataUrlOf(saved.initials_png) : null)\n } else {\n setName(defaultName)\n setInitials(initialsOf(defaultName))\n setStyle(initialStyle ?? 'typed')\n }\n }, [open, defaultName, saved, initialStyle])\n\n const adopt = async () => {\n setError(null)\n if (!name.trim() || !initials.trim()) return\n let signatureUrl: string | null = null\n if (style === 'drawn') {\n signatureUrl = signaturePad.current?.toDataUrl() ?? (hasInk ? null : savedDrawing)\n if (!signatureUrl) return setError('Draw your signature first.')\n } else if (style === 'uploaded') {\n signatureUrl = upload\n if (!signatureUrl) return setError('Choose an image first.')\n }\n let initialsUrl: string | null = null\n if (initialsStyle === 'drawn') {\n initialsUrl = initialsPad.current?.toDataUrl() ?? (hasInitialsInk ? null : savedInitials)\n if (!initialsUrl) return setError('Draw your initials first.')\n }\n if (onSave && (saving || saveToAccount)) {\n setBusy(true)\n try {\n await onSave({\n name: name.trim(),\n initials: initials.trim(),\n style,\n initials_style: initialsStyle,\n signature_png: signatureUrl ? base64Of(signatureUrl) : typedPng(name.trim()),\n initials_png: initialsUrl ? base64Of(initialsUrl) : typedPng(initials.trim()),\n })\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Your signature could not be saved')\n return\n } finally {\n setBusy(false)\n }\n }\n onAdopt({\n adopted: {\n name: name.trim(),\n initials: initials.trim(),\n style,\n ...(signatureUrl ? { signature_image: base64Of(signatureUrl) } : {}),\n ...(initialsUrl ? { initials_image: base64Of(initialsUrl) } : {}),\n },\n signatureUrl,\n initialsUrl,\n })\n }\n\n return (\n <ModalScaffold\n open={open}\n onOpenChange={onOpenChange}\n title={saving ? 'Your signature' : 'Adopt your signature'}\n description={\n saving\n ? 'Saved to your account, sealed with your own key, for placing in documents yourself.'\n : 'You adopt it once and apply it at each place you are asked to sign.'\n }\n showDescription\n size=\"lg\"\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 <section className=\"space-y-1.5\" aria-label=\"Signature\">\n <h3 className=\"text-sm font-medium\">Signature</h3>\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 overflow-hidden rounded-md border bg-white px-4 text-4xl whitespace-nowrap\"\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 <div className=\"relative\">\n <SignaturePad\n ref={signaturePad}\n label=\"Draw your signature\"\n className={PAD_SIGNATURE}\n onInk={setHasInk}\n testId=\"adopt-signature-canvas\"\n />\n {savedDrawing && !hasInk && (\n <img\n src={savedDrawing}\n alt=\"Your saved signature\"\n className=\"pointer-events-none absolute inset-0 h-full w-full object-contain p-2\"\n data-testid=\"adopt-signature-saved\"\n />\n )}\n </div>\n <div className=\"flex items-center justify-between pt-1 text-xs text-muted-foreground\">\n <span>Sign with your finger, a pen or the mouse.</span>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => signaturePad.current?.clear()}\n disabled={!hasInk}\n data-testid=\"adopt-signature-clear\"\n >\n Clear\n </Button>\n </div>\n </TabsContent>\n <TabsContent value=\"uploaded\" forceMount hidden={style !== 'uploaded'}>\n <div className=\"flex h-28 items-center justify-center rounded-md border bg-white\">\n {upload ? (\n <img src={upload} alt=\"Uploaded signature\" className=\"h-full object-contain\" />\n ) : (\n <span className=\"text-sm text-muted-foreground\">No image chosen</span>\n )}\n </div>\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) return\n try {\n setUpload(await uploadedPng(file))\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 </section>\n <section className=\"space-y-1.5\" aria-label=\"Initials\">\n <h3 className=\"text-sm font-medium\">Initials</h3>\n <Tabs\n value={initialsStyle}\n onValueChange={(v) => {\n setInitialsStyle(v as InitialsStyle)\n setError(null)\n }}\n >\n <TabsList className=\"grid w-full grid-cols-2 sm:w-80\">\n <TabsTrigger value=\"typed\" data-testid=\"adopt-initials-tab-typed\">\n Type\n </TabsTrigger>\n <TabsTrigger value=\"drawn\" data-testid=\"adopt-initials-tab-drawn\">\n Draw\n </TabsTrigger>\n </TabsList>\n <TabsContent value=\"typed\">\n <div\n className=\"flex h-20 items-center justify-center rounded-md border bg-white px-4 text-3xl sm:w-80\"\n style={TYPED_SIGNATURE_STYLE}\n data-testid=\"adopt-initials-typed-preview\"\n >\n {initials.trim() || 'AB'}\n </div>\n </TabsContent>\n <TabsContent value=\"drawn\" forceMount hidden={initialsStyle !== 'drawn'}>\n <div className=\"relative sm:w-80\">\n <SignaturePad\n ref={initialsPad}\n label=\"Draw your initials\"\n className={PAD_INITIALS}\n onInk={setHasInitialsInk}\n testId=\"adopt-initials-canvas\"\n />\n {savedInitials && !hasInitialsInk && (\n <img\n src={savedInitials}\n alt=\"Your saved initials\"\n className=\"pointer-events-none absolute inset-0 h-full w-full object-contain p-2\"\n />\n )}\n </div>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => initialsPad.current?.clear()}\n disabled={!hasInitialsInk}\n >\n Clear\n </Button>\n </TabsContent>\n </Tabs>\n </section>\n {onSave && !saving && (\n <label className=\"flex items-center gap-2 text-sm\">\n <Checkbox\n checked={saveToAccount}\n onCheckedChange={(c) => setSaveToAccount(c === true)}\n data-testid=\"adopt-signature-save\"\n />\n Save to my account for future use\n </label>\n )}\n {name.trim() && !saving && (\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={() => void adopt()}\n disabled={busy || !name.trim() || !initials.trim()}\n data-testid=\"adopt-signature-submit\"\n >\n {saving ? 'Save' : 'Adopt and sign'}\n </Button>\n </ModalScaffold.Footer>\n </ModalScaffold>\n )\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useConnectedNativeDocxAdapter } from './chunk-
|
|
3
|
-
import { StreamedWordArtifact } from './chunk-
|
|
2
|
+
import { useConnectedNativeDocxAdapter } from './chunk-F6LC2CRB.js';
|
|
3
|
+
import { StreamedWordArtifact } from './chunk-Z6CAKLA5.js';
|
|
4
4
|
import { jsx } from 'react/jsx-runtime';
|
|
5
5
|
|
|
6
6
|
function ConnectedStreamedWordArtifact({
|
|
@@ -12,5 +12,5 @@ function ConnectedStreamedWordArtifact({
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
export { ConnectedStreamedWordArtifact };
|
|
15
|
-
//# sourceMappingURL=chunk-
|
|
16
|
-
//# sourceMappingURL=chunk-
|
|
15
|
+
//# sourceMappingURL=chunk-ZMYK7XTS.js.map
|
|
16
|
+
//# sourceMappingURL=chunk-ZMYK7XTS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/docx/ConnectedStreamedWordArtifact.tsx"],"names":[],"mappings":";;;;AAMO,SAAS,6BAAA,CAA8B;AAAA,EAC5C,WAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0E;AACxE,EAAA,MAAM,OAAA,GAAU,8BAA8B,WAAW,CAAA;AACzD,EAAA,uBAAO,GAAA,CAAC,oBAAA,EAAA,EAAsB,GAAG,KAAA,EAAO,OAAA,EAAkB,CAAA;AAC5D","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/connection/docx/ConnectedStreamedWordArtifact.tsx"],"names":[],"mappings":";;;;AAMO,SAAS,6BAAA,CAA8B;AAAA,EAC5C,WAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0E;AACxE,EAAA,MAAM,OAAA,GAAU,8BAA8B,WAAW,CAAA;AACzD,EAAA,uBAAO,GAAA,CAAC,oBAAA,EAAA,EAAsB,GAAG,KAAA,EAAO,OAAA,EAAkB,CAAA;AAC5D","file":"chunk-ZMYK7XTS.js","sourcesContent":["import { useConnectedNativeDocxAdapter } from './ConnectedNativeDocxEditor'\nimport {\n StreamedWordArtifact,\n type StreamedWordArtifactProps,\n} from '../../docx/StreamedWordArtifact'\n\nexport function ConnectedStreamedWordArtifact({\n fontBaseUrl,\n ...props\n}: Omit<StreamedWordArtifactProps, 'adapter'> & { fontBaseUrl?: string }) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n return <StreamedWordArtifact {...props} adapter={adapter} />\n}\n"]}
|
package/dist/connect/docx.cjs
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
require('../chunk-
|
|
8
|
-
require('../chunk-
|
|
4
|
+
var chunkBITGO5LI_cjs = require('../chunk-BITGO5LI.cjs');
|
|
5
|
+
var chunkMSCDYRSA_cjs = require('../chunk-MSCDYRSA.cjs');
|
|
6
|
+
var chunkPFVCOUU6_cjs = require('../chunk-PFVCOUU6.cjs');
|
|
7
|
+
require('../chunk-4S34OHJX.cjs');
|
|
8
|
+
require('../chunk-5H37UWWS.cjs');
|
|
9
9
|
require('../chunk-464YPRAE.cjs');
|
|
10
|
-
require('../chunk-
|
|
10
|
+
require('../chunk-NML42O7Q.cjs');
|
|
11
11
|
require('../chunk-5FYU7ZIU.cjs');
|
|
12
|
-
require('../chunk-
|
|
12
|
+
require('../chunk-ZESMRGDV.cjs');
|
|
13
13
|
require('../chunk-JIOHDVWH.cjs');
|
|
14
14
|
require('../chunk-RC25WMVB.cjs');
|
|
15
|
-
require('../chunk-
|
|
15
|
+
require('../chunk-YRHQ7OLG.cjs');
|
|
16
16
|
require('../chunk-CQU37FNV.cjs');
|
|
17
17
|
require('../chunk-AQPZ4QMV.cjs');
|
|
18
18
|
require('../chunk-V4ISCZJ7.cjs');
|
|
@@ -20,12 +20,12 @@ require('../chunk-AHDJXIUB.cjs');
|
|
|
20
20
|
require('../chunk-2EI7NCUA.cjs');
|
|
21
21
|
require('../chunk-4C2S3Z3I.cjs');
|
|
22
22
|
require('../chunk-LKK52DEY.cjs');
|
|
23
|
+
require('../chunk-VZOOGA47.cjs');
|
|
23
24
|
require('../chunk-YVEMNMIA.cjs');
|
|
24
25
|
require('../chunk-YQJOWQDJ.cjs');
|
|
25
26
|
require('../chunk-MB3S2ETI.cjs');
|
|
26
27
|
require('../chunk-MEMWZ72Y.cjs');
|
|
27
28
|
require('../chunk-ZW6FPIFC.cjs');
|
|
28
|
-
require('../chunk-VZOOGA47.cjs');
|
|
29
29
|
require('../chunk-76L6LOP3.cjs');
|
|
30
30
|
require('../chunk-32HW2Q33.cjs');
|
|
31
31
|
require('../chunk-UFEXJIEY.cjs');
|
|
@@ -43,19 +43,19 @@ require('../chunk-DES3K4SD.cjs');
|
|
|
43
43
|
|
|
44
44
|
Object.defineProperty(exports, "ConnectedNativeDocxComparison", {
|
|
45
45
|
enumerable: true,
|
|
46
|
-
get: function () { return
|
|
46
|
+
get: function () { return chunkBITGO5LI_cjs.ConnectedNativeDocxComparison; }
|
|
47
47
|
});
|
|
48
48
|
Object.defineProperty(exports, "ConnectedStreamedWordArtifact", {
|
|
49
49
|
enumerable: true,
|
|
50
|
-
get: function () { return
|
|
50
|
+
get: function () { return chunkMSCDYRSA_cjs.ConnectedStreamedWordArtifact; }
|
|
51
51
|
});
|
|
52
52
|
Object.defineProperty(exports, "ConnectedNativeDocxEditor", {
|
|
53
53
|
enumerable: true,
|
|
54
|
-
get: function () { return
|
|
54
|
+
get: function () { return chunkPFVCOUU6_cjs.ConnectedNativeDocxEditor; }
|
|
55
55
|
});
|
|
56
56
|
Object.defineProperty(exports, "useConnectedNativeDocxAdapter", {
|
|
57
57
|
enumerable: true,
|
|
58
|
-
get: function () { return
|
|
58
|
+
get: function () { return chunkPFVCOUU6_cjs.useConnectedNativeDocxAdapter; }
|
|
59
59
|
});
|
|
60
60
|
//# sourceMappingURL=docx.cjs.map
|
|
61
61
|
//# sourceMappingURL=docx.cjs.map
|
package/dist/connect/docx.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { ConnectedNativeDocxComparison } from '../chunk-
|
|
3
|
-
export { ConnectedStreamedWordArtifact } from '../chunk-
|
|
4
|
-
export { ConnectedNativeDocxEditor, useConnectedNativeDocxAdapter } from '../chunk-
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
2
|
+
export { ConnectedNativeDocxComparison } from '../chunk-VFZLZSJ3.js';
|
|
3
|
+
export { ConnectedStreamedWordArtifact } from '../chunk-ZMYK7XTS.js';
|
|
4
|
+
export { ConnectedNativeDocxEditor, useConnectedNativeDocxAdapter } from '../chunk-F6LC2CRB.js';
|
|
5
|
+
import '../chunk-JKJI5SRF.js';
|
|
6
|
+
import '../chunk-Z6CAKLA5.js';
|
|
7
7
|
import '../chunk-MTSKK3BN.js';
|
|
8
|
-
import '../chunk-
|
|
8
|
+
import '../chunk-LU23I2HS.js';
|
|
9
9
|
import '../chunk-HFZ45FD3.js';
|
|
10
|
-
import '../chunk-
|
|
10
|
+
import '../chunk-IA5BYEO7.js';
|
|
11
11
|
import '../chunk-IYUKJESY.js';
|
|
12
12
|
import '../chunk-AF6RDAJF.js';
|
|
13
|
-
import '../chunk-
|
|
13
|
+
import '../chunk-YT5OOFK3.js';
|
|
14
14
|
import '../chunk-KMF3ORIV.js';
|
|
15
15
|
import '../chunk-G4GLDQLY.js';
|
|
16
16
|
import '../chunk-NUNKSZKU.js';
|
|
@@ -18,12 +18,12 @@ import '../chunk-RLWIUUQ5.js';
|
|
|
18
18
|
import '../chunk-YU2KUMGE.js';
|
|
19
19
|
import '../chunk-ML62FUHZ.js';
|
|
20
20
|
import '../chunk-7F5Z4K5W.js';
|
|
21
|
+
import '../chunk-WNDIVNPT.js';
|
|
21
22
|
import '../chunk-KILCORJ7.js';
|
|
22
23
|
import '../chunk-UNZUM76L.js';
|
|
23
24
|
import '../chunk-T4P237N6.js';
|
|
24
25
|
import '../chunk-ABEKUV6L.js';
|
|
25
26
|
import '../chunk-P6GHJSLR.js';
|
|
26
|
-
import '../chunk-WNDIVNPT.js';
|
|
27
27
|
import '../chunk-TZGBRLPK.js';
|
|
28
28
|
import '../chunk-AUS3KBHJ.js';
|
|
29
29
|
import '../chunk-5VYJP6XD.js';
|