@flogeez/angular-tiptap-editor 2.4.0 → 3.0.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 +22 -0
- package/README.md +3 -0
- package/fesm2022/flogeez-angular-tiptap-editor.mjs +190 -150
- package/fesm2022/flogeez-angular-tiptap-editor.mjs.map +1 -1
- package/index.d.ts +62 -83
- package/package.json +13 -21
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,28 @@ All notable changes to `@flogeez/angular-tiptap-editor` will be documented in th
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html), with the exception that the major version is specifically aligned with the major version of [Tiptap](https://tiptap.dev).
|
|
7
7
|
|
|
8
|
+
## [3.0.1] - 2026-02-06
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **Link & Underline extensions**: Native `Link` and `Underline` extensions are now utilized directly from `StarterKit` instead of being loaded as separate extensions.
|
|
13
|
+
|
|
14
|
+
## [3.0.0] - 2026-02-05
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- **Upgrade to Tiptap v3**: Full migration from Tiptap v2 to v3, aligning with the latest stable ecosystem.
|
|
19
|
+
- **Consolidated Dependencies**: Transitioned to the unified `@tiptap/extensions` package instead of individual packages, simplifying dependency management and improving performance.
|
|
20
|
+
- **Refined Configuration Hierarchy**: Implemented a more intuitive configuration cascade: **Component Inputs > [config] Object > Global Configuration > Defaults**. Direct inputs now have absolute priority for better DX.
|
|
21
|
+
- **Flexible Height Types**: `height`, `minHeight`, and `maxHeight` inputs now accept both `number` (pixels) and `string` (CSS values like '80vh') interchangeably.
|
|
22
|
+
|
|
23
|
+
### Breaking Changes
|
|
24
|
+
|
|
25
|
+
- **Peer Dependencies**: The library now requires `@tiptap/core`, `@tiptap/pm`, and associated extensions to be at version `^3.0.0`.
|
|
26
|
+
- **Input Defaults**: All optional component inputs (except `content`) now default to `undefined` to allow proper inheritance from global or instance-level configurations.
|
|
27
|
+
- **Removal of Deprecated Aliases**: Definitive removal of legacy exported names (without the `Ate` prefix) that were deprecated in v2.2.0.
|
|
28
|
+
- **Office Paste**: Updated `@intevation/tiptap-extension-office-paste` to `^0.1.2` for Tiptap v3 compatibility.
|
|
29
|
+
|
|
8
30
|
## [2.4.0] - 2026-01-29
|
|
9
31
|
|
|
10
32
|
### Added
|
package/README.md
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Angular Tiptap Editor
|
|
2
2
|
|
|
3
|
+
> [!IMPORTANT]
|
|
4
|
+
> **New Version Available**: v3.0.0 uses Tiptap v3. If you need to stay on Tiptap v2, please use version `^2.4.0`.
|
|
5
|
+
|
|
3
6
|
A modern, customizable rich-text editor for Angular, built with Tiptap.
|
|
4
7
|
|
|
5
8
|
[](https://www.npmjs.com/package/@flogeez/angular-tiptap-editor) [](https://flogeez.github.io/angular-tiptap-editor/) [](https://stackblitz.com/edit/angular-tiptap-editor)
|
|
@@ -3,23 +3,17 @@ import { input, output, ChangeDetectionStrategy, Component, signal, computed, In
|
|
|
3
3
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
4
|
import { Node as Node$1, nodeInputRule, mergeAttributes, Extension, getAttributes, Editor } from '@tiptap/core';
|
|
5
5
|
import StarterKit from '@tiptap/starter-kit';
|
|
6
|
-
import Placeholder from '@tiptap/
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import Highlight from '@tiptap/extension-highlight';
|
|
14
|
-
import TextStyle from '@tiptap/extension-text-style';
|
|
15
|
-
import Color from '@tiptap/extension-color';
|
|
6
|
+
import { Placeholder, CharacterCount } from '@tiptap/extensions';
|
|
7
|
+
import { Superscript } from '@tiptap/extension-superscript';
|
|
8
|
+
import { Subscript } from '@tiptap/extension-subscript';
|
|
9
|
+
import { TextAlign } from '@tiptap/extension-text-align';
|
|
10
|
+
import { Highlight } from '@tiptap/extension-highlight';
|
|
11
|
+
import { TextStyle } from '@tiptap/extension-text-style';
|
|
12
|
+
import { Color } from '@tiptap/extension-color';
|
|
16
13
|
import OfficePaste from '@intevation/tiptap-extension-office-paste';
|
|
17
14
|
import { Plugin, PluginKey, TextSelection, NodeSelection } from '@tiptap/pm/state';
|
|
18
15
|
import { DecorationSet, Decoration } from '@tiptap/pm/view';
|
|
19
|
-
import Table from '@tiptap/extension-table';
|
|
20
|
-
import TableRow from '@tiptap/extension-table-row';
|
|
21
|
-
import TableCell from '@tiptap/extension-table-cell';
|
|
22
|
-
import TableHeader from '@tiptap/extension-table-header';
|
|
16
|
+
import { Table, TableRow, TableHeader, TableCell } from '@tiptap/extension-table';
|
|
23
17
|
import { isObservable, firstValueFrom, Subscription, concat, defer, of, tap } from 'rxjs';
|
|
24
18
|
import { CommonModule } from '@angular/common';
|
|
25
19
|
import tippy, { sticky } from 'tippy.js';
|
|
@@ -1679,7 +1673,8 @@ class AteColorPickerService {
|
|
|
1679
1673
|
let trigger;
|
|
1680
1674
|
if (event && typeof event !== "string") {
|
|
1681
1675
|
const target = event.target;
|
|
1682
|
-
trigger =
|
|
1676
|
+
trigger =
|
|
1677
|
+
event.currentTarget || target?.closest("button") || target;
|
|
1683
1678
|
}
|
|
1684
1679
|
this.open(mode, trigger);
|
|
1685
1680
|
}
|
|
@@ -1883,7 +1878,9 @@ class AteLinkService {
|
|
|
1883
1878
|
if (urlOrEvent && typeof urlOrEvent !== "string") {
|
|
1884
1879
|
const target = urlOrEvent.target;
|
|
1885
1880
|
trigger =
|
|
1886
|
-
urlOrEvent.currentTarget ||
|
|
1881
|
+
urlOrEvent.currentTarget ||
|
|
1882
|
+
target?.closest("button") ||
|
|
1883
|
+
target;
|
|
1887
1884
|
}
|
|
1888
1885
|
// Open the edit menu
|
|
1889
1886
|
this.open(trigger);
|
|
@@ -2375,7 +2372,7 @@ class AteEditorCommandsService {
|
|
|
2375
2372
|
if (!editor) {
|
|
2376
2373
|
return;
|
|
2377
2374
|
}
|
|
2378
|
-
editor.commands.setContent(content, emitUpdate);
|
|
2375
|
+
editor.commands.setContent(content, { emitUpdate });
|
|
2379
2376
|
}
|
|
2380
2377
|
setEditable(editor, editable) {
|
|
2381
2378
|
if (!editor) {
|
|
@@ -3138,7 +3135,7 @@ class AteBaseBubbleMenu {
|
|
|
3138
3135
|
content: this.menuRef().nativeElement,
|
|
3139
3136
|
trigger: "manual",
|
|
3140
3137
|
placement: "top-start",
|
|
3141
|
-
appendTo: () =>
|
|
3138
|
+
appendTo: () => ed?.options?.element || document.body,
|
|
3142
3139
|
interactive: true,
|
|
3143
3140
|
hideOnClick: false,
|
|
3144
3141
|
arrow: false,
|
|
@@ -3151,7 +3148,7 @@ class AteBaseBubbleMenu {
|
|
|
3151
3148
|
{
|
|
3152
3149
|
name: "preventOverflow",
|
|
3153
3150
|
options: {
|
|
3154
|
-
boundary: this.editor().options.element,
|
|
3151
|
+
boundary: this.editor().options.element || document.body,
|
|
3155
3152
|
padding: 8,
|
|
3156
3153
|
},
|
|
3157
3154
|
},
|
|
@@ -3808,7 +3805,9 @@ class AteTableBubbleMenuComponent extends AteBaseBubbleMenu {
|
|
|
3808
3805
|
// 1. Direct ProseMirror approach: get DOM node at position
|
|
3809
3806
|
const dom = ed.view.domAtPos(from).node;
|
|
3810
3807
|
// Find closest table element
|
|
3811
|
-
const tableElement = dom instanceof HTMLElement
|
|
3808
|
+
const tableElement = dom instanceof HTMLElement
|
|
3809
|
+
? dom.closest("table")
|
|
3810
|
+
: dom.parentElement?.closest("table");
|
|
3812
3811
|
if (tableElement) {
|
|
3813
3812
|
return tableElement.getBoundingClientRect();
|
|
3814
3813
|
}
|
|
@@ -4209,7 +4208,7 @@ class AteBaseSubBubbleMenu {
|
|
|
4209
4208
|
content: this.menuRef().nativeElement,
|
|
4210
4209
|
trigger: "manual",
|
|
4211
4210
|
placement: "bottom-start",
|
|
4212
|
-
appendTo: () => ed
|
|
4211
|
+
appendTo: () => ed?.options?.element || document.body,
|
|
4213
4212
|
interactive: true,
|
|
4214
4213
|
arrow: false,
|
|
4215
4214
|
offset: [0, 8],
|
|
@@ -4221,7 +4220,10 @@ class AteBaseSubBubbleMenu {
|
|
|
4221
4220
|
modifiers: [
|
|
4222
4221
|
{
|
|
4223
4222
|
name: "preventOverflow",
|
|
4224
|
-
options: {
|
|
4223
|
+
options: {
|
|
4224
|
+
boundary: ed?.options?.element || document.body,
|
|
4225
|
+
padding: 8,
|
|
4226
|
+
},
|
|
4225
4227
|
},
|
|
4226
4228
|
{
|
|
4227
4229
|
name: "flip",
|
|
@@ -5134,7 +5136,7 @@ class AteSlashCommandsComponent {
|
|
|
5134
5136
|
{
|
|
5135
5137
|
name: "preventOverflow",
|
|
5136
5138
|
options: {
|
|
5137
|
-
boundary: this.editor().options.element,
|
|
5139
|
+
boundary: this.editor().options.element || document.body,
|
|
5138
5140
|
padding: 8,
|
|
5139
5141
|
},
|
|
5140
5142
|
},
|
|
@@ -6180,6 +6182,48 @@ const ATE_DEFAULT_CELL_MENU_CONFIG = {
|
|
|
6180
6182
|
mergeCells: true,
|
|
6181
6183
|
splitCell: true,
|
|
6182
6184
|
};
|
|
6185
|
+
/**
|
|
6186
|
+
* Ultimate default configuration for the Angular Tiptap Editor.
|
|
6187
|
+
* This serves as the 'Level 4' fallback in the configuration hierarchy:
|
|
6188
|
+
* 1. Component Inputs (Le Roi)
|
|
6189
|
+
* 2. Component [config] (Le Prince)
|
|
6190
|
+
* 3. Global provideAteEditor() (Le Duc)
|
|
6191
|
+
* 4. ATE_DEFAULT_CONFIG (Le Peuple)
|
|
6192
|
+
*/
|
|
6193
|
+
const ATE_DEFAULT_CONFIG = {
|
|
6194
|
+
theme: "auto",
|
|
6195
|
+
mode: "classic",
|
|
6196
|
+
height: "auto",
|
|
6197
|
+
minHeight: "200px",
|
|
6198
|
+
maxHeight: "none",
|
|
6199
|
+
fillContainer: false,
|
|
6200
|
+
autofocus: false,
|
|
6201
|
+
editable: true,
|
|
6202
|
+
disabled: false,
|
|
6203
|
+
spellcheck: true,
|
|
6204
|
+
enableOfficePaste: true,
|
|
6205
|
+
showToolbar: true,
|
|
6206
|
+
showFooter: true,
|
|
6207
|
+
showCharacterCount: true,
|
|
6208
|
+
showWordCount: true,
|
|
6209
|
+
showEditToggle: false,
|
|
6210
|
+
showBubbleMenu: true,
|
|
6211
|
+
showImageBubbleMenu: true,
|
|
6212
|
+
showTableMenu: true,
|
|
6213
|
+
showCellMenu: true,
|
|
6214
|
+
enableSlashCommands: true,
|
|
6215
|
+
floatingToolbar: false,
|
|
6216
|
+
toolbar: ATE_DEFAULT_TOOLBAR_CONFIG,
|
|
6217
|
+
bubbleMenu: ATE_DEFAULT_BUBBLE_MENU_CONFIG,
|
|
6218
|
+
imageBubbleMenu: ATE_DEFAULT_IMAGE_BUBBLE_MENU_CONFIG,
|
|
6219
|
+
tableBubbleMenu: ATE_DEFAULT_TABLE_MENU_CONFIG,
|
|
6220
|
+
cellBubbleMenu: ATE_DEFAULT_CELL_MENU_CONFIG,
|
|
6221
|
+
slashCommands: {},
|
|
6222
|
+
tiptapExtensions: [],
|
|
6223
|
+
tiptapOptions: {},
|
|
6224
|
+
stateCalculators: [],
|
|
6225
|
+
angularNodes: [],
|
|
6226
|
+
};
|
|
6183
6227
|
|
|
6184
6228
|
// Slash commands configuration is handled dynamically via slashCommandsConfigComputed
|
|
6185
6229
|
/**
|
|
@@ -6204,48 +6248,48 @@ class AngularTiptapEditorComponent {
|
|
|
6204
6248
|
/** Configuration globale de l'éditeur */
|
|
6205
6249
|
this.config = input({}, ...(ngDevMode ? [{ debugName: "config" }] : []));
|
|
6206
6250
|
this.content = input("", ...(ngDevMode ? [{ debugName: "content" }] : []));
|
|
6207
|
-
this.placeholder = input(
|
|
6208
|
-
this.editable = input(
|
|
6209
|
-
this.disabled = input(
|
|
6210
|
-
this.minHeight = input(
|
|
6251
|
+
this.placeholder = input(undefined, ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
|
|
6252
|
+
this.editable = input(undefined, ...(ngDevMode ? [{ debugName: "editable" }] : []));
|
|
6253
|
+
this.disabled = input(undefined, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
6254
|
+
this.minHeight = input(undefined, ...(ngDevMode ? [{ debugName: "minHeight" }] : []));
|
|
6211
6255
|
this.height = input(undefined, ...(ngDevMode ? [{ debugName: "height" }] : []));
|
|
6212
6256
|
this.maxHeight = input(undefined, ...(ngDevMode ? [{ debugName: "maxHeight" }] : []));
|
|
6213
|
-
this.fillContainer = input(
|
|
6214
|
-
this.showToolbar = input(
|
|
6215
|
-
this.showFooter = input(
|
|
6216
|
-
this.showCharacterCount = input(
|
|
6217
|
-
this.showWordCount = input(
|
|
6257
|
+
this.fillContainer = input(undefined, ...(ngDevMode ? [{ debugName: "fillContainer" }] : []));
|
|
6258
|
+
this.showToolbar = input(undefined, ...(ngDevMode ? [{ debugName: "showToolbar" }] : []));
|
|
6259
|
+
this.showFooter = input(undefined, ...(ngDevMode ? [{ debugName: "showFooter" }] : []));
|
|
6260
|
+
this.showCharacterCount = input(undefined, ...(ngDevMode ? [{ debugName: "showCharacterCount" }] : []));
|
|
6261
|
+
this.showWordCount = input(undefined, ...(ngDevMode ? [{ debugName: "showWordCount" }] : []));
|
|
6218
6262
|
this.maxCharacters = input(undefined, ...(ngDevMode ? [{ debugName: "maxCharacters" }] : []));
|
|
6219
|
-
this.enableOfficePaste = input(
|
|
6220
|
-
this.enableSlashCommands = input(
|
|
6221
|
-
this.slashCommands = input(
|
|
6263
|
+
this.enableOfficePaste = input(undefined, ...(ngDevMode ? [{ debugName: "enableOfficePaste" }] : []));
|
|
6264
|
+
this.enableSlashCommands = input(undefined, ...(ngDevMode ? [{ debugName: "enableSlashCommands" }] : []));
|
|
6265
|
+
this.slashCommands = input(undefined, ...(ngDevMode ? [{ debugName: "slashCommands" }] : []));
|
|
6222
6266
|
this.customSlashCommands = input(undefined, ...(ngDevMode ? [{ debugName: "customSlashCommands" }] : []));
|
|
6223
6267
|
this.locale = input(undefined, ...(ngDevMode ? [{ debugName: "locale" }] : []));
|
|
6224
|
-
this.autofocus = input(
|
|
6225
|
-
this.seamless = input(
|
|
6226
|
-
this.floatingToolbar = input(
|
|
6227
|
-
this.showEditToggle = input(
|
|
6228
|
-
this.spellcheck = input(
|
|
6229
|
-
this.tiptapExtensions = input(
|
|
6230
|
-
this.tiptapOptions = input(
|
|
6268
|
+
this.autofocus = input(undefined, ...(ngDevMode ? [{ debugName: "autofocus" }] : []));
|
|
6269
|
+
this.seamless = input(undefined, ...(ngDevMode ? [{ debugName: "seamless" }] : []));
|
|
6270
|
+
this.floatingToolbar = input(undefined, ...(ngDevMode ? [{ debugName: "floatingToolbar" }] : []));
|
|
6271
|
+
this.showEditToggle = input(undefined, ...(ngDevMode ? [{ debugName: "showEditToggle" }] : []));
|
|
6272
|
+
this.spellcheck = input(undefined, ...(ngDevMode ? [{ debugName: "spellcheck" }] : []));
|
|
6273
|
+
this.tiptapExtensions = input(undefined, ...(ngDevMode ? [{ debugName: "tiptapExtensions" }] : []));
|
|
6274
|
+
this.tiptapOptions = input(undefined, ...(ngDevMode ? [{ debugName: "tiptapOptions" }] : []));
|
|
6231
6275
|
// Nouveaux inputs pour les bubble menus
|
|
6232
|
-
this.showBubbleMenu = input(
|
|
6233
|
-
this.bubbleMenu = input(
|
|
6234
|
-
this.showImageBubbleMenu = input(
|
|
6235
|
-
this.imageBubbleMenu = input(
|
|
6276
|
+
this.showBubbleMenu = input(undefined, ...(ngDevMode ? [{ debugName: "showBubbleMenu" }] : []));
|
|
6277
|
+
this.bubbleMenu = input(undefined, ...(ngDevMode ? [{ debugName: "bubbleMenu" }] : []));
|
|
6278
|
+
this.showImageBubbleMenu = input(undefined, ...(ngDevMode ? [{ debugName: "showImageBubbleMenu" }] : []));
|
|
6279
|
+
this.imageBubbleMenu = input(undefined, ...(ngDevMode ? [{ debugName: "imageBubbleMenu" }] : []));
|
|
6236
6280
|
// Configuration de la toolbar
|
|
6237
|
-
this.toolbar = input(
|
|
6281
|
+
this.toolbar = input(undefined, ...(ngDevMode ? [{ debugName: "toolbar" }] : []));
|
|
6238
6282
|
// Configuration des menus de table
|
|
6239
|
-
this.showTableBubbleMenu = input(
|
|
6240
|
-
this.tableBubbleMenu = input(
|
|
6241
|
-
this.showCellBubbleMenu = input(
|
|
6242
|
-
this.cellBubbleMenu = input(
|
|
6283
|
+
this.showTableBubbleMenu = input(undefined, ...(ngDevMode ? [{ debugName: "showTableBubbleMenu" }] : []));
|
|
6284
|
+
this.tableBubbleMenu = input(undefined, ...(ngDevMode ? [{ debugName: "tableBubbleMenu" }] : []));
|
|
6285
|
+
this.showCellBubbleMenu = input(undefined, ...(ngDevMode ? [{ debugName: "showCellBubbleMenu" }] : []));
|
|
6286
|
+
this.cellBubbleMenu = input(undefined, ...(ngDevMode ? [{ debugName: "cellBubbleMenu" }] : []));
|
|
6243
6287
|
/**
|
|
6244
6288
|
* Additionnal state calculators to extend the reactive editor state.
|
|
6245
6289
|
*/
|
|
6246
|
-
this.stateCalculators = input(
|
|
6290
|
+
this.stateCalculators = input(undefined, ...(ngDevMode ? [{ debugName: "stateCalculators" }] : []));
|
|
6247
6291
|
// Nouveau input pour la configuration de l'upload d'images
|
|
6248
|
-
this.imageUpload = input(
|
|
6292
|
+
this.imageUpload = input(undefined, ...(ngDevMode ? [{ debugName: "imageUpload" }] : []));
|
|
6249
6293
|
/**
|
|
6250
6294
|
* Custom handler for image uploads.
|
|
6251
6295
|
* When provided, images will be processed through this handler instead of being converted to base64.
|
|
@@ -6292,7 +6336,7 @@ class AngularTiptapEditorComponent {
|
|
|
6292
6336
|
this._isFormControlDisabled = signal(false, ...(ngDevMode ? [{ debugName: "_isFormControlDisabled" }] : []));
|
|
6293
6337
|
this.isFormControlDisabled = this._isFormControlDisabled.asReadonly();
|
|
6294
6338
|
// Combined disabled state (Input + FormControl)
|
|
6295
|
-
this.mergedDisabled = computed(() => (this.
|
|
6339
|
+
this.mergedDisabled = computed(() => (this.disabled() ?? this.effectiveConfig().disabled) || this.isFormControlDisabled(), ...(ngDevMode ? [{ debugName: "mergedDisabled" }] : []));
|
|
6296
6340
|
// Computed for editor states
|
|
6297
6341
|
this.isEditorReady = computed(() => this.editor() !== null, ...(ngDevMode ? [{ debugName: "isEditorReady" }] : []));
|
|
6298
6342
|
// ============================================
|
|
@@ -6300,109 +6344,133 @@ class AngularTiptapEditorComponent {
|
|
|
6300
6344
|
// ============================================
|
|
6301
6345
|
// Appearance & Fundamentals
|
|
6302
6346
|
this.finalSeamless = computed(() => {
|
|
6303
|
-
const
|
|
6304
|
-
if (
|
|
6305
|
-
return
|
|
6347
|
+
const inputVal = this.seamless();
|
|
6348
|
+
if (inputVal !== undefined) {
|
|
6349
|
+
return inputVal;
|
|
6306
6350
|
}
|
|
6307
|
-
|
|
6351
|
+
const fromConfig = this.effectiveConfig().mode;
|
|
6352
|
+
return fromConfig === "seamless";
|
|
6308
6353
|
}, ...(ngDevMode ? [{ debugName: "finalSeamless" }] : []));
|
|
6309
|
-
this.finalEditable = computed(() => this.
|
|
6310
|
-
this.finalPlaceholder = computed(() => this.
|
|
6311
|
-
|
|
6312
|
-
|
|
6313
|
-
this.
|
|
6314
|
-
this.
|
|
6315
|
-
this.
|
|
6316
|
-
this.
|
|
6317
|
-
|
|
6318
|
-
|
|
6319
|
-
|
|
6354
|
+
this.finalEditable = computed(() => this.editable() ?? this.effectiveConfig().editable ?? true, ...(ngDevMode ? [{ debugName: "finalEditable" }] : []));
|
|
6355
|
+
this.finalPlaceholder = computed(() => this.placeholder() ??
|
|
6356
|
+
this.effectiveConfig().placeholder ??
|
|
6357
|
+
this.currentTranslations().editor.placeholder, ...(ngDevMode ? [{ debugName: "finalPlaceholder" }] : []));
|
|
6358
|
+
this.finalFillContainer = computed(() => this.fillContainer() ?? this.effectiveConfig().fillContainer, ...(ngDevMode ? [{ debugName: "finalFillContainer" }] : []));
|
|
6359
|
+
this.finalShowFooter = computed(() => this.showFooter() ?? this.effectiveConfig().showFooter ?? true, ...(ngDevMode ? [{ debugName: "finalShowFooter" }] : []));
|
|
6360
|
+
this.finalShowEditToggle = computed(() => this.showEditToggle() ?? this.effectiveConfig().showEditToggle ?? false, ...(ngDevMode ? [{ debugName: "finalShowEditToggle" }] : []));
|
|
6361
|
+
this.finalHeight = computed(() => {
|
|
6362
|
+
const h = this.height() ?? this.effectiveConfig().height;
|
|
6363
|
+
return typeof h === "number" ? `${h}px` : h;
|
|
6364
|
+
}, ...(ngDevMode ? [{ debugName: "finalHeight" }] : []));
|
|
6365
|
+
this.finalMinHeight = computed(() => {
|
|
6366
|
+
const mh = this.minHeight() ?? this.effectiveConfig().minHeight;
|
|
6367
|
+
return typeof mh === "number" ? `${mh}px` : mh;
|
|
6368
|
+
}, ...(ngDevMode ? [{ debugName: "finalMinHeight" }] : []));
|
|
6369
|
+
this.finalMaxHeight = computed(() => {
|
|
6370
|
+
const mh = this.maxHeight() ?? this.effectiveConfig().maxHeight;
|
|
6371
|
+
return typeof mh === "number" ? `${mh}px` : mh;
|
|
6372
|
+
}, ...(ngDevMode ? [{ debugName: "finalMaxHeight" }] : []));
|
|
6373
|
+
this.finalSpellcheck = computed(() => this.spellcheck() ?? this.effectiveConfig().spellcheck ?? true, ...(ngDevMode ? [{ debugName: "finalSpellcheck" }] : []));
|
|
6374
|
+
this.finalEnableOfficePaste = computed(() => this.enableOfficePaste() ?? this.effectiveConfig().enableOfficePaste ?? true, ...(ngDevMode ? [{ debugName: "finalEnableOfficePaste" }] : []));
|
|
6320
6375
|
// Features
|
|
6321
|
-
this.finalShowToolbar = computed(() => this.
|
|
6376
|
+
this.finalShowToolbar = computed(() => this.showToolbar() ?? this.effectiveConfig().showToolbar ?? true, ...(ngDevMode ? [{ debugName: "finalShowToolbar" }] : []));
|
|
6322
6377
|
this.finalToolbarConfig = computed(() => {
|
|
6378
|
+
const fromInput = this.toolbar();
|
|
6323
6379
|
const fromConfig = this.effectiveConfig().toolbar;
|
|
6324
6380
|
const base = ATE_DEFAULT_TOOLBAR_CONFIG;
|
|
6381
|
+
if (fromInput && Object.keys(fromInput).length > 0) {
|
|
6382
|
+
return { ...base, ...fromInput };
|
|
6383
|
+
}
|
|
6325
6384
|
if (fromConfig) {
|
|
6326
6385
|
return { ...base, ...fromConfig };
|
|
6327
6386
|
}
|
|
6328
|
-
|
|
6329
|
-
return Object.keys(fromInput).length === 0 ? base : { ...base, ...fromInput };
|
|
6387
|
+
return base;
|
|
6330
6388
|
}, ...(ngDevMode ? [{ debugName: "finalToolbarConfig" }] : []));
|
|
6331
|
-
this.finalFloatingToolbar = computed(() => this.
|
|
6332
|
-
this.finalShowBubbleMenu = computed(() => this.
|
|
6389
|
+
this.finalFloatingToolbar = computed(() => this.floatingToolbar() ?? this.effectiveConfig().floatingToolbar ?? false, ...(ngDevMode ? [{ debugName: "finalFloatingToolbar" }] : []));
|
|
6390
|
+
this.finalShowBubbleMenu = computed(() => this.showBubbleMenu() ?? this.effectiveConfig().showBubbleMenu ?? true, ...(ngDevMode ? [{ debugName: "finalShowBubbleMenu" }] : []));
|
|
6333
6391
|
this.finalBubbleMenuConfig = computed(() => {
|
|
6392
|
+
const fromInput = this.bubbleMenu();
|
|
6334
6393
|
const fromConfig = this.effectiveConfig().bubbleMenu;
|
|
6335
6394
|
const base = ATE_DEFAULT_BUBBLE_MENU_CONFIG;
|
|
6395
|
+
if (fromInput && Object.keys(fromInput).length > 0) {
|
|
6396
|
+
return { ...base, ...fromInput };
|
|
6397
|
+
}
|
|
6336
6398
|
if (fromConfig) {
|
|
6337
6399
|
return { ...base, ...fromConfig };
|
|
6338
6400
|
}
|
|
6339
|
-
return
|
|
6401
|
+
return base;
|
|
6340
6402
|
}, ...(ngDevMode ? [{ debugName: "finalBubbleMenuConfig" }] : []));
|
|
6341
|
-
this.finalShowImageBubbleMenu = computed(() => this.
|
|
6403
|
+
this.finalShowImageBubbleMenu = computed(() => this.showImageBubbleMenu() ?? this.effectiveConfig().showImageBubbleMenu ?? true, ...(ngDevMode ? [{ debugName: "finalShowImageBubbleMenu" }] : []));
|
|
6342
6404
|
this.finalImageBubbleMenuConfig = computed(() => {
|
|
6405
|
+
const fromInput = this.imageBubbleMenu();
|
|
6343
6406
|
const fromConfig = this.effectiveConfig().imageBubbleMenu;
|
|
6344
6407
|
const base = ATE_DEFAULT_IMAGE_BUBBLE_MENU_CONFIG;
|
|
6408
|
+
if (fromInput && Object.keys(fromInput).length > 0) {
|
|
6409
|
+
return { ...base, ...fromInput };
|
|
6410
|
+
}
|
|
6345
6411
|
if (fromConfig) {
|
|
6346
6412
|
return { ...base, ...fromConfig };
|
|
6347
6413
|
}
|
|
6348
|
-
return
|
|
6349
|
-
? base
|
|
6350
|
-
: { ...base, ...this.imageBubbleMenu() };
|
|
6414
|
+
return base;
|
|
6351
6415
|
}, ...(ngDevMode ? [{ debugName: "finalImageBubbleMenuConfig" }] : []));
|
|
6352
|
-
this.finalShowTableBubbleMenu = computed(() => this.
|
|
6416
|
+
this.finalShowTableBubbleMenu = computed(() => this.showTableBubbleMenu() ?? this.effectiveConfig().showTableMenu ?? true, ...(ngDevMode ? [{ debugName: "finalShowTableBubbleMenu" }] : []));
|
|
6353
6417
|
this.finalTableBubbleMenuConfig = computed(() => {
|
|
6418
|
+
const fromInput = this.tableBubbleMenu();
|
|
6354
6419
|
const fromConfig = this.effectiveConfig().tableBubbleMenu;
|
|
6355
6420
|
const base = ATE_DEFAULT_TABLE_MENU_CONFIG;
|
|
6421
|
+
if (fromInput && Object.keys(fromInput).length > 0) {
|
|
6422
|
+
return { ...base, ...fromInput };
|
|
6423
|
+
}
|
|
6356
6424
|
if (fromConfig) {
|
|
6357
6425
|
return { ...base, ...fromConfig };
|
|
6358
6426
|
}
|
|
6359
|
-
return
|
|
6360
|
-
? base
|
|
6361
|
-
: { ...base, ...this.tableBubbleMenu() };
|
|
6427
|
+
return base;
|
|
6362
6428
|
}, ...(ngDevMode ? [{ debugName: "finalTableBubbleMenuConfig" }] : []));
|
|
6363
|
-
this.finalShowCellBubbleMenu = computed(() => this.
|
|
6429
|
+
this.finalShowCellBubbleMenu = computed(() => this.showCellBubbleMenu() ?? this.effectiveConfig().showCellMenu ?? true, ...(ngDevMode ? [{ debugName: "finalShowCellBubbleMenu" }] : []));
|
|
6364
6430
|
this.finalCellBubbleMenuConfig = computed(() => {
|
|
6431
|
+
const fromInput = this.cellBubbleMenu();
|
|
6365
6432
|
const fromConfig = this.effectiveConfig().cellBubbleMenu;
|
|
6366
6433
|
const base = ATE_DEFAULT_CELL_MENU_CONFIG;
|
|
6434
|
+
if (fromInput && Object.keys(fromInput).length > 0) {
|
|
6435
|
+
return { ...base, ...fromInput };
|
|
6436
|
+
}
|
|
6367
6437
|
if (fromConfig) {
|
|
6368
6438
|
return { ...base, ...fromConfig };
|
|
6369
6439
|
}
|
|
6370
|
-
return
|
|
6371
|
-
? base
|
|
6372
|
-
: { ...base, ...this.cellBubbleMenu() };
|
|
6440
|
+
return base;
|
|
6373
6441
|
}, ...(ngDevMode ? [{ debugName: "finalCellBubbleMenuConfig" }] : []));
|
|
6374
|
-
this.finalEnableSlashCommands = computed(() => this.
|
|
6442
|
+
this.finalEnableSlashCommands = computed(() => this.enableSlashCommands() ?? this.effectiveConfig().enableSlashCommands ?? true, ...(ngDevMode ? [{ debugName: "finalEnableSlashCommands" }] : []));
|
|
6375
6443
|
this.finalSlashCommandsConfig = computed(() => {
|
|
6376
|
-
const
|
|
6377
|
-
const
|
|
6378
|
-
const
|
|
6379
|
-
const customConfig = fromInputCustom ?? fromGlobalCustom;
|
|
6444
|
+
const fromInputComponent = this.customSlashCommands();
|
|
6445
|
+
const fromConfigComponent = this.effectiveConfig().customSlashCommands;
|
|
6446
|
+
const customConfig = fromInputComponent ?? fromConfigComponent;
|
|
6380
6447
|
if (customConfig) {
|
|
6381
6448
|
return customConfig;
|
|
6382
6449
|
}
|
|
6383
|
-
|
|
6384
|
-
|
|
6385
|
-
|
|
6386
|
-
|
|
6450
|
+
const fromInputOptions = this.slashCommands();
|
|
6451
|
+
const fromConfigOptions = this.effectiveConfig().slashCommands;
|
|
6452
|
+
const baseConfig = fromInputOptions && Object.keys(fromInputOptions).length > 0
|
|
6453
|
+
? fromInputOptions
|
|
6454
|
+
: fromConfigOptions;
|
|
6387
6455
|
return {
|
|
6388
|
-
commands: filterSlashCommands(baseConfig, this.i18nService, this.editorCommandsService, this.finalImageUploadConfig()),
|
|
6456
|
+
commands: filterSlashCommands(baseConfig || {}, this.i18nService, this.editorCommandsService, this.finalImageUploadConfig()),
|
|
6389
6457
|
};
|
|
6390
6458
|
}, ...(ngDevMode ? [{ debugName: "finalSlashCommandsConfig" }] : []));
|
|
6391
6459
|
// Behavior
|
|
6392
|
-
this.finalAutofocus = computed(() => this.
|
|
6393
|
-
this.finalMaxCharacters = computed(() => this.
|
|
6394
|
-
this.finalShowCharacterCount = computed(() => this.
|
|
6395
|
-
this.finalShowWordCount = computed(() => this.
|
|
6396
|
-
this.finalLocale = computed(() => this.
|
|
6460
|
+
this.finalAutofocus = computed(() => this.autofocus() ?? this.effectiveConfig().autofocus, ...(ngDevMode ? [{ debugName: "finalAutofocus" }] : []));
|
|
6461
|
+
this.finalMaxCharacters = computed(() => this.maxCharacters() ?? this.effectiveConfig().maxCharacters, ...(ngDevMode ? [{ debugName: "finalMaxCharacters" }] : []));
|
|
6462
|
+
this.finalShowCharacterCount = computed(() => this.showCharacterCount() ?? this.effectiveConfig().showCharacterCount ?? true, ...(ngDevMode ? [{ debugName: "finalShowCharacterCount" }] : []));
|
|
6463
|
+
this.finalShowWordCount = computed(() => this.showWordCount() ?? this.effectiveConfig().showWordCount ?? true, ...(ngDevMode ? [{ debugName: "finalShowWordCount" }] : []));
|
|
6464
|
+
this.finalLocale = computed(() => this.locale() ?? this.effectiveConfig().locale, ...(ngDevMode ? [{ debugName: "finalLocale" }] : []));
|
|
6397
6465
|
// Extensions & Options
|
|
6398
|
-
this.finalTiptapExtensions = computed(() => this.
|
|
6399
|
-
this.finalTiptapOptions = computed(() => this.
|
|
6400
|
-
this.finalStateCalculators = computed(() => this.
|
|
6466
|
+
this.finalTiptapExtensions = computed(() => this.tiptapExtensions() ?? this.effectiveConfig().tiptapExtensions ?? [], ...(ngDevMode ? [{ debugName: "finalTiptapExtensions" }] : []));
|
|
6467
|
+
this.finalTiptapOptions = computed(() => this.tiptapOptions() ?? this.effectiveConfig().tiptapOptions ?? {}, ...(ngDevMode ? [{ debugName: "finalTiptapOptions" }] : []));
|
|
6468
|
+
this.finalStateCalculators = computed(() => this.stateCalculators() ?? this.effectiveConfig().stateCalculators ?? [], ...(ngDevMode ? [{ debugName: "finalStateCalculators" }] : []));
|
|
6401
6469
|
this.finalAngularNodesConfig = computed(() => this.effectiveConfig().angularNodes ?? [], ...(ngDevMode ? [{ debugName: "finalAngularNodesConfig" }] : []));
|
|
6402
6470
|
// Image Upload
|
|
6403
6471
|
this.finalImageUploadConfig = computed(() => {
|
|
6404
|
-
const fromConfig = this.effectiveConfig().imageUpload;
|
|
6405
6472
|
const fromInput = this.imageUpload();
|
|
6473
|
+
const fromConfig = this.effectiveConfig().imageUpload;
|
|
6406
6474
|
const merged = {
|
|
6407
6475
|
maxSize: 5, // Default 5MB
|
|
6408
6476
|
maxWidth: 1920,
|
|
@@ -6413,15 +6481,15 @@ class AngularTiptapEditorComponent {
|
|
|
6413
6481
|
multiple: false,
|
|
6414
6482
|
compressImages: true,
|
|
6415
6483
|
quality: 0.8,
|
|
6416
|
-
...fromInput,
|
|
6417
6484
|
...fromConfig,
|
|
6485
|
+
...fromInput,
|
|
6418
6486
|
};
|
|
6419
6487
|
return {
|
|
6420
6488
|
...merged,
|
|
6421
6489
|
maxSize: merged.maxSize * 1024 * 1024, // Convert MB to bytes for internal service
|
|
6422
6490
|
};
|
|
6423
6491
|
}, ...(ngDevMode ? [{ debugName: "finalImageUploadConfig" }] : []));
|
|
6424
|
-
this.finalImageUploadHandler = computed(() => this.
|
|
6492
|
+
this.finalImageUploadHandler = computed(() => this.imageUploadHandler() ?? this.effectiveConfig().imageUpload?.handler, ...(ngDevMode ? [{ debugName: "finalImageUploadHandler" }] : []));
|
|
6425
6493
|
// Computed for current translations (allows per-instance override via config or input)
|
|
6426
6494
|
this.currentTranslations = computed(() => {
|
|
6427
6495
|
const localeOverride = this.finalLocale();
|
|
@@ -6447,7 +6515,7 @@ class AngularTiptapEditorComponent {
|
|
|
6447
6515
|
this.effectiveConfig = computed(() => {
|
|
6448
6516
|
const fromInput = this.config();
|
|
6449
6517
|
const fromGlobal = this.globalConfig || {};
|
|
6450
|
-
return { ...fromGlobal, ...fromInput };
|
|
6518
|
+
return { ...ATE_DEFAULT_CONFIG, ...fromGlobal, ...fromInput };
|
|
6451
6519
|
}, ...(ngDevMode ? [{ debugName: "effectiveConfig" }] : []));
|
|
6452
6520
|
// Effect to update editor content (with anti-echo)
|
|
6453
6521
|
effect(() => {
|
|
@@ -6470,7 +6538,7 @@ class AngularTiptapEditorComponent {
|
|
|
6470
6538
|
if (hasFormControl && !content) {
|
|
6471
6539
|
return;
|
|
6472
6540
|
}
|
|
6473
|
-
editor.commands.setContent(content, false);
|
|
6541
|
+
editor.commands.setContent(content, { emitUpdate: false });
|
|
6474
6542
|
});
|
|
6475
6543
|
});
|
|
6476
6544
|
// Effect to update height properties
|
|
@@ -6550,7 +6618,14 @@ class AngularTiptapEditorComponent {
|
|
|
6550
6618
|
}
|
|
6551
6619
|
initEditor() {
|
|
6552
6620
|
const extensions = [
|
|
6553
|
-
StarterKit
|
|
6621
|
+
StarterKit.configure({
|
|
6622
|
+
link: {
|
|
6623
|
+
openOnClick: false,
|
|
6624
|
+
HTMLAttributes: {
|
|
6625
|
+
class: "ate-link",
|
|
6626
|
+
},
|
|
6627
|
+
},
|
|
6628
|
+
}),
|
|
6554
6629
|
TextStyle,
|
|
6555
6630
|
Color.configure({
|
|
6556
6631
|
types: ["textStyle"],
|
|
@@ -6558,18 +6633,11 @@ class AngularTiptapEditorComponent {
|
|
|
6558
6633
|
Placeholder.configure({
|
|
6559
6634
|
placeholder: this.finalPlaceholder(),
|
|
6560
6635
|
}),
|
|
6561
|
-
Underline,
|
|
6562
6636
|
Superscript,
|
|
6563
6637
|
Subscript,
|
|
6564
6638
|
TextAlign.configure({
|
|
6565
6639
|
types: ["heading", "paragraph"],
|
|
6566
6640
|
}),
|
|
6567
|
-
Link.configure({
|
|
6568
|
-
openOnClick: false,
|
|
6569
|
-
HTMLAttributes: {
|
|
6570
|
-
class: "ate-link",
|
|
6571
|
-
},
|
|
6572
|
-
}),
|
|
6573
6641
|
AteLinkClickBehavior,
|
|
6574
6642
|
Highlight.configure({
|
|
6575
6643
|
multicolor: true,
|
|
@@ -6618,7 +6686,7 @@ class AngularTiptapEditorComponent {
|
|
|
6618
6686
|
}
|
|
6619
6687
|
// Register automatic node views from config
|
|
6620
6688
|
const autoNodeViews = this.finalAngularNodesConfig();
|
|
6621
|
-
autoNodeViews.forEach(reg => {
|
|
6689
|
+
autoNodeViews.forEach((reg) => {
|
|
6622
6690
|
const options = typeof reg === "function"
|
|
6623
6691
|
? { component: reg }
|
|
6624
6692
|
: reg;
|
|
@@ -6634,9 +6702,9 @@ class AngularTiptapEditorComponent {
|
|
|
6634
6702
|
const customExtensions = this.finalTiptapExtensions();
|
|
6635
6703
|
if (customExtensions.length > 0) {
|
|
6636
6704
|
const existingNames = new Set(extensions
|
|
6637
|
-
.map(ext => ext?.name)
|
|
6705
|
+
.map((ext) => ext?.name)
|
|
6638
6706
|
.filter((name) => !!name));
|
|
6639
|
-
const toAdd = customExtensions.filter(ext => {
|
|
6707
|
+
const toAdd = customExtensions.filter((ext) => {
|
|
6640
6708
|
const name = ext?.name;
|
|
6641
6709
|
return !name || !existingNames.has(name);
|
|
6642
6710
|
});
|
|
@@ -7203,38 +7271,10 @@ const ATE_CELL_BUBBLE_MENU_KEYS = ["mergeCells", "splitCell"];
|
|
|
7203
7271
|
* Public API Surface of tiptap-editor
|
|
7204
7272
|
*/
|
|
7205
7273
|
// Main component & Provider
|
|
7206
|
-
/** @deprecated Renamed to `ATE_INITIAL_EDITOR_STATE`. This alias will be removed in v3.0.0. */
|
|
7207
|
-
const INITIAL_EDITOR_STATE = ATE_INITIAL_EDITOR_STATE;
|
|
7208
|
-
/** @deprecated Renamed to `ATE_SLASH_COMMAND_KEYS`. This alias will be removed in v3.0.0. */
|
|
7209
|
-
const SLASH_COMMAND_KEYS = ATE_SLASH_COMMAND_KEYS;
|
|
7210
|
-
/** @deprecated Renamed to `ATE_DEFAULT_SLASH_COMMANDS_CONFIG`. This alias will be removed in v3.0.0. */
|
|
7211
|
-
const DEFAULT_SLASH_COMMANDS_CONFIG = ATE_DEFAULT_SLASH_COMMANDS_CONFIG;
|
|
7212
|
-
/** @deprecated Renamed to `AteDiscoveryCalculator`. This alias will be removed in v3.0.0. */
|
|
7213
|
-
const DiscoveryCalculator = AteDiscoveryCalculator;
|
|
7214
|
-
/** @deprecated Renamed to `AteImageCalculator`. This alias will be removed in v3.0.0. */
|
|
7215
|
-
const ImageCalculator = AteImageCalculator;
|
|
7216
|
-
/** @deprecated Renamed to `AteMarksCalculator`. This alias will be removed in v3.0.0. */
|
|
7217
|
-
const MarksCalculator = AteMarksCalculator;
|
|
7218
|
-
/** @deprecated Renamed to `AteSelectionCalculator`. This alias will be removed in v3.0.0. */
|
|
7219
|
-
const SelectionCalculator = AteSelectionCalculator;
|
|
7220
|
-
/** @deprecated Renamed to `AteStructureCalculator`. This alias will be removed in v3.0.0. */
|
|
7221
|
-
const StructureCalculator = AteStructureCalculator;
|
|
7222
|
-
/** @deprecated Renamed to `AteTableCalculator`. This alias will be removed in v3.0.0. */
|
|
7223
|
-
const TableCalculator = AteTableCalculator;
|
|
7224
|
-
/** @deprecated Renamed to `ATE_DEFAULT_TOOLBAR_CONFIG`. This alias will be removed in v3.0.0. */
|
|
7225
|
-
const DEFAULT_TOOLBAR_CONFIG = ATE_DEFAULT_TOOLBAR_CONFIG;
|
|
7226
|
-
/** @deprecated Renamed to `ATE_DEFAULT_BUBBLE_MENU_CONFIG`. This alias will be removed in v3.0.0. */
|
|
7227
|
-
const DEFAULT_BUBBLE_MENU_CONFIG = ATE_DEFAULT_BUBBLE_MENU_CONFIG;
|
|
7228
|
-
/** @deprecated Renamed to `ATE_DEFAULT_IMAGE_BUBBLE_MENU_CONFIG`. This alias will be removed in v3.0.0. */
|
|
7229
|
-
const DEFAULT_IMAGE_BUBBLE_MENU_CONFIG = ATE_DEFAULT_IMAGE_BUBBLE_MENU_CONFIG;
|
|
7230
|
-
/** @deprecated Renamed to `ATE_DEFAULT_TABLE_MENU_CONFIG`. This alias will be removed in v3.0.0. */
|
|
7231
|
-
const DEFAULT_TABLE_MENU_CONFIG = ATE_DEFAULT_TABLE_MENU_CONFIG;
|
|
7232
|
-
/** @deprecated Renamed to `ATE_DEFAULT_CELL_MENU_CONFIG`. This alias will be removed in v3.0.0. */
|
|
7233
|
-
const DEFAULT_CELL_MENU_CONFIG = ATE_DEFAULT_CELL_MENU_CONFIG;
|
|
7234
7274
|
|
|
7235
7275
|
/**
|
|
7236
7276
|
* Generated bundle index. Do not edit.
|
|
7237
7277
|
*/
|
|
7238
7278
|
|
|
7239
|
-
export { ATE_BUBBLE_MENU_KEYS, ATE_CELL_BUBBLE_MENU_KEYS, ATE_DEFAULT_BUBBLE_MENU_CONFIG, ATE_DEFAULT_CELL_MENU_CONFIG, ATE_DEFAULT_IMAGE_BUBBLE_MENU_CONFIG, ATE_DEFAULT_SLASH_COMMANDS_CONFIG, ATE_DEFAULT_TABLE_MENU_CONFIG, ATE_DEFAULT_TOOLBAR_CONFIG, ATE_GLOBAL_CONFIG, ATE_IMAGE_BUBBLE_MENU_KEYS, ATE_INITIAL_EDITOR_STATE, ATE_SLASH_COMMAND_KEYS, ATE_TABLE_BUBBLE_MENU_KEYS, ATE_TOOLBAR_KEYS, AngularTiptapEditorComponent, AteAngularNodeView, AteColorPickerService, AteDiscoveryCalculator, AteEditorCommandsService, AteI18nService, AteImageCalculator, AteImageService, AteLinkService, AteMarksCalculator, AteNodeViewRenderer, AteNoopValueAccessorDirective, AteSelectionCalculator, AteStructureCalculator, AteTableCalculator,
|
|
7279
|
+
export { ATE_BUBBLE_MENU_KEYS, ATE_CELL_BUBBLE_MENU_KEYS, ATE_DEFAULT_BUBBLE_MENU_CONFIG, ATE_DEFAULT_CELL_MENU_CONFIG, ATE_DEFAULT_CONFIG, ATE_DEFAULT_IMAGE_BUBBLE_MENU_CONFIG, ATE_DEFAULT_SLASH_COMMANDS_CONFIG, ATE_DEFAULT_TABLE_MENU_CONFIG, ATE_DEFAULT_TOOLBAR_CONFIG, ATE_GLOBAL_CONFIG, ATE_IMAGE_BUBBLE_MENU_KEYS, ATE_INITIAL_EDITOR_STATE, ATE_SLASH_COMMAND_KEYS, ATE_TABLE_BUBBLE_MENU_KEYS, ATE_TOOLBAR_KEYS, AngularTiptapEditorComponent, AteAngularNodeView, AteColorPickerService, AteDiscoveryCalculator, AteEditorCommandsService, AteI18nService, AteImageCalculator, AteImageService, AteLinkService, AteMarksCalculator, AteNodeViewRenderer, AteNoopValueAccessorDirective, AteSelectionCalculator, AteStructureCalculator, AteTableCalculator, createAngularComponentExtension, createDefaultSlashCommands, filterSlashCommands, provideAteEditor, registerAngularComponent };
|
|
7240
7280
|
//# sourceMappingURL=flogeez-angular-tiptap-editor.mjs.map
|