wysiwygido 0.1.0 → 0.2.1

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 CHANGED
@@ -4,10 +4,28 @@ All notable changes to this project are documented here. The format follows [Kee
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.2.1] - 2026-10-11
8
+
9
+ The first release that includes the 0.2.0 changes below: 0.2.0 itself was never published to npm.
10
+
11
+ ### Fixed
12
+ - 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.
13
+
14
+ ## [0.2.0] - 2026-10-06
15
+
16
+ ### Changed (breaking)
17
+ - 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.
18
+ - Verified in real apps: React, Vue, Svelte (Vite) and Angular 20 builds, plus a no-build page loading the package from a CDN.
19
+
7
20
  ### Changed
8
21
  - 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
22
 
10
- ## [0.1.0] - first public release
23
+ ## [0.1.1] - 2026-10-06
24
+
25
+ ### Fixed
26
+ - `wysiwygido/package.json` can be imported (it is now listed in `exports`), which tools that read the package version expect.
27
+
28
+ ## [0.1.0] - 2026-10-05 - first public release
11
29
 
12
30
  The package is named `wysiwygido` (the `wysiwyg-editor` name on npm belongs to another project). Builds are not minified and ship with source maps; your bundler minifies.
13
31
 
@@ -41,5 +59,8 @@ A modular rich-text editor on ProseMirror with a plugin architecture. Everything
41
59
  ### Known limitations
42
60
  See the README section "Known limitations".
43
61
 
44
- [Unreleased]: https://github.com/galihlasahido/wysiwyg-editor/compare/v0.1.0...HEAD
62
+ [Unreleased]: https://github.com/galihlasahido/wysiwyg-editor/compare/v0.2.1...HEAD
63
+ [0.2.1]: https://github.com/galihlasahido/wysiwyg-editor/compare/v0.1.1...v0.2.1
64
+ [0.2.0]: https://github.com/galihlasahido/wysiwyg-editor/compare/v0.1.1...v0.2.0
65
+ [0.1.1]: https://github.com/galihlasahido/wysiwyg-editor/compare/v0.1.0...v0.1.1
45
66
  [0.1.0]: https://github.com/galihlasahido/wysiwyg-editor/releases/tag/v0.1.0
package/README.md CHANGED
@@ -7,7 +7,7 @@ A modular rich-text editor in TypeScript, inspired by [CKEditor 5](https://ckedi
7
7
  built on [ProseMirror](https://prosemirror.net/). The long-term goal is a **Google Docs-style editor for the web**:
8
8
  paged layout, comments, suggestions, real-time collaboration, `.docx` import/export, and a backend to store and share documents.
9
9
 
10
- Everything is opt-in plugins; the core is small. It is **not published to npm yet** (the package will be named `wysiwygido`): clone, `pnpm install`, `pnpm build`.
10
+ Everything is opt-in plugins; the core is small. Install from npm (the first release is tagged `next`): `pnpm add wysiwygido@next`, then `import { createEditor } from 'wysiwygido'` and `import 'wysiwygido/style.css'`. To work on the repository itself: clone, `pnpm install`, `pnpm dev`.
11
11
 
12
12
  ```sh
13
13
  pnpm install
@@ -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
package/dist/adapter.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as createEditor } from "./src-oDoQgMwC.js";
1
+ import { t as createEditor } from "./src-BRR721LM.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;
@@ -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. Default: `import('katex')` (an optional peer dependency). */
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. Default: `import('mermaid')` (an optional peer dependency). */
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-oDoQgMwC.js";
1
+ import { t as createEditor } from "./src-BRR721LM.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). */
@@ -3508,12 +3508,7 @@ var Editor = class {
3508
3508
  * Needs the optional `docx` package (loaded only when you call this).
3509
3509
  */
3510
3510
  async exportDocx(options = {}) {
3511
- let mod;
3512
- try {
3513
- mod = await import("./docx.js");
3514
- } catch {
3515
- throw new Error("Creating a .docx needs the \"docx\" package. Install it with: pnpm add docx");
3516
- }
3511
+ const mod = await this.loadDocx("Creating a .docx", "docx");
3517
3512
  const { download: save, ...rest } = options;
3518
3513
  const blob = await mod.exportDocx(this, rest);
3519
3514
  if (save) {
@@ -3526,15 +3521,18 @@ var Editor = class {
3526
3521
  });
3527
3522
  return blob;
3528
3523
  }
3529
- /** Replace the document with the content of a .docx file (one undo step). Resolves with the converter's warnings. Needs the optional `mammoth` package. */
3530
- async importDocx(source) {
3531
- let mod;
3524
+ async loadDocx(what, pkg) {
3525
+ const load = this.config.docx;
3526
+ if (!load) throw new Error(`${what} needs the docx module. Pass it when you create the editor: createEditor({ docx: () => import('wysiwygido/docx') }) and install the "${pkg}" package (pnpm add docx mammoth).`);
3532
3527
  try {
3533
- mod = await import("./docx.js");
3528
+ return await load();
3534
3529
  } catch {
3535
- throw new Error("Opening a .docx needs the \"mammoth\" package. Install it with: pnpm add mammoth");
3530
+ throw new Error(`${what} needs the "${pkg}" package. Install it with: pnpm add docx mammoth`);
3536
3531
  }
3537
- const warnings = await mod.importDocx(this, source);
3532
+ }
3533
+ /** Replace the document with the content of a .docx file (one undo step). Resolves with the converter's warnings. Needs the optional `mammoth` package. */
3534
+ async importDocx(source) {
3535
+ const warnings = await (await this.loadDocx("Opening a .docx", "mammoth")).importDocx(this, source);
3538
3536
  this.emit("import", {
3539
3537
  format: "docx",
3540
3538
  warnings
@@ -14493,10 +14491,12 @@ function Equations(options = {}) {
14493
14491
  const loadKatex = () => {
14494
14492
  katexPromise ??= (async () => {
14495
14493
  const k = options.katex;
14496
- if (typeof k === "function") return k();
14494
+ if (typeof k === "function") {
14495
+ const m = await k();
14496
+ return "default" in m && m.default ? m.default : m;
14497
+ }
14497
14498
  if (k) return k;
14498
- const mod = await import("katex");
14499
- return mod.default ?? mod;
14499
+ throw new Error("KaTeX is not set up. Pass it when you add the plugin: Equations({ katex: () => import('katex') }) and install the \"katex\" package.");
14500
14500
  })();
14501
14501
  return katexPromise;
14502
14502
  };
@@ -14801,10 +14801,12 @@ function Mermaid(options = {}) {
14801
14801
  const load = () => {
14802
14802
  mermaidPromise ??= (async () => {
14803
14803
  const m = options.mermaid;
14804
- if (typeof m === "function") return m();
14804
+ if (typeof m === "function") {
14805
+ const mod = await m();
14806
+ return "default" in mod && mod.default ? mod.default : mod;
14807
+ }
14805
14808
  if (m) return m;
14806
- const mod = await import("mermaid");
14807
- return mod.default ?? mod;
14809
+ throw new Error("Mermaid is not set up. Pass it when you add the plugin: Mermaid({ mermaid: () => import('mermaid') }) and install the \"mermaid\" package.");
14808
14810
  })();
14809
14811
  return mermaidPromise;
14810
14812
  };
@@ -16856,7 +16858,7 @@ function PdfEpub(options = {}) {
16856
16858
  name: "pdf-epub",
16857
16859
  setup(editor) {
16858
16860
  editor.registerCommand("importPdf", (e, source) => {
16859
- import("./pdf.js").then((m) => m.importPdf(e, source, options.pdf)).then((warnings) => e.emit("import", {
16861
+ (options.loadPdf ? options.loadPdf() : Promise.reject(/* @__PURE__ */ new Error("PDF support is not set up. Pass loadPdf: () => import('wysiwygido/pdf') and install pdfjs-dist."))).then((m) => m.importPdf(e, source, options.pdf)).then((warnings) => e.emit("import", {
16860
16862
  format: "pdf",
16861
16863
  warnings
16862
16864
  })).catch((err) => fail(e, err));
@@ -16874,7 +16876,7 @@ function PdfEpub(options = {}) {
16874
16876
  return true;
16875
16877
  });
16876
16878
  editor.registerCommand("exportEpub", (e, name) => {
16877
- import("./epub.js").then(async (m) => {
16879
+ (options.loadEpub ? options.loadEpub() : Promise.reject(/* @__PURE__ */ new Error("EPUB support is not set up. Pass loadEpub: () => import('wysiwygido/epub') and install jszip."))).then(async (m) => {
16878
16880
  const blob = await m.exportEpub(e, options.epub);
16879
16881
  if (name !== "") download(blob, `${(name ?? options.epub?.title ?? "document").replace(/[^\w .-]/g, "_")}.epub`, "application/epub+zip");
16880
16882
  e.emit("export", {
@@ -17608,4 +17610,4 @@ function createEditor(config) {
17608
17610
  //#endregion
17609
17611
  export { colName as $, getOutline as $t, Mermaid as A, cleanFileName as An, ConflictError as At, openImageEditor as B, Ribbon as Bn, CommentStore as Bt, DEFAULT_EMBED_PROVIDERS as C, Editor as Cn, Templates as Ct, MemoryDraftStore as D, IndexedDBFileStore as Dn, createFetchProvider as Dt, IndexedDBDraftStore as E, printDocument as En, DEFAULT_AI_ACTIONS as Et, addFiles as F, download as Fn, VersionStore as Ft, formatBytes as G, ICONS as Gn, createLanguageToolProvider as Gt, NEUTRAL as H, RestrictedEditing as Hn, TableOfContents as Ht, matchesAccept as I, exportHTML as In, Versions as It, foldEnds as J, registerIcon as Jn, FindReplace as Jt, CodeAdvanced as K, hasIcon as Kn, Footnotes as Kt, openFileManager as L, WordCount as Ln, localStorageVersions as Lt, MATH_SNIPPETS as M, fileKind as Mn, createEndpointSaver as Mt, FileManager as N, isRasterImage as Nn, createHttpSaver as Nt, Offline as O, MemoryFileStore as On, Autosave as Ot, DEFAULT_BLOCKED as P, uniqueName as Pn, Mentions as Pt, TableFormulas as Q, Outline as Qt, readImageSize as R, getStats as Rn, TrackChanges as Rt, parseOptions as S, markerStyle as Sn, DEFAULT_TEMPLATES as St, resolveEmbed as T, marginContent as Tn, AIAssistant as Tt, applyAdjustments as U, SPECIAL_CHARACTERS as Un, SpellCheck as Ut, FILTER_PRESETS as V, applyContributions as Vn, Comments as Vt, boxBlur as W, SpecialCharacters as Wn, cleanIssues as Wt, parseDiagram as X, registerLocale as Xn, findMatches as Xt, Diagram as Y, isRtlLocale as Yn, buildMatcher as Yt, renderDiagram as Z, translate as Zn, isRiskyRegex as Zt, collectCaptions as _, Essentials as _n, BalloonToolbar as _t, CodeEditor as a, FONT_SIZES as an, findMatchingBracket as at, cleanValue as b, isGoogleDocsHTML as bn, currentBlock as bt, toEmailHTML as c, Autoformat as cn, resolveLanguage as ct, PdfEpub as d, Image$1 as dn, formatHtml as dt, PAGE_SIZES as en, computeFormulasInHTML as et, Recording as f, Link as fn, MergeFields as ft, Captions as g, BasicStyles as gn, SlashCommands as gt, Columns as h, Heading as hn, DEFAULT_SLASH_COMMANDS as ht, splitSlides as i, FONT_FAMILIES as in, CodeEditing as it, Equations as j, createFileStore as jn, DocumentClient as jt, MERMAID_TEMPLATES as k, ResilientFileStore as kn, ApiError as kt, toEmailText as l, Table as ln, simpleHighlight as lt, Charts as m, List as mn, renderMergeFields as mt, defaultPlugins as n, paginate as nn, formatValue as nt, createCodeEditor as o, Fonts as on, CodeBlocks as ot, isSafeClip as p, Blocks as pn, getMergeFields as pt, foldEnd as q, icon as qn, FormatPainter as qt, defineEditorElement as r, TaskList as rn, isErrorValue as rt, languageForFilename as s, Alignment as sn, DEFAULT_LANGUAGES as st, createEditor as t, Pages as tn, evaluateGrid as tt, definePlugin as u, Colors as un, SourceEditing as ut, FIELD_META as v, cleanPastedHTML as vn, Office as vt, Embeds as w, buildPrintHTML as wn, Direction as wt, listFields as x, isWordHTML as xn, setBlockAttrs as xt, FormFields as y, hasPasteableText as yn, ParagraphFormat as yt, rejectReason as z, DEFAULT_RIBBON as zn, getChanges as zt };
17610
17612
 
17611
- //# sourceMappingURL=src-oDoQgMwC.js.map
17613
+ //# sourceMappingURL=src-BRR721LM.js.map