@flogeez/angular-tiptap-editor 2.2.0 → 2.2.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 +6 -0
- package/README.md +46 -42
- package/fesm2022/flogeez-angular-tiptap-editor.mjs +105 -1
- package/fesm2022/flogeez-angular-tiptap-editor.mjs.map +1 -1
- package/index.d.ts +59 -80
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,12 @@ 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
|
+
## [2.2.1] - 2026-01-25
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **Custom Menu Items**: Added support for custom items in both the `Toolbar` and the `Bubble Menu` via the `custom` property in `AteToolbarConfig` and `AteBubbleMenuConfig`. This allows developers to easily extend the editor's UI with project-specific actions.
|
|
13
|
+
|
|
8
14
|
## [2.2.0] - 2026-01-21
|
|
9
15
|
|
|
10
16
|
### Changed
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
A modern, customizable rich-text editor for Angular applications, built with Tiptap and featuring complete internationalization support.
|
|
4
4
|
|
|
5
|
-
[](https://flogeez.github.io/angular-tiptap-editor/) [](https://stackblitz.com/edit/angular-tiptap-editor)
|
|
5
|
+
[](https://www.npmjs.com/package/@flogeez/angular-tiptap-editor) [](https://flogeez.github.io/angular-tiptap-editor/) [](https://stackblitz.com/edit/angular-tiptap-editor)
|
|
6
6
|
|
|
7
7
|
## 🚀 Features
|
|
8
8
|
|
|
@@ -16,7 +16,7 @@ A modern, customizable rich-text editor for Angular applications, built with Tip
|
|
|
16
16
|
- **Built-in i18n**: English & French support with a reactive, extensible locale system.
|
|
17
17
|
- **Word/Character Count**: Real-time statistics with proper pluralization support.
|
|
18
18
|
- **Office-Ready**: Cleaned-up pasting from Microsoft Word and Excel to maintain layout integrity.
|
|
19
|
-
- **Service Driven**: Deep programmatic control via `
|
|
19
|
+
- **Service Driven**: Deep programmatic control via `AteEditorCommandsService` and isolated instances.
|
|
20
20
|
- **A11y First**: Built with accessibility best practices and full keyboard navigation.
|
|
21
21
|
|
|
22
22
|
## 💎 Why this editor?
|
|
@@ -87,7 +87,11 @@ The editor can be fully configured using a single `[config]` object, which provi
|
|
|
87
87
|
|
|
88
88
|
```typescript
|
|
89
89
|
import { Component } from "@angular/core";
|
|
90
|
-
import {
|
|
90
|
+
import {
|
|
91
|
+
AngularTiptapEditorComponent,
|
|
92
|
+
AteEditorConfig,
|
|
93
|
+
ATE_DEFAULT_TOOLBAR_CONFIG,
|
|
94
|
+
} from "@flogeez/angular-tiptap-editor";
|
|
91
95
|
|
|
92
96
|
@Component({
|
|
93
97
|
selector: "app-advanced",
|
|
@@ -109,7 +113,7 @@ export class AdvancedComponent {
|
|
|
109
113
|
|
|
110
114
|
// Customize the toolbar by enabling specific features
|
|
111
115
|
toolbar: {
|
|
112
|
-
...
|
|
116
|
+
...ATE_DEFAULT_TOOLBAR_CONFIG,
|
|
113
117
|
clear: true, // Enable the 'Clear' button
|
|
114
118
|
highlight: false, // Disable the highlight button
|
|
115
119
|
},
|
|
@@ -187,7 +191,7 @@ export class FormComponent {
|
|
|
187
191
|
|
|
188
192
|
```typescript
|
|
189
193
|
import { Component, inject } from "@angular/core";
|
|
190
|
-
import {
|
|
194
|
+
import { AteEditorCommandsService } from "@flogeez/angular-tiptap-editor";
|
|
191
195
|
|
|
192
196
|
@Component({
|
|
193
197
|
selector: "app-commands",
|
|
@@ -205,7 +209,7 @@ import { EditorCommandsService } from "@flogeez/angular-tiptap-editor";
|
|
|
205
209
|
`,
|
|
206
210
|
})
|
|
207
211
|
export class CommandsComponent {
|
|
208
|
-
private editorCommandsService = inject(
|
|
212
|
+
private editorCommandsService = inject(AteEditorCommandsService);
|
|
209
213
|
private editor: Editor | null = null;
|
|
210
214
|
|
|
211
215
|
onEditorCreated(editor: Editor) {
|
|
@@ -247,13 +251,13 @@ Any TipTap **Mark** or **Node** you add to `tiptapExtensions` is automatically t
|
|
|
247
251
|
|
|
248
252
|
If you need to extract complex data (like attributes, depth, or custom logic), you can provide a custom `StateCalculator`.
|
|
249
253
|
|
|
250
|
-
1.
|
|
254
|
+
1. **Define a Calculator**:
|
|
251
255
|
|
|
252
256
|
```typescript
|
|
253
|
-
import {
|
|
257
|
+
import { AteStateCalculator } from "@flogeez/angular-tiptap-editor";
|
|
254
258
|
|
|
255
259
|
// This function will be called on every editor update
|
|
256
|
-
export const MyCustomCalculator:
|
|
260
|
+
export const MyCustomCalculator: AteStateCalculator = editor => {
|
|
257
261
|
return {
|
|
258
262
|
custom: {
|
|
259
263
|
hasHighPriority: editor.isActive("priority"),
|
|
@@ -264,18 +268,18 @@ export const MyCustomCalculator: StateCalculator = editor => {
|
|
|
264
268
|
};
|
|
265
269
|
```
|
|
266
270
|
|
|
267
|
-
2.
|
|
271
|
+
2. **Register it in the Template**:
|
|
268
272
|
|
|
269
273
|
```html
|
|
270
274
|
<angular-tiptap-editor [stateCalculators]="[MyCustomCalculator]" />
|
|
271
275
|
```
|
|
272
276
|
|
|
273
|
-
3.
|
|
277
|
+
3. **Consume it anywhere**:
|
|
274
278
|
|
|
275
279
|
```typescript
|
|
276
280
|
@Component({ ... })
|
|
277
281
|
export class MyToolbarComponent {
|
|
278
|
-
private editorCommands = inject(
|
|
282
|
+
private editorCommands = inject(AteEditorCommandsService);
|
|
279
283
|
|
|
280
284
|
// Access your custom data reactively!
|
|
281
285
|
isHighPriority = computed(() => this.editorCommands.editorState().custom?.hasHighPriority);
|
|
@@ -309,9 +313,9 @@ Quick content insertion with slash commands:
|
|
|
309
313
|
The `slashCommands` object also allows you to add completely custom command items:
|
|
310
314
|
|
|
311
315
|
```typescript
|
|
312
|
-
import {
|
|
316
|
+
import { AteSlashCommandsConfig } from "@flogeez/angular-tiptap-editor";
|
|
313
317
|
|
|
314
|
-
slashCommands:
|
|
318
|
+
slashCommands: AteSlashCommandsConfig = {
|
|
315
319
|
// Toggle native commands
|
|
316
320
|
heading1: true,
|
|
317
321
|
image: false,
|
|
@@ -351,7 +355,7 @@ The handler can return either an **Observable** or a **Promise**.
|
|
|
351
355
|
import { Component, inject } from "@angular/core";
|
|
352
356
|
import { HttpClient } from "@angular/common/http";
|
|
353
357
|
import { map } from "rxjs/operators";
|
|
354
|
-
import { AngularTiptapEditorComponent,
|
|
358
|
+
import { AngularTiptapEditorComponent, AteImageUploadHandler } from "@flogeez/angular-tiptap-editor";
|
|
355
359
|
|
|
356
360
|
@Component({
|
|
357
361
|
selector: "app-custom-upload",
|
|
@@ -368,7 +372,7 @@ export class CustomUploadComponent {
|
|
|
368
372
|
private http = inject(HttpClient);
|
|
369
373
|
content = "";
|
|
370
374
|
|
|
371
|
-
uploadHandler:
|
|
375
|
+
uploadHandler: AteImageUploadHandler = ctx => {
|
|
372
376
|
const formData = new FormData();
|
|
373
377
|
formData.append("image", ctx.file);
|
|
374
378
|
|
|
@@ -384,7 +388,7 @@ export class CustomUploadComponent {
|
|
|
384
388
|
#### Using Promise (async/await)
|
|
385
389
|
|
|
386
390
|
```typescript
|
|
387
|
-
uploadHandler:
|
|
391
|
+
uploadHandler: AteImageUploadHandler = async ctx => {
|
|
388
392
|
const formData = new FormData();
|
|
389
393
|
formData.append("image", ctx.file);
|
|
390
394
|
|
|
@@ -463,11 +467,11 @@ Open [http://localhost:4200](http://localhost:4200) to view the demo.
|
|
|
463
467
|
| `enableOfficePaste` | `boolean` | `true` | Enable smart Office pasting |
|
|
464
468
|
| `showCharacterCount` | `boolean` | `true` | Show character counter |
|
|
465
469
|
| `showWordCount` | `boolean` | `true` | Show word counter |
|
|
466
|
-
| `toolbar` | `
|
|
467
|
-
| `bubbleMenu` | `
|
|
468
|
-
| `slashCommands` | `
|
|
469
|
-
| `imageUploadHandler` | `
|
|
470
|
-
| `stateCalculators` | `
|
|
470
|
+
| `toolbar` | `AteToolbarConfig` | All enabled | Detailed toolbar configuration |
|
|
471
|
+
| `bubbleMenu` | `AteBubbleMenuConfig` | All enabled | Detailed bubble menu configuration |
|
|
472
|
+
| `slashCommands` | `AteSlashCommandsConfig` | All enabled | Detailed slash commands config |
|
|
473
|
+
| `imageUploadHandler` | `AteImageUploadHandler` | `undefined` | Custom image upload function |
|
|
474
|
+
| `stateCalculators` | `AteStateCalculator[]` | `[]` | Custom reactive state logic |
|
|
471
475
|
| `tiptapExtensions` | `(Extension \| Node \| Mark)[]` | `[]` | Additional Tiptap extensions |
|
|
472
476
|
| `tiptapOptions` | `Partial<EditorOptions>` | `{}` | Additional Tiptap editor options |
|
|
473
477
|
|
|
@@ -507,12 +511,12 @@ export interface AteEditorConfig {
|
|
|
507
511
|
maxCharacters?: number;
|
|
508
512
|
|
|
509
513
|
// Complex Modules
|
|
510
|
-
toolbar?:
|
|
511
|
-
bubbleMenu?:
|
|
512
|
-
imageBubbleMenu?:
|
|
513
|
-
tableBubbleMenu?:
|
|
514
|
-
cellBubbleMenu?:
|
|
515
|
-
slashCommands?:
|
|
514
|
+
toolbar?: AteToolbarConfig;
|
|
515
|
+
bubbleMenu?: AteBubbleMenuConfig;
|
|
516
|
+
imageBubbleMenu?: AteImageBubbleMenuConfig;
|
|
517
|
+
tableBubbleMenu?: AteTableBubbleMenuConfig;
|
|
518
|
+
cellBubbleMenu?: AteCellBubbleMenuConfig;
|
|
519
|
+
slashCommands?: AteSlashCommandsConfig;
|
|
516
520
|
imageUpload?: AteImageUploadConfig;
|
|
517
521
|
}
|
|
518
522
|
```
|
|
@@ -524,7 +528,7 @@ The `imageUpload` property in `AteEditorConfig` provides fine-grained control ov
|
|
|
524
528
|
```typescript
|
|
525
529
|
export interface AteImageUploadConfig {
|
|
526
530
|
/** Custom handler to upload files to a server */
|
|
527
|
-
handler?:
|
|
531
|
+
handler?: AteImageUploadHandler;
|
|
528
532
|
/** Maximum file size in bytes (default: 10MB) */
|
|
529
533
|
maxFileSize?: number;
|
|
530
534
|
/** Accepted file types (default: 'image/*') */
|
|
@@ -560,14 +564,14 @@ The editor comes with built-in support for **English (en)** and **French (fr)**,
|
|
|
560
564
|
|
|
561
565
|
### Adding Custom Languages
|
|
562
566
|
|
|
563
|
-
You can easily extend the editor with new languages or override existing labels using the `
|
|
567
|
+
You can easily extend the editor with new languages or override existing labels using the `AteI18nService`:
|
|
564
568
|
|
|
565
569
|
```typescript
|
|
566
|
-
import {
|
|
570
|
+
import { AteI18nService } from "@flogeez/angular-tiptap-editor";
|
|
567
571
|
|
|
568
572
|
@Component({ ... })
|
|
569
573
|
export class MyComponent {
|
|
570
|
-
constructor(private i18nService:
|
|
574
|
+
constructor(private i18nService: AteI18nService) {
|
|
571
575
|
// Add Spanish support
|
|
572
576
|
this.i18nService.addTranslations('es', {
|
|
573
577
|
toolbar: { bold: 'Negrita', italic: 'Cursiva', ... },
|
|
@@ -651,7 +655,7 @@ angular-tiptap-editor {
|
|
|
651
655
|
|
|
652
656
|
### ⚡ Reactive State & OnPush
|
|
653
657
|
|
|
654
|
-
The library exposes a reactive `editorState` signal via the `
|
|
658
|
+
The library exposes a reactive `editorState` signal via the `AteEditorCommandsService`. This signal contains everything you need to build custom UIs around the editor:
|
|
655
659
|
|
|
656
660
|
- **Active State**: Check if `bold`, `italic`, or custom marks are active.
|
|
657
661
|
- **Commands Availability**: Check if `undo`, `redo`, or custom commands can be executed.
|
|
@@ -686,13 +690,13 @@ The library uses a **Snapshot & Signal** pattern to bridge Tiptap and Angular.
|
|
|
686
690
|
|
|
687
691
|
### Core Services
|
|
688
692
|
|
|
689
|
-
- **`
|
|
690
|
-
- **`
|
|
691
|
-
- **`
|
|
693
|
+
- **`AteEditorCommandsService`**: Exposes the `editorState` signal and provides a centralized API for executing Tiptap commands.
|
|
694
|
+
- **`AteImageService`**: Manages the image processing pipeline (selection, compression, and server-side upload handling).
|
|
695
|
+
- **`AteI18nService`**: Reactive translation service with support for browser locale auto-detection.
|
|
692
696
|
|
|
693
697
|
### Isolated Instances
|
|
694
698
|
|
|
695
|
-
Each component instance provides its own set of services (`
|
|
699
|
+
Each component instance provides its own set of services (`AteEditorCommandsService`, `AteImageService`, etc.) at the component level. This ensures that multiple editors on the same page maintain independent states and configurations without interference.
|
|
696
700
|
|
|
697
701
|
### Modern Angular Integration
|
|
698
702
|
|
|
@@ -706,11 +710,11 @@ The library provides default configurations that can be imported and customized:
|
|
|
706
710
|
|
|
707
711
|
```typescript
|
|
708
712
|
import {
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
713
|
+
ATE_DEFAULT_TOOLBAR_CONFIG,
|
|
714
|
+
ATE_DEFAULT_BUBBLE_MENU_CONFIG,
|
|
715
|
+
ATE_DEFAULT_IMAGE_BUBBLE_MENU_CONFIG,
|
|
716
|
+
ATE_DEFAULT_TABLE_MENU_CONFIG,
|
|
717
|
+
ATE_DEFAULT_SLASH_COMMANDS_CONFIG,
|
|
714
718
|
} from "@flogeez/angular-tiptap-editor";
|
|
715
719
|
```
|
|
716
720
|
|
|
@@ -2680,6 +2680,11 @@ class AteToolbarComponent {
|
|
|
2680
2680
|
[disabled]="!state().isEditable"
|
|
2681
2681
|
(buttonClick)="onCommand('clearContent')" />
|
|
2682
2682
|
}
|
|
2683
|
+
@if (config().custom?.length) {
|
|
2684
|
+
@for (item of config().custom; track item.key) {
|
|
2685
|
+
<ate-button [icon]="item.icon" [title]="item.label" (buttonClick)="item.command(editor())"></ate-button>
|
|
2686
|
+
}
|
|
2687
|
+
}
|
|
2683
2688
|
</div>
|
|
2684
2689
|
`, isInline: true, styles: [":host{display:block;transition:opacity .3s ease}:host-context(.floating-toolbar){position:sticky;top:3rem;left:0;right:0;z-index:100;display:flex;height:0;overflow:visible;pointer-events:none;opacity:0}:host-context(.floating-toolbar:focus-within),:host-context(.floating-toolbar:hover){opacity:1}.ate-toolbar{display:flex;align-items:center;gap:4px;padding:var(--ate-toolbar-padding);background:var(--ate-toolbar-background);border-bottom:1px solid var(--ate-toolbar-border-color);flex-wrap:wrap;min-height:32px;position:relative;z-index:50;border-top-left-radius:calc(var(--ate-menu-border-radius, 12px) - var(--ate-border-width, 2px));border-top-right-radius:calc(var(--ate-menu-border-radius, 12px) - var(--ate-border-width, 2px))}.ate-toolbar.floating{pointer-events:auto;border-radius:var(--ate-menu-border-radius, 12px);border:1px solid var(--ate-menu-border)!important;box-shadow:var(--ate-menu-shadow)!important;background:var(--ate-menu-bg)!important;padding:var(--ate-menu-padding)!important;flex-wrap:nowrap;overflow-x:auto;max-width:95vw;scrollbar-width:none;transform:translateY(0);transition:transform .3s cubic-bezier(.4,0,.2,1)}.ate-toolbar.floating::-webkit-scrollbar{display:none}:host-context(.floating-toolbar:focus-within) .ate-toolbar.floating,:host-context(.floating-toolbar:hover) .ate-toolbar.floating{transform:translateY(-2rem)}@media (max-width: 768px){.ate-toolbar{padding:6px 8px;gap:2px}}@keyframes toolbarSlideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.ate-toolbar{animation:toolbarSlideIn .3s cubic-bezier(.4,0,.2,1)}\n"], dependencies: [{ kind: "component", type: AteButtonComponent, selector: "ate-button", inputs: ["icon", "title", "active", "disabled", "color", "backgroundColor", "variant", "size", "iconSize"], outputs: ["buttonClick"] }, { kind: "component", type: AteSeparatorComponent, selector: "ate-separator", inputs: ["orientation", "size"] }, { kind: "component", type: AteColorPickerComponent, selector: "ate-color-picker", inputs: ["editor", "mode", "disabled", "anchorToText"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2685
2690
|
}
|
|
@@ -2912,6 +2917,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2912
2917
|
[disabled]="!state().isEditable"
|
|
2913
2918
|
(buttonClick)="onCommand('clearContent')" />
|
|
2914
2919
|
}
|
|
2920
|
+
@if (config().custom?.length) {
|
|
2921
|
+
@for (item of config().custom; track item.key) {
|
|
2922
|
+
<ate-button [icon]="item.icon" [title]="item.label" (buttonClick)="item.command(editor())"></ate-button>
|
|
2923
|
+
}
|
|
2924
|
+
}
|
|
2915
2925
|
</div>
|
|
2916
2926
|
`, styles: [":host{display:block;transition:opacity .3s ease}:host-context(.floating-toolbar){position:sticky;top:3rem;left:0;right:0;z-index:100;display:flex;height:0;overflow:visible;pointer-events:none;opacity:0}:host-context(.floating-toolbar:focus-within),:host-context(.floating-toolbar:hover){opacity:1}.ate-toolbar{display:flex;align-items:center;gap:4px;padding:var(--ate-toolbar-padding);background:var(--ate-toolbar-background);border-bottom:1px solid var(--ate-toolbar-border-color);flex-wrap:wrap;min-height:32px;position:relative;z-index:50;border-top-left-radius:calc(var(--ate-menu-border-radius, 12px) - var(--ate-border-width, 2px));border-top-right-radius:calc(var(--ate-menu-border-radius, 12px) - var(--ate-border-width, 2px))}.ate-toolbar.floating{pointer-events:auto;border-radius:var(--ate-menu-border-radius, 12px);border:1px solid var(--ate-menu-border)!important;box-shadow:var(--ate-menu-shadow)!important;background:var(--ate-menu-bg)!important;padding:var(--ate-menu-padding)!important;flex-wrap:nowrap;overflow-x:auto;max-width:95vw;scrollbar-width:none;transform:translateY(0);transition:transform .3s cubic-bezier(.4,0,.2,1)}.ate-toolbar.floating::-webkit-scrollbar{display:none}:host-context(.floating-toolbar:focus-within) .ate-toolbar.floating,:host-context(.floating-toolbar:hover) .ate-toolbar.floating{transform:translateY(-2rem)}@media (max-width: 768px){.ate-toolbar{padding:6px 8px;gap:2px}}@keyframes toolbarSlideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.ate-toolbar{animation:toolbarSlideIn .3s cubic-bezier(.4,0,.2,1)}\n"] }]
|
|
2917
2927
|
}], propDecorators: { editor: [{ type: i0.Input, args: [{ isSignal: true, alias: "editor", required: true }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], imageUpload: [{ type: i0.Input, args: [{ isSignal: true, alias: "imageUpload", required: false }] }], floating: [{ type: i0.Input, args: [{ isSignal: true, alias: "floating", required: false }] }] } });
|
|
@@ -3281,6 +3291,11 @@ class AteBubbleMenuComponent extends AteBaseBubbleMenu {
|
|
|
3281
3291
|
[disabled]="!state().can.toggleLink"
|
|
3282
3292
|
(buttonClick)="onCommand('toggleLink', $event)"></ate-button>
|
|
3283
3293
|
}
|
|
3294
|
+
@if (bubbleMenuConfig().custom?.length) {
|
|
3295
|
+
@for (item of bubbleMenuConfig().custom; track item.key) {
|
|
3296
|
+
<ate-button [icon]="item.icon" [title]="item.label" (buttonClick)="item.command(editor())"></ate-button>
|
|
3297
|
+
}
|
|
3298
|
+
}
|
|
3284
3299
|
</div>
|
|
3285
3300
|
`, isInline: true, dependencies: [{ kind: "component", type: AteButtonComponent, selector: "ate-button", inputs: ["icon", "title", "active", "disabled", "color", "backgroundColor", "variant", "size", "iconSize"], outputs: ["buttonClick"] }, { kind: "component", type: AteColorPickerComponent, selector: "ate-color-picker", inputs: ["editor", "mode", "disabled", "anchorToText"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3286
3301
|
}
|
|
@@ -3375,6 +3390,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
3375
3390
|
[disabled]="!state().can.toggleLink"
|
|
3376
3391
|
(buttonClick)="onCommand('toggleLink', $event)"></ate-button>
|
|
3377
3392
|
}
|
|
3393
|
+
@if (bubbleMenuConfig().custom?.length) {
|
|
3394
|
+
@for (item of bubbleMenuConfig().custom; track item.key) {
|
|
3395
|
+
<ate-button [icon]="item.icon" [title]="item.label" (buttonClick)="item.command(editor())"></ate-button>
|
|
3396
|
+
}
|
|
3397
|
+
}
|
|
3378
3398
|
</div>
|
|
3379
3399
|
`,
|
|
3380
3400
|
}]
|
|
@@ -6438,6 +6458,90 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
6438
6458
|
`, styles: [":host{--ate-primary: #2563eb;--ate-primary-contrast: #ffffff;--ate-primary-light: color-mix(in srgb, var(--ate-primary), transparent 90%);--ate-primary-lighter: color-mix(in srgb, var(--ate-primary), transparent 95%);--ate-primary-light-alpha: color-mix(in srgb, var(--ate-primary), transparent 85%);--ate-surface: #ffffff;--ate-surface-secondary: #f8f9fa;--ate-surface-tertiary: #f1f5f9;--ate-text: #2d3748;--ate-text-secondary: #64748b;--ate-text-muted: #a0aec0;--ate-border: #e2e8f0;--ate-highlight-bg: #fef08a;--ate-highlight-color: #854d0e;--ate-button-hover: #f1f5f9;--ate-button-active: #e2e8f0;--ate-error-color: #c53030;--ate-error-bg: #fed7d7;--ate-error-border: #feb2b2;--ate-border-color: var(--ate-border);--ate-border-width: 2px;--ate-border-radius: 12px;--ate-focus-color: var(--ate-primary);--ate-background: var(--ate-surface);--ate-sub-border-radius: 8px;--ate-text-color: var(--ate-text);--ate-placeholder-color: var(--ate-text-muted);--ate-line-height: 1.6;--ate-content-padding: 16px;--ate-menu-bg: var(--ate-surface);--ate-menu-border-radius: var(--ate-border-radius);--ate-menu-border: var(--ate-border);--ate-menu-shadow: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--ate-menu-padding: 6px;--ate-toolbar-padding: var(--ate-menu-padding);--ate-toolbar-background: var(--ate-surface-secondary);--ate-toolbar-border-color: var(--ate-border);--ate-toolbar-button-color: var(--ate-text-secondary);--ate-toolbar-button-hover-background: transparent;--ate-toolbar-button-active-background: var(--ate-primary-light);--ate-toolbar-button-active-color: var(--ate-primary);--ate-counter-color: var(--ate-text-secondary);--ate-counter-background: var(--ate-surface-secondary);--ate-counter-border-color: var(--ate-border);--ate-drag-background: #f0f8ff;--ate-drag-border-color: var(--ate-primary);--ate-blockquote-border-color: var(--ate-border);--ate-blockquote-background: var(--ate-surface-secondary);--ate-code-background: var(--ate-surface-secondary);--ate-code-color: var(--ate-code-color);--ate-code-border-color: var(--ate-border);--ate-code-block-background: #0f172a;--ate-code-block-color: #e2e8f0;--ate-code-block-border-color: var(--ate-border);--ate-image-border-radius: 16px;--ate-image-selected-color: var(--ate-primary);--ate-scrollbar-width: 10px;--ate-scrollbar-thumb: var(--ate-border);--ate-scrollbar-thumb-hover: var(--ate-text-muted);--ate-scrollbar-track: transparent;--ate-table-border-color: var(--ate-border);--ate-table-header-background: var(--ate-surface-secondary);--ate-table-header-color: var(--ate-text);--ate-table-cell-background: var(--ate-surface);--ate-table-cell-selected-background: var(--ate-primary-light);--ate-table-resize-handle-color: var(--ate-primary);--ate-table-row-hover-background: var(--ate-primary-lighter)}:host(.dark),:host([data-theme=\"dark\"]){--ate-primary: #3b82f6;--ate-primary-contrast: #ffffff;--ate-primary-light: color-mix(in srgb, var(--ate-primary), transparent 85%);--ate-primary-lighter: color-mix(in srgb, var(--ate-primary), transparent 92%);--ate-primary-light-alpha: color-mix(in srgb, var(--ate-primary), transparent 80%);--ate-surface: #020617;--ate-surface-secondary: #0f172a;--ate-surface-tertiary: #1e293b;--ate-text: #f8fafc;--ate-text-secondary: #94a3b8;--ate-text-muted: #64748b;--ate-border: #1e293b;--ate-highlight-bg: #854d0e;--ate-highlight-color: #fef08a;--ate-button-hover: #1e293b;--ate-button-active: #0f172a;--ate-menu-border: rgba(255, 255, 255, .1);--ate-menu-shadow: 0 20px 25px -5px rgba(0, 0, 0, .3), 0 10px 10px -5px rgba(0, 0, 0, .2);--ate-error-color: #f87171;--ate-error-bg: #450a0a;--ate-error-border: #7f1d1d;--ate-drag-background: var(--ate-surface-tertiary);--ate-drag-border-color: var(--ate-primary);--ate-blockquote-border-color: var(--ate-primary);--ate-toolbar-button-active-background: var(--ate-primary-light);--ate-toolbar-button-active-color: var(--ate-primary);--ate-button-hover: var(--ate-surface-tertiary);--ate-button-active: var(--ate-surface-secondary);--ate-scrollbar-thumb: var(--ate-surface-tertiary);--ate-scrollbar-thumb-hover: var(--ate-text-muted)}:host(.fill-container){display:block;height:100%}.ate-editor{border:var(--ate-border-width) solid var(--ate-border-color);border-radius:var(--ate-border-radius);background:var(--ate-background);overflow:visible;transition:border-color .2s ease;position:relative}:host(.floating-toolbar) .ate-editor{overflow:visible}:host(.fill-container) .ate-editor{display:flex;flex-direction:column;height:100%}:host(.fill-container) .ate-content-wrapper{flex:1;min-height:0}:host(.fill-container) .ate-content{flex:1;min-height:0;overflow-y:auto}.ate-editor:focus-within{border-color:var(--ate-focus-color)}.ate-content{min-height:var(--editor-min-height, 200px);height:var(--editor-height, auto);max-height:var(--editor-max-height, none);overflow-y:var(--editor-overflow, visible);outline:none;position:relative;scrollbar-width:thin;scrollbar-color:var(--ate-scrollbar-thumb) var(--ate-scrollbar-track)}:host(.is-disabled) .ate-content{cursor:not-allowed;opacity:.7;-webkit-user-select:none;user-select:none;pointer-events:none;background-color:var(--ate-surface-tertiary)}:host(.is-readonly) .ate-content{cursor:default;-webkit-user-select:text;user-select:text}:host(.is-readonly) .ate-content ::ng-deep .ate-link{cursor:pointer;pointer-events:auto}.ate-content::-webkit-scrollbar{width:var(--ate-scrollbar-width)}.ate-content-wrapper{position:relative;display:flex;flex-direction:column;min-height:0}.ate-content-wrapper .ate-content{flex:1}.ate-content::-webkit-scrollbar-track{background:var(--ate-scrollbar-track)}.ate-content::-webkit-scrollbar-thumb{background:var(--ate-scrollbar-thumb);border:3px solid transparent;background-clip:content-box;border-radius:10px}.ate-content::-webkit-scrollbar-thumb:hover{background:var(--ate-scrollbar-thumb-hover);background-clip:content-box}.ate-content.drag-over{background:var(--ate-drag-background);border:2px dashed var(--ate-drag-border-color)}.character-count{padding:6px 8px;font-size:12px;color:var(--ate-counter-color);text-align:right;border-top:1px solid var(--ate-counter-border-color);background:var(--ate-counter-background);transition:color .2s ease;border-bottom-left-radius:calc(var(--ate-border-radius) - var(--ate-border-width));border-bottom-right-radius:calc(var(--ate-border-radius) - var(--ate-border-width))}.character-count.limit-reached{color:var(--ate-error-color, #ef4444);font-weight:600}:host ::ng-deep .ProseMirror{padding:var(--ate-content-padding);outline:none;line-height:var(--ate-line-height);color:var(--ate-text-color);min-height:100%;height:100%;word-wrap:break-word;overflow-wrap:break-word}:host ::ng-deep .ProseMirror h1{font-size:2em;font-weight:700;margin-top:0;margin-bottom:.5em}:host ::ng-deep .ProseMirror h2{font-size:1.5em;font-weight:700;margin-top:1em;margin-bottom:.5em}:host ::ng-deep .ProseMirror h3{font-size:1.25em;font-weight:700;margin-top:1em;margin-bottom:.5em}:host ::ng-deep .ProseMirror p{margin:.5em 0}:host ::ng-deep .ProseMirror ul,:host ::ng-deep .ProseMirror ol{padding-left:2em;margin:.5em 0}:host ::ng-deep .ProseMirror blockquote{border-left:4px solid var(--ate-blockquote-border-color);margin:1em 0;background:var(--ate-blockquote-background);padding:.5em 1em;border-radius:0 4px 4px 0}:host ::ng-deep .ProseMirror code{background:var(--ate-code-background);color:var(--ate-code-color);border:1px solid var(--ate-code-border-color);padding:.15em .4em;border-radius:4px;font-family:JetBrains Mono,Fira Code,Monaco,Consolas,monospace;font-size:.85em;font-weight:500}:host ::ng-deep .ProseMirror pre{background:var(--ate-code-block-background);color:var(--ate-code-block-color);border:1px solid var(--ate-code-block-border-color);padding:1em;border-radius:var(--ate-border-radius);overflow-x:auto;margin:1em 0}:host ::ng-deep .ProseMirror pre code{background:none;color:inherit;border:none;padding:0}:host ::ng-deep .ProseMirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--ate-placeholder-color);pointer-events:none;float:left;height:0}:host ::ng-deep .ProseMirror[contenteditable=false]{pointer-events:none}:host ::ng-deep .ProseMirror[contenteditable=false] img{cursor:default;pointer-events:none}:host ::ng-deep .ProseMirror[contenteditable=false] img:hover{transform:none;box-shadow:0 2px 8px #0000001a}:host ::ng-deep .ProseMirror[contenteditable=false] img.ProseMirror-selectednode{outline:none}:host ::ng-deep .ProseMirror img{position:relative;display:inline-block;max-width:100%;height:auto;cursor:pointer;transition:all .2s ease;border:2px solid transparent;border-radius:var(--ate-image-border-radius)}:host ::ng-deep .ProseMirror img:hover{border-color:var(--ate-border-color);box-shadow:0 2px 4px #0000001a}:host ::ng-deep .ProseMirror img.ProseMirror-selectednode{border-color:var(--ate-image-selected-color);box-shadow:0 0 0 3px var(--ate-primary-light-alpha);transition:all .2s ease}:host ::ng-deep .ProseMirror .tiptap-image{max-width:100%;height:auto;border-radius:var(--ate-image-border-radius);box-shadow:0 4px 20px #00000014;margin:.5em 0;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);display:block;filter:brightness(1) contrast(1)}:host ::ng-deep .ProseMirror .tiptap-image:hover{box-shadow:0 8px 30px #0000001f;filter:brightness(1.02) contrast(1.02)}:host ::ng-deep .ProseMirror .tiptap-image.ProseMirror-selectednode{outline:2px solid var(--ate-primary);outline-offset:2px;border-radius:var(--ate-image-border-radius);box-shadow:0 0 0 4px var(--ate-primary-light-alpha)}:host ::ng-deep .image-container{margin:.5em 0;text-align:center;border-radius:16px;overflow:hidden;transition:all .3s cubic-bezier(.4,0,.2,1)}:host ::ng-deep .image-container.image-align-left{text-align:left}:host ::ng-deep .image-container.image-align-center{text-align:center}:host ::ng-deep .image-container.image-align-right{text-align:right}:host ::ng-deep .image-container img{display:inline-block;max-width:100%;height:auto;border-radius:16px}:host ::ng-deep .resizable-image-container{position:relative;display:inline-block;margin:.5em 0}:host ::ng-deep .resize-controls{position:absolute;inset:0;pointer-events:none;z-index:1000}:host ::ng-deep .resize-handle{position:absolute;width:12px;height:12px;background:var(--ate-primary);border:2px solid var(--ate-surface);border-radius:50%;pointer-events:all;cursor:pointer;z-index:1001;transition:all .15s ease;box-shadow:0 2px 6px #0003}:host ::ng-deep .resize-handle:hover{background:var(--ate-primary);box-shadow:0 3px 8px #0000004d}:host ::ng-deep .resize-handle:active{background:var(--ate-primary)}:host ::ng-deep .resize-handle-n:hover,:host ::ng-deep .resize-handle-s:hover{transform:translate(-50%) scale(1.2)}:host ::ng-deep .resize-handle-w:hover,:host ::ng-deep .resize-handle-e:hover{transform:translateY(-50%) scale(1.2)}:host ::ng-deep .resize-handle-n:active,:host ::ng-deep .resize-handle-s:active{transform:translate(-50%) scale(.9)}:host ::ng-deep .resize-handle-w:active,:host ::ng-deep .resize-handle-e:active{transform:translateY(-50%) scale(.9)}:host ::ng-deep .resize-handle-nw:hover,:host ::ng-deep .resize-handle-ne:hover,:host ::ng-deep .resize-handle-sw:hover,:host ::ng-deep .resize-handle-se:hover{transform:scale(1.2)}:host ::ng-deep .resize-handle-nw:active,:host ::ng-deep .resize-handle-ne:active,:host ::ng-deep .resize-handle-sw:active,:host ::ng-deep .resize-handle-se:active{transform:scale(.9)}:host ::ng-deep .resize-handle-nw{top:0;left:-6px;cursor:nw-resize}:host ::ng-deep .resize-handle-n{top:0;left:50%;transform:translate(-50%);cursor:n-resize}:host ::ng-deep .resize-handle-ne{top:0;right:-6px;cursor:ne-resize}:host ::ng-deep .resize-handle-w{top:50%;left:-6px;transform:translateY(-50%);cursor:w-resize}:host ::ng-deep .resize-handle-e{top:50%;right:-6px;transform:translateY(-50%);cursor:e-resize}:host ::ng-deep .resize-handle-sw{bottom:0;left:-6px;cursor:sw-resize}:host ::ng-deep .resize-handle-s{bottom:0;left:50%;transform:translate(-50%);cursor:s-resize}:host ::ng-deep .resize-handle-se{bottom:0;right:-6px;cursor:se-resize}:host ::ng-deep body.resizing{-webkit-user-select:none;user-select:none;cursor:crosshair}:host ::ng-deep body.resizing .ProseMirror{pointer-events:none}:host ::ng-deep body.resizing .ProseMirror .tiptap-image{pointer-events:none}:host ::ng-deep .image-size-info{position:absolute;bottom:-20px;left:50%;transform:translate(-50%);background:#000c;color:#fff;padding:2px 6px;border-radius:3px;font-size:11px;white-space:nowrap;opacity:0;transition:opacity .2s ease}:host ::ng-deep .image-container:hover .image-size-info{opacity:1}:host ::ng-deep .ProseMirror table{border-collapse:separate;border-spacing:0;margin:0;table-layout:fixed;width:100%;border-radius:8px;overflow:hidden}:host ::ng-deep .ProseMirror table td,:host ::ng-deep .ProseMirror table th{border:none;border-right:1px solid var(--ate-table-border-color);border-bottom:1px solid var(--ate-table-border-color);box-sizing:border-box;min-width:1em;padding:8px 12px;position:relative;vertical-align:top;text-align:left}:host ::ng-deep .ProseMirror table td{background:var(--ate-table-cell-background)}:host ::ng-deep .ProseMirror table td:first-child,:host ::ng-deep .ProseMirror table th:first-child{border-left:1px solid var(--ate-table-border-color)}:host ::ng-deep .ProseMirror table tr:first-child td,:host ::ng-deep .ProseMirror table tr:first-child th{border-top:1px solid var(--ate-table-border-color)}:host ::ng-deep .ProseMirror table tr:first-child th:first-child{border-top-left-radius:8px}:host ::ng-deep .ProseMirror table tr:first-child th:last-child{border-top-right-radius:8px}:host ::ng-deep .ProseMirror table tr:last-child td:first-child{border-bottom-left-radius:8px}:host ::ng-deep .ProseMirror table tr:last-child td:last-child{border-bottom-right-radius:8px}:host ::ng-deep .ProseMirror table th{background:var(--ate-table-header-background);font-weight:600;color:var(--ate-table-header-color)}:host ::ng-deep .ProseMirror table .selectedCell:after{background:var(--ate-table-cell-selected-background);content:\"\";inset:0;pointer-events:none;position:absolute;z-index:2}:host ::ng-deep .ProseMirror table .column-resize-handle{position:absolute;right:-2px;top:0;bottom:0;width:4px;background-color:var(--ate-table-resize-handle-color);opacity:0;transition:opacity .2s ease}:host ::ng-deep .ProseMirror table:hover .column-resize-handle{opacity:1}:host ::ng-deep .ProseMirror table .column-resize-handle:hover{background-color:var(--ate-focus-color)}:host ::ng-deep .ProseMirror .tableWrapper{overflow-x:auto;margin:1em 0;border-radius:8px}:host ::ng-deep .ProseMirror .tableWrapper table{margin:0;border-radius:8px;min-width:600px;overflow:hidden}:host ::ng-deep .ProseMirror table p{margin:0}:host ::ng-deep .ProseMirror table tbody tr:hover td{background-color:var(--ate-table-row-hover-background)}\n"] }]
|
|
6439
6459
|
}], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }], content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], editable: [{ type: i0.Input, args: [{ isSignal: true, alias: "editable", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], minHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "minHeight", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], fillContainer: [{ type: i0.Input, args: [{ isSignal: true, alias: "fillContainer", required: false }] }], showToolbar: [{ type: i0.Input, args: [{ isSignal: true, alias: "showToolbar", required: false }] }], showFooter: [{ type: i0.Input, args: [{ isSignal: true, alias: "showFooter", required: false }] }], showCharacterCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCharacterCount", required: false }] }], showWordCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "showWordCount", required: false }] }], maxCharacters: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxCharacters", required: false }] }], enableOfficePaste: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableOfficePaste", required: false }] }], enableSlashCommands: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableSlashCommands", required: false }] }], slashCommands: [{ type: i0.Input, args: [{ isSignal: true, alias: "slashCommands", required: false }] }], customSlashCommands: [{ type: i0.Input, args: [{ isSignal: true, alias: "customSlashCommands", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], autofocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autofocus", required: false }] }], seamless: [{ type: i0.Input, args: [{ isSignal: true, alias: "seamless", required: false }] }], floatingToolbar: [{ type: i0.Input, args: [{ isSignal: true, alias: "floatingToolbar", required: false }] }], showEditToggle: [{ type: i0.Input, args: [{ isSignal: true, alias: "showEditToggle", required: false }] }], spellcheck: [{ type: i0.Input, args: [{ isSignal: true, alias: "spellcheck", required: false }] }], tiptapExtensions: [{ type: i0.Input, args: [{ isSignal: true, alias: "tiptapExtensions", required: false }] }], tiptapOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "tiptapOptions", required: false }] }], showBubbleMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "showBubbleMenu", required: false }] }], bubbleMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "bubbleMenu", required: false }] }], showImageBubbleMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "showImageBubbleMenu", required: false }] }], imageBubbleMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "imageBubbleMenu", required: false }] }], toolbar: [{ type: i0.Input, args: [{ isSignal: true, alias: "toolbar", required: false }] }], showTableBubbleMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "showTableBubbleMenu", required: false }] }], tableBubbleMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableBubbleMenu", required: false }] }], showCellBubbleMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCellBubbleMenu", required: false }] }], cellBubbleMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "cellBubbleMenu", required: false }] }], stateCalculators: [{ type: i0.Input, args: [{ isSignal: true, alias: "stateCalculators", required: false }] }], imageUpload: [{ type: i0.Input, args: [{ isSignal: true, alias: "imageUpload", required: false }] }], imageUploadHandler: [{ type: i0.Input, args: [{ isSignal: true, alias: "imageUploadHandler", required: false }] }], contentChange: [{ type: i0.Output, args: ["contentChange"] }], editorCreated: [{ type: i0.Output, args: ["editorCreated"] }], editorUpdate: [{ type: i0.Output, args: ["editorUpdate"] }], editorFocus: [{ type: i0.Output, args: ["editorFocus"] }], editorBlur: [{ type: i0.Output, args: ["editorBlur"] }], editableChange: [{ type: i0.Output, args: ["editableChange"] }], editorElement: [{ type: i0.ViewChild, args: ["editorElement", { isSignal: true }] }] } });
|
|
6440
6460
|
|
|
6461
|
+
/**
|
|
6462
|
+
* Clés des boutons de la barre d'outils native
|
|
6463
|
+
*/
|
|
6464
|
+
const ATE_TOOLBAR_KEYS = [
|
|
6465
|
+
"bold",
|
|
6466
|
+
"italic",
|
|
6467
|
+
"underline",
|
|
6468
|
+
"strike",
|
|
6469
|
+
"code",
|
|
6470
|
+
"codeBlock",
|
|
6471
|
+
"superscript",
|
|
6472
|
+
"subscript",
|
|
6473
|
+
"highlight",
|
|
6474
|
+
"highlightPicker",
|
|
6475
|
+
"heading1",
|
|
6476
|
+
"heading2",
|
|
6477
|
+
"heading3",
|
|
6478
|
+
"bulletList",
|
|
6479
|
+
"orderedList",
|
|
6480
|
+
"blockquote",
|
|
6481
|
+
"alignLeft",
|
|
6482
|
+
"alignCenter",
|
|
6483
|
+
"alignRight",
|
|
6484
|
+
"alignJustify",
|
|
6485
|
+
"link",
|
|
6486
|
+
"image",
|
|
6487
|
+
"horizontalRule",
|
|
6488
|
+
"table",
|
|
6489
|
+
"undo",
|
|
6490
|
+
"redo",
|
|
6491
|
+
"clear",
|
|
6492
|
+
"textColor",
|
|
6493
|
+
"separator",
|
|
6494
|
+
];
|
|
6495
|
+
|
|
6496
|
+
/**
|
|
6497
|
+
* Clés des options du menu bulle de texte
|
|
6498
|
+
*/
|
|
6499
|
+
const ATE_BUBBLE_MENU_KEYS = [
|
|
6500
|
+
"bold",
|
|
6501
|
+
"italic",
|
|
6502
|
+
"underline",
|
|
6503
|
+
"strike",
|
|
6504
|
+
"code",
|
|
6505
|
+
"superscript",
|
|
6506
|
+
"subscript",
|
|
6507
|
+
"highlight",
|
|
6508
|
+
"highlightPicker",
|
|
6509
|
+
"textColor",
|
|
6510
|
+
"link",
|
|
6511
|
+
"separator",
|
|
6512
|
+
];
|
|
6513
|
+
/**
|
|
6514
|
+
* Clés des options du menu bulle d'image
|
|
6515
|
+
*/
|
|
6516
|
+
const ATE_IMAGE_BUBBLE_MENU_KEYS = [
|
|
6517
|
+
"changeImage",
|
|
6518
|
+
"resizeSmall",
|
|
6519
|
+
"resizeMedium",
|
|
6520
|
+
"resizeLarge",
|
|
6521
|
+
"resizeOriginal",
|
|
6522
|
+
"deleteImage",
|
|
6523
|
+
"separator",
|
|
6524
|
+
];
|
|
6525
|
+
/**
|
|
6526
|
+
* Clés des options du menu de table
|
|
6527
|
+
*/
|
|
6528
|
+
const ATE_TABLE_BUBBLE_MENU_KEYS = [
|
|
6529
|
+
"addRowBefore",
|
|
6530
|
+
"addRowAfter",
|
|
6531
|
+
"deleteRow",
|
|
6532
|
+
"addColumnBefore",
|
|
6533
|
+
"addColumnAfter",
|
|
6534
|
+
"deleteColumn",
|
|
6535
|
+
"deleteTable",
|
|
6536
|
+
"toggleHeaderRow",
|
|
6537
|
+
"toggleHeaderColumn",
|
|
6538
|
+
"separator",
|
|
6539
|
+
];
|
|
6540
|
+
/**
|
|
6541
|
+
* Clés des options du menu de cellule
|
|
6542
|
+
*/
|
|
6543
|
+
const ATE_CELL_BUBBLE_MENU_KEYS = ["mergeCells", "splitCell"];
|
|
6544
|
+
|
|
6441
6545
|
/*
|
|
6442
6546
|
* Public API Surface of tiptap-editor
|
|
6443
6547
|
*/
|
|
@@ -6475,5 +6579,5 @@ const DEFAULT_CELL_MENU_CONFIG = ATE_DEFAULT_CELL_MENU_CONFIG;
|
|
|
6475
6579
|
* Generated bundle index. Do not edit.
|
|
6476
6580
|
*/
|
|
6477
6581
|
|
|
6478
|
-
export { 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_INITIAL_EDITOR_STATE, ATE_SLASH_COMMAND_KEYS, AngularTiptapEditorComponent, AteColorPickerService, AteDiscoveryCalculator, AteEditorCommandsService, AteI18nService, AteImageCalculator, AteImageService, AteLinkService, AteMarksCalculator, AteNoopValueAccessorDirective, AteSelectionCalculator, AteStructureCalculator, AteTableCalculator, AteColorPickerService as ColorPickerService, DEFAULT_BUBBLE_MENU_CONFIG, DEFAULT_CELL_MENU_CONFIG, DEFAULT_IMAGE_BUBBLE_MENU_CONFIG, DEFAULT_SLASH_COMMANDS_CONFIG, DEFAULT_TABLE_MENU_CONFIG, DEFAULT_TOOLBAR_CONFIG, DiscoveryCalculator, AteEditorCommandsService as EditorCommandsService, INITIAL_EDITOR_STATE, ImageCalculator, AteImageService as ImageService, AteLinkService as LinkService, MarksCalculator, SLASH_COMMAND_KEYS, SelectionCalculator, StructureCalculator, TableCalculator, AteI18nService as TiptapI18nService, createDefaultSlashCommands, filterSlashCommands };
|
|
6582
|
+
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_IMAGE_BUBBLE_MENU_KEYS, ATE_INITIAL_EDITOR_STATE, ATE_SLASH_COMMAND_KEYS, ATE_TABLE_BUBBLE_MENU_KEYS, ATE_TOOLBAR_KEYS, AngularTiptapEditorComponent, AteColorPickerService, AteDiscoveryCalculator, AteEditorCommandsService, AteI18nService, AteImageCalculator, AteImageService, AteLinkService, AteMarksCalculator, AteNoopValueAccessorDirective, AteSelectionCalculator, AteStructureCalculator, AteTableCalculator, AteColorPickerService as ColorPickerService, DEFAULT_BUBBLE_MENU_CONFIG, DEFAULT_CELL_MENU_CONFIG, DEFAULT_IMAGE_BUBBLE_MENU_CONFIG, DEFAULT_SLASH_COMMANDS_CONFIG, DEFAULT_TABLE_MENU_CONFIG, DEFAULT_TOOLBAR_CONFIG, DiscoveryCalculator, AteEditorCommandsService as EditorCommandsService, INITIAL_EDITOR_STATE, ImageCalculator, AteImageService as ImageService, AteLinkService as LinkService, MarksCalculator, SLASH_COMMAND_KEYS, SelectionCalculator, StructureCalculator, TableCalculator, AteI18nService as TiptapI18nService, createDefaultSlashCommands, filterSlashCommands };
|
|
6479
6583
|
//# sourceMappingURL=flogeez-angular-tiptap-editor.mjs.map
|