@flogeez/angular-tiptap-editor 3.0.0 → 3.0.2

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/index.d.ts CHANGED
@@ -138,11 +138,15 @@ interface AteTranslations {
138
138
  invalidFileType: string;
139
139
  dragDropText: string;
140
140
  changeImage: string;
141
+ downloadImage: string;
141
142
  deleteImage: string;
142
143
  resizeSmall: string;
143
144
  resizeMedium: string;
144
145
  resizeLarge: string;
145
146
  resizeOriginal: string;
147
+ alignLeft: string;
148
+ alignCenter: string;
149
+ alignRight: string;
146
150
  resizing: string;
147
151
  compressing: string;
148
152
  compressionError: string;
@@ -312,11 +316,15 @@ declare class AteI18nService {
312
316
  invalidFileType: string;
313
317
  dragDropText: string;
314
318
  changeImage: string;
319
+ downloadImage: string;
315
320
  deleteImage: string;
316
321
  resizeSmall: string;
317
322
  resizeMedium: string;
318
323
  resizeLarge: string;
319
324
  resizeOriginal: string;
325
+ alignLeft: string;
326
+ alignCenter: string;
327
+ alignRight: string;
320
328
  resizing: string;
321
329
  compressing: string;
322
330
  compressionError: string;
@@ -690,6 +698,7 @@ declare class AteEditorCommandsService {
690
698
  insertContent(editor: Editor, content: string): void;
691
699
  insertImage(editor: Editor, options?: AteImageUploadOptions): Promise<void>;
692
700
  uploadImage(editor: Editor, file: File, options?: AteImageUploadOptions): Promise<void>;
701
+ downloadImage(editor: Editor): void;
693
702
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AteEditorCommandsService, never>;
694
703
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AteEditorCommandsService>;
695
704
  }
@@ -768,7 +777,7 @@ interface AteCustomBubbleMenuItem {
768
777
  /**
769
778
  * Clés des options du menu bulle d'image
770
779
  */
771
- declare const ATE_IMAGE_BUBBLE_MENU_KEYS: readonly ["changeImage", "resizeSmall", "resizeMedium", "resizeLarge", "resizeOriginal", "deleteImage", "separator"];
780
+ declare const ATE_IMAGE_BUBBLE_MENU_KEYS: readonly ["changeImage", "downloadImage", "resizeSmall", "resizeMedium", "resizeLarge", "resizeOriginal", "alignLeft", "alignCenter", "alignRight", "deleteImage", "separator"];
772
781
  type AteImageBubbleMenuKey = (typeof ATE_IMAGE_BUBBLE_MENU_KEYS)[number];
773
782
  type AteImageBubbleMenuConfig = Partial<Record<AteImageBubbleMenuKey, boolean>>;
774
783
  /**
@@ -974,6 +983,8 @@ interface AteEditorConfig {
974
983
  showTableMenu?: boolean;
975
984
  /** Show or hide the cell menu */
976
985
  showCellMenu?: boolean;
986
+ /** Whether to allow image downloading from bubble menu */
987
+ downloadImage?: boolean;
977
988
  /** Enable or disable slash commands (/) */
978
989
  enableSlashCommands?: boolean;
979
990
  /** Maximum number of characters allowed */
@@ -1063,7 +1074,7 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
1063
1074
  showBubbleMenu: _angular_core.InputSignal<boolean | undefined>;
1064
1075
  bubbleMenu: _angular_core.InputSignal<Partial<AteBubbleMenuConfig> | undefined>;
1065
1076
  showImageBubbleMenu: _angular_core.InputSignal<boolean | undefined>;
1066
- imageBubbleMenu: _angular_core.InputSignal<Partial<Partial<Record<"separator" | "changeImage" | "resizeSmall" | "resizeMedium" | "resizeLarge" | "resizeOriginal" | "deleteImage", boolean>>> | undefined>;
1077
+ imageBubbleMenu: _angular_core.InputSignal<Partial<Partial<Record<"separator" | "alignLeft" | "alignCenter" | "alignRight" | "changeImage" | "downloadImage" | "resizeSmall" | "resizeMedium" | "resizeLarge" | "resizeOriginal" | "deleteImage", boolean>>> | undefined>;
1067
1078
  toolbar: _angular_core.InputSignal<Partial<AteToolbarConfig> | undefined>;
1068
1079
  showTableBubbleMenu: _angular_core.InputSignal<boolean | undefined>;
1069
1080
  tableBubbleMenu: _angular_core.InputSignal<Partial<Partial<Record<"addColumnBefore" | "addColumnAfter" | "deleteColumn" | "addRowBefore" | "addRowAfter" | "deleteRow" | "deleteTable" | "toggleHeaderColumn" | "toggleHeaderRow" | "separator", boolean>>> | undefined>;
@@ -1125,43 +1136,50 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
1125
1136
  readonly editorFullyInitialized: _angular_core.Signal<boolean>;
1126
1137
  private _isFormControlDisabled;
1127
1138
  readonly isFormControlDisabled: _angular_core.Signal<boolean>;
1128
- readonly mergedDisabled: _angular_core.Signal<any>;
1139
+ readonly mergedDisabled: _angular_core.Signal<boolean>;
1129
1140
  isEditorReady: _angular_core.Signal<boolean>;
1130
1141
  readonly finalSeamless: _angular_core.Signal<boolean>;
1131
- readonly finalEditable: _angular_core.Signal<any>;
1132
- readonly finalPlaceholder: _angular_core.Signal<any>;
1133
- readonly finalFillContainer: _angular_core.Signal<any>;
1134
- readonly finalShowFooter: _angular_core.Signal<any>;
1135
- readonly finalShowEditToggle: _angular_core.Signal<any>;
1136
- readonly finalHeight: _angular_core.Signal<any>;
1137
- readonly finalMinHeight: _angular_core.Signal<any>;
1138
- readonly finalMaxHeight: _angular_core.Signal<any>;
1139
- readonly finalSpellcheck: _angular_core.Signal<any>;
1140
- readonly finalEnableOfficePaste: _angular_core.Signal<any>;
1141
- readonly finalShowToolbar: _angular_core.Signal<any>;
1142
- readonly finalToolbarConfig: _angular_core.Signal<any>;
1143
- readonly finalFloatingToolbar: _angular_core.Signal<any>;
1144
- readonly finalShowBubbleMenu: _angular_core.Signal<any>;
1145
- readonly finalBubbleMenuConfig: _angular_core.Signal<any>;
1146
- readonly finalShowImageBubbleMenu: _angular_core.Signal<any>;
1147
- readonly finalImageBubbleMenuConfig: _angular_core.Signal<any>;
1148
- readonly finalShowTableBubbleMenu: _angular_core.Signal<any>;
1149
- readonly finalTableBubbleMenuConfig: _angular_core.Signal<any>;
1150
- readonly finalShowCellBubbleMenu: _angular_core.Signal<any>;
1151
- readonly finalCellBubbleMenuConfig: _angular_core.Signal<any>;
1152
- readonly finalEnableSlashCommands: _angular_core.Signal<any>;
1153
- readonly finalSlashCommandsConfig: _angular_core.Signal<any>;
1154
- readonly finalAutofocus: _angular_core.Signal<any>;
1155
- readonly finalMaxCharacters: _angular_core.Signal<any>;
1156
- readonly finalShowCharacterCount: _angular_core.Signal<any>;
1157
- readonly finalShowWordCount: _angular_core.Signal<any>;
1142
+ readonly finalEditable: _angular_core.Signal<boolean>;
1143
+ readonly finalPlaceholder: _angular_core.Signal<string>;
1144
+ readonly finalFillContainer: _angular_core.Signal<boolean | undefined>;
1145
+ readonly finalShowFooter: _angular_core.Signal<boolean>;
1146
+ readonly finalShowEditToggle: _angular_core.Signal<boolean>;
1147
+ readonly finalHeight: _angular_core.Signal<string | undefined>;
1148
+ readonly finalMinHeight: _angular_core.Signal<string | undefined>;
1149
+ readonly finalMaxHeight: _angular_core.Signal<string | undefined>;
1150
+ readonly finalSpellcheck: _angular_core.Signal<boolean>;
1151
+ readonly finalEnableOfficePaste: _angular_core.Signal<boolean>;
1152
+ readonly finalShowToolbar: _angular_core.Signal<boolean>;
1153
+ readonly finalToolbarConfig: _angular_core.Signal<AteToolbarConfig>;
1154
+ readonly finalFloatingToolbar: _angular_core.Signal<boolean>;
1155
+ readonly finalShowBubbleMenu: _angular_core.Signal<boolean>;
1156
+ readonly finalBubbleMenuConfig: _angular_core.Signal<AteBubbleMenuConfig>;
1157
+ readonly finalShowImageBubbleMenu: _angular_core.Signal<boolean>;
1158
+ readonly finalImageBubbleMenuConfig: _angular_core.Signal<Partial<Record<"separator" | "alignLeft" | "alignCenter" | "alignRight" | "changeImage" | "downloadImage" | "resizeSmall" | "resizeMedium" | "resizeLarge" | "resizeOriginal" | "deleteImage", boolean>>>;
1159
+ readonly finalShowTableBubbleMenu: _angular_core.Signal<boolean>;
1160
+ readonly finalTableBubbleMenuConfig: _angular_core.Signal<Partial<Record<"addColumnBefore" | "addColumnAfter" | "deleteColumn" | "addRowBefore" | "addRowAfter" | "deleteRow" | "deleteTable" | "toggleHeaderColumn" | "toggleHeaderRow" | "separator", boolean>>>;
1161
+ readonly finalShowCellBubbleMenu: _angular_core.Signal<boolean>;
1162
+ readonly finalCellBubbleMenuConfig: _angular_core.Signal<Partial<Record<"mergeCells" | "splitCell", boolean>>>;
1163
+ readonly finalEnableSlashCommands: _angular_core.Signal<boolean>;
1164
+ readonly finalSlashCommandsConfig: _angular_core.Signal<AteCustomSlashCommands>;
1165
+ readonly finalAutofocus: _angular_core.Signal<number | boolean | "start" | "end" | "all" | undefined>;
1166
+ readonly finalMaxCharacters: _angular_core.Signal<number | undefined>;
1167
+ readonly finalShowCharacterCount: _angular_core.Signal<boolean>;
1168
+ readonly finalShowWordCount: _angular_core.Signal<boolean>;
1158
1169
  readonly finalLocale: _angular_core.Signal<SupportedLocale>;
1159
- readonly finalTiptapExtensions: _angular_core.Signal<any>;
1160
- readonly finalTiptapOptions: _angular_core.Signal<any>;
1161
- readonly finalStateCalculators: _angular_core.Signal<any>;
1162
- readonly finalAngularNodesConfig: _angular_core.Signal<any>;
1163
- readonly finalImageUploadConfig: _angular_core.Signal<any>;
1164
- readonly finalImageUploadHandler: _angular_core.Signal<any>;
1170
+ readonly finalTiptapExtensions: _angular_core.Signal<(Mark<any, any> | Node$2<any, any> | Extension<any, any>)[]>;
1171
+ readonly finalTiptapOptions: _angular_core.Signal<Partial<EditorOptions>>;
1172
+ readonly finalStateCalculators: _angular_core.Signal<AteStateCalculator[]>;
1173
+ readonly finalAngularNodesConfig: _angular_core.Signal<AteAngularNode[]>;
1174
+ readonly finalImageUploadConfig: _angular_core.Signal<{
1175
+ maxSize: number;
1176
+ quality?: number;
1177
+ maxWidth?: number;
1178
+ maxHeight?: number;
1179
+ allowedTypes?: string[];
1180
+ handler?: AteImageUploadHandler;
1181
+ }>;
1182
+ readonly finalImageUploadHandler: _angular_core.Signal<AteImageUploadHandler | undefined>;
1165
1183
  readonly currentTranslations: _angular_core.Signal<_flogeez_angular_tiptap_editor.AteTranslations>;
1166
1184
  private _destroyRef;
1167
1185
  private ngControl;
@@ -1174,7 +1192,46 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
1174
1192
  * Final merged configuration.
1175
1193
  * Priority: Input [config] > Global config via provideAteEditor()
1176
1194
  */
1177
- readonly effectiveConfig: _angular_core.Signal<any>;
1195
+ readonly effectiveConfig: _angular_core.Signal<{
1196
+ theme?: "light" | "dark" | "auto";
1197
+ mode?: "classic" | "seamless";
1198
+ height?: string | number;
1199
+ autofocus?: "start" | "end" | "all" | boolean | number;
1200
+ placeholder?: string;
1201
+ editable?: boolean;
1202
+ minHeight?: string | number;
1203
+ maxHeight?: string | number;
1204
+ fillContainer?: boolean;
1205
+ disabled?: boolean;
1206
+ locale?: string;
1207
+ spellcheck?: boolean;
1208
+ enableOfficePaste?: boolean;
1209
+ showToolbar?: boolean;
1210
+ showFooter?: boolean;
1211
+ showCharacterCount?: boolean;
1212
+ showWordCount?: boolean;
1213
+ showEditToggle?: boolean;
1214
+ showBubbleMenu?: boolean;
1215
+ showImageBubbleMenu?: boolean;
1216
+ showTableMenu?: boolean;
1217
+ showCellMenu?: boolean;
1218
+ downloadImage?: boolean;
1219
+ enableSlashCommands?: boolean;
1220
+ maxCharacters?: number;
1221
+ toolbar?: AteToolbarConfig;
1222
+ bubbleMenu?: AteBubbleMenuConfig;
1223
+ imageBubbleMenu?: AteImageBubbleMenuConfig;
1224
+ tableBubbleMenu?: AteTableBubbleMenuConfig;
1225
+ cellBubbleMenu?: AteCellBubbleMenuConfig;
1226
+ slashCommands?: AteSlashCommandsConfig;
1227
+ floatingToolbar?: boolean;
1228
+ imageUpload?: _flogeez_angular_tiptap_editor.AteImageUploadConfig;
1229
+ angularNodes?: AteAngularNode[];
1230
+ tiptapExtensions?: (Extension | Node$2 | Mark)[];
1231
+ tiptapOptions?: Partial<EditorOptions>;
1232
+ stateCalculators?: AteStateCalculator[];
1233
+ customSlashCommands?: AteCustomSlashCommands;
1234
+ }>;
1178
1235
  constructor();
1179
1236
  ngAfterViewInit(): void;
1180
1237
  ngOnDestroy(): void;
@@ -1257,6 +1314,8 @@ declare class AteImageService {
1257
1314
  } | null;
1258
1315
  /** Remove the selected image */
1259
1316
  deleteImage(editor: Editor): void;
1317
+ /** Download the current image */
1318
+ downloadImage(editor: Editor): void;
1260
1319
  private updateSelectedImage;
1261
1320
  /** Validate file type and size */
1262
1321
  validateImage(file: File, options?: {
@@ -1414,6 +1473,8 @@ declare const ATE_DEFAULT_BUBBLE_MENU_CONFIG: AteBubbleMenuConfig;
1414
1473
  declare const ATE_DEFAULT_IMAGE_BUBBLE_MENU_CONFIG: AteImageBubbleMenuConfig;
1415
1474
  declare const ATE_DEFAULT_TABLE_MENU_CONFIG: AteTableBubbleMenuConfig;
1416
1475
  declare const ATE_DEFAULT_CELL_MENU_CONFIG: AteCellBubbleMenuConfig;
1476
+ declare const ATE_DEFAULT_IMAGE_UPLOAD_CONFIG: AteImageUploadConfig;
1477
+
1417
1478
  /**
1418
1479
  * Ultimate default configuration for the Angular Tiptap Editor.
1419
1480
  * This serves as the 'Level 4' fallback in the configuration hierarchy:
@@ -1422,7 +1483,7 @@ declare const ATE_DEFAULT_CELL_MENU_CONFIG: AteCellBubbleMenuConfig;
1422
1483
  * 3. Global provideAteEditor() (Le Duc)
1423
1484
  * 4. ATE_DEFAULT_CONFIG (Le Peuple)
1424
1485
  */
1425
- declare const ATE_DEFAULT_CONFIG: any;
1486
+ declare const ATE_DEFAULT_CONFIG: AteEditorConfig;
1426
1487
 
1427
1488
  /**
1428
1489
  * Injection Token for global editor configuration.
@@ -1600,5 +1661,5 @@ declare function createAngularComponentExtension<T = unknown>(injector: Injector
1600
1661
  */
1601
1662
  declare function registerAngularComponent<T = unknown>(injectorOrOptions: Injector | RegisterAngularComponentOptions<T>, maybeOptions?: RegisterAngularComponentOptions<T>): Node$2;
1602
1663
 
1603
- 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 };
1664
+ 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, createAngularComponentExtension, createDefaultSlashCommands, filterSlashCommands, provideAteEditor, registerAngularComponent };
1604
1665
  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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flogeez/angular-tiptap-editor",
3
- "version": "3.0.0",
3
+ "version": "3.0.2",
4
4
  "description": "A modern, customizable rich-text editor for Angular (18+), built with Tiptap and featuring complete internationalization support",
5
5
  "keywords": [
6
6
  "angular",
@@ -14,11 +14,11 @@
14
14
  .tippy-box .bubble-menu {
15
15
  display: flex !important;
16
16
  align-items: center;
17
- gap: 6px;
17
+ gap: var(--ate-menu-gap, 2px);
18
18
  background: var(--ate-menu-bg, rgb(255, 255, 255)) !important;
19
19
  border: 1px solid var(--ate-menu-border, rgba(0, 0, 0, 0.1));
20
20
  border-radius: var(--ate-menu-border-radius, 12px);
21
- padding: var(--ate-menu-padding, 6px);
21
+ padding: var(--ate-menu-padding, 4px);
22
22
  box-shadow: var(--ate-menu-shadow, 0 8px 32px rgba(0, 0, 0, 0.12));
23
23
  z-index: 1000;
24
24
  animation: slideUp 0.18s cubic-bezier(0, 0, 0.2, 1);
@@ -32,13 +32,6 @@
32
32
  pointer-events: none !important;
33
33
  }
34
34
 
35
- .bubble-menu .ate-separator {
36
- width: 1px;
37
- height: 28px;
38
- background: color-mix(in srgb, var(--ate-menu-border), transparent 50%);
39
- margin: 0 4px;
40
- }
41
-
42
35
  @keyframes slideUp {
43
36
  from {
44
37
  opacity: 0;
@@ -1,20 +1,20 @@
1
1
  @import "./ate-bubble-menu.global.css";
2
2
  @import "./material-symbols.css";
3
3
 
4
- /* Styles pour les liens */
4
+ /* Styles for links */
5
5
  .ate-link {
6
- color: var(--ate-primary, #1d4ed8);
6
+ color: var(--ate-primary, #2563eb);
7
7
  text-decoration: underline;
8
8
  cursor: pointer;
9
9
  transition: color 0.2s ease;
10
10
  }
11
11
 
12
12
  .ate-link:hover {
13
- color: var(--ate-primary-light-alpha, #1d4ed8);
13
+ color: var(--ate-primary-hover, #153ca9);
14
14
  text-decoration: underline;
15
15
  }
16
16
 
17
- /* Styles pour la surbrillance */
17
+ /* Styles for highlight */
18
18
  .ate-highlight {
19
19
  background-color: var(--ate-highlight-bg, #fef08a);
20
20
  padding: 0.1em 0.2em;
@@ -22,7 +22,7 @@
22
22
  color: var(--ate-highlight-color, #854d0e);
23
23
  }
24
24
 
25
- /* Styles pour les alignements de texte - Tiptap utilise des classes */
25
+ /* Styles for text alignment - Tiptap uses classes */
26
26
  .ProseMirror .has-text-align-left {
27
27
  text-align: left;
28
28
  }