wysiwygido 0.1.1 → 0.2.2
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/CHANGELOG.md +23 -1
- package/README.md +39 -3
- package/dist/adapter.js +1 -1
- package/dist/editor.d.ts +7 -0
- package/dist/index.d.ts +1 -1
- package/dist/plugins/context-menu.d.ts +19 -0
- package/dist/plugins/helpers.d.ts +6 -0
- package/dist/plugins/index.d.ts +2 -0
- package/dist/plugins/math.d.ts +4 -2
- package/dist/plugins/mermaid.d.ts +4 -2
- package/dist/plugins/pdf-epub.d.ts +4 -0
- package/dist/react.js +1 -1
- package/dist/{src-oDoQgMwC.js → src-DFClH3tv.js} +905 -28
- package/dist/src-DFClH3tv.js.map +1 -0
- package/dist/style.css +20 -1
- package/dist/types.d.ts +51 -1
- package/dist/vue.js +1 -1
- package/dist/wysiwygido.js +2 -2
- package/package.json +5 -4
- package/dist/src-oDoQgMwC.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,8 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project uses [Semantic Versioning](https://semver.org/). Until 1.0, minor versions may contain breaking changes; they are listed under "Changed" or "Removed".
|
|
4
4
|
|
|
5
|
+
## 0.2.2
|
|
6
|
+
|
|
7
|
+
- Added: right-click menu (`ContextMenu`, in the default set) with table, list, link, picture and text-format items, and a `contextMenu(context)` hook for plugins to add their own.
|
|
8
|
+
- Added: `addRowBefore`, `addColumnBefore`, `toggleHeaderColumn`, `selectTable`, `selectRow`, `selectColumn`, `distributeColumns`, `listStyle` and `restartNumbering` commands.
|
|
9
|
+
- Fixed: a table reduced to one row, one column or one empty cell could not be deleted. Deleting its last row or column now removes the table, and Backspace/Delete in an empty single cell does too.
|
|
10
|
+
- Changed: `bulletList` / `orderedList` inside a list of the other kind now convert it instead of lifting out.
|
|
11
|
+
|
|
5
12
|
## [Unreleased]
|
|
6
13
|
|
|
14
|
+
## [0.2.1] - 2026-10-11
|
|
15
|
+
|
|
16
|
+
The first release that includes the 0.2.0 changes below: 0.2.0 itself was never published to npm.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
- Tables and lists pasted from Word (and Google Docs) were far too loose: every cell and list item carried the browser's 1em paragraph margins, so a one-line table row was about 70 px tall. Paragraphs inside table cells and list items now have no margin, and cell padding and line height are compact (`--wy-cell-pad-y`, `--wy-cell-pad-x`, `--wy-cell-line-height` adjust them). Spacing set on purpose through the paragraph menu still applies.
|
|
20
|
+
|
|
21
|
+
## [0.2.0] - 2026-10-06
|
|
22
|
+
|
|
23
|
+
### Changed (breaking)
|
|
24
|
+
- Optional packages are no longer imported by the editor itself. Angular's esbuild builder (and webpack-based builds) failed with `Could not resolve "katex"` (also `mermaid`, `docx`, `mammoth`, `jszip`, `pdfjs-dist`) when those packages were not installed, even though the code only loaded them lazily. Now you pass a loader: `createEditor({ docx: () => import('wysiwygido/docx') })`, `Equations({ katex: () => import('katex') })`, `Mermaid({ mermaid: () => import('mermaid') })`, `PdfEpub({ loadPdf, loadEpub })`. Without one, the feature explains what to add. `pnpm check:optional` fails the build if the main entry ever imports an optional package again.
|
|
25
|
+
- Verified in real apps: React, Vue, Svelte (Vite) and Angular 20 builds, plus a no-build page loading the package from a CDN.
|
|
26
|
+
|
|
7
27
|
### Changed
|
|
8
28
|
- Large documents: plugins that derive data from the whole document (captions, table of contents, outline, footnotes, comment anchors) update incrementally instead of rescanning on every keystroke; the word count waits for a pause on big documents; Markdown export is linear. Typing at 10,000 blocks: 33 ms to 1.3 ms per key.
|
|
9
29
|
|
|
@@ -46,6 +66,8 @@ A modular rich-text editor on ProseMirror with a plugin architecture. Everything
|
|
|
46
66
|
### Known limitations
|
|
47
67
|
See the README section "Known limitations".
|
|
48
68
|
|
|
49
|
-
[Unreleased]: https://github.com/galihlasahido/wysiwyg-editor/compare/v0.
|
|
69
|
+
[Unreleased]: https://github.com/galihlasahido/wysiwyg-editor/compare/v0.2.1...HEAD
|
|
70
|
+
[0.2.1]: https://github.com/galihlasahido/wysiwyg-editor/compare/v0.1.1...v0.2.1
|
|
71
|
+
[0.2.0]: https://github.com/galihlasahido/wysiwyg-editor/compare/v0.1.1...v0.2.0
|
|
50
72
|
[0.1.1]: https://github.com/galihlasahido/wysiwyg-editor/compare/v0.1.0...v0.1.1
|
|
51
73
|
[0.1.0]: https://github.com/galihlasahido/wysiwyg-editor/releases/tag/v0.1.0
|
package/README.md
CHANGED
|
@@ -72,6 +72,18 @@ new Editor({
|
|
|
72
72
|
});
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
+
**Optional packages are passed in, not imported by the editor.** `docx`, `mammoth`, `katex`, `mermaid`, `pdfjs-dist`, `jszip` and `yjs` are optional. The main entry never imports them (a check in `pnpm check:optional` enforces it), so Angular, webpack, Next.js and esbuild builds work without them installed. When you want a feature, install its package and hand the editor a loader:
|
|
76
|
+
|
|
77
|
+
```ts
|
|
78
|
+
createEditor({ element, docx: () => import('wysiwygido/docx'), // pnpm add docx mammoth
|
|
79
|
+
plugins: [...defaultPlugins,
|
|
80
|
+
Equations({ katex: () => import('katex') }), // pnpm add katex
|
|
81
|
+
Mermaid({ mermaid: () => import('mermaid') }), // pnpm add mermaid
|
|
82
|
+
PdfEpub({ loadPdf: () => import('wysiwygido/pdf'), loadEpub: () => import('wysiwygido/epub') })] }); // pdfjs-dist, jszip
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Without a loader the feature says what to add (`exportDocx()` rejects with the exact line to write). Collaboration is its own entry, `wysiwygido/collab`.
|
|
86
|
+
|
|
75
87
|
Entry points (optional peer dependencies are only needed for the ones you import):
|
|
76
88
|
|
|
77
89
|
| Import | Contents | Needs |
|
|
@@ -120,7 +132,7 @@ preview, rename, download, delete, multi-select) and `attachment` chips for non-
|
|
|
120
132
|
unique clean names). `editImage` / `openImageEditor` edit a picture on a canvas: crop (free or fixed ratio), rotate, flip and straighten, resize, brightness, contrast,
|
|
121
133
|
saturation, warmth, blur, nine filters, freehand pen and highlighter, text, undo and redo, zoom (buttons, Ctrl/Cmd + wheel, 100% / Fit) and pan (Space + drag), PNG / JPEG / WebP output. A picture from another site needs CORS; pass `fetchImage` (your own proxy) to edit it anyway. Give `resolveUrl` your upload function to make attachments work for every reader.
|
|
122
134
|
|
|
123
|
-
**Equations and diagrams** (optional peers `katex` and `mermaid`, loaded only when used): `Equations()` adds inline `$…$` and display
|
|
135
|
+
**Equations and diagrams** (optional peers `katex` and `mermaid`, passed in as shown above and loaded only when used): `Equations({ katex: () => import('katex') })` adds inline `$…$` and display
|
|
124
136
|
LaTeX equations drawn by KaTeX with MathML for screen readers; type `$x^2$`, use the ∑ / ∫ buttons or double-click to edit in a dialog with templates
|
|
125
137
|
(fraction, sum, integral, matrix …) and a live preview; invalid LaTeX shows the error in place. `Mermaid()` adds text-written diagrams (flowchart, sequence,
|
|
126
138
|
class, state, ER, Gantt, pie, mind map) with starter templates and a live preview; it forces `securityLevel: 'strict'`, draws labels as SVG text, strips scripts from the
|
|
@@ -153,7 +165,7 @@ Markdown), so exports show it. A reference to a deleted caption says "Missing re
|
|
|
153
165
|
|
|
154
166
|
**Recording and dictation**: `Recording()` adds `recordAudio`, `recordScreen`, `stopRecording`, `cancelRecording` and `toggleDictation`. The browser asks permission each time, a bar shows the time while recording, Esc cancels and the tracks are always released. A recording becomes a player in the text, embedded as a data URL (capped by `maxBytes`) or stored by your `upload(blob, kind)` function (recommended for anything long); `maxSeconds` stops it automatically. Dictation uses the browser's speech recognition (Chrome, Edge, Safari; not Firefox), types only text at the cursor, and can be set to a language with `dictationLang`. Word and Markdown export keep a link or label, not the media.
|
|
155
167
|
|
|
156
|
-
**PDF import and EPUB export**: `PdfEpub()` adds `openPdf` / `importPdf(blob)` and `exportEpub(name?)`; without the plugin use `importPdf` from `wysiwygido/pdf` and `exportEpub` from `wysiwygido/epub`. They need the optional packages `pdfjs-dist` and `jszip` (PDF import also needs `pdf: { workerSrc }`, the URL where you serve pdf.js's worker; with Vite `import workerSrc from 'pdfjs-dist/build/pdf.worker.min.mjs?url'`). PDF import reads **text only**: paragraphs (joined across line ends, hyphenation repaired), headings from larger type and bullet or numbered lists; pictures, tables, multi-column layouts and scanned pages are not recovered (a scan is reported as having no text). The EPUB 3 file starts a chapter at each top-level heading, packs embedded pictures, writes a navigation document, and reduces anything scripted (players, forms) to text; remote pictures are not packed.
|
|
168
|
+
**PDF import and EPUB export**: `PdfEpub({ loadPdf: () => import('wysiwygido/pdf'), loadEpub: () => import('wysiwygido/epub') })` adds `openPdf` / `importPdf(blob)` and `exportEpub(name?)`; without the plugin use `importPdf` from `wysiwygido/pdf` and `exportEpub` from `wysiwygido/epub`. They need the optional packages `pdfjs-dist` and `jszip` (PDF import also needs `pdf: { workerSrc }`, the URL where you serve pdf.js's worker; with Vite `import workerSrc from 'pdfjs-dist/build/pdf.worker.min.mjs?url'`). PDF import reads **text only**: paragraphs (joined across line ends, hyphenation repaired), headings from larger type and bullet or numbered lists; pictures, tables, multi-column layouts and scanned pages are not recovered (a scan is reported as having no text). The EPUB 3 file starts a chapter at each top-level heading, packs embedded pictures, writes a navigation document, and reduces anything scripted (players, forms) to text; remote pictures are not packed.
|
|
157
169
|
|
|
158
170
|
**AI suggestions, review and chat** (options of `AIAssistant`, all through your own `provider`; the request carries `action: 'complete' | 'review' | 'chat'`):
|
|
159
171
|
`inline: true` (or `{ delayMs, minChars, maxChars }`) shows a grey continuation at the end of a paragraph after you pause: Tab accepts, Esc or any typing dismisses it (one line, plain text, never markup). `aiReview` sends each plain paragraph to the provider and applies the answers as **tracked changes** (needs `TrackChanges`); paragraphs edited meanwhile are skipped, a reply of several lines is ignored, and one Undo takes the whole review back. `chat: true` adds an `aiChat` panel that sends your question, the selection and the document text (up to `contextChars`) and shows replies as text, with "Insert into document" (parsed as Markdown, raw HTML disabled). Document text is sent to your provider: put API keys and any filtering on your server.
|
|
@@ -369,7 +381,7 @@ Errors: throw (or return a non-2xx status from `createFetchProvider`) and the pa
|
|
|
369
381
|
## Creating a .docx from your code
|
|
370
382
|
|
|
371
383
|
`editor.exportDocx(options?)` builds the Word file and resolves with a `Blob`; call it from a button, a shortcut, an editor event or before an upload.
|
|
372
|
-
It needs the optional `docx` package, which is loaded only when you call it.
|
|
384
|
+
It needs the optional `docx` package, which is loaded only when you call it: pass `docx: () => import('wysiwygido/docx')` to `createEditor` (see above).
|
|
373
385
|
|
|
374
386
|
```ts
|
|
375
387
|
const blob = await editor.exportDocx(); // just the file
|
|
@@ -449,6 +461,30 @@ returns an unsubscribe function, and `editor.emit('my-event', payload)` tells ot
|
|
|
449
461
|
`registerIcon(name, svgInner)` adds an icon for ribbon buttons. See `demo/custom-plugin` for a complete third-party plugin, and `src/plugins/` for the built-in ones.
|
|
450
462
|
Plugins are fixed when the editor is created (the schema cannot change afterwards); commands, toolbar layout and listeners can change at any time.
|
|
451
463
|
|
|
464
|
+
## Right-click menu
|
|
465
|
+
|
|
466
|
+
`ContextMenu` is in `defaultPlugins`. Right-click shows cut/copy/paste and then what applies at the click: table tools in a table (insert/delete
|
|
467
|
+
rows and columns, merge/split, header row/column, cell colour, select, even column widths), list tools in a list (bulleted/numbered/checklist,
|
|
468
|
+
indent, numbering style, restart numbering), link tools on a link (open, copy address, edit, remove), picture tools on a picture (alt text, caption,
|
|
469
|
+
size, crop, edit, delete), and text formatting on a selection. It opens from the keyboard with the Menu key or Shift+F10, works with the arrow keys,
|
|
470
|
+
Escape closes it, and Shift + right-click gives the browser's own menu. A read-only editor only gets copy, open link and select all.
|
|
471
|
+
Deleting the last row or column of a table now removes the table, and Backspace/Delete in an empty one-cell table removes it too.
|
|
472
|
+
|
|
473
|
+
Add your own lines from any plugin:
|
|
474
|
+
|
|
475
|
+
```ts
|
|
476
|
+
definePlugin({
|
|
477
|
+
name: 'my-menu',
|
|
478
|
+
contextMenu({ closest, readonly }) {
|
|
479
|
+
if (readonly || !closest('blockquote')) return [];
|
|
480
|
+
return ['-', { label: 'Remove quote', command: 'blockQuote' }, { label: 'Say hi', run: (editor) => alert('hi') }];
|
|
481
|
+
},
|
|
482
|
+
});
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
Items take `label`, `command`/`args` or `run`, `icon`, `shortcut`, `disabled`, `checked`, `danger`, `readOnly` and `items` (a submenu); `'-'` is a separator.
|
|
486
|
+
Leave the plugin out of `plugins` to have no custom menu.
|
|
487
|
+
|
|
452
488
|
## Known limitations
|
|
453
489
|
|
|
454
490
|
- **Pagination is visual.** The document stays one ProseMirror doc; blocks are measured in the browser and spaced across
|
package/dist/adapter.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as createEditor } from "./src-
|
|
1
|
+
import { t as createEditor } from "./src-DFClH3tv.js";
|
|
2
2
|
//#region src/adapter.ts
|
|
3
3
|
/**
|
|
4
4
|
* Framework-neutral binding for anything that needs a "value in, value out" control: Angular's `ControlValueAccessor`, Svelte, Solid,
|
package/dist/editor.d.ts
CHANGED
|
@@ -26,6 +26,12 @@ export interface EditorConfig {
|
|
|
26
26
|
onChange?: (html: string) => void;
|
|
27
27
|
/** Uploads an image file and resolves to its URL. Defaults to embedding as a Base64 data URL. */
|
|
28
28
|
uploadImage?: (file: File) => Promise<string>;
|
|
29
|
+
/**
|
|
30
|
+
* How to load the optional `.docx` support: `docx: () => import('wysiwygido/docx')` (and `pnpm add docx mammoth`). It is a function you pass
|
|
31
|
+
* rather than something the editor imports itself, so bundlers (Angular, webpack, esbuild) never have to resolve the optional packages.
|
|
32
|
+
* Without it `exportDocx()` and `importDocx()` throw an error that says what to add.
|
|
33
|
+
*/
|
|
34
|
+
docx?: () => Promise<typeof import('./docx.js')>;
|
|
29
35
|
/** Start in read-only mode. */
|
|
30
36
|
readOnly?: boolean;
|
|
31
37
|
/** Text direction of the document. Default 'ltr'. */
|
|
@@ -70,6 +76,7 @@ export declare class Editor {
|
|
|
70
76
|
* Needs the optional `docx` package (loaded only when you call this).
|
|
71
77
|
*/
|
|
72
78
|
exportDocx(options?: DocxExportOptions): Promise<Blob>;
|
|
79
|
+
private loadDocx;
|
|
73
80
|
/** Replace the document with the content of a .docx file (one undo step). Resolves with the converter's warnings. Needs the optional `mammoth` package. */
|
|
74
81
|
importDocx(source: Blob | ArrayBuffer): Promise<string[]>;
|
|
75
82
|
private buildToolbar;
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { Editor, type EditorConfig } from './editor.js';
|
|
|
2
2
|
import { type PageOptions } from './plugins/index.js';
|
|
3
3
|
export { Editor } from './editor.js';
|
|
4
4
|
export type { EditorConfig, DocxExportOptions } from './editor.js';
|
|
5
|
-
export type { EditorPlugin, ToolbarItem, ToolbarEntry, ToolbarGroup, ToolbarOptions, Command, RibbonContribution, EditorEvent } from './types.js';
|
|
5
|
+
export type { EditorPlugin, ToolbarItem, ToolbarEntry, ToolbarGroup, ToolbarOptions, Command, ContextMenuContext, ContextMenuEntry, ContextMenuItem, RibbonContribution, EditorEvent } from './types.js';
|
|
6
6
|
export { definePlugin } from './types.js';
|
|
7
7
|
export * from './plugins/index.js';
|
|
8
8
|
export declare const defaultPlugins: import("./types.js").EditorPlugin[];
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Editor } from '../editor.js';
|
|
2
|
+
import type { ContextMenuContext, ContextMenuEntry, ContextMenuItem, EditorPlugin } from '../types.js';
|
|
3
|
+
export interface ContextMenuOptions {
|
|
4
|
+
/** Extra items added at the top, for this editor only (plugins add theirs with the `contextMenu` hook). */
|
|
5
|
+
extra?: (context: ContextMenuContext) => ContextMenuEntry[];
|
|
6
|
+
}
|
|
7
|
+
/** Remove what a read-only editor must not offer, then tidy the separators: none first, last or doubled, and no empty fly-outs. */
|
|
8
|
+
export declare function tidyEntries(entries: ContextMenuEntry[], readOnlyEditor: boolean): ContextMenuEntry[];
|
|
9
|
+
/** Everything a plugin offers for the current selection, grouped by plugin order. */
|
|
10
|
+
export declare function buildContextMenu(editor: Editor, event: MouseEvent | null, extra?: ContextMenuOptions['extra']): ContextMenuEntry[];
|
|
11
|
+
/**
|
|
12
|
+
* The right-click menu. It shows what applies at the click: clipboard actions, then the items each plugin adds for the
|
|
13
|
+
* selection (table tools in a table, list tools in a list, link tools on a link, picture tools on a picture…). Plugins add
|
|
14
|
+
* items with the `contextMenu(context)` hook. Hold Shift while right-clicking to get the browser's own menu (spelling
|
|
15
|
+
* suggestions from the browser's spell checker live there). It opens from the keyboard with the Menu key or Shift+F10.
|
|
16
|
+
*/
|
|
17
|
+
export declare function ContextMenu(options?: ContextMenuOptions): EditorPlugin;
|
|
18
|
+
/** Select everything: an item other plugins can reuse. */
|
|
19
|
+
export declare const selectAllItem: ContextMenuItem;
|
|
@@ -70,3 +70,9 @@ export declare function docIndex<T>(name: string, match: (n: PMNode) => boolean,
|
|
|
70
70
|
rev: number;
|
|
71
71
|
};
|
|
72
72
|
};
|
|
73
|
+
/** Where the link (or any mark) at the selection starts and ends: the whole run of text that carries the same mark. */
|
|
74
|
+
export declare function markRunAt(state: EditorState, markName: string): {
|
|
75
|
+
mark: import('prosemirror-model').Mark;
|
|
76
|
+
from: number;
|
|
77
|
+
to: number;
|
|
78
|
+
} | null;
|
package/dist/plugins/index.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export { List } from './list.js';
|
|
|
5
5
|
export { Blocks } from './blocks.js';
|
|
6
6
|
export { Link } from './link.js';
|
|
7
7
|
export { Image } from './image.js';
|
|
8
|
+
export { ContextMenu, buildContextMenu, tidyEntries } from './context-menu.js';
|
|
9
|
+
export type { ContextMenuOptions } from './context-menu.js';
|
|
8
10
|
export { Table } from './table.js';
|
|
9
11
|
export { Autoformat } from './autoformat.js';
|
|
10
12
|
export { Alignment } from './alignment.js';
|
package/dist/plugins/math.d.ts
CHANGED
|
@@ -4,8 +4,10 @@ export interface KatexLike {
|
|
|
4
4
|
renderToString(tex: string, options?: Record<string, unknown>): string;
|
|
5
5
|
}
|
|
6
6
|
export interface EquationsOptions {
|
|
7
|
-
/** KaTeX, or a function that loads it
|
|
8
|
-
katex?: KatexLike | (() => Promise<KatexLike
|
|
7
|
+
/** KaTeX, or a function that loads it: `() => import('katex')` (an optional peer dependency you install). A module with a `default` export is accepted too. */
|
|
8
|
+
katex?: KatexLike | (() => Promise<KatexLike | {
|
|
9
|
+
default: KatexLike;
|
|
10
|
+
}>);
|
|
9
11
|
/** Replace the renderer entirely. Return HTML (scripts are removed from it). Throw to show an error. */
|
|
10
12
|
render?: (tex: string, display: boolean) => string | Promise<string>;
|
|
11
13
|
/** Extra KaTeX macros, e.g. `{ '\\RR': '\\mathbb{R}' }`. */
|
|
@@ -7,8 +7,10 @@ export interface MermaidLike {
|
|
|
7
7
|
}>;
|
|
8
8
|
}
|
|
9
9
|
export interface MermaidOptions {
|
|
10
|
-
/** Mermaid, or a function that loads it
|
|
11
|
-
mermaid?: MermaidLike | (() => Promise<MermaidLike
|
|
10
|
+
/** Mermaid, or a function that loads it: `() => import('mermaid')` (an optional peer dependency you install). A module with a `default` export is accepted too. */
|
|
11
|
+
mermaid?: MermaidLike | (() => Promise<MermaidLike | {
|
|
12
|
+
default: MermaidLike;
|
|
13
|
+
}>);
|
|
12
14
|
/** Extra Mermaid configuration. `securityLevel` stays 'strict' whatever you pass. */
|
|
13
15
|
config?: Record<string, unknown>;
|
|
14
16
|
/** Longest diagram source accepted, in characters. Default 20000. */
|
|
@@ -2,6 +2,10 @@ import type { EditorPlugin } from '../types.js';
|
|
|
2
2
|
import type { EpubOptions } from '../epub.js';
|
|
3
3
|
import type { PdfImportOptions } from '../pdf.js';
|
|
4
4
|
export interface PdfEpubOptions {
|
|
5
|
+
/** How to load PDF support: `() => import('wysiwygido/pdf')` (and `pnpm add pdfjs-dist`). */
|
|
6
|
+
loadPdf?: () => Promise<typeof import('../pdf.js')>;
|
|
7
|
+
/** How to load EPUB support: `() => import('wysiwygido/epub')` (and `pnpm add jszip`). */
|
|
8
|
+
loadEpub?: () => Promise<typeof import('../epub.js')>;
|
|
5
9
|
pdf?: PdfImportOptions;
|
|
6
10
|
epub?: EpubOptions;
|
|
7
11
|
}
|
package/dist/react.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as createEditor } from "./src-
|
|
1
|
+
import { t as createEditor } from "./src-DFClH3tv.js";
|
|
2
2
|
import { createElement, forwardRef, useEffect, useImperativeHandle, useLayoutEffect, useRef } from "react";
|
|
3
3
|
//#region src/react.ts
|
|
4
4
|
/** React wrapper (needs the optional `react` peer dependency). */
|