@flogeez/angular-tiptap-editor 3.0.3 → 3.1.0
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 +14 -0
- package/README.md +71 -723
- package/fesm2022/flogeez-angular-tiptap-editor.mjs +456 -19
- package/fesm2022/flogeez-angular-tiptap-editor.mjs.map +1 -1
- package/index.d.ts +31 -7
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ import * as _flogeez_angular_tiptap_editor from '@flogeez/angular-tiptap-editor'
|
|
|
2
2
|
import * as _angular_core from '@angular/core';
|
|
3
3
|
import { Injector, Type, AfterViewInit, OnDestroy, ElementRef, EnvironmentProviders, InjectionToken, Signal } from '@angular/core';
|
|
4
4
|
import { Editor, NodeConfig, Extension, Node as Node$2, Mark, EditorOptions, JSONContent } from '@tiptap/core';
|
|
5
|
-
import { Observable } from 'rxjs';
|
|
6
5
|
import { Node as Node$1 } from '@tiptap/pm/model';
|
|
6
|
+
import { Observable } from 'rxjs';
|
|
7
7
|
import { ControlValueAccessor } from '@angular/forms';
|
|
8
8
|
import * as _popperjs_core from '@popperjs/core';
|
|
9
9
|
import { Decoration, EditorView, NodeView } from '@tiptap/pm/view';
|
|
@@ -184,6 +184,8 @@ interface AteTranslations {
|
|
|
184
184
|
confirmDelete: string;
|
|
185
185
|
toggleEdit: string;
|
|
186
186
|
viewMode: string;
|
|
187
|
+
blockAdd: string;
|
|
188
|
+
blockDrag: string;
|
|
187
189
|
};
|
|
188
190
|
common: {
|
|
189
191
|
cancel: string;
|
|
@@ -362,6 +364,8 @@ declare class AteI18nService {
|
|
|
362
364
|
confirmDelete: string;
|
|
363
365
|
toggleEdit: string;
|
|
364
366
|
viewMode: string;
|
|
367
|
+
blockAdd: string;
|
|
368
|
+
blockDrag: string;
|
|
365
369
|
}>;
|
|
366
370
|
readonly common: _angular_core.Signal<{
|
|
367
371
|
cancel: string;
|
|
@@ -941,6 +945,10 @@ interface RegisterAngularComponentOptions<T = unknown> {
|
|
|
941
945
|
* Can be a direct Component class or a full registration options object.
|
|
942
946
|
*/
|
|
943
947
|
type AteAngularNode = Type<unknown> | RegisterAngularComponentOptions<unknown>;
|
|
948
|
+
/** Possible display modes for block level controls */
|
|
949
|
+
type AteBlockControlsMode = "inside" | "outside" | "none";
|
|
950
|
+
/** Possible values for editor autofocus */
|
|
951
|
+
type AteAutofocusMode = "start" | "end" | "all" | boolean | number;
|
|
944
952
|
/**
|
|
945
953
|
* Global configuration interface for Angular Tiptap Editor.
|
|
946
954
|
* Uses a flat structure for common settings and objects for complex configurations.
|
|
@@ -953,7 +961,7 @@ interface AteEditorConfig {
|
|
|
953
961
|
/** Editor height (e.g., '300px', 300, 'auto') */
|
|
954
962
|
height?: string | number;
|
|
955
963
|
/** Focus position on initialization */
|
|
956
|
-
autofocus?:
|
|
964
|
+
autofocus?: AteAutofocusMode;
|
|
957
965
|
/** Placeholder text displayed when the editor is empty */
|
|
958
966
|
placeholder?: string;
|
|
959
967
|
/** Initial editing state (if false, the editor is read-only) */
|
|
@@ -996,6 +1004,13 @@ interface AteEditorConfig {
|
|
|
996
1004
|
enableSlashCommands?: boolean;
|
|
997
1005
|
/** Maximum number of characters allowed */
|
|
998
1006
|
maxCharacters?: number;
|
|
1007
|
+
/**
|
|
1008
|
+
* Block level controls (plus button and drag handle) display mode.
|
|
1009
|
+
* - 'inside': Elements are placed inside the editor (reserves space via padding).
|
|
1010
|
+
* - 'outside': Elements float outside the editor boundary (no layout shift).
|
|
1011
|
+
* - 'none': Disabled (not displayed).
|
|
1012
|
+
*/
|
|
1013
|
+
blockControls?: AteBlockControlsMode;
|
|
999
1014
|
/** Detailed toolbar configuration (items, groups) */
|
|
1000
1015
|
toolbar?: AteToolbarConfig;
|
|
1001
1016
|
/** Text context menu configuration */
|
|
@@ -1070,8 +1085,9 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
|
|
|
1070
1085
|
enableSlashCommands: _angular_core.InputSignal<boolean | undefined>;
|
|
1071
1086
|
slashCommands: _angular_core.InputSignal<AteSlashCommandsConfig | undefined>;
|
|
1072
1087
|
customSlashCommands: _angular_core.InputSignal<AteCustomSlashCommands | undefined>;
|
|
1088
|
+
blockControls: _angular_core.InputSignal<AteBlockControlsMode | undefined>;
|
|
1073
1089
|
locale: _angular_core.InputSignal<SupportedLocale | undefined>;
|
|
1074
|
-
autofocus: _angular_core.InputSignal<
|
|
1090
|
+
autofocus: _angular_core.InputSignal<AteAutofocusMode | undefined>;
|
|
1075
1091
|
seamless: _angular_core.InputSignal<boolean | undefined>;
|
|
1076
1092
|
floatingToolbar: _angular_core.InputSignal<boolean | undefined>;
|
|
1077
1093
|
showEditToggle: _angular_core.InputSignal<boolean | undefined>;
|
|
@@ -1135,12 +1151,18 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
|
|
|
1135
1151
|
private _wordCount;
|
|
1136
1152
|
private _isDragOver;
|
|
1137
1153
|
private _editorFullyInitialized;
|
|
1154
|
+
private _hoveredBlock;
|
|
1138
1155
|
private lastEmittedHtml;
|
|
1139
1156
|
readonly editor: _angular_core.Signal<Editor | null>;
|
|
1140
1157
|
readonly characterCount: _angular_core.Signal<number>;
|
|
1141
1158
|
readonly wordCount: _angular_core.Signal<number>;
|
|
1142
1159
|
readonly isDragOver: _angular_core.Signal<boolean>;
|
|
1143
1160
|
readonly editorFullyInitialized: _angular_core.Signal<boolean>;
|
|
1161
|
+
readonly hoveredBlock: _angular_core.Signal<{
|
|
1162
|
+
node: Node$1;
|
|
1163
|
+
element: HTMLElement;
|
|
1164
|
+
pos: number;
|
|
1165
|
+
} | null>;
|
|
1144
1166
|
private _isFormControlDisabled;
|
|
1145
1167
|
readonly isFormControlDisabled: _angular_core.Signal<boolean>;
|
|
1146
1168
|
readonly mergedDisabled: _angular_core.Signal<boolean>;
|
|
@@ -1169,8 +1191,9 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
|
|
|
1169
1191
|
readonly finalCellBubbleMenuConfig: _angular_core.Signal<Partial<Record<"mergeCells" | "splitCell", boolean>>>;
|
|
1170
1192
|
readonly finalEnableSlashCommands: _angular_core.Signal<boolean>;
|
|
1171
1193
|
readonly finalSlashCommandsConfig: _angular_core.Signal<AteCustomSlashCommands>;
|
|
1172
|
-
readonly finalAutofocus: _angular_core.Signal<
|
|
1194
|
+
readonly finalAutofocus: _angular_core.Signal<AteAutofocusMode | undefined>;
|
|
1173
1195
|
readonly finalMaxCharacters: _angular_core.Signal<number | undefined>;
|
|
1196
|
+
readonly finalBlockControls: _angular_core.Signal<AteBlockControlsMode>;
|
|
1174
1197
|
readonly finalShowCharacterCount: _angular_core.Signal<boolean>;
|
|
1175
1198
|
readonly finalShowWordCount: _angular_core.Signal<boolean>;
|
|
1176
1199
|
readonly finalLocale: _angular_core.Signal<SupportedLocale>;
|
|
@@ -1203,7 +1226,7 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
|
|
|
1203
1226
|
theme?: "light" | "dark" | "auto";
|
|
1204
1227
|
mode?: "classic" | "seamless";
|
|
1205
1228
|
height?: string | number;
|
|
1206
|
-
autofocus?:
|
|
1229
|
+
autofocus?: AteAutofocusMode;
|
|
1207
1230
|
placeholder?: string;
|
|
1208
1231
|
editable?: boolean;
|
|
1209
1232
|
minHeight?: string | number;
|
|
@@ -1225,6 +1248,7 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
|
|
|
1225
1248
|
downloadImage?: boolean;
|
|
1226
1249
|
enableSlashCommands?: boolean;
|
|
1227
1250
|
maxCharacters?: number;
|
|
1251
|
+
blockControls?: AteBlockControlsMode;
|
|
1228
1252
|
toolbar?: AteToolbarConfig;
|
|
1229
1253
|
bubbleMenu?: AteBubbleMenuConfig;
|
|
1230
1254
|
imageBubbleMenu?: AteImageBubbleMenuConfig;
|
|
@@ -1259,7 +1283,7 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
|
|
|
1259
1283
|
private setupFormControlSubscription;
|
|
1260
1284
|
onEditorClick(event: Event): void;
|
|
1261
1285
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AngularTiptapEditorComponent, never>;
|
|
1262
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AngularTiptapEditorComponent, "angular-tiptap-editor", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "fillContainer": { "alias": "fillContainer"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "showCharacterCount": { "alias": "showCharacterCount"; "required": false; "isSignal": true; }; "showWordCount": { "alias": "showWordCount"; "required": false; "isSignal": true; }; "maxCharacters": { "alias": "maxCharacters"; "required": false; "isSignal": true; }; "enableOfficePaste": { "alias": "enableOfficePaste"; "required": false; "isSignal": true; }; "enableSlashCommands": { "alias": "enableSlashCommands"; "required": false; "isSignal": true; }; "slashCommands": { "alias": "slashCommands"; "required": false; "isSignal": true; }; "customSlashCommands": { "alias": "customSlashCommands"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "seamless": { "alias": "seamless"; "required": false; "isSignal": true; }; "floatingToolbar": { "alias": "floatingToolbar"; "required": false; "isSignal": true; }; "showEditToggle": { "alias": "showEditToggle"; "required": false; "isSignal": true; }; "spellcheck": { "alias": "spellcheck"; "required": false; "isSignal": true; }; "tiptapExtensions": { "alias": "tiptapExtensions"; "required": false; "isSignal": true; }; "tiptapOptions": { "alias": "tiptapOptions"; "required": false; "isSignal": true; }; "showBubbleMenu": { "alias": "showBubbleMenu"; "required": false; "isSignal": true; }; "bubbleMenu": { "alias": "bubbleMenu"; "required": false; "isSignal": true; }; "showImageBubbleMenu": { "alias": "showImageBubbleMenu"; "required": false; "isSignal": true; }; "imageBubbleMenu": { "alias": "imageBubbleMenu"; "required": false; "isSignal": true; }; "toolbar": { "alias": "toolbar"; "required": false; "isSignal": true; }; "showTableBubbleMenu": { "alias": "showTableBubbleMenu"; "required": false; "isSignal": true; }; "tableBubbleMenu": { "alias": "tableBubbleMenu"; "required": false; "isSignal": true; }; "showCellBubbleMenu": { "alias": "showCellBubbleMenu"; "required": false; "isSignal": true; }; "cellBubbleMenu": { "alias": "cellBubbleMenu"; "required": false; "isSignal": true; }; "stateCalculators": { "alias": "stateCalculators"; "required": false; "isSignal": true; }; "imageUpload": { "alias": "imageUpload"; "required": false; "isSignal": true; }; "imageUploadHandler": { "alias": "imageUploadHandler"; "required": false; "isSignal": true; }; }, { "contentChange": "contentChange"; "editorCreated": "editorCreated"; "editorUpdate": "editorUpdate"; "editorFocus": "editorFocus"; "editorBlur": "editorBlur"; "editableChange": "editableChange"; }, never, never, true, [{ directive: typeof AteNoopValueAccessorDirective; inputs: {}; outputs: {}; }]>;
|
|
1286
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AngularTiptapEditorComponent, "angular-tiptap-editor", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "fillContainer": { "alias": "fillContainer"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "showCharacterCount": { "alias": "showCharacterCount"; "required": false; "isSignal": true; }; "showWordCount": { "alias": "showWordCount"; "required": false; "isSignal": true; }; "maxCharacters": { "alias": "maxCharacters"; "required": false; "isSignal": true; }; "enableOfficePaste": { "alias": "enableOfficePaste"; "required": false; "isSignal": true; }; "enableSlashCommands": { "alias": "enableSlashCommands"; "required": false; "isSignal": true; }; "slashCommands": { "alias": "slashCommands"; "required": false; "isSignal": true; }; "customSlashCommands": { "alias": "customSlashCommands"; "required": false; "isSignal": true; }; "blockControls": { "alias": "blockControls"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "seamless": { "alias": "seamless"; "required": false; "isSignal": true; }; "floatingToolbar": { "alias": "floatingToolbar"; "required": false; "isSignal": true; }; "showEditToggle": { "alias": "showEditToggle"; "required": false; "isSignal": true; }; "spellcheck": { "alias": "spellcheck"; "required": false; "isSignal": true; }; "tiptapExtensions": { "alias": "tiptapExtensions"; "required": false; "isSignal": true; }; "tiptapOptions": { "alias": "tiptapOptions"; "required": false; "isSignal": true; }; "showBubbleMenu": { "alias": "showBubbleMenu"; "required": false; "isSignal": true; }; "bubbleMenu": { "alias": "bubbleMenu"; "required": false; "isSignal": true; }; "showImageBubbleMenu": { "alias": "showImageBubbleMenu"; "required": false; "isSignal": true; }; "imageBubbleMenu": { "alias": "imageBubbleMenu"; "required": false; "isSignal": true; }; "toolbar": { "alias": "toolbar"; "required": false; "isSignal": true; }; "showTableBubbleMenu": { "alias": "showTableBubbleMenu"; "required": false; "isSignal": true; }; "tableBubbleMenu": { "alias": "tableBubbleMenu"; "required": false; "isSignal": true; }; "showCellBubbleMenu": { "alias": "showCellBubbleMenu"; "required": false; "isSignal": true; }; "cellBubbleMenu": { "alias": "cellBubbleMenu"; "required": false; "isSignal": true; }; "stateCalculators": { "alias": "stateCalculators"; "required": false; "isSignal": true; }; "imageUpload": { "alias": "imageUpload"; "required": false; "isSignal": true; }; "imageUploadHandler": { "alias": "imageUploadHandler"; "required": false; "isSignal": true; }; }, { "contentChange": "contentChange"; "editorCreated": "editorCreated"; "editorUpdate": "editorUpdate"; "editorFocus": "editorFocus"; "editorBlur": "editorBlur"; "editableChange": "editableChange"; }, never, never, true, [{ directive: typeof AteNoopValueAccessorDirective; inputs: {}; outputs: {}; }]>;
|
|
1263
1287
|
}
|
|
1264
1288
|
|
|
1265
1289
|
/**
|
|
@@ -1698,4 +1722,4 @@ declare function createAngularComponentExtension<T = unknown>(injector: Injector
|
|
|
1698
1722
|
declare function registerAngularComponent<T = unknown>(injectorOrOptions: Injector | RegisterAngularComponentOptions<T>, maybeOptions?: RegisterAngularComponentOptions<T>): Node$2;
|
|
1699
1723
|
|
|
1700
1724
|
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_IMAGE_UPLOAD_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, AteTooltipDirective, createAngularComponentExtension, createDefaultSlashCommands, filterSlashCommands, provideAteEditor, registerAngularComponent };
|
|
1701
|
-
export type { AteAngularNode, AteBubbleMenuConfig, AteBubbleMenuKey, AteCellBubbleMenuConfig, AteCellBubbleMenuKey, AteColorEditMode, AteColorPickerSelection, AteComponentRenderOptions, AteCustomBubbleMenuItem, AteCustomSlashCommands, AteCustomToolbarItem, AteEditorConfig, AteEditorStateSnapshot, AteImageBubbleMenuConfig, AteImageBubbleMenuKey, AteImageData, AteImageUploadConfig, AteImageUploadContext, AteImageUploadHandler, AteImageUploadHandlerResult, AteImageUploadOptions, AteImageUploadResult, AteResizeOptions, AteSlashCommandItem, AteSlashCommandKey, AteSlashCommandsConfig, AteStateCalculator, AteTableBubbleMenuConfig, AteTableBubbleMenuKey, AteToolbarConfig, AteToolbarKey, AteTranslations, RegisterAngularComponentOptions, SupportedLocale };
|
|
1725
|
+
export type { AteAngularNode, AteAutofocusMode, AteBlockControlsMode, AteBubbleMenuConfig, AteBubbleMenuKey, AteCellBubbleMenuConfig, AteCellBubbleMenuKey, AteColorEditMode, AteColorPickerSelection, AteComponentRenderOptions, AteCustomBubbleMenuItem, AteCustomSlashCommands, AteCustomToolbarItem, AteEditorConfig, AteEditorStateSnapshot, AteImageBubbleMenuConfig, AteImageBubbleMenuKey, AteImageData, AteImageUploadConfig, AteImageUploadContext, AteImageUploadHandler, AteImageUploadHandlerResult, AteImageUploadOptions, AteImageUploadResult, AteResizeOptions, AteSlashCommandItem, AteSlashCommandKey, AteSlashCommandsConfig, AteStateCalculator, AteTableBubbleMenuConfig, AteTableBubbleMenuKey, AteToolbarConfig, AteToolbarKey, AteTranslations, RegisterAngularComponentOptions, SupportedLocale };
|
package/package.json
CHANGED