@flogeez/angular-tiptap-editor 3.1.3 → 3.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +2 -2
  3. package/esm2022/flogeez-angular-tiptap-editor.mjs +5 -0
  4. package/esm2022/lib/ate-editor.provider.mjs +38 -0
  5. package/esm2022/lib/components/bubble-menus/base/ate-base-bubble-menu.mjs +207 -0
  6. package/esm2022/lib/components/bubble-menus/base/ate-base-sub-bubble-menu.mjs +137 -0
  7. package/esm2022/lib/components/bubble-menus/color/ate-color-bubble-menu.component.mjs +365 -0
  8. package/esm2022/lib/components/bubble-menus/image/ate-image-bubble-menu.component.mjs +309 -0
  9. package/esm2022/lib/components/bubble-menus/link/ate-link-bubble-menu.component.mjs +247 -0
  10. package/esm2022/lib/components/bubble-menus/table/ate-cell-bubble-menu.component.mjs +126 -0
  11. package/esm2022/lib/components/bubble-menus/table/ate-table-bubble-menu.component.mjs +271 -0
  12. package/esm2022/lib/components/bubble-menus/text/ate-bubble-menu.component.mjs +272 -0
  13. package/esm2022/lib/components/color-picker/ate-color-picker.component.mjs +123 -0
  14. package/esm2022/lib/components/edit-toggle/ate-edit-toggle.component.mjs +42 -0
  15. package/esm2022/lib/components/editor/angular-tiptap-editor.component.mjs +1032 -0
  16. package/esm2022/lib/components/editor/ate-block-controls.component.mjs +256 -0
  17. package/esm2022/lib/components/slash-commands/ate-slash-commands.component.mjs +328 -0
  18. package/esm2022/lib/components/toolbar/ate-toolbar.component.mjs +531 -0
  19. package/esm2022/lib/components/ui/ate-button.component.mjs +91 -0
  20. package/esm2022/lib/components/ui/ate-separator.component.mjs +11 -0
  21. package/esm2022/lib/config/ate-editor.config.mjs +133 -0
  22. package/esm2022/lib/config/ate-global-config.token.mjs +6 -0
  23. package/esm2022/lib/config/ate-slash-commands.config.mjs +130 -0
  24. package/esm2022/lib/directives/ate-noop-value-accessor.directive.mjs +40 -0
  25. package/esm2022/lib/directives/ate-tooltip.directive.mjs +138 -0
  26. package/esm2022/lib/extensions/ate-block-controls.extension.mjs +156 -0
  27. package/esm2022/lib/extensions/ate-link-click-behavior.extension.mjs +32 -0
  28. package/esm2022/lib/extensions/ate-resizable-image.extension.mjs +277 -0
  29. package/esm2022/lib/extensions/ate-table.extension.mjs +27 -0
  30. package/esm2022/lib/extensions/ate-tiptap-state.extension.mjs +85 -0
  31. package/esm2022/lib/extensions/ate-upload-progress.extension.mjs +195 -0
  32. package/esm2022/lib/extensions/calculators/ate-discovery.calculator.mjs +62 -0
  33. package/esm2022/lib/extensions/calculators/ate-image.calculator.mjs +8 -0
  34. package/esm2022/lib/extensions/calculators/ate-marks.calculator.mjs +75 -0
  35. package/esm2022/lib/extensions/calculators/ate-selection.calculator.mjs +35 -0
  36. package/esm2022/lib/extensions/calculators/ate-structure.calculator.mjs +34 -0
  37. package/esm2022/lib/extensions/calculators/ate-table.calculator.mjs +38 -0
  38. package/esm2022/lib/models/ate-bubble-menu.model.mjs +53 -0
  39. package/esm2022/lib/models/ate-editor-config.model.mjs +2 -0
  40. package/esm2022/lib/models/ate-editor-state.model.mjs +90 -0
  41. package/esm2022/lib/models/ate-image.model.mjs +2 -0
  42. package/esm2022/lib/models/ate-slash-command.model.mjs +2 -0
  43. package/esm2022/lib/models/ate-toolbar.model.mjs +35 -0
  44. package/esm2022/lib/node-view/ate-angular-node-view.mjs +97 -0
  45. package/esm2022/lib/node-view/ate-injector.registry.mjs +16 -0
  46. package/esm2022/lib/node-view/ate-node-view.factory.mjs +125 -0
  47. package/esm2022/lib/node-view/ate-node-view.models.mjs +2 -0
  48. package/esm2022/lib/node-view/ate-node-view.renderer.mjs +154 -0
  49. package/esm2022/lib/node-view/ate-register-angular-component.mjs +49 -0
  50. package/esm2022/lib/services/ate-color-picker.service.mjs +194 -0
  51. package/esm2022/lib/services/ate-editor-commands.service.mjs +507 -0
  52. package/esm2022/lib/services/ate-export.service.mjs +71 -0
  53. package/esm2022/lib/services/ate-i18n.service.mjs +449 -0
  54. package/esm2022/lib/services/ate-image.service.mjs +459 -0
  55. package/esm2022/lib/services/ate-link.service.mjs +99 -0
  56. package/esm2022/lib/utils/ate-color.utils.mjs +60 -0
  57. package/esm2022/lib/utils/ate-markdown.utils.mjs +179 -0
  58. package/esm2022/public-api.mjs +41 -0
  59. package/fesm2022/flogeez-angular-tiptap-editor.mjs +627 -354
  60. package/fesm2022/flogeez-angular-tiptap-editor.mjs.map +1 -1
  61. package/index.d.ts +3 -1734
  62. package/lib/ate-editor.provider.d.ts +21 -0
  63. package/lib/components/bubble-menus/base/ate-base-bubble-menu.d.ts +71 -0
  64. package/lib/components/bubble-menus/base/ate-base-sub-bubble-menu.d.ts +60 -0
  65. package/lib/components/bubble-menus/color/ate-color-bubble-menu.component.d.ts +77 -0
  66. package/lib/components/bubble-menus/image/ate-image-bubble-menu.component.d.ts +49 -0
  67. package/lib/components/bubble-menus/link/ate-link-bubble-menu.component.d.ts +55 -0
  68. package/lib/components/bubble-menus/table/ate-cell-bubble-menu.component.d.ts +16 -0
  69. package/lib/components/bubble-menus/table/ate-table-bubble-menu.component.d.ts +25 -0
  70. package/lib/components/bubble-menus/text/ate-bubble-menu.component.d.ts +53 -0
  71. package/lib/components/color-picker/ate-color-picker.component.d.ts +54 -0
  72. package/lib/components/edit-toggle/ate-edit-toggle.component.d.ts +13 -0
  73. package/lib/components/editor/angular-tiptap-editor.component.d.ts +242 -0
  74. package/lib/components/editor/ate-block-controls.component.d.ts +44 -0
  75. package/lib/components/slash-commands/ate-slash-commands.component.d.ts +34 -0
  76. package/lib/components/toolbar/ate-toolbar.component.d.ts +47 -0
  77. package/lib/components/ui/ate-button.component.d.ts +25 -0
  78. package/lib/components/ui/ate-separator.component.d.ts +5 -0
  79. package/lib/config/ate-editor.config.d.ts +19 -0
  80. package/lib/config/ate-global-config.token.d.ts +6 -0
  81. package/lib/config/ate-slash-commands.config.d.ts +41 -0
  82. package/lib/directives/ate-noop-value-accessor.directive.d.ts +13 -0
  83. package/lib/directives/ate-tooltip.directive.d.ts +30 -0
  84. package/lib/extensions/ate-block-controls.extension.d.ts +10 -0
  85. package/lib/extensions/ate-link-click-behavior.extension.d.ts +2 -0
  86. package/lib/extensions/ate-resizable-image.extension.d.ts +27 -0
  87. package/lib/extensions/ate-table.extension.d.ts +2 -0
  88. package/lib/extensions/ate-tiptap-state.extension.d.ts +7 -0
  89. package/lib/extensions/ate-upload-progress.extension.d.ts +7 -0
  90. package/lib/extensions/calculators/ate-discovery.calculator.d.ts +7 -0
  91. package/lib/extensions/calculators/ate-image.calculator.d.ts +2 -0
  92. package/lib/extensions/calculators/ate-marks.calculator.d.ts +2 -0
  93. package/lib/extensions/calculators/ate-selection.calculator.d.ts +2 -0
  94. package/lib/extensions/calculators/ate-structure.calculator.d.ts +2 -0
  95. package/lib/extensions/calculators/ate-table.calculator.d.ts +2 -0
  96. package/lib/models/ate-bubble-menu.model.d.ts +33 -0
  97. package/lib/models/ate-editor-config.model.d.ts +113 -0
  98. package/lib/models/ate-editor-state.model.d.ts +109 -0
  99. package/lib/models/ate-image.model.d.ts +104 -0
  100. package/lib/models/ate-slash-command.model.d.ts +17 -0
  101. package/lib/models/ate-toolbar.model.d.ts +18 -0
  102. package/lib/node-view/ate-angular-node-view.d.ts +115 -0
  103. package/lib/node-view/ate-injector.registry.d.ts +3 -0
  104. package/lib/node-view/ate-node-view.factory.d.ts +10 -0
  105. package/lib/node-view/ate-node-view.models.d.ts +138 -0
  106. package/lib/node-view/ate-node-view.renderer.d.ts +23 -0
  107. package/lib/node-view/ate-register-angular-component.d.ts +35 -0
  108. package/lib/services/ate-color-picker.service.d.ts +65 -0
  109. package/lib/services/ate-editor-commands.service.d.ts +89 -0
  110. package/lib/services/ate-export.service.d.ts +27 -0
  111. package/lib/services/ate-i18n.service.d.ts +432 -0
  112. package/lib/services/ate-image.service.d.ts +82 -0
  113. package/lib/services/ate-link.service.d.ts +42 -0
  114. package/lib/utils/ate-color.utils.d.ts +12 -0
  115. package/lib/utils/ate-markdown.utils.d.ts +4 -0
  116. package/package.json +3 -1
  117. package/public-api.d.ts +32 -0
@@ -0,0 +1,82 @@
1
+ import { Editor } from "@tiptap/core";
2
+ import { AteResizeOptions, AteImageUploadOptions, AteImageUploadHandler, AteImageUploadResult, AteImageData } from "../models/ate-image.model";
3
+ import * as i0 from "@angular/core";
4
+ export declare class AteImageService {
5
+ /** Signals for image state */
6
+ selectedImage: import("@angular/core").WritableSignal<AteImageData | null>;
7
+ isImageSelected: import("@angular/core").Signal<boolean>;
8
+ /** Resizing state */
9
+ isResizing: import("@angular/core").WritableSignal<boolean>;
10
+ private i18n;
11
+ private readonly t;
12
+ /** Upload state signals */
13
+ isUploading: import("@angular/core").WritableSignal<boolean>;
14
+ uploadProgress: import("@angular/core").WritableSignal<number>;
15
+ uploadMessage: import("@angular/core").WritableSignal<string>;
16
+ /**
17
+ * Custom upload handler.
18
+ * If set, this handler replaces the default base64 conversion.
19
+ */
20
+ uploadHandler: AteImageUploadHandler | null;
21
+ private currentEditor;
22
+ /** Select and track an image from the editor */
23
+ selectImage(editor: Editor): void;
24
+ clearSelection(): void;
25
+ /** Insert a new image and ensure it's selected */
26
+ insertImage(editor: Editor, imageData: AteImageData): void;
27
+ /** Update attributes of the currently active image */
28
+ updateImageAttributes(editor: Editor, attributes: Partial<AteImageData>): void;
29
+ /** Resize image with optional aspect ratio maintenance */
30
+ resizeImage(editor: Editor, options: AteResizeOptions): void;
31
+ /** Predetermined resize helpers used by UI */
32
+ resizeImageToSmall(editor: Editor): void;
33
+ resizeImageToMedium(editor: Editor): void;
34
+ resizeImageToLarge(editor: Editor): void;
35
+ resizeImageToOriginal(editor: Editor): void;
36
+ /** Get current image dimensions */
37
+ getImageDimensions(editor: Editor): {
38
+ width: number;
39
+ height: number;
40
+ } | null;
41
+ /** Remove the selected image */
42
+ deleteImage(editor: Editor): void;
43
+ /** Download the current image */
44
+ downloadImage(editor: Editor): void;
45
+ private updateSelectedImage;
46
+ /** Validate file type and size */
47
+ validateImage(file: File, options?: {
48
+ maxSize?: number;
49
+ allowedTypes?: string[];
50
+ }): {
51
+ valid: boolean;
52
+ error?: string;
53
+ };
54
+ /** Compress and process image on client side */
55
+ compressImage(file: File, quality?: number, maxWidth?: number, maxHeight?: number): Promise<AteImageUploadResult>;
56
+ /** Core upload logic with progress tracking */
57
+ private uploadImageWithProgress;
58
+ private resetUploadState;
59
+ /** Main entry point for file upload and insertion */
60
+ uploadAndInsertImage(editor: Editor, file: File, options?: AteImageUploadOptions): Promise<void>;
61
+ /** Trigger an editor transaction to force decoration update */
62
+ private forceEditorUpdate;
63
+ /** Generic helper to open file picker and process selection */
64
+ private selectFileAndProcess;
65
+ /** Select file and upload as new image */
66
+ selectAndUploadImage(editor: Editor, options?: AteImageUploadOptions): Promise<void>;
67
+ /** Select file and replace currently selected image */
68
+ selectAndReplaceImage(editor: Editor, options?: AteImageUploadOptions): Promise<void>;
69
+ /** Internal helper used by replacement logic */
70
+ uploadAndReplaceImage(editor: Editor, file: File, options?: AteImageUploadOptions): Promise<void>;
71
+ /**
72
+ * Handle image drop event.
73
+ * Calculates the position from coordinates and sets the selection accordingly.
74
+ */
75
+ handleDrop(editor: Editor, event: DragEvent, options?: AteImageUploadOptions): boolean;
76
+ /**
77
+ * Handle image paste event.
78
+ */
79
+ handlePaste(editor: Editor, event: ClipboardEvent, options?: AteImageUploadOptions): boolean;
80
+ static ɵfac: i0.ɵɵFactoryDeclaration<AteImageService, never>;
81
+ static ɵprov: i0.ɵɵInjectableDeclaration<AteImageService>;
82
+ }
@@ -0,0 +1,42 @@
1
+ import type { Editor } from "@tiptap/core";
2
+ import * as i0 from "@angular/core";
3
+ export declare class AteLinkService {
4
+ /** Whether link edit mode is active */
5
+ readonly editMode: import("@angular/core").WritableSignal<boolean>;
6
+ /** Reference to the element that triggered the menu (for anchoring) */
7
+ readonly menuTrigger: import("@angular/core").WritableSignal<HTMLElement | null>;
8
+ /** Whether the user is currently interacting with the link UI (input focus) */
9
+ readonly isInteracting: import("@angular/core").WritableSignal<boolean>;
10
+ /**
11
+ * Open the link edit menu.
12
+ */
13
+ open(trigger?: HTMLElement): void;
14
+ /**
15
+ * Close the link edit menu.
16
+ */
17
+ close(): void;
18
+ /**
19
+ * Final cleanup (called after UI is hidden)
20
+ */
21
+ done(): void;
22
+ /**
23
+ * Set interaction state
24
+ */
25
+ setInteracting(value: boolean): void;
26
+ /**
27
+ * Toggle link mode from UI.
28
+ * If a URL string is provided, applies the link and closes.
29
+ * If an Event is provided, extracts the trigger for anchoring.
30
+ */
31
+ toggle(editor: Editor, urlOrEvent?: string | Event): void;
32
+ /**
33
+ * Apply a link to the current selection.
34
+ */
35
+ setLink(editor: Editor, url: string): void;
36
+ /**
37
+ * Remove link from the current selection.
38
+ */
39
+ unsetLink(editor: Editor): void;
40
+ static ɵfac: i0.ɵɵFactoryDeclaration<AteLinkService, never>;
41
+ static ɵprov: i0.ɵɵInjectableDeclaration<AteLinkService>;
42
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Normalizes color values (rgb/rgba to hex).
3
+ */
4
+ export declare function normalizeColor(color: string | null | undefined): string | null;
5
+ /**
6
+ * Calculate luminance (0-255).
7
+ */
8
+ export declare function getLuminance(color: string | null | undefined): number;
9
+ /**
10
+ * Returns contrast color for readability.
11
+ */
12
+ export declare function getContrastColor(color: string): "black" | "white";
@@ -0,0 +1,4 @@
1
+ /**
2
+ * HTML to Markdown converter utility (no external dependencies).
3
+ */
4
+ export declare function htmlToMarkdown(html: string): string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flogeez/angular-tiptap-editor",
3
- "version": "3.1.3",
3
+ "version": "3.1.5",
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",
@@ -53,6 +53,8 @@
53
53
  },
54
54
  ".": {
55
55
  "types": "./index.d.ts",
56
+ "esm2022": "./esm2022/flogeez-angular-tiptap-editor.mjs",
57
+ "esm": "./esm2022/flogeez-angular-tiptap-editor.mjs",
56
58
  "default": "./fesm2022/flogeez-angular-tiptap-editor.mjs"
57
59
  }
58
60
  }
@@ -0,0 +1,32 @@
1
+ export * from "./lib/components/editor/angular-tiptap-editor.component";
2
+ export * from "./lib/ate-editor.provider";
3
+ export * from "./lib/directives/ate-noop-value-accessor.directive";
4
+ export * from "./lib/directives/ate-tooltip.directive";
5
+ export * from "./lib/services/ate-i18n.service";
6
+ export * from "./lib/services/ate-editor-commands.service";
7
+ export * from "./lib/services/ate-image.service";
8
+ export * from "./lib/services/ate-color-picker.service";
9
+ export * from "./lib/services/ate-link.service";
10
+ export * from "./lib/services/ate-export.service";
11
+ export * from "./lib/models/ate-editor-state.model";
12
+ export * from "./lib/extensions/calculators/ate-discovery.calculator";
13
+ export * from "./lib/extensions/calculators/ate-image.calculator";
14
+ export * from "./lib/extensions/calculators/ate-marks.calculator";
15
+ export * from "./lib/extensions/calculators/ate-selection.calculator";
16
+ export * from "./lib/extensions/calculators/ate-structure.calculator";
17
+ export * from "./lib/extensions/calculators/ate-table.calculator";
18
+ export * from "./lib/models/ate-toolbar.model";
19
+ export * from "./lib/models/ate-image.model";
20
+ export * from "./lib/models/ate-bubble-menu.model";
21
+ export * from "./lib/models/ate-editor-config.model";
22
+ export * from "./lib/models/ate-slash-command.model";
23
+ export * from "./lib/config/ate-editor.config";
24
+ export * from "./lib/config/ate-global-config.token";
25
+ export * from "./lib/config/ate-slash-commands.config";
26
+ export type { SupportedLocale } from "./lib/services/ate-i18n.service";
27
+ export { AteAngularNodeView } from "./lib/node-view/ate-angular-node-view";
28
+ export { AteNodeViewRenderer } from "./lib/node-view/ate-node-view.renderer";
29
+ export { createAngularComponentExtension } from "./lib/node-view/ate-node-view.factory";
30
+ export { registerAngularComponent } from "./lib/node-view/ate-register-angular-component";
31
+ export type { AteAngularNode } from "./lib/models/ate-editor-config.model";
32
+ export type { RegisterAngularComponentOptions, AteComponentRenderOptions, } from "./lib/node-view/ate-node-view.models";