@fileverse-dev/ddoc 4.1.11 → 4.1.12-menubar-3
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/{index-rpz9D-nF.mjs → index-BWdjUdQy.mjs} +1 -1
- package/dist/{index-BhAjJb8w.mjs → index-DwLAI_Ie.mjs} +24205 -23910
- package/dist/index.d.ts +2 -0
- package/dist/index.es.js +4 -3
- package/dist/{markdown-source-pane-DTszGHF9.mjs → markdown-source-pane-D6jRN_JD.mjs} +2 -2
- package/dist/package/components/editor-utils.d.ts +1 -25
- package/dist/package/hooks/use-editor-commands.d.ts +20 -0
- package/dist/package/hooks/use-focus-mode.d.ts +6 -1
- package/dist/package/hooks/use-headless-editor.d.ts +9 -1
- package/dist/package/types.d.ts +7 -1
- package/dist/package/utils/insert-commands.d.ts +20 -0
- package/dist/package/utils/typography.d.ts +26 -0
- package/dist/{split-view-toolbar-Bpk4iUtd.mjs → split-view-toolbar-D4bIgxWm.mjs} +2 -2
- package/dist/style.css +1 -1
- package/package.json +9 -4
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export { PreviewDdocEditor } from './package/preview-ddoc-editor';
|
|
|
3
3
|
export { handleContentPrint } from './package/utils/handle-print';
|
|
4
4
|
export { DdocExportModal } from './package/components/export-modal';
|
|
5
5
|
export { useHeadlessEditor } from './package/hooks/use-headless-editor';
|
|
6
|
+
export { useEditorCommands } from './package/hooks/use-editor-commands';
|
|
7
|
+
export type { EditorCommand, EditorCommandId, UseEditorCommandsOptions, } from './package/hooks/use-editor-commands';
|
|
6
8
|
export { useExportHeadlessEditorContent } from './package/hooks/use-export-headless-editor-content';
|
|
7
9
|
export { mergeTabAwareYjsUpdates } from './package/components/tabs/utils/tab-utils';
|
|
8
10
|
export { buildVersionDiffSnapshot } from './package/components/tabs/utils/version-diff-snapshot';
|
package/dist/index.es.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as e, a as o, E as d, P as t,
|
|
1
|
+
import { D as e, a as o, E as d, P as t, e as r, h as i, m as n, c as E, d as l, u as m } from "./index-DwLAI_Ie.mjs";
|
|
2
2
|
export {
|
|
3
3
|
e as DdocEditor,
|
|
4
4
|
o as DdocExportModal,
|
|
@@ -7,6 +7,7 @@ export {
|
|
|
7
7
|
r as buildVersionDiffSnapshot,
|
|
8
8
|
i as handleContentPrint,
|
|
9
9
|
n as mergeTabAwareYjsUpdates,
|
|
10
|
-
E as
|
|
11
|
-
l as
|
|
10
|
+
E as useEditorCommands,
|
|
11
|
+
l as useExportHeadlessEditorContent,
|
|
12
|
+
m as useHeadlessEditor
|
|
12
13
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
var Vr = Object.defineProperty;
|
|
2
2
|
var Wr = (t, e, O) => e in t ? Vr(t, e, { enumerable: !0, configurable: !0, writable: !0, value: O }) : t[e] = O;
|
|
3
3
|
var gt = (t, e, O) => Wr(t, typeof e != "symbol" ? e + "" : e, O);
|
|
4
|
-
import { j as Cr } from "./index-
|
|
4
|
+
import { j as Cr } from "./index-DwLAI_Ie.mjs";
|
|
5
5
|
import { useRef as pe, useEffect as St } from "react";
|
|
6
|
-
import { s as y, A as pO, T as dO, a as Gr, S as et, b as Lr, P as fO, E as j, i as QO, c as _, D as le, k as tt, F as Ar, M as Pt, W as Er, R as Ur, d as mO, N as oe, e as V, f as Mr, g as Ot, h as ce, p as $O, j as Y, t as h, l as Ir, I as rt, L as at, m as ye, n as ue, o as Qe, q as gO, r as te, u as SO, v as Br, w as Nr, x as PO, y as kO, z as Dr, B as Fr, C as Kr, G as Oe, H as ZO, J as Jr, K as kt, O as Hr, Q as ea, U as ta, V as Oa, X as ra, Y as aa, Z as ia, _ as sa, $ as na, a0 as la, a1 as oa, a2 as ca } from "./index-
|
|
6
|
+
import { s as y, A as pO, T as dO, a as Gr, S as et, b as Lr, P as fO, E as j, i as QO, c as _, D as le, k as tt, F as Ar, M as Pt, W as Er, R as Ur, d as mO, N as oe, e as V, f as Mr, g as Ot, h as ce, p as $O, j as Y, t as h, l as Ir, I as rt, L as at, m as ye, n as ue, o as Qe, q as gO, r as te, u as SO, v as Br, w as Nr, x as PO, y as kO, z as Dr, B as Fr, C as Kr, G as Oe, H as ZO, J as Jr, K as kt, O as Hr, Q as ea, U as ta, V as Oa, X as ra, Y as aa, Z as ia, _ as sa, $ as na, a0 as la, a1 as oa, a2 as ca } from "./index-BWdjUdQy.mjs";
|
|
7
7
|
class ua {
|
|
8
8
|
/**
|
|
9
9
|
Create a new completion context. (Mostly useful for testing
|
|
@@ -22,30 +22,7 @@ type PickerEntry = {
|
|
|
22
22
|
};
|
|
23
23
|
export declare const baselineFonts: PickerEntry[];
|
|
24
24
|
export declare function buildPickerEntries(consumerFonts: FontDescriptor[]): PickerEntry[];
|
|
25
|
-
export
|
|
26
|
-
export declare const getFontSizeOptions: (editor?: Editor) => {
|
|
27
|
-
title: string;
|
|
28
|
-
value: string;
|
|
29
|
-
label: string;
|
|
30
|
-
command: (editor: Editor) => void;
|
|
31
|
-
isActive: () => boolean | undefined;
|
|
32
|
-
}[];
|
|
33
|
-
export declare const getCurrentFontSize: (editor: Editor | null, currentSize: string) => string;
|
|
34
|
-
export declare const uiValueToPercentage: (uiValue: string) => string;
|
|
35
|
-
export declare const percentageToUiValue: (percentage: string) => string;
|
|
36
|
-
export declare const LINE_HEIGHT_OPTIONS: {
|
|
37
|
-
value: string;
|
|
38
|
-
label: string;
|
|
39
|
-
uiValue: string;
|
|
40
|
-
description: string;
|
|
41
|
-
}[];
|
|
42
|
-
export declare const getLineHeightOptions: () => {
|
|
43
|
-
value: string;
|
|
44
|
-
label: string;
|
|
45
|
-
uiValue: string;
|
|
46
|
-
description: string;
|
|
47
|
-
}[];
|
|
48
|
-
export declare const getCurrentLineHeight: (editor: Editor | null, currentLineHeight?: string) => string;
|
|
25
|
+
export * from '../utils/typography';
|
|
49
26
|
export declare const ERR_MSG_MAP: {
|
|
50
27
|
IMAGE_SIZE: string;
|
|
51
28
|
};
|
|
@@ -184,4 +161,3 @@ export declare const checkActiveListsAndDBlocks: (editor: Editor) => {
|
|
|
184
161
|
state: import('prosemirror-state').EditorState;
|
|
185
162
|
hasMultipleLists: boolean;
|
|
186
163
|
};
|
|
187
|
-
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Editor } from '@tiptap/react';
|
|
2
|
+
import { UploadImageOptions } from '../utils/insert-commands';
|
|
3
|
+
|
|
4
|
+
export type EditorCommand = {
|
|
5
|
+
run: (arg?: string) => void;
|
|
6
|
+
isActive?: boolean;
|
|
7
|
+
isEnabled: boolean;
|
|
8
|
+
current?: string | null;
|
|
9
|
+
};
|
|
10
|
+
export type EditorCommandId = 'edit.undo' | 'edit.redo' | 'edit.selectAll' | 'edit.cut' | 'edit.copy' | 'edit.paste' | 'edit.pasteWithoutFormatting' | 'edit.delete' | 'edit.findReplace' | 'insert.image' | 'insert.table' | 'insert.link' | 'insert.callout' | 'insert.quote' | 'insert.code' | 'insert.codeBlock' | 'insert.video' | 'insert.mermaid' | 'insert.plainText' | 'insert.tweet' | 'insert.soundcloud' | 'insert.divider' | 'insert.pageBreak' | 'insert.columns2' | 'insert.columns3' | 'format.bold' | 'format.italic' | 'format.underline' | 'format.strike' | 'format.superscript' | 'format.subscript' | 'format.heading' | 'format.align' | 'format.direction' | 'format.lineHeight' | 'format.fontFamily' | 'format.fontSize.increase' | 'format.fontSize.decrease' | 'format.list.bullet' | 'format.list.numbered' | 'format.list.check' | 'format.clearFormatting' | 'table.addRowAbove' | 'table.addRowBelow' | 'table.mergeCells' | 'table.deleteRow' | 'table.addColumnLeft' | 'table.addColumnRight' | 'table.deleteColumn' | 'table.toggleHeaderRow' | 'table.toggleHeaderColumn' | 'table.toggleHeaderCell' | 'table.deleteTable';
|
|
11
|
+
export type UseEditorCommandsOptions = UploadImageOptions;
|
|
12
|
+
/**
|
|
13
|
+
* Reactive, editor-derived command registry (architecture doc §2 bucket 1).
|
|
14
|
+
* INVARIANT: all isActive/current/isEnabled values are derived from the
|
|
15
|
+
* editor via `useEditorState` (Tiptap's useSyncExternalStore wrapper) — the
|
|
16
|
+
* hook holds no authoritative state of its own, so any number of instances
|
|
17
|
+
* stay in sync, and consumers only re-render when a derived value changes
|
|
18
|
+
* (deep-equality gated), not on every transaction.
|
|
19
|
+
*/
|
|
20
|
+
export declare const useEditorCommands: (editor: Editor | null, options?: UseEditorCommandsOptions) => Record<EditorCommandId, EditorCommand>;
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
type UseFocusModeOptions = {
|
|
2
|
+
/** Notify callback — fires on every toggle in both modes (existing API). */
|
|
2
3
|
onFocusMode?: (isFocusMode: boolean) => void;
|
|
4
|
+
/** Controlled value (D6). Omit for the legacy internal-state behavior. */
|
|
5
|
+
isFocusMode?: boolean;
|
|
6
|
+
/** Controlled setter — receives the next value instead of internal mutation. */
|
|
7
|
+
onFocusModeChange?: (isFocusMode: boolean) => void;
|
|
3
8
|
};
|
|
4
|
-
export declare const useFocusMode: ({ onFocusMode }?: UseFocusModeOptions) => {
|
|
9
|
+
export declare const useFocusMode: ({ onFocusMode, isFocusMode: controlledValue, onFocusModeChange, }?: UseFocusModeOptions) => {
|
|
5
10
|
isFocusMode: boolean;
|
|
6
11
|
toggleFocusMode: () => Promise<void>;
|
|
7
12
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Editor, JSONContent } from '@tiptap/react';
|
|
1
|
+
import { AnyExtension, Editor, JSONContent } from '@tiptap/react';
|
|
2
2
|
import { handleMarkdownContent } from '../extensions/mardown-paste-handler';
|
|
3
3
|
import { IpfsImageUploadResponse } from '../types';
|
|
4
4
|
|
|
@@ -6,6 +6,14 @@ import * as Y from 'yjs';
|
|
|
6
6
|
export interface UseHeadlessEditorProps {
|
|
7
7
|
optionalExtensions?: string[];
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* The exact extension set the headless editor runs with. Exported so tests
|
|
11
|
+
* can build an equivalent editor without the hook.
|
|
12
|
+
*/
|
|
13
|
+
export declare const getHeadlessExtensions: (options?: {
|
|
14
|
+
ydoc?: Y.Doc;
|
|
15
|
+
optionalExtensions?: string[];
|
|
16
|
+
}) => AnyExtension[];
|
|
9
17
|
export declare const useHeadlessEditor: (props?: UseHeadlessEditorProps) => {
|
|
10
18
|
setContent: (initialContent: string | string[] | JSONContent, editor: Editor, ydoc: Y.Doc) => void;
|
|
11
19
|
getEditor: () => {
|
package/dist/package/types.d.ts
CHANGED
|
@@ -169,8 +169,11 @@ export interface DdocProps extends CommentAccountProps {
|
|
|
169
169
|
walletAddress?: string | null;
|
|
170
170
|
username?: string | null;
|
|
171
171
|
setUsername?: React.Dispatch<SetStateAction<string>>;
|
|
172
|
-
renderNavbar?: ({ editor }: {
|
|
172
|
+
renderNavbar?: ({ editor, liveEditor, }: {
|
|
173
|
+
/** JSON snapshot — legacy field, unchanged. */
|
|
173
174
|
editor: JSONContent;
|
|
175
|
+
/** Live Tiptap editor instance (D8) — null until the editor is ready. */
|
|
176
|
+
liveEditor: Editor | null;
|
|
174
177
|
}) => JSX.Element;
|
|
175
178
|
onChange?: (updatedDocContent: string | JSONContent, updateChunk: string) => void;
|
|
176
179
|
onCollaboratorChange?: (collaborators: undefined | IDocCollabUsers[]) => void;
|
|
@@ -198,6 +201,9 @@ export interface DdocProps extends CommentAccountProps {
|
|
|
198
201
|
onComment?: () => void;
|
|
199
202
|
onInlineComment?: () => void;
|
|
200
203
|
onFocusMode?: (isFocusMode: boolean) => void;
|
|
204
|
+
/** Controlled focus mode (D6). Omit for the legacy internal-state behavior. */
|
|
205
|
+
isFocusMode?: boolean;
|
|
206
|
+
onFocusModeChange?: (isFocusMode: boolean) => void;
|
|
201
207
|
onMarkdownExport?: () => void;
|
|
202
208
|
onMarkdownImport?: () => void;
|
|
203
209
|
onPdfExport?: () => void;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Editor, Range } from '@tiptap/core';
|
|
2
|
+
import { IpfsImageUploadResponse } from '../types';
|
|
3
|
+
|
|
4
|
+
type InsertCommand = (editor: Editor, range?: Range) => void;
|
|
5
|
+
export type UploadImageOptions = {
|
|
6
|
+
onError?: (errorString: string) => void;
|
|
7
|
+
ipfsImageUploadFn?: (file: File) => Promise<IpfsImageUploadResponse>;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* File-picker image upload — mirrors the toolbar flow
|
|
11
|
+
* (editor-utils.tsx "Upload Image") and the slash "Image" item.
|
|
12
|
+
*/
|
|
13
|
+
export declare const uploadImageCommand: (editor: Editor, { onError, ipfsImageUploadFn }?: UploadImageOptions) => void;
|
|
14
|
+
/**
|
|
15
|
+
* Insert commands shared by the slash menu and `useEditorCommands`.
|
|
16
|
+
* Bodies are moved verbatim from `slash-command-utils.tsx`; the optional
|
|
17
|
+
* `range` only differs when invoked from the slash menu.
|
|
18
|
+
*/
|
|
19
|
+
export declare const insertCommands: Record<string, InsertCommand>;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Editor } from '@tiptap/core';
|
|
2
|
+
|
|
3
|
+
export declare const FONT_SIZES: readonly [8, 9, 10, 11, 12, 14, 16, 18, 24, 30, 32, 36, 48, 60, 72, 96];
|
|
4
|
+
export declare const getFontSizeOptions: (editor?: Editor) => {
|
|
5
|
+
title: string;
|
|
6
|
+
value: string;
|
|
7
|
+
label: string;
|
|
8
|
+
command: (editor: Editor) => void;
|
|
9
|
+
isActive: () => boolean | undefined;
|
|
10
|
+
}[];
|
|
11
|
+
export declare const getCurrentFontSize: (editor: Editor | null, currentSize: string) => string;
|
|
12
|
+
export declare const uiValueToPercentage: (uiValue: string) => string;
|
|
13
|
+
export declare const percentageToUiValue: (percentage: string) => string;
|
|
14
|
+
export declare const LINE_HEIGHT_OPTIONS: {
|
|
15
|
+
value: string;
|
|
16
|
+
label: string;
|
|
17
|
+
uiValue: string;
|
|
18
|
+
description: string;
|
|
19
|
+
}[];
|
|
20
|
+
export declare const getLineHeightOptions: () => {
|
|
21
|
+
value: string;
|
|
22
|
+
label: string;
|
|
23
|
+
uiValue: string;
|
|
24
|
+
description: string;
|
|
25
|
+
}[];
|
|
26
|
+
export declare const getCurrentLineHeight: (editor: Editor | null, currentLineHeight?: string) => string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { j as d } from "./index-
|
|
1
|
+
import { j as d } from "./index-DwLAI_Ie.mjs";
|
|
2
2
|
import { useRef as I, useState as N, useEffect as D } from "react";
|
|
3
3
|
import { DynamicDropdown as E, Tooltip as R, IconButton as O } from "@fileverse/ui";
|
|
4
|
-
import { a3 as A, a4 as P, c as y } from "./index-
|
|
4
|
+
import { a3 as A, a4 as P, c as y } from "./index-BWdjUdQy.mjs";
|
|
5
5
|
const p = (e, t, o = t) => {
|
|
6
6
|
const { state: s } = e, l = s.changeByRange((n) => {
|
|
7
7
|
const u = s.sliceDoc(n.from, n.to), r = s.sliceDoc(
|