@arbidocs/blocks 0.4.96 → 0.4.97
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/agents/index.cjs +280 -280
- package/dist/agents/index.js +4 -4
- package/dist/{chunk-3WW32OUU.cjs → chunk-3US5OIDQ.cjs} +3 -3
- package/dist/{chunk-3WW32OUU.cjs.map → chunk-3US5OIDQ.cjs.map} +1 -1
- package/dist/{chunk-SJVUKXS6.js → chunk-5NQIBJPP.js} +5 -5
- package/dist/{chunk-SJVUKXS6.js.map → chunk-5NQIBJPP.js.map} +1 -1
- package/dist/chunk-D54JXTPG.cjs +164 -0
- package/dist/chunk-D54JXTPG.cjs.map +1 -0
- package/dist/{chunk-MROSCSPW.cjs → chunk-DDYXFALG.cjs} +43 -43
- package/dist/{chunk-MROSCSPW.cjs.map → chunk-DDYXFALG.cjs.map} +1 -1
- package/dist/{chunk-CK6TU76J.cjs → chunk-EHB7J6SR.cjs} +5 -5
- package/dist/{chunk-CK6TU76J.cjs.map → chunk-EHB7J6SR.cjs.map} +1 -1
- package/dist/{chunk-SC33PQTQ.cjs → chunk-GVOTXXZG.cjs} +5 -5
- package/dist/{chunk-SC33PQTQ.cjs.map → chunk-GVOTXXZG.cjs.map} +1 -1
- package/dist/{chunk-7RI3G5BO.cjs → chunk-HGJGALLN.cjs} +296 -53
- package/dist/chunk-HGJGALLN.cjs.map +1 -0
- package/dist/{chunk-PSN4VWI7.cjs → chunk-LENXDIMY.cjs} +5 -5
- package/dist/{chunk-PSN4VWI7.cjs.map → chunk-LENXDIMY.cjs.map} +1 -1
- package/dist/{chunk-SF4BDUZS.js → chunk-PGDL26TQ.js} +3 -3
- package/dist/{chunk-SF4BDUZS.js.map → chunk-PGDL26TQ.js.map} +1 -1
- package/dist/{chunk-K27SDLLN.js → chunk-QIEEFBZ5.js} +299 -56
- package/dist/chunk-QIEEFBZ5.js.map +1 -0
- package/dist/{chunk-Y52CEKVD.js → chunk-RSUOOMPT.js} +3 -3
- package/dist/{chunk-Y52CEKVD.js.map → chunk-RSUOOMPT.js.map} +1 -1
- package/dist/{chunk-H4SVY5FH.js → chunk-YH6SSJDW.js} +3 -3
- package/dist/{chunk-H4SVY5FH.js.map → chunk-YH6SSJDW.js.map} +1 -1
- package/dist/{chunk-JID3CZSY.js → chunk-Z3G65XHZ.js} +3 -3
- package/dist/{chunk-JID3CZSY.js.map → chunk-Z3G65XHZ.js.map} +1 -1
- package/dist/chunk-ZCOVDK2E.js +153 -0
- package/dist/chunk-ZCOVDK2E.js.map +1 -0
- package/dist/components/DetailPanel.d.ts +106 -0
- package/dist/connect/docx.cjs +6 -6
- package/dist/connect/docx.js +4 -4
- package/dist/connect/index.cjs +25 -25
- package/dist/connect/index.js +5 -5
- package/dist/databases/DatabaseRowDetail.d.ts +32 -0
- package/dist/databases/DatabaseTable.d.ts +3 -1
- package/dist/databases/DatabaseToolbar.d.ts +9 -1
- package/dist/databases/PickCellEditor.d.ts +8 -1
- package/dist/databases/SelectCellEditor.d.ts +6 -1
- package/dist/databases/column-types.d.ts +5 -0
- package/dist/databases/databaseColumns.d.ts +7 -0
- package/dist/databases/index.cjs +381 -11
- package/dist/databases/index.cjs.map +1 -1
- package/dist/databases/index.d.ts +7 -5
- package/dist/databases/index.js +379 -14
- package/dist/databases/index.js.map +1 -1
- package/dist/databases/linkCells.d.ts +4 -2
- package/dist/docx/RibbonMenu.d.ts +15 -0
- package/dist/docx/StyleGallery.d.ts +9 -0
- package/dist/docx/WordReferences.d.ts +21 -0
- package/dist/docx/index.cjs +24 -24
- package/dist/docx/index.js +3 -3
- package/dist/docx/wordStyles.d.ts +21 -0
- package/dist/files/index.cjs +308 -0
- package/dist/files/index.cjs.map +1 -1
- package/dist/files/index.js +298 -2
- package/dist/files/index.js.map +1 -1
- package/dist/files/views/gridViews.d.ts +80 -0
- package/dist/files/views/index.d.ts +2 -0
- package/dist/files/views/useGridViews.d.ts +38 -0
- package/dist/index.cjs +428 -428
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +87 -126
- package/dist/index.js.map +1 -1
- package/dist/tags/TagDetail.d.ts +1 -0
- package/dist/workflow-canvas/index.cjs +47 -47
- package/dist/workflow-canvas/index.js +4 -4
- package/package.json +4 -4
- package/src/docx/styles.css +91 -0
- package/dist/chunk-7RI3G5BO.cjs.map +0 -1
- package/dist/chunk-K27SDLLN.js.map +0 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var chunkMUMH3Z6K_cjs = require('./chunk-MUMH3Z6K.cjs');
|
|
5
|
-
var
|
|
5
|
+
var chunkHGJGALLN_cjs = require('./chunk-HGJGALLN.cjs');
|
|
6
6
|
var react$1 = require('react');
|
|
7
7
|
var reactQuery = require('@tanstack/react-query');
|
|
8
8
|
var react = require('@arbidocs/react');
|
|
@@ -13,7 +13,7 @@ function ConnectedNativeDocxEditor({
|
|
|
13
13
|
...props
|
|
14
14
|
}) {
|
|
15
15
|
const adapter = useConnectedNativeDocxAdapter(fontBaseUrl);
|
|
16
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkHGJGALLN_cjs.NativeDocxEditor, { ...props, adapter });
|
|
17
17
|
}
|
|
18
18
|
function useConnectedNativeDocxAdapter(fontBaseUrl = "/native-docx/fonts") {
|
|
19
19
|
const arbi = react.useArbi();
|
|
@@ -42,7 +42,7 @@ function useConnectedNativeDocxAdapter(fontBaseUrl = "/native-docx/fonts") {
|
|
|
42
42
|
headers: { "Content-Type": "application/json" },
|
|
43
43
|
body: JSON.stringify({ state })
|
|
44
44
|
})).json(),
|
|
45
|
-
loadFonts: () =>
|
|
45
|
+
loadFonts: () => chunkHGJGALLN_cjs.loadDocxFonts(fontBaseUrl),
|
|
46
46
|
baseUrl: apiUrl,
|
|
47
47
|
author: user?.name || "You",
|
|
48
48
|
onVersionSaved: async (id) => {
|
|
@@ -91,5 +91,5 @@ function useConnectedNativeDocxAdapter(fontBaseUrl = "/native-docx/fonts") {
|
|
|
91
91
|
|
|
92
92
|
exports.ConnectedNativeDocxEditor = ConnectedNativeDocxEditor;
|
|
93
93
|
exports.useConnectedNativeDocxAdapter = useConnectedNativeDocxAdapter;
|
|
94
|
-
//# sourceMappingURL=chunk-
|
|
95
|
-
//# sourceMappingURL=chunk-
|
|
94
|
+
//# sourceMappingURL=chunk-EHB7J6SR.cjs.map
|
|
95
|
+
//# sourceMappingURL=chunk-EHB7J6SR.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/ConnectedNativeDocxEditor.tsx"],"names":["jsx","NativeDocxEditor","useArbi","useConnection","useQueryClient","useQuery","useMemo","loadDocxFonts","arbiQueryKeys","notify"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/connection/ConnectedNativeDocxEditor.tsx"],"names":["jsx","NativeDocxEditor","useArbi","useConnection","useQueryClient","useQuery","useMemo","loadDocxFonts","arbiQueryKeys","notify"],"mappings":"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","file":"chunk-EHB7J6SR.cjs","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,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkHGJGALLN_cjs = require('./chunk-HGJGALLN.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
|
+
chunkHGJGALLN_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
|
+
chunkHGJGALLN_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-GVOTXXZG.cjs.map
|
|
43
|
+
//# sourceMappingURL=chunk-GVOTXXZG.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-GVOTXXZG.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"]}
|
|
@@ -2234,57 +2234,12 @@ var WordDraftStream = class {
|
|
|
2234
2234
|
}
|
|
2235
2235
|
}
|
|
2236
2236
|
};
|
|
2237
|
-
function contentPath(documentId) {
|
|
2238
|
-
const match = /^(doc-[A-Za-z0-9]+)@v([1-9][0-9]*)$/.exec(documentId);
|
|
2239
|
-
return match ? `/${encodeURIComponent(match[1])}/content?version=${match[2]}` : `/${encodeURIComponent(documentId)}/content`;
|
|
2240
|
-
}
|
|
2241
|
-
var drafts = /* @__PURE__ */ new Map();
|
|
2242
|
-
var stateBytes = (room) => Y__namespace.encodeStateAsUpdate(room.ydoc);
|
|
2243
|
-
var encodeState = (room) => {
|
|
2244
|
-
let binary = "";
|
|
2245
|
-
for (const byte of stateBytes(room)) binary += String.fromCharCode(byte);
|
|
2246
|
-
return btoa(binary);
|
|
2247
|
-
};
|
|
2248
|
-
function covered(room, vector, receipt) {
|
|
2249
|
-
const decode = (value) => Uint8Array.from(atob(value), (c) => c.charCodeAt(0));
|
|
2250
|
-
const server = Y__namespace.decodeStateVector(decode(vector)), local = Y__namespace.decodeStateVector(Y__namespace.encodeStateVector(room.ydoc));
|
|
2251
|
-
for (const [client, clock] of local) if ((server.get(client) || 0) < clock) return false;
|
|
2252
|
-
const deleted = Y__namespace.decodeUpdate(stateBytes(room)).ds.clients;
|
|
2253
|
-
const saved = Y__namespace.decodeUpdate(decode(receipt)).ds.clients;
|
|
2254
|
-
for (const [client, ranges] of deleted)
|
|
2255
|
-
for (const range of ranges) {
|
|
2256
|
-
if (!(saved.get(client) || []).some(
|
|
2257
|
-
(s) => s.clock <= range.clock && s.clock + s.len >= range.clock + range.len
|
|
2258
|
-
))
|
|
2259
|
-
return false;
|
|
2260
|
-
}
|
|
2261
|
-
return true;
|
|
2262
|
-
}
|
|
2263
|
-
var EditorBoundary = class extends React3__default.default.Component {
|
|
2264
|
-
state = {};
|
|
2265
|
-
static getDerivedStateFromError(error) {
|
|
2266
|
-
return { error };
|
|
2267
|
-
}
|
|
2268
|
-
render() {
|
|
2269
|
-
return this.state.error ? /* @__PURE__ */ jsxRuntime.jsxs("div", { role: "alert", className: "native-docx-error", children: [
|
|
2270
|
-
"Could not render this Word document: ",
|
|
2271
|
-
this.state.error.message
|
|
2272
|
-
] }) : this.props.children;
|
|
2273
|
-
}
|
|
2274
|
-
};
|
|
2275
|
-
function DocxParticipants({ session }) {
|
|
2276
|
-
const [people, setPeople] = React3.useState([]);
|
|
2277
|
-
React3.useEffect(() => {
|
|
2278
|
-
if (!session) return;
|
|
2279
|
-
setPeople(session.participants());
|
|
2280
|
-
return session.subscribeParticipants(setPeople);
|
|
2281
|
-
}, [session]);
|
|
2282
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "native-docx-presence", "aria-label": "People viewing this document", children: people.map((p) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "native-docx-avatar", title: p.name, children: p.name.split(" ").map((s) => s[0]).slice(0, 2).join("") }, p.actorId)) });
|
|
2283
|
-
}
|
|
2284
2237
|
function RibbonMenu({
|
|
2285
2238
|
label,
|
|
2286
2239
|
icon,
|
|
2287
|
-
children
|
|
2240
|
+
children,
|
|
2241
|
+
className,
|
|
2242
|
+
testId
|
|
2288
2243
|
}) {
|
|
2289
2244
|
const [open, setOpen] = React3.useState(false);
|
|
2290
2245
|
const element = React3.useRef(null);
|
|
@@ -2308,10 +2263,11 @@ function RibbonMenu({
|
|
|
2308
2263
|
"button",
|
|
2309
2264
|
{
|
|
2310
2265
|
type: "button",
|
|
2311
|
-
className: "native-docx-ribbon-trigger",
|
|
2266
|
+
className: ["native-docx-ribbon-trigger", className].filter(Boolean).join(" "),
|
|
2312
2267
|
"aria-label": label,
|
|
2313
2268
|
title: label,
|
|
2314
2269
|
"aria-expanded": open,
|
|
2270
|
+
"data-testid": testId,
|
|
2315
2271
|
onMouseDown: (event) => event.preventDefault(),
|
|
2316
2272
|
onClick: () => setOpen((value) => !value),
|
|
2317
2273
|
children: icon
|
|
@@ -2327,11 +2283,295 @@ function RibbonMenu({
|
|
|
2327
2283
|
if (!(event.target instanceof HTMLInputElement || event.target instanceof HTMLSelectElement))
|
|
2328
2284
|
event.preventDefault();
|
|
2329
2285
|
},
|
|
2330
|
-
children
|
|
2286
|
+
children: typeof children === "function" ? children(() => setOpen(false)) : children
|
|
2287
|
+
}
|
|
2288
|
+
)
|
|
2289
|
+
] });
|
|
2290
|
+
}
|
|
2291
|
+
|
|
2292
|
+
// src/docx/wordStyles.ts
|
|
2293
|
+
var QUICK_STYLES = ["Normal", "Title", "heading 1", "heading 2", "heading 3"];
|
|
2294
|
+
function findStyle(options, name) {
|
|
2295
|
+
const wanted = name.toLowerCase();
|
|
2296
|
+
const id = name.replace(/(^|\s)(\w)/g, (_, _s, c) => c.toUpperCase());
|
|
2297
|
+
return options.find((o) => o.name.toLowerCase() === wanted) ?? options.find((o) => o.styleId.toLowerCase() === id.toLowerCase());
|
|
2298
|
+
}
|
|
2299
|
+
function styleLabel(name) {
|
|
2300
|
+
return name === name.toLowerCase() ? name.replace(/(^|\s)(\w)/g, (m) => m.toUpperCase()) : name;
|
|
2301
|
+
}
|
|
2302
|
+
function wordShortcut(event) {
|
|
2303
|
+
const mod = event.ctrlKey || event.metaKey;
|
|
2304
|
+
if (!mod) return null;
|
|
2305
|
+
if (event.altKey && !event.shiftKey) {
|
|
2306
|
+
switch (event.code) {
|
|
2307
|
+
case "KeyF":
|
|
2308
|
+
return "footnote";
|
|
2309
|
+
case "KeyD":
|
|
2310
|
+
return "endnote";
|
|
2311
|
+
case "Digit1":
|
|
2312
|
+
case "Numpad1":
|
|
2313
|
+
return "heading 1";
|
|
2314
|
+
case "Digit2":
|
|
2315
|
+
case "Numpad2":
|
|
2316
|
+
return "heading 2";
|
|
2317
|
+
case "Digit3":
|
|
2318
|
+
case "Numpad3":
|
|
2319
|
+
return "heading 3";
|
|
2320
|
+
}
|
|
2321
|
+
}
|
|
2322
|
+
if (event.shiftKey && !event.altKey && event.code === "KeyN") return "Normal";
|
|
2323
|
+
return null;
|
|
2324
|
+
}
|
|
2325
|
+
var FILTER_FROM = 8;
|
|
2326
|
+
function previewStyle(option) {
|
|
2327
|
+
const { fontFamily, fontSizePt, bold, italic, color } = option.preview;
|
|
2328
|
+
return {
|
|
2329
|
+
fontFamily: fontFamily ? `"${fontFamily}", serif` : void 0,
|
|
2330
|
+
// In the face of the style, but within a row: 9-18pt.
|
|
2331
|
+
fontSize: fontSizePt ? `${Math.min(18, Math.max(9, fontSizePt))}pt` : void 0,
|
|
2332
|
+
fontWeight: bold ? 700 : void 0,
|
|
2333
|
+
fontStyle: italic ? "italic" : void 0,
|
|
2334
|
+
color: color ? `#${color}` : void 0
|
|
2335
|
+
};
|
|
2336
|
+
}
|
|
2337
|
+
function Gallery({ close }) {
|
|
2338
|
+
const { value, setValue, options, isEnabled } = react.useParagraphStyle();
|
|
2339
|
+
const editor = react.useDocxEditor();
|
|
2340
|
+
const [query, setQuery] = React3.useState("");
|
|
2341
|
+
const quick = React3.useMemo(
|
|
2342
|
+
() => QUICK_STYLES.map((name) => findStyle(options, name)).filter(
|
|
2343
|
+
(o) => !!o
|
|
2344
|
+
),
|
|
2345
|
+
[options]
|
|
2346
|
+
);
|
|
2347
|
+
const shown = React3.useMemo(() => {
|
|
2348
|
+
const q = query.trim().toLowerCase();
|
|
2349
|
+
return q ? options.filter(
|
|
2350
|
+
(o) => o.name.toLowerCase().includes(q) || o.styleId.toLowerCase().includes(q)
|
|
2351
|
+
) : options;
|
|
2352
|
+
}, [options, query]);
|
|
2353
|
+
const apply = (option) => {
|
|
2354
|
+
setValue(option.styleId);
|
|
2355
|
+
close();
|
|
2356
|
+
editor?.surface?.focus();
|
|
2357
|
+
};
|
|
2358
|
+
const nav = chunk7UTB4PHM_cjs.useListKeyNav({
|
|
2359
|
+
open: true,
|
|
2360
|
+
items: shown,
|
|
2361
|
+
onPick: apply,
|
|
2362
|
+
onDismiss: close,
|
|
2363
|
+
resetKey: query
|
|
2364
|
+
});
|
|
2365
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "native-docx-style-gallery", "data-testid": "docx-style-gallery", children: [
|
|
2366
|
+
quick.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "native-docx-style-quick", role: "group", "aria-label": "Quick styles", children: quick.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2367
|
+
"button",
|
|
2368
|
+
{
|
|
2369
|
+
type: "button",
|
|
2370
|
+
"aria-pressed": value === option.styleId,
|
|
2371
|
+
disabled: !isEnabled,
|
|
2372
|
+
"data-style-id": option.styleId,
|
|
2373
|
+
title: styleLabel(option.name),
|
|
2374
|
+
onClick: () => apply(option),
|
|
2375
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: previewStyle(option), children: styleLabel(option.name) })
|
|
2376
|
+
},
|
|
2377
|
+
option.styleId
|
|
2378
|
+
)) }),
|
|
2379
|
+
options.length > FILTER_FROM && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2380
|
+
"input",
|
|
2381
|
+
{
|
|
2382
|
+
className: "native-docx-style-filter",
|
|
2383
|
+
placeholder: "Find a style",
|
|
2384
|
+
"aria-label": "Find a style",
|
|
2385
|
+
value: query,
|
|
2386
|
+
autoFocus: true,
|
|
2387
|
+
onChange: (event) => setQuery(event.target.value),
|
|
2388
|
+
onKeyDown: (event) => {
|
|
2389
|
+
nav.handleKeyDown(event);
|
|
2390
|
+
},
|
|
2391
|
+
...nav.comboboxProps
|
|
2392
|
+
}
|
|
2393
|
+
),
|
|
2394
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2395
|
+
"ul",
|
|
2396
|
+
{
|
|
2397
|
+
className: "native-docx-style-list",
|
|
2398
|
+
role: "listbox",
|
|
2399
|
+
id: nav.listboxId,
|
|
2400
|
+
"aria-label": "Document styles",
|
|
2401
|
+
children: [
|
|
2402
|
+
shown.map((option, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2403
|
+
"li",
|
|
2404
|
+
{
|
|
2405
|
+
id: chunk7UTB4PHM_cjs.listOptionId(nav.listboxId, index),
|
|
2406
|
+
role: "option",
|
|
2407
|
+
"aria-selected": value === option.styleId,
|
|
2408
|
+
"aria-disabled": !isEnabled,
|
|
2409
|
+
"data-active": index === nav.selectedIndex || void 0,
|
|
2410
|
+
"data-style-id": option.styleId,
|
|
2411
|
+
onMouseEnter: () => nav.setSelectedIndex(index),
|
|
2412
|
+
onClick: () => isEnabled && apply(option),
|
|
2413
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: previewStyle(option), children: styleLabel(option.name) })
|
|
2414
|
+
},
|
|
2415
|
+
option.styleId
|
|
2416
|
+
)),
|
|
2417
|
+
shown.length === 0 && /* @__PURE__ */ jsxRuntime.jsx("li", { className: "native-docx-style-empty", children: "No matching style" })
|
|
2418
|
+
]
|
|
2419
|
+
}
|
|
2420
|
+
)
|
|
2421
|
+
] });
|
|
2422
|
+
}
|
|
2423
|
+
function StyleGallery() {
|
|
2424
|
+
const { value, options } = react.useParagraphStyle();
|
|
2425
|
+
const current = options.find((o) => o.styleId === value);
|
|
2426
|
+
const name = current ? styleLabel(current.name) : "Styles";
|
|
2427
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2428
|
+
RibbonMenu,
|
|
2429
|
+
{
|
|
2430
|
+
label: "Styles",
|
|
2431
|
+
className: "native-docx-style-trigger",
|
|
2432
|
+
testId: "docx-style-trigger",
|
|
2433
|
+
icon: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2434
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "native-docx-style-current", "data-testid": "docx-current-style", children: name }),
|
|
2435
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { size: 12, "aria-hidden": true })
|
|
2436
|
+
] }),
|
|
2437
|
+
children: (close) => /* @__PURE__ */ jsxRuntime.jsx(Gallery, { close })
|
|
2438
|
+
}
|
|
2439
|
+
);
|
|
2440
|
+
}
|
|
2441
|
+
function useInsertNote(kind) {
|
|
2442
|
+
const command = react.useEditorCommand(kind === "footnote" ? "insert.footnote" : "insert.endnote");
|
|
2443
|
+
const { options } = react.useParagraphStyle();
|
|
2444
|
+
const editor = react.useDocxEditor();
|
|
2445
|
+
const insert = () => {
|
|
2446
|
+
if (!command.execute()) return false;
|
|
2447
|
+
const text = findStyle(options, `${kind} text`);
|
|
2448
|
+
if (text && editor)
|
|
2449
|
+
withDirectEditing(
|
|
2450
|
+
editor,
|
|
2451
|
+
() => editor.exec({ type: "setParagraphStyle", styleId: text.styleId })
|
|
2452
|
+
);
|
|
2453
|
+
return true;
|
|
2454
|
+
};
|
|
2455
|
+
return { insert, isEnabled: command.isEnabled, disabledReason: command.disabledReason };
|
|
2456
|
+
}
|
|
2457
|
+
function NoteAction({
|
|
2458
|
+
kind,
|
|
2459
|
+
label,
|
|
2460
|
+
shortcut,
|
|
2461
|
+
icon
|
|
2462
|
+
}) {
|
|
2463
|
+
const note = useInsertNote(kind);
|
|
2464
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2465
|
+
react.DocxEditor.Toolbar.Action,
|
|
2466
|
+
{
|
|
2467
|
+
label: `${label} (${shortcut})`,
|
|
2468
|
+
icon,
|
|
2469
|
+
disabled: !note.isEnabled,
|
|
2470
|
+
disabledReason: note.disabledReason ?? void 0,
|
|
2471
|
+
onSelect: () => void note.insert(),
|
|
2472
|
+
className: `native-docx-insert-${kind}`
|
|
2473
|
+
}
|
|
2474
|
+
);
|
|
2475
|
+
}
|
|
2476
|
+
function NoteButtons() {
|
|
2477
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2478
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2479
|
+
NoteAction,
|
|
2480
|
+
{
|
|
2481
|
+
kind: "footnote",
|
|
2482
|
+
label: "Insert footnote",
|
|
2483
|
+
shortcut: "Ctrl+Alt+F",
|
|
2484
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Superscript, { size: 16 })
|
|
2485
|
+
}
|
|
2486
|
+
),
|
|
2487
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2488
|
+
NoteAction,
|
|
2489
|
+
{
|
|
2490
|
+
kind: "endnote",
|
|
2491
|
+
label: "Insert endnote",
|
|
2492
|
+
shortcut: "Ctrl+Alt+D",
|
|
2493
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.NotebookText, { size: 16 })
|
|
2331
2494
|
}
|
|
2332
2495
|
)
|
|
2333
2496
|
] });
|
|
2334
2497
|
}
|
|
2498
|
+
function WordShortcuts({ scope }) {
|
|
2499
|
+
const footnote = useInsertNote("footnote");
|
|
2500
|
+
const endnote = useInsertNote("endnote");
|
|
2501
|
+
const styles = react.useParagraphStyle();
|
|
2502
|
+
const editor = react.useDocxEditor();
|
|
2503
|
+
const latest = React3.useRef({ footnote, endnote, styles, editor });
|
|
2504
|
+
latest.current = { footnote, endnote, styles, editor };
|
|
2505
|
+
React3.useEffect(() => {
|
|
2506
|
+
const element = scope.current;
|
|
2507
|
+
if (!element) return;
|
|
2508
|
+
const onKeyDown = (event) => {
|
|
2509
|
+
const action = wordShortcut(event);
|
|
2510
|
+
if (!action) return;
|
|
2511
|
+
const { footnote: footnote2, endnote: endnote2, styles: styles2, editor: editor2 } = latest.current;
|
|
2512
|
+
if (action === "footnote" || action === "endnote") {
|
|
2513
|
+
if (!(action === "footnote" ? footnote2 : endnote2).insert()) return;
|
|
2514
|
+
} else {
|
|
2515
|
+
const style = findStyle(styles2.options, action);
|
|
2516
|
+
if (!style) return;
|
|
2517
|
+
styles2.setValue(style.styleId);
|
|
2518
|
+
}
|
|
2519
|
+
event.preventDefault();
|
|
2520
|
+
event.stopPropagation();
|
|
2521
|
+
editor2?.surface?.focus();
|
|
2522
|
+
};
|
|
2523
|
+
element.addEventListener("keydown", onKeyDown, true);
|
|
2524
|
+
return () => element.removeEventListener("keydown", onKeyDown, true);
|
|
2525
|
+
}, [scope]);
|
|
2526
|
+
return null;
|
|
2527
|
+
}
|
|
2528
|
+
function contentPath(documentId) {
|
|
2529
|
+
const match = /^(doc-[A-Za-z0-9]+)@v([1-9][0-9]*)$/.exec(documentId);
|
|
2530
|
+
return match ? `/${encodeURIComponent(match[1])}/content?version=${match[2]}` : `/${encodeURIComponent(documentId)}/content`;
|
|
2531
|
+
}
|
|
2532
|
+
var drafts = /* @__PURE__ */ new Map();
|
|
2533
|
+
var stateBytes = (room) => Y__namespace.encodeStateAsUpdate(room.ydoc);
|
|
2534
|
+
var encodeState = (room) => {
|
|
2535
|
+
let binary = "";
|
|
2536
|
+
for (const byte of stateBytes(room)) binary += String.fromCharCode(byte);
|
|
2537
|
+
return btoa(binary);
|
|
2538
|
+
};
|
|
2539
|
+
function covered(room, vector, receipt) {
|
|
2540
|
+
const decode = (value) => Uint8Array.from(atob(value), (c) => c.charCodeAt(0));
|
|
2541
|
+
const server = Y__namespace.decodeStateVector(decode(vector)), local = Y__namespace.decodeStateVector(Y__namespace.encodeStateVector(room.ydoc));
|
|
2542
|
+
for (const [client, clock] of local) if ((server.get(client) || 0) < clock) return false;
|
|
2543
|
+
const deleted = Y__namespace.decodeUpdate(stateBytes(room)).ds.clients;
|
|
2544
|
+
const saved = Y__namespace.decodeUpdate(decode(receipt)).ds.clients;
|
|
2545
|
+
for (const [client, ranges] of deleted)
|
|
2546
|
+
for (const range of ranges) {
|
|
2547
|
+
if (!(saved.get(client) || []).some(
|
|
2548
|
+
(s) => s.clock <= range.clock && s.clock + s.len >= range.clock + range.len
|
|
2549
|
+
))
|
|
2550
|
+
return false;
|
|
2551
|
+
}
|
|
2552
|
+
return true;
|
|
2553
|
+
}
|
|
2554
|
+
var EditorBoundary = class extends React3__default.default.Component {
|
|
2555
|
+
state = {};
|
|
2556
|
+
static getDerivedStateFromError(error) {
|
|
2557
|
+
return { error };
|
|
2558
|
+
}
|
|
2559
|
+
render() {
|
|
2560
|
+
return this.state.error ? /* @__PURE__ */ jsxRuntime.jsxs("div", { role: "alert", className: "native-docx-error", children: [
|
|
2561
|
+
"Could not render this Word document: ",
|
|
2562
|
+
this.state.error.message
|
|
2563
|
+
] }) : this.props.children;
|
|
2564
|
+
}
|
|
2565
|
+
};
|
|
2566
|
+
function DocxParticipants({ session }) {
|
|
2567
|
+
const [people, setPeople] = React3.useState([]);
|
|
2568
|
+
React3.useEffect(() => {
|
|
2569
|
+
if (!session) return;
|
|
2570
|
+
setPeople(session.participants());
|
|
2571
|
+
return session.subscribeParticipants(setPeople);
|
|
2572
|
+
}, [session]);
|
|
2573
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "native-docx-presence", "aria-label": "People viewing this document", children: people.map((p) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "native-docx-avatar", title: p.name, children: p.name.split(" ").map((s) => s[0]).slice(0, 2).join("") }, p.actorId)) });
|
|
2574
|
+
}
|
|
2335
2575
|
function DefinedTermButtons() {
|
|
2336
2576
|
const terms = useDefinedTerms();
|
|
2337
2577
|
if (!terms) return null;
|
|
@@ -2374,6 +2614,7 @@ function DocxRibbon({
|
|
|
2374
2614
|
/* @__PURE__ */ jsxRuntime.jsxs("select", { "aria-label": "Ribbon tab", value: tab, onChange: (event) => setTab(event.target.value), children: [
|
|
2375
2615
|
/* @__PURE__ */ jsxRuntime.jsx("option", { children: "Home" }),
|
|
2376
2616
|
/* @__PURE__ */ jsxRuntime.jsx("option", { children: "Insert" }),
|
|
2617
|
+
/* @__PURE__ */ jsxRuntime.jsx("option", { children: "References" }),
|
|
2377
2618
|
/* @__PURE__ */ jsxRuntime.jsx("option", { children: "Review" })
|
|
2378
2619
|
] }),
|
|
2379
2620
|
/* @__PURE__ */ jsxRuntime.jsxs(react.DocxEditor.Toolbar, { t, preset: false, onSave, children: [
|
|
@@ -2381,6 +2622,7 @@ function DocxRibbon({
|
|
|
2381
2622
|
/* @__PURE__ */ jsxRuntime.jsx(react.DocxEditor.Toolbar.Redo, {}),
|
|
2382
2623
|
/* @__PURE__ */ jsxRuntime.jsx(react.DocxEditor.Toolbar.Save, {}),
|
|
2383
2624
|
tab === "Home" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2625
|
+
/* @__PURE__ */ jsxRuntime.jsx(StyleGallery, {}),
|
|
2384
2626
|
/* @__PURE__ */ jsxRuntime.jsx(react.DocxEditor.Toolbar.Bold, {}),
|
|
2385
2627
|
/* @__PURE__ */ jsxRuntime.jsx(react.DocxEditor.Toolbar.Italic, {}),
|
|
2386
2628
|
/* @__PURE__ */ jsxRuntime.jsx(react.DocxEditor.Toolbar.Underline, {}),
|
|
@@ -2391,7 +2633,6 @@ function DocxRibbon({
|
|
|
2391
2633
|
/* @__PURE__ */ jsxRuntime.jsx(react.DocxEditor.Toolbar.Highlight, {})
|
|
2392
2634
|
] }),
|
|
2393
2635
|
/* @__PURE__ */ jsxRuntime.jsxs(RibbonMenu, { label: "More formatting", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Ellipsis, { size: 16 }), children: [
|
|
2394
|
-
/* @__PURE__ */ jsxRuntime.jsx(react.DocxEditor.Toolbar.StylePicker, {}),
|
|
2395
2636
|
/* @__PURE__ */ jsxRuntime.jsx(react.DocxEditor.Toolbar.Alignment, {}),
|
|
2396
2637
|
/* @__PURE__ */ jsxRuntime.jsx(react.DocxEditor.Toolbar.BulletList, {}),
|
|
2397
2638
|
/* @__PURE__ */ jsxRuntime.jsx(react.DocxEditor.Toolbar.NumberedList, {}),
|
|
@@ -2408,6 +2649,7 @@ function DocxRibbon({
|
|
|
2408
2649
|
/* @__PURE__ */ jsxRuntime.jsx(react.DocxEditor.Toolbar.Link, {}),
|
|
2409
2650
|
/* @__PURE__ */ jsxRuntime.jsx(DefinedTermButtons, {})
|
|
2410
2651
|
] }),
|
|
2652
|
+
tab === "References" && /* @__PURE__ */ jsxRuntime.jsx(NoteButtons, {}),
|
|
2411
2653
|
tab === "Review" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2412
2654
|
/* @__PURE__ */ jsxRuntime.jsx(react.DocxEditor.Toolbar.EditingMode, {}),
|
|
2413
2655
|
/* @__PURE__ */ jsxRuntime.jsx(react.DocxEditor.Toolbar.Comments, {}),
|
|
@@ -2774,6 +3016,7 @@ function NativeDocxEditor({
|
|
|
2774
3016
|
)
|
|
2775
3017
|
}
|
|
2776
3018
|
),
|
|
3019
|
+
!stream && /* @__PURE__ */ jsxRuntime.jsx(WordShortcuts, { scope: stageRef }),
|
|
2777
3020
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2778
3021
|
"div",
|
|
2779
3022
|
{
|
|
@@ -2924,5 +3167,5 @@ exports.useDefinedTerms = useDefinedTerms;
|
|
|
2924
3167
|
exports.useReview = useReview;
|
|
2925
3168
|
exports.useReviewItem = useReviewItem;
|
|
2926
3169
|
exports.withDirectEditing = withDirectEditing;
|
|
2927
|
-
//# sourceMappingURL=chunk-
|
|
2928
|
-
//# sourceMappingURL=chunk-
|
|
3170
|
+
//# sourceMappingURL=chunk-HGJGALLN.cjs.map
|
|
3171
|
+
//# sourceMappingURL=chunk-HGJGALLN.cjs.map
|