@h-k-dev/angular-email-editor 0.0.2 → 0.0.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@h-k-dev/angular-email-editor",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
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. */
@@ -2595,9 +2597,20 @@ interface BubbleMenuState {
2595
2597
  interface BubbleMenuOptions {
2596
2598
  /** How long a selection stands before the menu *opens* over it (150ms):
2597
2599
  a drag's or a Shift-Arrow's intermediate ranges never pop a menu. A
2598
- menu that is already open follows the selection at once — see the
2599
- plugin view. */
2600
+ menu that is already open answers a selection change at once — its
2601
+ kind, and with `anchor: 'selection'` its box — see the plugin view. */
2600
2602
  updateDelay?: number;
2603
+ /** Where the open menu stands as the selection changes under it:
2604
+ - `'first'` (the default): where it opened — over the selection as it
2605
+ stood then, an image's or a button's box when that was it. Shift-
2606
+ Arrow, a wider drag of the handles, a mark applied: the menu stays
2607
+ put, so the tools under the pointer never slide away from it. Only
2608
+ a scroll that `scroll: 'follow'` answers measures it again — the
2609
+ same range, where it now is.
2610
+ - `'selection'`: over the selection of the moment, reported afresh
2611
+ with every change.
2612
+ The menu's `kind` follows the selection either way. */
2613
+ anchor?: 'first' | 'selection';
2601
2614
  onStateChange: (state: BubbleMenuState) => void;
2602
2615
  shouldShow?: (state: EditorState) => boolean;
2603
2616
  /** What the menu does when the editor scrolls under it — closes, by
@@ -3402,52 +3415,21 @@ type TextTransform = 'uppercase' | 'lowercase' | 'capitalize';
3402
3415
  /** A `text-transform` the mark takes: the three cases; `none` and the
3403
3416
  rest are the words as written. */
3404
3417
  declare function parseTextTransform(raw: string | null | undefined): TextTransform | null;
3405
- declare const ALLOWED_SIZES: readonly [10, 12, 14, 16, 18, 24, 32];
3406
- type FontSize = (typeof ALLOWED_SIZES)[number];
3418
+
3407
3419
  declare function isSafeFontSize(value: unknown): value is FontSize;
3408
3420
  /**
3409
3421
  * Parse a font-size value from the DOM into one of our allowed sizes.
3410
3422
  * Handles px strings ("16px"), plain numbers, and rejects everything else.
3411
3423
  */
3412
3424
  declare function parseFontSize(raw: string | null | undefined): FontSize | null;
3413
- /**
3414
- * The sizes the toolbar picker offers: the phone-safe subset (≥14px). Below
3415
- * ~13px iOS auto-inflates text and reflows the layout (responsiveness ledger,
3416
- * principle 8), so we don't *offer* those — but {@link parseFontSize} still
3417
- * accepts the full {@link ALLOWED_SIZES} range, because a hand-typed size in
3418
- * the HTML source pane is the author's own responsibility, exactly like a
3419
- * hand-typed hex colour.
3420
- */
3421
- declare const emailFontSizes: FontSize[];
3422
- /** A curated, email-safe font stack the toolbar offers. */
3423
- interface EmailFont {
3424
- /** Toolbar label. */
3425
- name: string;
3426
- /** The exact `font-family` value emitted — the canonical stored form. */
3427
- stack: string;
3428
- }
3429
- /**
3430
- * The curated font stacks — the picker offers only these, no free-form fonts
3431
- * (principle 7: if a mainstream client can't render it, we don't emit it).
3432
- *
3433
- * Deliberately built from *single-word* family identifiers plus a generic
3434
- * fallback: a stack like `Courier New` would round-trip through the CSSOM
3435
- * (serialization builds real elements and re-reads them) and come back quoted
3436
- * as `"Courier New"` in Chrome but unquoted in jsdom — a byte-instability that
3437
- * breaks canonical determinism and makes tests disagree with the runtime (the
3438
- * same trap the longhand/`rgb()` rule guards against). Bare identifiers and
3439
- * generic keywords serialize identically everywhere.
3440
- */
3441
- declare const emailFontFamilies: EmailFont[];
3425
+ /** Whether `value` is one of the curated stacks (`@h-k-dev/angular-email-editor/fonts`). */
3442
3426
  declare function isSafeFontFamily(value: unknown): value is string;
3443
3427
  /**
3444
- * Parse a font-family value from the DOM into one of our curated stacks,
3428
+ * Parse a font-family value from the DOM into one of the curated stacks,
3445
3429
  * returning the *canonical* stack string (so a cosmetically different but
3446
3430
  * equivalent input normalises to the exact bytes we emit). A stack of
3447
- * someone else's reads as the curated one it falls back to — the first of
3448
- * its families a curated stack names, its generic last: a builder's web
3449
- * font (`Ubuntu, Helvetica, Arial, sans-serif`) is Sans-serif, the face a
3450
- * client without that font draws anyway. Nothing to fall back to, no font.
3431
+ * someone else's reads as the curated one it falls back to
3432
+ * ({@link matchEmailFont}). Nothing to fall back to, no font.
3451
3433
  */
3452
3434
  declare function parseFontFamily(raw: string | null | undefined): string | null;
3453
3435
  /**
@@ -3955,5 +3937,5 @@ declare class InlineImages extends InlineImageStore {
3955
3937
  static ɵprov: i0.ɵɵInjectableDeclaration<any>;
3956
3938
  }
3957
3939
 
3958
- 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, emailFontFamilies, emailFontSizes, 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, 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 };
3959
- 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, EmailFont, ExpressionDiagnostic, ExpressionDialect, ExpressionIssue, Extension, ExtensionContext, FontSize, FunctionalExtension, HrefProblem, HtmlDiagnostic, HtmlLanguageOptions, HtmlScan, HtmlTag, HtmlToken, HtmlTokenType, ImageAttrs, ImageDragOptions, ImageDropTarget, ImportLoss, InboundMessage, InlineAtomAt, InlineImage, InlineImageRegistry, InlineImageStoreOptions, LayoutBlock, LayoutBlockType, LinkAttrs, LinkRange, MarkExtension, MenuAnchor, 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, TextTransform };
3940
+ 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, 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, 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 };
3941
+ 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, 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, TextTransform };