@h-k-dev/angular-email-editor 0.0.3 → 0.0.5
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/fesm2022/h-k-dev-angular-email-editor-fonts.mjs +144 -0
- package/fesm2022/h-k-dev-angular-email-editor-fonts.mjs.map +1 -0
- package/fesm2022/h-k-dev-angular-email-editor-suggestion-menu.mjs +20 -1
- package/fesm2022/h-k-dev-angular-email-editor-suggestion-menu.mjs.map +1 -1
- package/fesm2022/h-k-dev-angular-email-editor.mjs +343 -160
- package/fesm2022/h-k-dev-angular-email-editor.mjs.map +1 -1
- package/package.json +5 -1
- package/types/h-k-dev-angular-email-editor-fonts.d.ts +110 -0
- package/types/h-k-dev-angular-email-editor.d.ts +72 -54
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@h-k-dev/angular-email-editor",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "An email editor for Angular on ProseMirror — a visual composer and an HTML source editor over one schema that is the vocabulary of email HTML.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "h-k-dev",
|
|
@@ -104,6 +104,10 @@
|
|
|
104
104
|
"types": "./types/h-k-dev-angular-email-editor-focus.d.ts",
|
|
105
105
|
"default": "./fesm2022/h-k-dev-angular-email-editor-focus.mjs"
|
|
106
106
|
},
|
|
107
|
+
"./fonts": {
|
|
108
|
+
"types": "./types/h-k-dev-angular-email-editor-fonts.d.ts",
|
|
109
|
+
"default": "./fesm2022/h-k-dev-angular-email-editor-fonts.mjs"
|
|
110
|
+
},
|
|
107
111
|
"./image": {
|
|
108
112
|
"types": "./types/h-k-dev-angular-email-editor-image.d.ts",
|
|
109
113
|
"default": "./fesm2022/h-k-dev-angular-email-editor-image.mjs"
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The fonts an email is written in — Gmail's set, in Gmail's order — as
|
|
3
|
+
* plain data: no Angular, no ProseMirror. The editor's `textStyle` mark
|
|
4
|
+
* stores and emits only these stacks, the toolbar offers them, and an
|
|
5
|
+
* editor of another kind (summernote's `fontNames`) can offer the same set
|
|
6
|
+
* from the same constant, so a message reads the same font whichever
|
|
7
|
+
* composer wrote it.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* A client a font is checked against — the three a writer's recipients
|
|
11
|
+
* mostly read in, the same ids as the library's `RenderingClient`.
|
|
12
|
+
*/
|
|
13
|
+
type FontClient = 'gmail' | 'apple-mail' | 'outlook-desktop';
|
|
14
|
+
/** The clients, in the order a picker shows them (G, A, O), with the letter
|
|
15
|
+
and name it shows them by. */
|
|
16
|
+
declare const fontClients: readonly {
|
|
17
|
+
id: FontClient;
|
|
18
|
+
letter: string;
|
|
19
|
+
name: string;
|
|
20
|
+
}[];
|
|
21
|
+
/** A font the editor offers: one of {@link emailFontFamilies}. */
|
|
22
|
+
interface EmailFont {
|
|
23
|
+
/** Stable, for a host's translation key: `sans-serif`, `fixed-width`, … */
|
|
24
|
+
readonly id: string;
|
|
25
|
+
/** The label, in English — Gmail's words. */
|
|
26
|
+
readonly name: string;
|
|
27
|
+
/**
|
|
28
|
+
* The exact `font-family` value emitted — the canonical stored form. A
|
|
29
|
+
* family name of more than one word is double-quoted: the CSSOM (Chrome's
|
|
30
|
+
* and jsdom's alike) quotes it on reserialization, so the stored bytes are
|
|
31
|
+
* already what comes back and a round trip is stable.
|
|
32
|
+
*/
|
|
33
|
+
readonly stack: string;
|
|
34
|
+
/** The face the stack is for — its first family, unquoted: what an editor
|
|
35
|
+
that sets a single family (summernote) offers for it. */
|
|
36
|
+
readonly face: string;
|
|
37
|
+
/**
|
|
38
|
+
* The clients that draw the face itself rather than its fallback — the
|
|
39
|
+
* face is on the machine the client runs on:
|
|
40
|
+
*
|
|
41
|
+
* - `gmail`: Gmail on the web, read on Windows or macOS (it draws with
|
|
42
|
+
* the reader's own fonts; one of them lacking the face is a no).
|
|
43
|
+
* - `apple-mail`: Apple Mail on macOS *and* iOS — a phone lacks Arial
|
|
44
|
+
* Black, Comic Sans, Tahoma.
|
|
45
|
+
* - `outlook-desktop`: Outlook on Windows, which brings Office's fonts
|
|
46
|
+
* (Arial Narrow, Garamond).
|
|
47
|
+
*
|
|
48
|
+
* Elsewhere the stack's fallback draws: the email still reads, in a near
|
|
49
|
+
* face. Curated, conservative — a face only some readers have is a no.
|
|
50
|
+
*/
|
|
51
|
+
readonly clients: readonly FontClient[];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Gmail's fonts, in its menu's order. A stack is the face, then what a
|
|
55
|
+
* client without it should draw instead, then the generic. Each face leads
|
|
56
|
+
* only its own stack, so a single family read back from another editor
|
|
57
|
+
* (`font-family: 'Arial Black'`) finds its font exactly.
|
|
58
|
+
*
|
|
59
|
+
* The first stack naming a family claims it (see {@link matchEmailFont}):
|
|
60
|
+
* `helvetica` and `sans-serif` read as Sans Serif, `times` and `serif` as
|
|
61
|
+
* Serif, `courier` and `monospace` as Fixed width.
|
|
62
|
+
*/
|
|
63
|
+
declare const emailFontFamilies: readonly EmailFont[];
|
|
64
|
+
/**
|
|
65
|
+
* The font a message is written in until the writer picks another — Gmail's
|
|
66
|
+
* Sans Serif, Arial. Nothing is emitted for it: unstyled text is drawn in
|
|
67
|
+
* the client's own default, as Gmail's is. An editor shows it as its
|
|
68
|
+
* surface font, so what is written looks as it will in Gmail; summernote
|
|
69
|
+
* takes its face (`fontName: emailDefaultFont.face`).
|
|
70
|
+
*/
|
|
71
|
+
declare const emailDefaultFont: EmailFont;
|
|
72
|
+
/**
|
|
73
|
+
* The faces of {@link emailFontFamilies}, in order — the set for an editor
|
|
74
|
+
* that offers single families. For summernote, both lists: `fontNamesIgnoreCheck`
|
|
75
|
+
* keeps a face this machine lacks (Garamond, Arial Narrow) in the menu.
|
|
76
|
+
*
|
|
77
|
+
* ```ts
|
|
78
|
+
* $('#editor').summernote({ fontNames: emailFontFaces, fontNamesIgnoreCheck: emailFontFaces });
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
declare const emailFontFaces: readonly string[];
|
|
82
|
+
/** Every size the editor stores, in px. */
|
|
83
|
+
declare const allowedFontSizes: readonly [10, 12, 14, 16, 18, 24, 32];
|
|
84
|
+
type FontSize = (typeof allowedFontSizes)[number];
|
|
85
|
+
/**
|
|
86
|
+
* The sizes a picker offers: the phone-safe subset (≥14px). Below ~13px iOS
|
|
87
|
+
* auto-inflates text and reflows the layout, so they are not *offered* —
|
|
88
|
+
* but every {@link allowedFontSizes} size is still read and kept, because a
|
|
89
|
+
* hand-typed size in the HTML source is the author's own responsibility.
|
|
90
|
+
*/
|
|
91
|
+
declare const emailFontSizes: readonly FontSize[];
|
|
92
|
+
/** A `font-family` value as a comparison key: lower-cased, quotes dropped,
|
|
93
|
+
whitespace around commas collapsed — so a hand-typed or CSSOM-reserialized
|
|
94
|
+
stack matches a curated one regardless of cosmetic differences. */
|
|
95
|
+
declare function fontFamilyKey(raw: string): string;
|
|
96
|
+
/** Whether `value` is exactly one of the stacks, give or take quotes, case
|
|
97
|
+
and spacing. */
|
|
98
|
+
declare function isEmailFontStack(value: unknown): value is string;
|
|
99
|
+
/**
|
|
100
|
+
* The font a `font-family` value is. One of the stacks is itself; a stack of
|
|
101
|
+
* someone else's is the font it falls back to — the first of its families a
|
|
102
|
+
* stack names, its generic last: a builder's web font (`Ubuntu, Helvetica,
|
|
103
|
+
* Arial, sans-serif`) is Sans Serif, the face a client without that font
|
|
104
|
+
* draws anyway, and summernote's `'Comic Sans MS'` is Comic Sans MS.
|
|
105
|
+
* Nothing to fall back to, no font.
|
|
106
|
+
*/
|
|
107
|
+
declare function matchEmailFont(raw: string | null | undefined): EmailFont | null;
|
|
108
|
+
|
|
109
|
+
export { allowedFontSizes, emailDefaultFont, emailFontFaces, emailFontFamilies, emailFontSizes, fontClients, fontFamilyKey, isEmailFontStack, matchEmailFont };
|
|
110
|
+
export type { EmailFont, FontClient, FontSize };
|
|
@@ -4,6 +4,8 @@ import { InputRule } from 'prosemirror-inputrules';
|
|
|
4
4
|
import * as _h_k_dev_angular_email_editor from '@h-k-dev/angular-email-editor';
|
|
5
5
|
import { AddressRules } from '@h-k-dev/angular-email-editor/address';
|
|
6
6
|
import { EditorView } from 'prosemirror-view';
|
|
7
|
+
import { FontSize } from '@h-k-dev/angular-email-editor/fonts';
|
|
8
|
+
export * from '@h-k-dev/angular-email-editor/fonts';
|
|
7
9
|
import * as i0 from '@angular/core';
|
|
8
10
|
|
|
9
11
|
/** Passed to every extension factory once the schema has been built. */
|
|
@@ -2233,8 +2235,12 @@ declare const InlineAtomSelection: _h_k_dev_angular_email_editor.FunctionalExten
|
|
|
2233
2235
|
40% of the container, in every client and in the editor alike). The
|
|
2234
2236
|
offset serializes as `margin-left` — inline margins on tables are what
|
|
2235
2237
|
Outlook's own Word composer emits, so its engine reads them, and a client
|
|
2236
|
-
that strips them degrades the table gracefully to left-aligned.
|
|
2237
|
-
|
|
2238
|
+
that strips them degrades the table gracefully to left-aligned.
|
|
2239
|
+
`spacing` (px, or null for none) is the room above and below the table —
|
|
2240
|
+
`margin-top`/`margin-bottom`, block only, never the sides: real space
|
|
2241
|
+
between the table and the lines of text around it, which a client that
|
|
2242
|
+
strips it degrades to a table flush against its neighbours. */
|
|
2243
|
+
declare const tableStyle: (width: number, offset: number, spacing?: number | null) => string;
|
|
2238
2244
|
/** How a cell's content sits across its width. The same three the rest of the
|
|
2239
2245
|
editor aligns by (a paragraph's `align`), so one set of buttons drives
|
|
2240
2246
|
both — and `left` is the default, which canonicalizes to `null` and
|
|
@@ -2260,13 +2266,31 @@ declare function parsePadding(dom: HTMLElement): string | null;
|
|
|
2260
2266
|
`<td>` is the bulletproof border in email — Outlook's Word engine renders
|
|
2261
2267
|
it), with `border-collapse` on the table keeping the grid single-lined. */
|
|
2262
2268
|
declare const TABLE_BORDER_COLOR = "rgb(208, 215, 229)";
|
|
2263
|
-
/** The
|
|
2264
|
-
the rendered email is readable
|
|
2265
|
-
|
|
2266
|
-
table td` rule): a bordered and a plain table feel identical while
|
|
2267
|
-
composing; only what the recipient gets differs — the preset ships its
|
|
2268
|
-
padding, the plain table ships none unless authored. */
|
|
2269
|
+
/** The *real* cell padding a bordered or borderless table ships —
|
|
2270
|
+
Excel-style breathing room, so the rendered email is readable. A layout
|
|
2271
|
+
table ships none unless authored, and is drawn flush in the editor too. */
|
|
2269
2272
|
declare const TABLE_CELL_PADDING = "8px 12px";
|
|
2273
|
+
/** The room a bordered or borderless table keeps above and below itself, in
|
|
2274
|
+
px — real (`margin-top`/`margin-bottom` on the table, see `tableStyle`),
|
|
2275
|
+
so the email sets the table off from the text around it exactly as the
|
|
2276
|
+
editor does. Block only: the sides stay on the text column. */
|
|
2277
|
+
declare const TABLE_BLOCK_SPACING = 16;
|
|
2278
|
+
/**
|
|
2279
|
+
* The three tables the editor inserts — drawn in the editor exactly as the
|
|
2280
|
+
* email draws them:
|
|
2281
|
+
* - `bordered` — the default: a grid line on every cell
|
|
2282
|
+
* (`TABLE_BORDER_COLOR`), real cell padding (`TABLE_CELL_PADDING`) and
|
|
2283
|
+
* real room above and below the table (`TABLE_BLOCK_SPACING`);
|
|
2284
|
+
* - `borderless` — the same real padding and room, no lines;
|
|
2285
|
+
* - `layout` — none of it: the table sits flush against its neighbours and
|
|
2286
|
+
* its content flush in its cells, in the editor and the email alike. For
|
|
2287
|
+
* arranging content side by side, where the author owns every pixel.
|
|
2288
|
+
*
|
|
2289
|
+
* Not a node attr: the kind is just the cells' `border` and `padding` and
|
|
2290
|
+
* the table's `spacing`, which is all the email carries, so a parsed table
|
|
2291
|
+
* needs no hint to come back as the kind it was inserted as.
|
|
2292
|
+
*/
|
|
2293
|
+
type TableKind = 'bordered' | 'borderless' | 'layout';
|
|
2270
2294
|
/** Canonical percentage: one decimal at most, no trailing zero (25%, 33.3%). */
|
|
2271
2295
|
declare const formatPct: (n: number) => string;
|
|
2272
2296
|
/** No column below 10%: at 320px that is ~32px — the width where a column
|
|
@@ -2424,6 +2448,11 @@ declare const Column: _h_k_dev_angular_email_editor.NodeExtension;
|
|
|
2424
2448
|
/** The column container: a plain `<div>` whose direct children are column
|
|
2425
2449
|
divs. The child check discriminates it from an ordinary paragraph div. */
|
|
2426
2450
|
declare const Columns: _h_k_dev_angular_email_editor.NodeExtension;
|
|
2451
|
+
/** How many empty lines a fresh column starts with. Two, not one: the block
|
|
2452
|
+
has no padding of the editor's own, so a one-line column is a sliver the
|
|
2453
|
+
eye reads as a stray rule rather than a place to write — two lines give
|
|
2454
|
+
it the shape of a column, the way /table starts with rows to fill. */
|
|
2455
|
+
declare const COLUMN_STARTING_LINES = 2;
|
|
2427
2456
|
/** Exposed for the app to detect when the cursor is inside a columns block. */
|
|
2428
2457
|
declare function findColumnsContext(state: EditorState): {
|
|
2429
2458
|
pos: number;
|
|
@@ -2444,6 +2473,14 @@ declare const addColumn: Command;
|
|
|
2444
2473
|
declare const removeColumn: Command;
|
|
2445
2474
|
/** Deletes the whole columns block (the table's `deleteTable` sibling). */
|
|
2446
2475
|
declare const deleteColumns: Command;
|
|
2476
|
+
/** The `+` pill on the block's right flank: an empty column after the last,
|
|
2477
|
+
up to {@link MAX_COLUMNS}; every cap re-splits evenly. Addressed by the
|
|
2478
|
+
block's position, not the caret — the pill acts on the block it is on. */
|
|
2479
|
+
declare function appendColumn(pos: number): Command;
|
|
2480
|
+
/** The `−` pill on the block's left flank: the last column goes — the `+`'s
|
|
2481
|
+
exact inverse — and the rest re-split evenly. Refuses on the last one
|
|
2482
|
+
left: the block itself goes by selecting it whole and pressing Delete. */
|
|
2483
|
+
declare function removeLastColumn(pos: number): Command;
|
|
2447
2484
|
/** Sets (or clears) the `background` of the `column` the cursor is in. */
|
|
2448
2485
|
declare function setColumnBackground(color: string | null): Command;
|
|
2449
2486
|
/**
|
|
@@ -3199,19 +3236,31 @@ interface MenuAnchor {
|
|
|
3199
3236
|
top: number;
|
|
3200
3237
|
bottom: number;
|
|
3201
3238
|
}
|
|
3239
|
+
/** Where a floating menu goes, in its scroll container's content coordinates. */
|
|
3240
|
+
interface MenuPlacement {
|
|
3241
|
+
left: number;
|
|
3242
|
+
top: number;
|
|
3243
|
+
/** The most the box may be tall there: set only when it fits on neither
|
|
3244
|
+
side of the line at full height, so it is shrunk to the side with more
|
|
3245
|
+
room. Null when it fits as it is. */
|
|
3246
|
+
maxHeight: number | null;
|
|
3247
|
+
}
|
|
3202
3248
|
/**
|
|
3203
3249
|
* Where a floating menu goes for an anchor line: under it, clamped to its
|
|
3204
3250
|
* scroll container, flipped above when below would overflow the visible
|
|
3205
|
-
* area.
|
|
3206
|
-
*
|
|
3207
|
-
*
|
|
3251
|
+
* area. When it fits on neither side it goes to the side with more room and
|
|
3252
|
+
* says how tall it may be there (`maxHeight`) — flip, then size, as Floating
|
|
3253
|
+
* UI does — so the container never clips it.
|
|
3254
|
+
*
|
|
3255
|
+
* Read-only — it measures and returns, and the caller writes `left` / `top`
|
|
3256
|
+
* (and the height cap) in its own write phase, so measuring never follows a
|
|
3257
|
+
* write in the same task. The element must be `position: absolute` inside a
|
|
3208
3258
|
* `position: relative` scroll container; its size is read as rendered, so
|
|
3209
|
-
* call it after its contents are in.
|
|
3259
|
+
* call it after its contents are in. A caller that caps the box itself
|
|
3260
|
+
* passes `height`, the box's height without that cap — a box measured at the
|
|
3261
|
+
* last cap would choose its side by the old room, not its own size.
|
|
3210
3262
|
*/
|
|
3211
|
-
declare function measureMenuPlacement(anchor: MenuAnchor, element: HTMLElement, offset: number):
|
|
3212
|
-
left: number;
|
|
3213
|
-
top: number;
|
|
3214
|
-
} | null;
|
|
3263
|
+
declare function measureMenuPlacement(anchor: MenuAnchor, element: HTMLElement, offset: number, height?: number): MenuPlacement | null;
|
|
3215
3264
|
|
|
3216
3265
|
/**
|
|
3217
3266
|
* An *expression dialect*: what the `{{…}}` tokens mean. The merge-tag mark
|
|
@@ -3413,52 +3462,21 @@ type TextTransform = 'uppercase' | 'lowercase' | 'capitalize';
|
|
|
3413
3462
|
/** A `text-transform` the mark takes: the three cases; `none` and the
|
|
3414
3463
|
rest are the words as written. */
|
|
3415
3464
|
declare function parseTextTransform(raw: string | null | undefined): TextTransform | null;
|
|
3416
|
-
|
|
3417
|
-
type FontSize = (typeof ALLOWED_SIZES)[number];
|
|
3465
|
+
|
|
3418
3466
|
declare function isSafeFontSize(value: unknown): value is FontSize;
|
|
3419
3467
|
/**
|
|
3420
3468
|
* Parse a font-size value from the DOM into one of our allowed sizes.
|
|
3421
3469
|
* Handles px strings ("16px"), plain numbers, and rejects everything else.
|
|
3422
3470
|
*/
|
|
3423
3471
|
declare function parseFontSize(raw: string | null | undefined): FontSize | null;
|
|
3424
|
-
/**
|
|
3425
|
-
* The sizes the toolbar picker offers: the phone-safe subset (≥14px). Below
|
|
3426
|
-
* ~13px iOS auto-inflates text and reflows the layout (responsiveness ledger,
|
|
3427
|
-
* principle 8), so we don't *offer* those — but {@link parseFontSize} still
|
|
3428
|
-
* accepts the full {@link ALLOWED_SIZES} range, because a hand-typed size in
|
|
3429
|
-
* the HTML source pane is the author's own responsibility, exactly like a
|
|
3430
|
-
* hand-typed hex colour.
|
|
3431
|
-
*/
|
|
3432
|
-
declare const emailFontSizes: FontSize[];
|
|
3433
|
-
/** A curated, email-safe font stack the toolbar offers. */
|
|
3434
|
-
interface EmailFont {
|
|
3435
|
-
/** Toolbar label. */
|
|
3436
|
-
name: string;
|
|
3437
|
-
/** The exact `font-family` value emitted — the canonical stored form. */
|
|
3438
|
-
stack: string;
|
|
3439
|
-
}
|
|
3440
|
-
/**
|
|
3441
|
-
* The curated font stacks — the picker offers only these, no free-form fonts
|
|
3442
|
-
* (principle 7: if a mainstream client can't render it, we don't emit it).
|
|
3443
|
-
*
|
|
3444
|
-
* Deliberately built from *single-word* family identifiers plus a generic
|
|
3445
|
-
* fallback: a stack like `Courier New` would round-trip through the CSSOM
|
|
3446
|
-
* (serialization builds real elements and re-reads them) and come back quoted
|
|
3447
|
-
* as `"Courier New"` in Chrome but unquoted in jsdom — a byte-instability that
|
|
3448
|
-
* breaks canonical determinism and makes tests disagree with the runtime (the
|
|
3449
|
-
* same trap the longhand/`rgb()` rule guards against). Bare identifiers and
|
|
3450
|
-
* generic keywords serialize identically everywhere.
|
|
3451
|
-
*/
|
|
3452
|
-
declare const emailFontFamilies: EmailFont[];
|
|
3472
|
+
/** Whether `value` is one of the curated stacks (`@h-k-dev/angular-email-editor/fonts`). */
|
|
3453
3473
|
declare function isSafeFontFamily(value: unknown): value is string;
|
|
3454
3474
|
/**
|
|
3455
|
-
* Parse a font-family value from the DOM into one of
|
|
3475
|
+
* Parse a font-family value from the DOM into one of the curated stacks,
|
|
3456
3476
|
* returning the *canonical* stack string (so a cosmetically different but
|
|
3457
3477
|
* equivalent input normalises to the exact bytes we emit). A stack of
|
|
3458
|
-
* someone else's reads as the curated one it falls back to
|
|
3459
|
-
*
|
|
3460
|
-
* font (`Ubuntu, Helvetica, Arial, sans-serif`) is Sans-serif, the face a
|
|
3461
|
-
* client without that font draws anyway. Nothing to fall back to, no font.
|
|
3478
|
+
* someone else's reads as the curated one it falls back to
|
|
3479
|
+
* ({@link matchEmailFont}). Nothing to fall back to, no font.
|
|
3462
3480
|
*/
|
|
3463
3481
|
declare function parseFontFamily(raw: string | null | undefined): string | null;
|
|
3464
3482
|
/**
|
|
@@ -3966,5 +3984,5 @@ declare class InlineImages extends InlineImageStore {
|
|
|
3966
3984
|
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
3967
3985
|
}
|
|
3968
3986
|
|
|
3969
|
-
export { AUTHORED_ATTR, AUTHORED_SPEC_KEY, AUTHORED_STYLE_DEFAULTS_KEY, AuthoredEnter, BLOCKQUOTE_STYLE, BLOCK_MENU_FOCUS_KEY, BUTTON_FILL, BUTTON_STYLE, BaseKeymap, Blockquote, Bold, BulletList, Button, CARET_ROOM, CLIENT_LABELS, COMMENT_TAG, CONTENT_ATTRS, CSS_SUPPORT, ClearFormatting, CodeLine, CodeLineIndent, Column, ColumnResize, Columns, ColumnsResize, DOCUMENT_CLASS, DOCUMENT_TAGS, DUAL_BACKGROUND_MIN_RATIO, DUAL_CONTRAST_DARK, DUAL_CONTRAST_LIGHT, DUAL_CONTRAST_MIN_RATIO, Divider, Document$1 as Document, DocumentStyles, EMAIL_ATTRIBUTES, EMAIL_CSS_PROPERTIES, EMAIL_SAFE_STYLE_PROPERTIES, EMAIL_SAFE_TAGS, EMAIL_TAGS, EMAIL_TAG_ATTRIBUTES, EmailParagraph, FILE_CHOOSER_POINTER_WAIT, FILL_TEXT_COLOR, FILL_TEXT_COLOR_LIGHT, FILL_TEXT_COLOR_RGB, FOLD_WIDTH, FORMAT_WIDTH, GMAIL_CLIP_BYTES, GUIDES_ACTIVE_CLASS, GUIDES_PEEK_CLASS, GUIDES_PEEK_DELAY_MS, Gapcursor, HEADING_SIZES, HardBreak, Heading, History, HtmlComment, HtmlCommentInline, HtmlElement, HtmlInline, HtmlLanguage, HtmlRaw, HtmlTextElement, HtmlVoid, HtmlVoidBlock, IMPORT_VIEWPORT_WIDTH, INDENT_MAX, INDENT_STEP, INLINE_TAGS, INLINE_VOID_TAGS, IN_SELECTION_CLASS, Image, InlineAtomSelection, InlineImageStore, InlineImages, Italic, LIST_STYLE, LayoutGuides, Link, ListItem, MAX_COLUMNS, MAX_IMAGE_WIDTH, MAX_MERGE_TAG_LENGTH, MAX_UNBROKEN_RUN, MIN_COLUMN_CAP, MIN_COLUMN_PCT, MIN_FONT_SIZE, MIN_IMAGE_WIDTH, MIN_TABLE_PCT, MJML_WORLDLY_HTML, MergeTag, NoTextDrag, OrderedList, PARSE_SCOPE_KEY, PLACEHOLDER_WIDTH, Paragraph, PasteHygiene, QuotedHistory, REFUSED_TAGS, RENDERING_CLIENTS, SECTION_CONTENT_MAX, SECTION_INSET, SECTION_PADDING, STACK_CLASS, STACK_RULE, Section, SplitKeepingMarks, TABLE_BORDER_COLOR, TABLE_CELL_PADDING, TABLE_SECTION_TAGS, TYPING_REST, Table, TableCell, TableRow, Text, TextStyle, UNSET_BUTTON_HREF, Underline, VOID_TAGS, acceptProposal, addColumn, addColumnAtEnd, addRowAtEnd, analyzeAngularExpression, angularDialect, angularRequiredFields, applyAuthoredAttributes, applyEmailVocabulary, attributeString, authoredAttribute, authoredMarkupOf, authoredViewAttributes, bareButtons, buttonStyle, canonicalHead, canonicalMergeTagInner, canonicalRender, caretCellPos, caretInsideMergeTag, claimedImageFiles, clearCells, clientList, columnCaps, columnWidths, completionContextAt, containerStyle, contrastRatio, correctStoredMistakes, createAngularExpressions, createBlockMenu, createBubbleMenu, createButtonEdit, createContentProposal, createContentStream, createDOMParser, createEditor, createHtmlAutocomplete, createHtmlLanguage, createImageDrag, createInlineImages, createMergeTagResolution, createOffsetMapper, createQuotedHistory, createSchema, createSendIntent, createSourceMarks, createSuggestionMenu, createTableHandles, declarationProperty, declaredBackground, decodeDataUrl, defaultBubbleShouldShow, defineExtension, defineMark, defineNode, deleteColumns, deleteFullySelected, discardProposal, distributePadding, docText, dropDeadOfficeClasses, dropHidden, dropMediaQueries, dropZeroSizedWhitespace, duplicateColumn, duplicateRow, editQuotedHistory, effectiveWidths, emailBackgroundPalette, emailDocument, emailExtensions,
|
|
3970
|
-
export type { AngularExpressionsOptions, AngularNode, AttributePairs, AuthoredElement, AuthoredMarkup, AutocompleteItem, AutocompleteOptions, AutocompleteState, BlockMenuOptions, BlockMenuState, BubbleMenuOptions, BubbleMenuState, ButtonEditOptions, ButtonEditTarget, CellAlignment, CellVerticalAlignment, ClientRenderingOptions, CommandFactory, CompletionContext, ComposeSeedLabels, ComposeSeedOptions, ContentProposalOptions, ContentProposalState, ContentStreamOptions, ContentStreamRange, ContentStreamReveal, ContentStreamRun, ContentStreamState, ContentStreamWriter, CssSupportIssue, DocumentEnvelope, Editor, EditorAction, EditorOptions, EmailClient, EmailDocumentOptions,
|
|
3987
|
+
export { AUTHORED_ATTR, AUTHORED_SPEC_KEY, AUTHORED_STYLE_DEFAULTS_KEY, AuthoredEnter, BLOCKQUOTE_STYLE, BLOCK_MENU_FOCUS_KEY, BUTTON_FILL, BUTTON_STYLE, BaseKeymap, Blockquote, Bold, BulletList, Button, CARET_ROOM, CLIENT_LABELS, COLUMN_STARTING_LINES, COMMENT_TAG, CONTENT_ATTRS, CSS_SUPPORT, ClearFormatting, CodeLine, CodeLineIndent, Column, ColumnResize, Columns, ColumnsResize, DOCUMENT_CLASS, DOCUMENT_TAGS, DUAL_BACKGROUND_MIN_RATIO, DUAL_CONTRAST_DARK, DUAL_CONTRAST_LIGHT, DUAL_CONTRAST_MIN_RATIO, Divider, Document$1 as Document, DocumentStyles, EMAIL_ATTRIBUTES, EMAIL_CSS_PROPERTIES, EMAIL_SAFE_STYLE_PROPERTIES, EMAIL_SAFE_TAGS, EMAIL_TAGS, EMAIL_TAG_ATTRIBUTES, EmailParagraph, FILE_CHOOSER_POINTER_WAIT, FILL_TEXT_COLOR, FILL_TEXT_COLOR_LIGHT, FILL_TEXT_COLOR_RGB, FOLD_WIDTH, FORMAT_WIDTH, GMAIL_CLIP_BYTES, GUIDES_ACTIVE_CLASS, GUIDES_PEEK_CLASS, GUIDES_PEEK_DELAY_MS, Gapcursor, HEADING_SIZES, HardBreak, Heading, History, HtmlComment, HtmlCommentInline, HtmlElement, HtmlInline, HtmlLanguage, HtmlRaw, HtmlTextElement, HtmlVoid, HtmlVoidBlock, IMPORT_VIEWPORT_WIDTH, INDENT_MAX, INDENT_STEP, INLINE_TAGS, INLINE_VOID_TAGS, IN_SELECTION_CLASS, Image, InlineAtomSelection, InlineImageStore, InlineImages, Italic, LIST_STYLE, LayoutGuides, Link, ListItem, MAX_COLUMNS, MAX_IMAGE_WIDTH, MAX_MERGE_TAG_LENGTH, MAX_UNBROKEN_RUN, MIN_COLUMN_CAP, MIN_COLUMN_PCT, MIN_FONT_SIZE, MIN_IMAGE_WIDTH, MIN_TABLE_PCT, MJML_WORLDLY_HTML, MergeTag, NoTextDrag, OrderedList, PARSE_SCOPE_KEY, PLACEHOLDER_WIDTH, Paragraph, PasteHygiene, QuotedHistory, REFUSED_TAGS, RENDERING_CLIENTS, SECTION_CONTENT_MAX, SECTION_INSET, SECTION_PADDING, STACK_CLASS, STACK_RULE, Section, SplitKeepingMarks, TABLE_BLOCK_SPACING, TABLE_BORDER_COLOR, TABLE_CELL_PADDING, TABLE_SECTION_TAGS, TYPING_REST, Table, TableCell, TableRow, Text, TextStyle, UNSET_BUTTON_HREF, Underline, VOID_TAGS, acceptProposal, addColumn, addColumnAtEnd, addRowAtEnd, analyzeAngularExpression, angularDialect, angularRequiredFields, appendColumn, applyAuthoredAttributes, applyEmailVocabulary, attributeString, authoredAttribute, authoredMarkupOf, authoredViewAttributes, bareButtons, buttonStyle, canonicalHead, canonicalMergeTagInner, canonicalRender, caretCellPos, caretInsideMergeTag, claimedImageFiles, clearCells, clientList, columnCaps, columnWidths, completionContextAt, containerStyle, contrastRatio, correctStoredMistakes, createAngularExpressions, createBlockMenu, createBubbleMenu, createButtonEdit, createContentProposal, createContentStream, createDOMParser, createEditor, createHtmlAutocomplete, createHtmlLanguage, createImageDrag, createInlineImages, createMergeTagResolution, createOffsetMapper, createQuotedHistory, createSchema, createSendIntent, createSourceMarks, createSuggestionMenu, createTableHandles, declarationProperty, declaredBackground, decodeDataUrl, defaultBubbleShouldShow, defineExtension, defineMark, defineNode, deleteColumns, deleteFullySelected, discardProposal, distributePadding, docText, dropDeadOfficeClasses, dropHidden, dropMediaQueries, dropZeroSizedWhitespace, duplicateColumn, duplicateRow, editQuotedHistory, effectiveWidths, emailBackgroundPalette, emailDocument, emailExtensions, emailPlainText, emailSizeBudget, emailTextPalette, embedsAsLinks, entitySpans, escapeAttribute, escapeText, expressionDialect, expressionDialectKey, extensionActions, extensionSuggestions, fillTextColor, filledPlaceholderAttrs, filterEmailStyle, findColumnContext, findColumnsContext, findCssIssues, findListDepth, findSectionContext, findTableContext, fitImageWidth, foldHTML, formatHTML, formatPct, forwardDocument, forwardQuote, hasBlockChildren, hasDocumentEnvelope, headingStyle, holdsBlock, holdsColumn, hrefProblem, htmlSourceExtensions, imageDropTarget, importLoss, importedDocument, inheritTextStyles, inheritedMarkup, inlineBootstrapTableBorders, inlineImageCids, inlineImageRegistry, inlineImagesKey, inlineStyles, insertHTML, insertMergeTag, isActionEnabled, isBlock, isBlockLevel, isBlockish, isBooleanAttribute, isEmailAttribute, isEmailCssProperty, isEmailTag, isFillTextColor, isInlineAtom, isMarkActive, isMergeTagExpression, isMergeTagPath, isNodeActive, isPadded, isProposing, isQuotedHistoryFolded, isSafeColor, isSafeFontFamily, isSafeFontSize, isSafeUrl, isSectionImageUrl, isStreaming, italicStarInputRegex, italicStarPasteRegex, italicUnderscoreInputRegex, italicUnderscorePasteRegex, keepGmailRules, layoutBlockAt, linkClickPlugin, linkPastePlugin, linkRangeAt, lintHTML, lowerInlinesAroundBlocks, markAttrsOf, markStackingColumns, marksAcrossBreak, materializeComments, measureMenuPlacement, mediaMatches, mergeTagAt, mergeTagExpressions, mergeTagFields, mergeTagRanges, mergeTagResolutionPending, moveColumn, moveRow, normalizeCommentText, normalizeCss, normalizeHref, normalizeMergeTagText, noteOwnWidths, openFileChooser, openTag, openTags, outlookColumns, paddingOf, parseAngularExpression, parseDocument, parseFontFamily, parseFontSize, parseHTML, parsePadding, parseRules, parseTextTransform, passesDualBackground, passesDualContrast, preserveExtensions, preservedAttributes, promoteInlineImages, promoteMergeTags, proposalRange, proposeContent, quotedHistory, readEnvelope, readImageFile, realizeComments, relativeLuminance, removeColumn, removeLastColumn, removeQuotedHistory, renderForClient, renderedPath, repairLinkSchemes, repairTables, replaceHTML, replyDocument, replyEnvelope, replyQuote, reviseProposal, rewriteInlineImageSources, richTextExtensions, ruleForScope, ruleScope, sanitizePastedHTML, scanHTML, scanMergeTags, scopeOf, scopedDocumentCss, selectColumn, selectRow, selectedButton, selectedImage, selectedImageAlt, selectedMarkAtom, selectionInsideMergeTag, serializeDocument, serializeToHTML, setCellBackground, setColumnBackground, setColumnBoundary, setColumnsBoundary, setQuotedHistory, setSectionBackground, setSectionImage, setTableBox, setTableWidth, soleInlineAtom, splitDeclarations, splitListItemKeepMarks, starInputRegex, starPasteRegex, stopProposal, streamContent, streamedRange, streamingRange, suggestionSectionTitles, tableStyle, textOffsetAt, textRegions, toEmailSafeColor, toInboundMessage, toggleList, trimInlineBoxes, underscoreInputRegex, underscorePasteRegex, unwrapLayoutTables, unwrapOfficeParagraphMarks, verbatimElement, videoPage, watchMenuScroll, withAttribute, withAuthoredMarkup, withQuoted, withQuotedHistory, withStyleDeclaration, withoutAttribute, withoutStyleDeclaration };
|
|
3988
|
+
export type { AngularExpressionsOptions, AngularNode, AttributePairs, AuthoredElement, AuthoredMarkup, AutocompleteItem, AutocompleteOptions, AutocompleteState, BlockMenuOptions, BlockMenuState, BubbleMenuOptions, BubbleMenuState, ButtonEditOptions, ButtonEditTarget, CellAlignment, CellVerticalAlignment, ClientRenderingOptions, CommandFactory, CompletionContext, ComposeSeedLabels, ComposeSeedOptions, ContentProposalOptions, ContentProposalState, ContentStreamOptions, ContentStreamRange, ContentStreamReveal, ContentStreamRun, ContentStreamState, ContentStreamWriter, CssSupportIssue, DocumentEnvelope, Editor, EditorAction, EditorOptions, EmailClient, EmailDocumentOptions, ExpressionDiagnostic, ExpressionDialect, ExpressionIssue, Extension, ExtensionContext, FunctionalExtension, HrefProblem, HtmlDiagnostic, HtmlLanguageOptions, HtmlScan, HtmlTag, HtmlToken, HtmlTokenType, ImageAttrs, ImageDragOptions, ImageDropTarget, ImportLoss, InboundMessage, InlineAtomAt, InlineImage, InlineImageRegistry, InlineImageStoreOptions, LayoutBlock, LayoutBlockType, LinkAttrs, LinkRange, MarkExtension, MenuAnchor, MenuPlacement, MenuScroll, MenuScrollApi, MergeTagRange, MergeTagResolutionOptions, MergeTagResolutionReport, NodeExtension, PaletteColor, ParagraphAlignment, ParseMode, ParseOptions, ParsedAddressLike, ParsedEmailLike, PromotedInlineImages, QuotedHistoryLabel, QuotedHistoryLabels, QuotedHistoryOptions, RenderingClient, ReplyEnvelope, ReplyEnvelopeOptions, ReplyKind, RuleScope, SendIntent, SendIntentOptions, SizeBudget, SourceMarksOptions, SourceOptions, StreamContentOptions, SuggestionAllowProps, SuggestionCommandItem, SuggestionGroup, SuggestionItem, SuggestionItemLabel, SuggestionMenuOptions, SuggestionMenuState, SuggestionPage, SuggestionRect, SuggestionRequest, SuggestionSource, SuggestionTrigger, TableHandleTarget, TableHandlesOptions, TableKind, TextTransform };
|