@flogeez/angular-tiptap-editor 2.1.3 → 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 +30 -1
- package/README.md +46 -42
- package/fesm2022/flogeez-angular-tiptap-editor.mjs +597 -477
- package/fesm2022/flogeez-angular-tiptap-editor.mjs.map +1 -1
- package/index.d.ts +195 -181
- package/package.json +1 -1
- package/src/lib/styles/{bubble-menu.global.css → ate-bubble-menu.global.css} +1 -1
- package/src/lib/styles/index.css +4 -4
|
@@ -27,7 +27,7 @@ import * as i1 from '@angular/forms';
|
|
|
27
27
|
import { FormsModule, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';
|
|
28
28
|
import { CellSelection } from '@tiptap/pm/tables';
|
|
29
29
|
|
|
30
|
-
const
|
|
30
|
+
const AteResizableImage = Node$1.create({
|
|
31
31
|
name: "resizableImage",
|
|
32
32
|
addOptions() {
|
|
33
33
|
return {
|
|
@@ -133,7 +133,7 @@ const ResizableImage = Node$1.create({
|
|
|
133
133
|
img.src = node.attrs["src"];
|
|
134
134
|
img.alt = node.attrs["alt"] || "";
|
|
135
135
|
img.title = node.attrs["title"] || "";
|
|
136
|
-
img.className = "
|
|
136
|
+
img.className = "ate-image";
|
|
137
137
|
if (node.attrs["width"])
|
|
138
138
|
img.width = node.attrs["width"];
|
|
139
139
|
if (node.attrs["height"])
|
|
@@ -288,7 +288,7 @@ const ResizableImage = Node$1.create({
|
|
|
288
288
|
},
|
|
289
289
|
});
|
|
290
290
|
|
|
291
|
-
const
|
|
291
|
+
const AteUploadProgress = Extension.create({
|
|
292
292
|
name: "uploadProgress",
|
|
293
293
|
addOptions() {
|
|
294
294
|
return {
|
|
@@ -480,7 +480,7 @@ const UploadProgress = Extension.create({
|
|
|
480
480
|
},
|
|
481
481
|
});
|
|
482
482
|
|
|
483
|
-
const
|
|
483
|
+
const AteTableExtension = Extension.create({
|
|
484
484
|
name: "tableExtension",
|
|
485
485
|
addExtensions() {
|
|
486
486
|
return [
|
|
@@ -504,7 +504,7 @@ const TableExtension = Extension.create({
|
|
|
504
504
|
},
|
|
505
505
|
});
|
|
506
506
|
|
|
507
|
-
const
|
|
507
|
+
const ATE_INITIAL_EDITOR_STATE = {
|
|
508
508
|
isFocused: false,
|
|
509
509
|
isEditable: true,
|
|
510
510
|
selection: {
|
|
@@ -627,10 +627,10 @@ function fastMerge(target, source) {
|
|
|
627
627
|
}
|
|
628
628
|
}
|
|
629
629
|
function createFreshSnapshot() {
|
|
630
|
-
return JSON.parse(JSON.stringify(
|
|
630
|
+
return JSON.parse(JSON.stringify(ATE_INITIAL_EDITOR_STATE));
|
|
631
631
|
}
|
|
632
|
-
const
|
|
633
|
-
name: "
|
|
632
|
+
const AteTiptapStateExtension = Extension.create({
|
|
633
|
+
name: "ateTiptapState",
|
|
634
634
|
addOptions() {
|
|
635
635
|
return {
|
|
636
636
|
onUpdate: undefined,
|
|
@@ -673,7 +673,7 @@ const TiptapStateExtension = Extension.create({
|
|
|
673
673
|
},
|
|
674
674
|
});
|
|
675
675
|
|
|
676
|
-
class
|
|
676
|
+
class AteButtonComponent {
|
|
677
677
|
constructor() {
|
|
678
678
|
// Inputs
|
|
679
679
|
this.icon = input("", ...(ngDevMode ? [{ debugName: "icon" }] : []));
|
|
@@ -691,10 +691,10 @@ class TiptapButtonComponent {
|
|
|
691
691
|
onMouseDown(event) {
|
|
692
692
|
event.preventDefault();
|
|
693
693
|
}
|
|
694
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
695
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type:
|
|
694
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
695
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AteButtonComponent, isStandalone: true, selector: "ate-button", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, backgroundColor: { classPropertyName: "backgroundColor", publicName: "backgroundColor", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, iconSize: { classPropertyName: "iconSize", publicName: "iconSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: `
|
|
696
696
|
<button
|
|
697
|
-
class="
|
|
697
|
+
class="ate-button"
|
|
698
698
|
[class.is-active]="active()"
|
|
699
699
|
[class.is-disabled]="disabled()"
|
|
700
700
|
[class.text-button]="variant() === 'text'"
|
|
@@ -723,13 +723,13 @@ class TiptapButtonComponent {
|
|
|
723
723
|
}
|
|
724
724
|
<ng-content></ng-content>
|
|
725
725
|
</button>
|
|
726
|
-
`, isInline: true, styles: [".
|
|
726
|
+
`, isInline: true, styles: [".ate-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;border-radius:var(--ate-sub-border-radius, 8px);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);color:var(--ate-toolbar-button-color, var(--ate-text-secondary));position:relative;overflow:hidden}.ate-button:before{content:\"\";position:absolute;inset:0;background:var(--ate-primary);opacity:0;transition:opacity .2s ease;border-radius:var(--ate-sub-border-radius, 8px)}.ate-button:hover:not(.has-custom-color){color:var(--ate-toolbar-button-active-color, var(--ate-primary));background:var(--ate-toolbar-button-hover-background, transparent);transform:translateY(-1px)}.ate-button.has-custom-color:hover:not(.has-custom-bg){background:var(--ate-toolbar-button-hover-background, transparent);transform:translateY(-1px)}.ate-button.has-custom-bg:hover{transform:translateY(-1px);filter:brightness(.9)}.ate-button:hover:before{opacity:.1}.ate-button:active{transform:translateY(0)}.ate-button.is-active:not(.has-custom-color){color:var(--ate-toolbar-button-active-color, var(--ate-primary));background:var(--ate-toolbar-button-active-background, var(--ate-primary-light))}.ate-button.is-active.has-custom-color{background:var(--ate-toolbar-button-active-background, var(--ate-primary-light))}.ate-button:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.ate-button .material-symbols-outlined{font-size:20px;position:relative;z-index:1}.ate-button .material-symbols-outlined.icon-small{font-size:16px}.ate-button .material-symbols-outlined.icon-medium{font-size:20px}.ate-button .material-symbols-outlined.icon-large{font-size:24px}.ate-button.text-button{width:auto;padding:0 12px;font-size:14px;font-weight:500;gap:8px}.ate-button.color-button{width:28px;height:28px;border-radius:50%;border:2px solid transparent;transition:all .2s ease}.ate-button.color-button:hover{border-color:var(--ate-border);transform:scale(1.1)}.ate-button.color-button.is-active{border-color:var(--ate-primary);box-shadow:0 0 0 2px var(--ate-primary-light)}.ate-button.danger{color:var(--ate-error-color, #ef4444)}.ate-button.danger:hover{color:var(--ate-error-color, #ef4444);background:var(--ate-error-bg, rgba(239, 68, 68, .1))}.ate-button.danger:before{background:var(--ate-error-color, #ef4444)}.ate-button.small{width:24px;height:24px}.ate-button.medium{width:32px;height:32px}.ate-button.large{width:40px;height:40px}@keyframes pulse{0%,to{box-shadow:0 0 0 0 var(--ate-primary-light-alpha)}50%{box-shadow:0 0 0 4px transparent}}.ate-button.is-active.pulse{animation:pulse 2s infinite}@media (max-width: 768px){.ate-button{width:32px;height:32px}.ate-button .material-symbols-outlined{font-size:18px}.ate-button.text-button{padding:0 8px;font-size:13px}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
727
727
|
}
|
|
728
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
728
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteButtonComponent, decorators: [{
|
|
729
729
|
type: Component,
|
|
730
|
-
args: [{ selector: "
|
|
730
|
+
args: [{ selector: "ate-button", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
731
731
|
<button
|
|
732
|
-
class="
|
|
732
|
+
class="ate-button"
|
|
733
733
|
[class.is-active]="active()"
|
|
734
734
|
[class.is-disabled]="disabled()"
|
|
735
735
|
[class.text-button]="variant() === 'text'"
|
|
@@ -758,36 +758,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
758
758
|
}
|
|
759
759
|
<ng-content></ng-content>
|
|
760
760
|
</button>
|
|
761
|
-
`, styles: [".
|
|
761
|
+
`, styles: [".ate-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;border-radius:var(--ate-sub-border-radius, 8px);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);color:var(--ate-toolbar-button-color, var(--ate-text-secondary));position:relative;overflow:hidden}.ate-button:before{content:\"\";position:absolute;inset:0;background:var(--ate-primary);opacity:0;transition:opacity .2s ease;border-radius:var(--ate-sub-border-radius, 8px)}.ate-button:hover:not(.has-custom-color){color:var(--ate-toolbar-button-active-color, var(--ate-primary));background:var(--ate-toolbar-button-hover-background, transparent);transform:translateY(-1px)}.ate-button.has-custom-color:hover:not(.has-custom-bg){background:var(--ate-toolbar-button-hover-background, transparent);transform:translateY(-1px)}.ate-button.has-custom-bg:hover{transform:translateY(-1px);filter:brightness(.9)}.ate-button:hover:before{opacity:.1}.ate-button:active{transform:translateY(0)}.ate-button.is-active:not(.has-custom-color){color:var(--ate-toolbar-button-active-color, var(--ate-primary));background:var(--ate-toolbar-button-active-background, var(--ate-primary-light))}.ate-button.is-active.has-custom-color{background:var(--ate-toolbar-button-active-background, var(--ate-primary-light))}.ate-button:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.ate-button .material-symbols-outlined{font-size:20px;position:relative;z-index:1}.ate-button .material-symbols-outlined.icon-small{font-size:16px}.ate-button .material-symbols-outlined.icon-medium{font-size:20px}.ate-button .material-symbols-outlined.icon-large{font-size:24px}.ate-button.text-button{width:auto;padding:0 12px;font-size:14px;font-weight:500;gap:8px}.ate-button.color-button{width:28px;height:28px;border-radius:50%;border:2px solid transparent;transition:all .2s ease}.ate-button.color-button:hover{border-color:var(--ate-border);transform:scale(1.1)}.ate-button.color-button.is-active{border-color:var(--ate-primary);box-shadow:0 0 0 2px var(--ate-primary-light)}.ate-button.danger{color:var(--ate-error-color, #ef4444)}.ate-button.danger:hover{color:var(--ate-error-color, #ef4444);background:var(--ate-error-bg, rgba(239, 68, 68, .1))}.ate-button.danger:before{background:var(--ate-error-color, #ef4444)}.ate-button.small{width:24px;height:24px}.ate-button.medium{width:32px;height:32px}.ate-button.large{width:40px;height:40px}@keyframes pulse{0%,to{box-shadow:0 0 0 0 var(--ate-primary-light-alpha)}50%{box-shadow:0 0 0 4px transparent}}.ate-button.is-active.pulse{animation:pulse 2s infinite}@media (max-width: 768px){.ate-button{width:32px;height:32px}.ate-button .material-symbols-outlined{font-size:18px}.ate-button.text-button{padding:0 8px;font-size:13px}}\n"] }]
|
|
762
762
|
}], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], backgroundColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "backgroundColor", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], iconSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconSize", required: false }] }], buttonClick: [{ type: i0.Output, args: ["buttonClick"] }] } });
|
|
763
763
|
|
|
764
|
-
class
|
|
764
|
+
class AteSeparatorComponent {
|
|
765
765
|
constructor() {
|
|
766
766
|
this.orientation = input("vertical", ...(ngDevMode ? [{ debugName: "orientation" }] : []));
|
|
767
767
|
this.size = input("medium", ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
768
768
|
}
|
|
769
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
770
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type:
|
|
769
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
770
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type: AteSeparatorComponent, isStandalone: true, selector: "ate-separator", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
771
771
|
<div
|
|
772
|
-
class="
|
|
772
|
+
class="ate-separator"
|
|
773
773
|
[class.vertical]="orientation() === 'vertical'"
|
|
774
774
|
[class.horizontal]="orientation() === 'horizontal'"
|
|
775
775
|
[class.small]="size() === 'small'"
|
|
776
776
|
[class.medium]="size() === 'medium'"
|
|
777
777
|
[class.large]="size() === 'large'"></div>
|
|
778
|
-
`, isInline: true, styles: [".
|
|
778
|
+
`, isInline: true, styles: [".ate-separator{background-color:var(--ate-border, #e2e8f0);margin:0}.ate-separator.vertical{width:1px;height:24px;margin:0 8px}.ate-separator.horizontal{height:1px;width:100%;margin:8px 0}.ate-separator.small.vertical{height:16px;margin:0 4px}.ate-separator.small.horizontal{margin:4px 0}.ate-separator.medium.vertical{height:24px;margin:0 8px}.ate-separator.medium.horizontal{margin:8px 0}.ate-separator.large.vertical{height:32px;margin:0 12px}.ate-separator.large.horizontal{margin:12px 0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
779
779
|
}
|
|
780
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
780
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteSeparatorComponent, decorators: [{
|
|
781
781
|
type: Component,
|
|
782
|
-
args: [{ selector: "
|
|
782
|
+
args: [{ selector: "ate-separator", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
783
783
|
<div
|
|
784
|
-
class="
|
|
784
|
+
class="ate-separator"
|
|
785
785
|
[class.vertical]="orientation() === 'vertical'"
|
|
786
786
|
[class.horizontal]="orientation() === 'horizontal'"
|
|
787
787
|
[class.small]="size() === 'small'"
|
|
788
788
|
[class.medium]="size() === 'medium'"
|
|
789
789
|
[class.large]="size() === 'large'"></div>
|
|
790
|
-
`, styles: [".
|
|
790
|
+
`, styles: [".ate-separator{background-color:var(--ate-border, #e2e8f0);margin:0}.ate-separator.vertical{width:1px;height:24px;margin:0 8px}.ate-separator.horizontal{height:1px;width:100%;margin:8px 0}.ate-separator.small.vertical{height:16px;margin:0 4px}.ate-separator.small.horizontal{margin:4px 0}.ate-separator.medium.vertical{height:24px;margin:0 8px}.ate-separator.medium.horizontal{margin:8px 0}.ate-separator.large.vertical{height:32px;margin:0 12px}.ate-separator.large.horizontal{margin:12px 0}\n"] }]
|
|
791
791
|
}], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
|
|
792
792
|
|
|
793
793
|
const ENGLISH_TRANSLATIONS = {
|
|
@@ -1124,7 +1124,7 @@ const FRENCH_TRANSLATIONS = {
|
|
|
1124
1124
|
success: "Succès",
|
|
1125
1125
|
},
|
|
1126
1126
|
};
|
|
1127
|
-
class
|
|
1127
|
+
class AteI18nService {
|
|
1128
1128
|
constructor() {
|
|
1129
1129
|
this._currentLocale = signal("en", ...(ngDevMode ? [{ debugName: "_currentLocale" }] : []));
|
|
1130
1130
|
this._translations = signal({
|
|
@@ -1188,24 +1188,24 @@ class TiptapI18nService {
|
|
|
1188
1188
|
getSlashCommand(key) {
|
|
1189
1189
|
return this.translations().slashCommands[key];
|
|
1190
1190
|
}
|
|
1191
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
1192
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
1191
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteI18nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1192
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteI18nService, providedIn: "root" }); }
|
|
1193
1193
|
}
|
|
1194
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
1194
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteI18nService, decorators: [{
|
|
1195
1195
|
type: Injectable,
|
|
1196
1196
|
args: [{
|
|
1197
1197
|
providedIn: "root",
|
|
1198
1198
|
}]
|
|
1199
1199
|
}], ctorParameters: () => [] });
|
|
1200
1200
|
|
|
1201
|
-
class
|
|
1201
|
+
class AteImageService {
|
|
1202
1202
|
constructor() {
|
|
1203
1203
|
/** Signals for image state */
|
|
1204
1204
|
this.selectedImage = signal(null, ...(ngDevMode ? [{ debugName: "selectedImage" }] : []));
|
|
1205
1205
|
this.isImageSelected = computed(() => this.selectedImage() !== null, ...(ngDevMode ? [{ debugName: "isImageSelected" }] : []));
|
|
1206
1206
|
/** Resizing state */
|
|
1207
1207
|
this.isResizing = signal(false, ...(ngDevMode ? [{ debugName: "isResizing" }] : []));
|
|
1208
|
-
this.i18n = inject(
|
|
1208
|
+
this.i18n = inject(AteI18nService);
|
|
1209
1209
|
this.t = this.i18n.imageUpload;
|
|
1210
1210
|
/** Upload state signals */
|
|
1211
1211
|
this.isUploading = signal(false, ...(ngDevMode ? [{ debugName: "isUploading" }] : []));
|
|
@@ -1539,10 +1539,10 @@ class ImageService {
|
|
|
1539
1539
|
this.selectImage(ed);
|
|
1540
1540
|
}, this.t().replacingImage, options);
|
|
1541
1541
|
}
|
|
1542
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
1543
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
1542
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteImageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1543
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteImageService }); }
|
|
1544
1544
|
}
|
|
1545
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
1545
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteImageService, decorators: [{
|
|
1546
1546
|
type: Injectable
|
|
1547
1547
|
}] });
|
|
1548
1548
|
|
|
@@ -1599,7 +1599,7 @@ function getContrastColor(color) {
|
|
|
1599
1599
|
return getLuminance(color) > 128 ? "black" : "white";
|
|
1600
1600
|
}
|
|
1601
1601
|
|
|
1602
|
-
class
|
|
1602
|
+
class AteColorPickerService {
|
|
1603
1603
|
constructor() {
|
|
1604
1604
|
this.storedSelection = null;
|
|
1605
1605
|
// ============================================
|
|
@@ -1776,14 +1776,14 @@ class ColorPickerService {
|
|
|
1776
1776
|
getContrastColor(color) {
|
|
1777
1777
|
return getContrastColor(color);
|
|
1778
1778
|
}
|
|
1779
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
1780
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
1779
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteColorPickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1780
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteColorPickerService }); }
|
|
1781
1781
|
}
|
|
1782
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
1782
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteColorPickerService, decorators: [{
|
|
1783
1783
|
type: Injectable
|
|
1784
1784
|
}] });
|
|
1785
1785
|
|
|
1786
|
-
class
|
|
1786
|
+
class AteLinkService {
|
|
1787
1787
|
constructor() {
|
|
1788
1788
|
// ============================================
|
|
1789
1789
|
// State Signals (owned by this service)
|
|
@@ -1867,19 +1867,19 @@ class LinkService {
|
|
|
1867
1867
|
editor.chain().focus().extendMarkRange("link").unsetLink().run();
|
|
1868
1868
|
this.close();
|
|
1869
1869
|
}
|
|
1870
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
1871
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
1870
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteLinkService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1871
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteLinkService }); }
|
|
1872
1872
|
}
|
|
1873
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
1873
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteLinkService, decorators: [{
|
|
1874
1874
|
type: Injectable
|
|
1875
1875
|
}] });
|
|
1876
1876
|
|
|
1877
|
-
class
|
|
1877
|
+
class AteEditorCommandsService {
|
|
1878
1878
|
constructor() {
|
|
1879
|
-
this.imageService = inject(
|
|
1880
|
-
this.colorPickerSvc = inject(
|
|
1881
|
-
this.linkSvc = inject(
|
|
1882
|
-
this._editorState = signal(
|
|
1879
|
+
this.imageService = inject(AteImageService);
|
|
1880
|
+
this.colorPickerSvc = inject(AteColorPickerService);
|
|
1881
|
+
this.linkSvc = inject(AteLinkService);
|
|
1882
|
+
this._editorState = signal(ATE_INITIAL_EDITOR_STATE, ...(ngDevMode ? [{ debugName: "_editorState", equal: (a, b) => {
|
|
1883
1883
|
// 1. Primitive global states
|
|
1884
1884
|
if (a.isFocused !== b.isFocused || a.isEditable !== b.isEditable)
|
|
1885
1885
|
return false;
|
|
@@ -2313,22 +2313,22 @@ class EditorCommandsService {
|
|
|
2313
2313
|
throw error;
|
|
2314
2314
|
}
|
|
2315
2315
|
}
|
|
2316
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
2317
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
2316
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteEditorCommandsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2317
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteEditorCommandsService }); }
|
|
2318
2318
|
}
|
|
2319
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
2319
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteEditorCommandsService, decorators: [{
|
|
2320
2320
|
type: Injectable
|
|
2321
2321
|
}] });
|
|
2322
2322
|
|
|
2323
|
-
class
|
|
2323
|
+
class AteColorPickerComponent {
|
|
2324
2324
|
constructor() {
|
|
2325
2325
|
this.editor = input.required(...(ngDevMode ? [{ debugName: "editor" }] : []));
|
|
2326
2326
|
this.mode = input("text", ...(ngDevMode ? [{ debugName: "mode" }] : []));
|
|
2327
2327
|
this.disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
2328
2328
|
this.anchorToText = input(false, ...(ngDevMode ? [{ debugName: "anchorToText" }] : []));
|
|
2329
|
-
this.colorPickerSvc = inject(
|
|
2330
|
-
this.i18nService = inject(
|
|
2331
|
-
this.editorCommands = inject(
|
|
2329
|
+
this.colorPickerSvc = inject(AteColorPickerService);
|
|
2330
|
+
this.i18nService = inject(AteI18nService);
|
|
2331
|
+
this.editorCommands = inject(AteEditorCommandsService);
|
|
2332
2332
|
this.t = this.i18nService.toolbar;
|
|
2333
2333
|
this.state = this.editorCommands.editorState;
|
|
2334
2334
|
this.currentColor = computed(() => {
|
|
@@ -2381,11 +2381,11 @@ class TiptapColorPickerComponent {
|
|
|
2381
2381
|
}
|
|
2382
2382
|
this.colorPickerSvc.close();
|
|
2383
2383
|
}
|
|
2384
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
2385
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type:
|
|
2384
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2385
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AteColorPickerComponent, isStandalone: true, selector: "ate-color-picker", inputs: { editor: { classPropertyName: "editor", publicName: "editor", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, anchorToText: { classPropertyName: "anchorToText", publicName: "anchorToText", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
2386
2386
|
<div class="color-picker-wrapper">
|
|
2387
2387
|
<div class="color-picker-container" [class.is-highlight]="mode() === 'highlight'">
|
|
2388
|
-
<
|
|
2388
|
+
<ate-button
|
|
2389
2389
|
[icon]="buttonIcon()"
|
|
2390
2390
|
[title]="mode() === 'text' ? t().textColor : t().highlight"
|
|
2391
2391
|
[color]="buttonTextColor()"
|
|
@@ -2405,14 +2405,14 @@ class TiptapColorPickerComponent {
|
|
|
2405
2405
|
}
|
|
2406
2406
|
</div>
|
|
2407
2407
|
</div>
|
|
2408
|
-
`, isInline: true, styles: [".color-picker-wrapper{position:relative;display:inline-block}.color-picker-container{position:relative;display:inline-flex;align-items:center}.btn-clear-badge{position:absolute;top:-4px;right:-4px;width:14px;height:14px;padding:0;border:none;border-radius:999px;background:#0f172abf;color:#fff;display:flex;align-items:center;justify-content:center;z-index:10;opacity:0;pointer-events:none;transition:opacity .12s ease}.color-picker-container:hover .btn-clear-badge{opacity:1;pointer-events:auto}.btn-clear-badge .material-symbols-outlined{font-size:10px;line-height:1}\n"], dependencies: [{ kind: "component", type:
|
|
2408
|
+
`, isInline: true, styles: [".color-picker-wrapper{position:relative;display:inline-block}.color-picker-container{position:relative;display:inline-flex;align-items:center}.btn-clear-badge{position:absolute;top:-4px;right:-4px;width:14px;height:14px;padding:0;border:none;border-radius:999px;background:#0f172abf;color:#fff;display:flex;align-items:center;justify-content:center;z-index:10;opacity:0;pointer-events:none;transition:opacity .12s ease}.color-picker-container:hover .btn-clear-badge{opacity:1;pointer-events:auto}.btn-clear-badge .material-symbols-outlined{font-size:10px;line-height:1}\n"], dependencies: [{ kind: "component", type: AteButtonComponent, selector: "ate-button", inputs: ["icon", "title", "active", "disabled", "color", "backgroundColor", "variant", "size", "iconSize"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2409
2409
|
}
|
|
2410
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
2410
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteColorPickerComponent, decorators: [{
|
|
2411
2411
|
type: Component,
|
|
2412
|
-
args: [{ selector: "
|
|
2412
|
+
args: [{ selector: "ate-color-picker", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AteButtonComponent, CommonModule], template: `
|
|
2413
2413
|
<div class="color-picker-wrapper">
|
|
2414
2414
|
<div class="color-picker-container" [class.is-highlight]="mode() === 'highlight'">
|
|
2415
|
-
<
|
|
2415
|
+
<ate-button
|
|
2416
2416
|
[icon]="buttonIcon()"
|
|
2417
2417
|
[title]="mode() === 'text' ? t().textColor : t().highlight"
|
|
2418
2418
|
[color]="buttonTextColor()"
|
|
@@ -2435,14 +2435,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2435
2435
|
`, styles: [".color-picker-wrapper{position:relative;display:inline-block}.color-picker-container{position:relative;display:inline-flex;align-items:center}.btn-clear-badge{position:absolute;top:-4px;right:-4px;width:14px;height:14px;padding:0;border:none;border-radius:999px;background:#0f172abf;color:#fff;display:flex;align-items:center;justify-content:center;z-index:10;opacity:0;pointer-events:none;transition:opacity .12s ease}.color-picker-container:hover .btn-clear-badge{opacity:1;pointer-events:auto}.btn-clear-badge .material-symbols-outlined{font-size:10px;line-height:1}\n"] }]
|
|
2436
2436
|
}], propDecorators: { editor: [{ type: i0.Input, args: [{ isSignal: true, alias: "editor", required: true }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], anchorToText: [{ type: i0.Input, args: [{ isSignal: true, alias: "anchorToText", required: false }] }] } });
|
|
2437
2437
|
|
|
2438
|
-
class
|
|
2438
|
+
class AteToolbarComponent {
|
|
2439
2439
|
constructor() {
|
|
2440
2440
|
this.editor = input.required(...(ngDevMode ? [{ debugName: "editor" }] : []));
|
|
2441
2441
|
this.config = input.required(...(ngDevMode ? [{ debugName: "config" }] : []));
|
|
2442
2442
|
this.imageUpload = input({}, ...(ngDevMode ? [{ debugName: "imageUpload" }] : []));
|
|
2443
2443
|
this.floating = input(false, ...(ngDevMode ? [{ debugName: "floating" }] : []));
|
|
2444
|
-
this.i18nService = inject(
|
|
2445
|
-
this.editorCommands = inject(
|
|
2444
|
+
this.i18nService = inject(AteI18nService);
|
|
2445
|
+
this.editorCommands = inject(AteEditorCommandsService);
|
|
2446
2446
|
this.t = this.i18nService.toolbar;
|
|
2447
2447
|
this.state = this.editorCommands.editorState;
|
|
2448
2448
|
}
|
|
@@ -2452,11 +2452,11 @@ class TiptapToolbarComponent {
|
|
|
2452
2452
|
return;
|
|
2453
2453
|
this.editorCommands.execute(editor, command, ...args);
|
|
2454
2454
|
}
|
|
2455
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
2456
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type:
|
|
2457
|
-
<div class="
|
|
2455
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2456
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AteToolbarComponent, isStandalone: true, selector: "ate-toolbar", inputs: { editor: { classPropertyName: "editor", publicName: "editor", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, imageUpload: { classPropertyName: "imageUpload", publicName: "imageUpload", isSignal: true, isRequired: false, transformFunction: null }, floating: { classPropertyName: "floating", publicName: "floating", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
2457
|
+
<div class="ate-toolbar" [class.floating]="floating()">
|
|
2458
2458
|
@if (config().bold) {
|
|
2459
|
-
<
|
|
2459
|
+
<ate-button
|
|
2460
2460
|
icon="format_bold"
|
|
2461
2461
|
[title]="t().bold"
|
|
2462
2462
|
[active]="state().marks.bold"
|
|
@@ -2464,7 +2464,7 @@ class TiptapToolbarComponent {
|
|
|
2464
2464
|
(buttonClick)="onCommand('toggleBold')" />
|
|
2465
2465
|
}
|
|
2466
2466
|
@if (config().italic) {
|
|
2467
|
-
<
|
|
2467
|
+
<ate-button
|
|
2468
2468
|
icon="format_italic"
|
|
2469
2469
|
[title]="t().italic"
|
|
2470
2470
|
[active]="state().marks.italic"
|
|
@@ -2472,7 +2472,7 @@ class TiptapToolbarComponent {
|
|
|
2472
2472
|
(buttonClick)="onCommand('toggleItalic')" />
|
|
2473
2473
|
}
|
|
2474
2474
|
@if (config().underline) {
|
|
2475
|
-
<
|
|
2475
|
+
<ate-button
|
|
2476
2476
|
icon="format_underlined"
|
|
2477
2477
|
[title]="t().underline"
|
|
2478
2478
|
[active]="state().marks.underline"
|
|
@@ -2480,7 +2480,7 @@ class TiptapToolbarComponent {
|
|
|
2480
2480
|
(buttonClick)="onCommand('toggleUnderline')" />
|
|
2481
2481
|
}
|
|
2482
2482
|
@if (config().strike) {
|
|
2483
|
-
<
|
|
2483
|
+
<ate-button
|
|
2484
2484
|
icon="strikethrough_s"
|
|
2485
2485
|
[title]="t().strike"
|
|
2486
2486
|
[active]="state().marks.strike"
|
|
@@ -2488,7 +2488,7 @@ class TiptapToolbarComponent {
|
|
|
2488
2488
|
(buttonClick)="onCommand('toggleStrike')" />
|
|
2489
2489
|
}
|
|
2490
2490
|
@if (config().code) {
|
|
2491
|
-
<
|
|
2491
|
+
<ate-button
|
|
2492
2492
|
icon="code"
|
|
2493
2493
|
[title]="t().code"
|
|
2494
2494
|
[active]="state().marks.code"
|
|
@@ -2496,7 +2496,7 @@ class TiptapToolbarComponent {
|
|
|
2496
2496
|
(buttonClick)="onCommand('toggleCode')" />
|
|
2497
2497
|
}
|
|
2498
2498
|
@if (config().codeBlock) {
|
|
2499
|
-
<
|
|
2499
|
+
<ate-button
|
|
2500
2500
|
icon="terminal"
|
|
2501
2501
|
[title]="t().codeBlock"
|
|
2502
2502
|
[active]="state().nodes.isCodeBlock"
|
|
@@ -2504,7 +2504,7 @@ class TiptapToolbarComponent {
|
|
|
2504
2504
|
(buttonClick)="onCommand('toggleCodeBlock')" />
|
|
2505
2505
|
}
|
|
2506
2506
|
@if (config().superscript) {
|
|
2507
|
-
<
|
|
2507
|
+
<ate-button
|
|
2508
2508
|
icon="superscript"
|
|
2509
2509
|
[title]="t().superscript"
|
|
2510
2510
|
[active]="state().marks.superscript"
|
|
@@ -2512,7 +2512,7 @@ class TiptapToolbarComponent {
|
|
|
2512
2512
|
(buttonClick)="onCommand('toggleSuperscript')" />
|
|
2513
2513
|
}
|
|
2514
2514
|
@if (config().subscript) {
|
|
2515
|
-
<
|
|
2515
|
+
<ate-button
|
|
2516
2516
|
icon="subscript"
|
|
2517
2517
|
[title]="t().subscript"
|
|
2518
2518
|
[active]="state().marks.subscript"
|
|
@@ -2520,7 +2520,7 @@ class TiptapToolbarComponent {
|
|
|
2520
2520
|
(buttonClick)="onCommand('toggleSubscript')" />
|
|
2521
2521
|
}
|
|
2522
2522
|
@if (config().highlight) {
|
|
2523
|
-
<
|
|
2523
|
+
<ate-button
|
|
2524
2524
|
icon="highlight"
|
|
2525
2525
|
[title]="t().highlight"
|
|
2526
2526
|
[active]="state().marks.highlight"
|
|
@@ -2528,17 +2528,17 @@ class TiptapToolbarComponent {
|
|
|
2528
2528
|
(buttonClick)="onCommand('toggleHighlight')" />
|
|
2529
2529
|
}
|
|
2530
2530
|
@if (config().highlightPicker) {
|
|
2531
|
-
<
|
|
2531
|
+
<ate-color-picker mode="highlight" [editor]="editor()" [disabled]="!state().can.setHighlight" />
|
|
2532
2532
|
}
|
|
2533
2533
|
@if (config().textColor) {
|
|
2534
|
-
<
|
|
2534
|
+
<ate-color-picker mode="text" [editor]="editor()" [disabled]="!state().can.setColor" />
|
|
2535
2535
|
}
|
|
2536
2536
|
|
|
2537
2537
|
@if (config().separator && (config().heading1 || config().heading2 || config().heading3)) {
|
|
2538
|
-
<
|
|
2538
|
+
<ate-separator />
|
|
2539
2539
|
}
|
|
2540
2540
|
@if (config().heading1) {
|
|
2541
|
-
<
|
|
2541
|
+
<ate-button
|
|
2542
2542
|
icon="format_h1"
|
|
2543
2543
|
[title]="t().heading1"
|
|
2544
2544
|
[active]="state().nodes.h1"
|
|
@@ -2546,7 +2546,7 @@ class TiptapToolbarComponent {
|
|
|
2546
2546
|
(buttonClick)="onCommand('toggleHeading', 1)" />
|
|
2547
2547
|
}
|
|
2548
2548
|
@if (config().heading2) {
|
|
2549
|
-
<
|
|
2549
|
+
<ate-button
|
|
2550
2550
|
icon="format_h2"
|
|
2551
2551
|
[title]="t().heading2"
|
|
2552
2552
|
[active]="state().nodes.h2"
|
|
@@ -2554,7 +2554,7 @@ class TiptapToolbarComponent {
|
|
|
2554
2554
|
(buttonClick)="onCommand('toggleHeading', 2)" />
|
|
2555
2555
|
}
|
|
2556
2556
|
@if (config().heading3) {
|
|
2557
|
-
<
|
|
2557
|
+
<ate-button
|
|
2558
2558
|
icon="format_h3"
|
|
2559
2559
|
[title]="t().heading3"
|
|
2560
2560
|
[active]="state().nodes.h3"
|
|
@@ -2562,10 +2562,10 @@ class TiptapToolbarComponent {
|
|
|
2562
2562
|
(buttonClick)="onCommand('toggleHeading', 3)" />
|
|
2563
2563
|
}
|
|
2564
2564
|
@if (config().separator && (config().bulletList || config().orderedList || config().blockquote)) {
|
|
2565
|
-
<
|
|
2565
|
+
<ate-separator />
|
|
2566
2566
|
}
|
|
2567
2567
|
@if (config().bulletList) {
|
|
2568
|
-
<
|
|
2568
|
+
<ate-button
|
|
2569
2569
|
icon="format_list_bulleted"
|
|
2570
2570
|
[title]="t().bulletList"
|
|
2571
2571
|
[active]="state().nodes.isBulletList"
|
|
@@ -2573,7 +2573,7 @@ class TiptapToolbarComponent {
|
|
|
2573
2573
|
(buttonClick)="onCommand('toggleBulletList')" />
|
|
2574
2574
|
}
|
|
2575
2575
|
@if (config().orderedList) {
|
|
2576
|
-
<
|
|
2576
|
+
<ate-button
|
|
2577
2577
|
icon="format_list_numbered"
|
|
2578
2578
|
[title]="t().orderedList"
|
|
2579
2579
|
[active]="state().nodes.isOrderedList"
|
|
@@ -2581,7 +2581,7 @@ class TiptapToolbarComponent {
|
|
|
2581
2581
|
(buttonClick)="onCommand('toggleOrderedList')" />
|
|
2582
2582
|
}
|
|
2583
2583
|
@if (config().blockquote) {
|
|
2584
|
-
<
|
|
2584
|
+
<ate-button
|
|
2585
2585
|
icon="format_quote"
|
|
2586
2586
|
[title]="t().blockquote"
|
|
2587
2587
|
[active]="state().nodes.isBlockquote"
|
|
@@ -2592,10 +2592,10 @@ class TiptapToolbarComponent {
|
|
|
2592
2592
|
config().separator &&
|
|
2593
2593
|
(config().alignLeft || config().alignCenter || config().alignRight || config().alignJustify)
|
|
2594
2594
|
) {
|
|
2595
|
-
<
|
|
2595
|
+
<ate-separator />
|
|
2596
2596
|
}
|
|
2597
2597
|
@if (config().alignLeft) {
|
|
2598
|
-
<
|
|
2598
|
+
<ate-button
|
|
2599
2599
|
icon="format_align_left"
|
|
2600
2600
|
[title]="t().alignLeft"
|
|
2601
2601
|
[active]="state().nodes.alignLeft"
|
|
@@ -2603,7 +2603,7 @@ class TiptapToolbarComponent {
|
|
|
2603
2603
|
(buttonClick)="onCommand('setTextAlign', 'left')" />
|
|
2604
2604
|
}
|
|
2605
2605
|
@if (config().alignCenter) {
|
|
2606
|
-
<
|
|
2606
|
+
<ate-button
|
|
2607
2607
|
icon="format_align_center"
|
|
2608
2608
|
[title]="t().alignCenter"
|
|
2609
2609
|
[active]="state().nodes.alignCenter"
|
|
@@ -2611,7 +2611,7 @@ class TiptapToolbarComponent {
|
|
|
2611
2611
|
(buttonClick)="onCommand('setTextAlign', 'center')" />
|
|
2612
2612
|
}
|
|
2613
2613
|
@if (config().alignRight) {
|
|
2614
|
-
<
|
|
2614
|
+
<ate-button
|
|
2615
2615
|
icon="format_align_right"
|
|
2616
2616
|
[title]="t().alignRight"
|
|
2617
2617
|
[active]="state().nodes.alignRight"
|
|
@@ -2619,7 +2619,7 @@ class TiptapToolbarComponent {
|
|
|
2619
2619
|
(buttonClick)="onCommand('setTextAlign', 'right')" />
|
|
2620
2620
|
}
|
|
2621
2621
|
@if (config().alignJustify) {
|
|
2622
|
-
<
|
|
2622
|
+
<ate-button
|
|
2623
2623
|
icon="format_align_justify"
|
|
2624
2624
|
[title]="t().alignJustify"
|
|
2625
2625
|
[active]="state().nodes.alignJustify"
|
|
@@ -2627,10 +2627,10 @@ class TiptapToolbarComponent {
|
|
|
2627
2627
|
(buttonClick)="onCommand('setTextAlign', 'justify')" />
|
|
2628
2628
|
}
|
|
2629
2629
|
@if (config().separator && (config().link || config().horizontalRule)) {
|
|
2630
|
-
<
|
|
2630
|
+
<ate-separator />
|
|
2631
2631
|
}
|
|
2632
2632
|
@if (config().link) {
|
|
2633
|
-
<
|
|
2633
|
+
<ate-button
|
|
2634
2634
|
icon="link"
|
|
2635
2635
|
[title]="t().link"
|
|
2636
2636
|
[active]="state().marks.link"
|
|
@@ -2638,65 +2638,62 @@ class TiptapToolbarComponent {
|
|
|
2638
2638
|
(buttonClick)="onCommand('toggleLink', $event)" />
|
|
2639
2639
|
}
|
|
2640
2640
|
@if (config().horizontalRule) {
|
|
2641
|
-
<
|
|
2641
|
+
<ate-button
|
|
2642
2642
|
icon="horizontal_rule"
|
|
2643
2643
|
[title]="t().horizontalRule"
|
|
2644
2644
|
[disabled]="!state().can.insertHorizontalRule"
|
|
2645
2645
|
(buttonClick)="onCommand('insertHorizontalRule')" />
|
|
2646
2646
|
}
|
|
2647
2647
|
@if (config().table) {
|
|
2648
|
-
<
|
|
2648
|
+
<ate-button
|
|
2649
2649
|
icon="table_view"
|
|
2650
2650
|
[title]="t().table"
|
|
2651
2651
|
[disabled]="!state().can.insertTable"
|
|
2652
2652
|
(buttonClick)="onCommand('insertTable')" />
|
|
2653
2653
|
}
|
|
2654
2654
|
@if (config().separator && config().image) {
|
|
2655
|
-
<
|
|
2655
|
+
<ate-separator />
|
|
2656
2656
|
}
|
|
2657
2657
|
@if (config().image) {
|
|
2658
|
-
<
|
|
2658
|
+
<ate-button
|
|
2659
2659
|
icon="image"
|
|
2660
2660
|
[title]="t().image"
|
|
2661
2661
|
[disabled]="!state().can.insertImage"
|
|
2662
2662
|
(buttonClick)="onCommand('insertImage', imageUpload())" />
|
|
2663
2663
|
}
|
|
2664
2664
|
@if (config().separator && (config().undo || config().redo)) {
|
|
2665
|
-
<
|
|
2665
|
+
<ate-separator />
|
|
2666
2666
|
}
|
|
2667
2667
|
@if (config().undo) {
|
|
2668
|
-
<
|
|
2669
|
-
icon="undo"
|
|
2670
|
-
[title]="t().undo"
|
|
2671
|
-
[disabled]="!state().can.undo"
|
|
2672
|
-
(buttonClick)="onCommand('undo')" />
|
|
2668
|
+
<ate-button icon="undo" [title]="t().undo" [disabled]="!state().can.undo" (buttonClick)="onCommand('undo')" />
|
|
2673
2669
|
}
|
|
2674
2670
|
@if (config().redo) {
|
|
2675
|
-
<
|
|
2676
|
-
icon="redo"
|
|
2677
|
-
[title]="t().redo"
|
|
2678
|
-
[disabled]="!state().can.redo"
|
|
2679
|
-
(buttonClick)="onCommand('redo')" />
|
|
2671
|
+
<ate-button icon="redo" [title]="t().redo" [disabled]="!state().can.redo" (buttonClick)="onCommand('redo')" />
|
|
2680
2672
|
}
|
|
2681
2673
|
@if (config().separator && config().clear) {
|
|
2682
|
-
<
|
|
2674
|
+
<ate-separator />
|
|
2683
2675
|
}
|
|
2684
2676
|
@if (config().clear) {
|
|
2685
|
-
<
|
|
2677
|
+
<ate-button
|
|
2686
2678
|
icon="delete"
|
|
2687
2679
|
[title]="t().clear"
|
|
2688
2680
|
[disabled]="!state().isEditable"
|
|
2689
2681
|
(buttonClick)="onCommand('clearContent')" />
|
|
2690
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
|
+
}
|
|
2691
2688
|
</div>
|
|
2692
|
-
`, 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}.
|
|
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 }); }
|
|
2693
2690
|
}
|
|
2694
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
2691
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteToolbarComponent, decorators: [{
|
|
2695
2692
|
type: Component,
|
|
2696
|
-
args: [{ selector: "
|
|
2697
|
-
<div class="
|
|
2693
|
+
args: [{ selector: "ate-toolbar", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AteButtonComponent, AteSeparatorComponent, AteColorPickerComponent], template: `
|
|
2694
|
+
<div class="ate-toolbar" [class.floating]="floating()">
|
|
2698
2695
|
@if (config().bold) {
|
|
2699
|
-
<
|
|
2696
|
+
<ate-button
|
|
2700
2697
|
icon="format_bold"
|
|
2701
2698
|
[title]="t().bold"
|
|
2702
2699
|
[active]="state().marks.bold"
|
|
@@ -2704,7 +2701,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2704
2701
|
(buttonClick)="onCommand('toggleBold')" />
|
|
2705
2702
|
}
|
|
2706
2703
|
@if (config().italic) {
|
|
2707
|
-
<
|
|
2704
|
+
<ate-button
|
|
2708
2705
|
icon="format_italic"
|
|
2709
2706
|
[title]="t().italic"
|
|
2710
2707
|
[active]="state().marks.italic"
|
|
@@ -2712,7 +2709,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2712
2709
|
(buttonClick)="onCommand('toggleItalic')" />
|
|
2713
2710
|
}
|
|
2714
2711
|
@if (config().underline) {
|
|
2715
|
-
<
|
|
2712
|
+
<ate-button
|
|
2716
2713
|
icon="format_underlined"
|
|
2717
2714
|
[title]="t().underline"
|
|
2718
2715
|
[active]="state().marks.underline"
|
|
@@ -2720,7 +2717,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2720
2717
|
(buttonClick)="onCommand('toggleUnderline')" />
|
|
2721
2718
|
}
|
|
2722
2719
|
@if (config().strike) {
|
|
2723
|
-
<
|
|
2720
|
+
<ate-button
|
|
2724
2721
|
icon="strikethrough_s"
|
|
2725
2722
|
[title]="t().strike"
|
|
2726
2723
|
[active]="state().marks.strike"
|
|
@@ -2728,7 +2725,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2728
2725
|
(buttonClick)="onCommand('toggleStrike')" />
|
|
2729
2726
|
}
|
|
2730
2727
|
@if (config().code) {
|
|
2731
|
-
<
|
|
2728
|
+
<ate-button
|
|
2732
2729
|
icon="code"
|
|
2733
2730
|
[title]="t().code"
|
|
2734
2731
|
[active]="state().marks.code"
|
|
@@ -2736,7 +2733,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2736
2733
|
(buttonClick)="onCommand('toggleCode')" />
|
|
2737
2734
|
}
|
|
2738
2735
|
@if (config().codeBlock) {
|
|
2739
|
-
<
|
|
2736
|
+
<ate-button
|
|
2740
2737
|
icon="terminal"
|
|
2741
2738
|
[title]="t().codeBlock"
|
|
2742
2739
|
[active]="state().nodes.isCodeBlock"
|
|
@@ -2744,7 +2741,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2744
2741
|
(buttonClick)="onCommand('toggleCodeBlock')" />
|
|
2745
2742
|
}
|
|
2746
2743
|
@if (config().superscript) {
|
|
2747
|
-
<
|
|
2744
|
+
<ate-button
|
|
2748
2745
|
icon="superscript"
|
|
2749
2746
|
[title]="t().superscript"
|
|
2750
2747
|
[active]="state().marks.superscript"
|
|
@@ -2752,7 +2749,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2752
2749
|
(buttonClick)="onCommand('toggleSuperscript')" />
|
|
2753
2750
|
}
|
|
2754
2751
|
@if (config().subscript) {
|
|
2755
|
-
<
|
|
2752
|
+
<ate-button
|
|
2756
2753
|
icon="subscript"
|
|
2757
2754
|
[title]="t().subscript"
|
|
2758
2755
|
[active]="state().marks.subscript"
|
|
@@ -2760,7 +2757,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2760
2757
|
(buttonClick)="onCommand('toggleSubscript')" />
|
|
2761
2758
|
}
|
|
2762
2759
|
@if (config().highlight) {
|
|
2763
|
-
<
|
|
2760
|
+
<ate-button
|
|
2764
2761
|
icon="highlight"
|
|
2765
2762
|
[title]="t().highlight"
|
|
2766
2763
|
[active]="state().marks.highlight"
|
|
@@ -2768,17 +2765,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2768
2765
|
(buttonClick)="onCommand('toggleHighlight')" />
|
|
2769
2766
|
}
|
|
2770
2767
|
@if (config().highlightPicker) {
|
|
2771
|
-
<
|
|
2768
|
+
<ate-color-picker mode="highlight" [editor]="editor()" [disabled]="!state().can.setHighlight" />
|
|
2772
2769
|
}
|
|
2773
2770
|
@if (config().textColor) {
|
|
2774
|
-
<
|
|
2771
|
+
<ate-color-picker mode="text" [editor]="editor()" [disabled]="!state().can.setColor" />
|
|
2775
2772
|
}
|
|
2776
2773
|
|
|
2777
2774
|
@if (config().separator && (config().heading1 || config().heading2 || config().heading3)) {
|
|
2778
|
-
<
|
|
2775
|
+
<ate-separator />
|
|
2779
2776
|
}
|
|
2780
2777
|
@if (config().heading1) {
|
|
2781
|
-
<
|
|
2778
|
+
<ate-button
|
|
2782
2779
|
icon="format_h1"
|
|
2783
2780
|
[title]="t().heading1"
|
|
2784
2781
|
[active]="state().nodes.h1"
|
|
@@ -2786,7 +2783,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2786
2783
|
(buttonClick)="onCommand('toggleHeading', 1)" />
|
|
2787
2784
|
}
|
|
2788
2785
|
@if (config().heading2) {
|
|
2789
|
-
<
|
|
2786
|
+
<ate-button
|
|
2790
2787
|
icon="format_h2"
|
|
2791
2788
|
[title]="t().heading2"
|
|
2792
2789
|
[active]="state().nodes.h2"
|
|
@@ -2794,7 +2791,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2794
2791
|
(buttonClick)="onCommand('toggleHeading', 2)" />
|
|
2795
2792
|
}
|
|
2796
2793
|
@if (config().heading3) {
|
|
2797
|
-
<
|
|
2794
|
+
<ate-button
|
|
2798
2795
|
icon="format_h3"
|
|
2799
2796
|
[title]="t().heading3"
|
|
2800
2797
|
[active]="state().nodes.h3"
|
|
@@ -2802,10 +2799,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2802
2799
|
(buttonClick)="onCommand('toggleHeading', 3)" />
|
|
2803
2800
|
}
|
|
2804
2801
|
@if (config().separator && (config().bulletList || config().orderedList || config().blockquote)) {
|
|
2805
|
-
<
|
|
2802
|
+
<ate-separator />
|
|
2806
2803
|
}
|
|
2807
2804
|
@if (config().bulletList) {
|
|
2808
|
-
<
|
|
2805
|
+
<ate-button
|
|
2809
2806
|
icon="format_list_bulleted"
|
|
2810
2807
|
[title]="t().bulletList"
|
|
2811
2808
|
[active]="state().nodes.isBulletList"
|
|
@@ -2813,7 +2810,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2813
2810
|
(buttonClick)="onCommand('toggleBulletList')" />
|
|
2814
2811
|
}
|
|
2815
2812
|
@if (config().orderedList) {
|
|
2816
|
-
<
|
|
2813
|
+
<ate-button
|
|
2817
2814
|
icon="format_list_numbered"
|
|
2818
2815
|
[title]="t().orderedList"
|
|
2819
2816
|
[active]="state().nodes.isOrderedList"
|
|
@@ -2821,7 +2818,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2821
2818
|
(buttonClick)="onCommand('toggleOrderedList')" />
|
|
2822
2819
|
}
|
|
2823
2820
|
@if (config().blockquote) {
|
|
2824
|
-
<
|
|
2821
|
+
<ate-button
|
|
2825
2822
|
icon="format_quote"
|
|
2826
2823
|
[title]="t().blockquote"
|
|
2827
2824
|
[active]="state().nodes.isBlockquote"
|
|
@@ -2832,10 +2829,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2832
2829
|
config().separator &&
|
|
2833
2830
|
(config().alignLeft || config().alignCenter || config().alignRight || config().alignJustify)
|
|
2834
2831
|
) {
|
|
2835
|
-
<
|
|
2832
|
+
<ate-separator />
|
|
2836
2833
|
}
|
|
2837
2834
|
@if (config().alignLeft) {
|
|
2838
|
-
<
|
|
2835
|
+
<ate-button
|
|
2839
2836
|
icon="format_align_left"
|
|
2840
2837
|
[title]="t().alignLeft"
|
|
2841
2838
|
[active]="state().nodes.alignLeft"
|
|
@@ -2843,7 +2840,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2843
2840
|
(buttonClick)="onCommand('setTextAlign', 'left')" />
|
|
2844
2841
|
}
|
|
2845
2842
|
@if (config().alignCenter) {
|
|
2846
|
-
<
|
|
2843
|
+
<ate-button
|
|
2847
2844
|
icon="format_align_center"
|
|
2848
2845
|
[title]="t().alignCenter"
|
|
2849
2846
|
[active]="state().nodes.alignCenter"
|
|
@@ -2851,7 +2848,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2851
2848
|
(buttonClick)="onCommand('setTextAlign', 'center')" />
|
|
2852
2849
|
}
|
|
2853
2850
|
@if (config().alignRight) {
|
|
2854
|
-
<
|
|
2851
|
+
<ate-button
|
|
2855
2852
|
icon="format_align_right"
|
|
2856
2853
|
[title]="t().alignRight"
|
|
2857
2854
|
[active]="state().nodes.alignRight"
|
|
@@ -2859,7 +2856,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2859
2856
|
(buttonClick)="onCommand('setTextAlign', 'right')" />
|
|
2860
2857
|
}
|
|
2861
2858
|
@if (config().alignJustify) {
|
|
2862
|
-
<
|
|
2859
|
+
<ate-button
|
|
2863
2860
|
icon="format_align_justify"
|
|
2864
2861
|
[title]="t().alignJustify"
|
|
2865
2862
|
[active]="state().nodes.alignJustify"
|
|
@@ -2867,10 +2864,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2867
2864
|
(buttonClick)="onCommand('setTextAlign', 'justify')" />
|
|
2868
2865
|
}
|
|
2869
2866
|
@if (config().separator && (config().link || config().horizontalRule)) {
|
|
2870
|
-
<
|
|
2867
|
+
<ate-separator />
|
|
2871
2868
|
}
|
|
2872
2869
|
@if (config().link) {
|
|
2873
|
-
<
|
|
2870
|
+
<ate-button
|
|
2874
2871
|
icon="link"
|
|
2875
2872
|
[title]="t().link"
|
|
2876
2873
|
[active]="state().marks.link"
|
|
@@ -2878,68 +2875,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2878
2875
|
(buttonClick)="onCommand('toggleLink', $event)" />
|
|
2879
2876
|
}
|
|
2880
2877
|
@if (config().horizontalRule) {
|
|
2881
|
-
<
|
|
2878
|
+
<ate-button
|
|
2882
2879
|
icon="horizontal_rule"
|
|
2883
2880
|
[title]="t().horizontalRule"
|
|
2884
2881
|
[disabled]="!state().can.insertHorizontalRule"
|
|
2885
2882
|
(buttonClick)="onCommand('insertHorizontalRule')" />
|
|
2886
2883
|
}
|
|
2887
2884
|
@if (config().table) {
|
|
2888
|
-
<
|
|
2885
|
+
<ate-button
|
|
2889
2886
|
icon="table_view"
|
|
2890
2887
|
[title]="t().table"
|
|
2891
2888
|
[disabled]="!state().can.insertTable"
|
|
2892
2889
|
(buttonClick)="onCommand('insertTable')" />
|
|
2893
2890
|
}
|
|
2894
2891
|
@if (config().separator && config().image) {
|
|
2895
|
-
<
|
|
2892
|
+
<ate-separator />
|
|
2896
2893
|
}
|
|
2897
2894
|
@if (config().image) {
|
|
2898
|
-
<
|
|
2895
|
+
<ate-button
|
|
2899
2896
|
icon="image"
|
|
2900
2897
|
[title]="t().image"
|
|
2901
2898
|
[disabled]="!state().can.insertImage"
|
|
2902
2899
|
(buttonClick)="onCommand('insertImage', imageUpload())" />
|
|
2903
2900
|
}
|
|
2904
2901
|
@if (config().separator && (config().undo || config().redo)) {
|
|
2905
|
-
<
|
|
2902
|
+
<ate-separator />
|
|
2906
2903
|
}
|
|
2907
2904
|
@if (config().undo) {
|
|
2908
|
-
<
|
|
2909
|
-
icon="undo"
|
|
2910
|
-
[title]="t().undo"
|
|
2911
|
-
[disabled]="!state().can.undo"
|
|
2912
|
-
(buttonClick)="onCommand('undo')" />
|
|
2905
|
+
<ate-button icon="undo" [title]="t().undo" [disabled]="!state().can.undo" (buttonClick)="onCommand('undo')" />
|
|
2913
2906
|
}
|
|
2914
2907
|
@if (config().redo) {
|
|
2915
|
-
<
|
|
2916
|
-
icon="redo"
|
|
2917
|
-
[title]="t().redo"
|
|
2918
|
-
[disabled]="!state().can.redo"
|
|
2919
|
-
(buttonClick)="onCommand('redo')" />
|
|
2908
|
+
<ate-button icon="redo" [title]="t().redo" [disabled]="!state().can.redo" (buttonClick)="onCommand('redo')" />
|
|
2920
2909
|
}
|
|
2921
2910
|
@if (config().separator && config().clear) {
|
|
2922
|
-
<
|
|
2911
|
+
<ate-separator />
|
|
2923
2912
|
}
|
|
2924
2913
|
@if (config().clear) {
|
|
2925
|
-
<
|
|
2914
|
+
<ate-button
|
|
2926
2915
|
icon="delete"
|
|
2927
2916
|
[title]="t().clear"
|
|
2928
2917
|
[disabled]="!state().isEditable"
|
|
2929
2918
|
(buttonClick)="onCommand('clearContent')" />
|
|
2930
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
|
+
}
|
|
2931
2925
|
</div>
|
|
2932
|
-
`, 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}.
|
|
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"] }]
|
|
2933
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 }] }] } });
|
|
2934
2928
|
|
|
2935
2929
|
/**
|
|
2936
2930
|
* Base abstract class for all Bubble Menus (Text, Image, Table, Cell).
|
|
2937
2931
|
* Handles common logic for Tippy.js initialization, positioning, and visibility.
|
|
2938
2932
|
*/
|
|
2939
|
-
class
|
|
2933
|
+
class AteBaseBubbleMenu {
|
|
2940
2934
|
constructor() {
|
|
2941
|
-
this.i18nService = inject(
|
|
2942
|
-
this.editorCommands = inject(
|
|
2935
|
+
this.i18nService = inject(AteI18nService);
|
|
2936
|
+
this.editorCommands = inject(AteEditorCommandsService);
|
|
2943
2937
|
// Core Inputs
|
|
2944
2938
|
this.editor = input.required(...(ngDevMode ? [{ debugName: "editor" }] : []));
|
|
2945
2939
|
// Internal State
|
|
@@ -3121,17 +3115,17 @@ class TiptapBaseBubbleMenu {
|
|
|
3121
3115
|
onTippyHide(_instance) {
|
|
3122
3116
|
/* empty */
|
|
3123
3117
|
}
|
|
3124
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
3125
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", type:
|
|
3118
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteBaseBubbleMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
3119
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", type: AteBaseBubbleMenu, isStandalone: true, inputs: { editor: { classPropertyName: "editor", publicName: "editor", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "menuRef", first: true, predicate: ["menuRef"], descendants: true }], ngImport: i0 }); }
|
|
3126
3120
|
}
|
|
3127
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
3121
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteBaseBubbleMenu, decorators: [{
|
|
3128
3122
|
type: Directive
|
|
3129
3123
|
}], ctorParameters: () => [], propDecorators: { editor: [{ type: i0.Input, args: [{ isSignal: true, alias: "editor", required: true }] }], menuRef: [{
|
|
3130
3124
|
type: ViewChild,
|
|
3131
3125
|
args: ["menuRef", { static: false }]
|
|
3132
3126
|
}] } });
|
|
3133
3127
|
|
|
3134
|
-
class
|
|
3128
|
+
class AteBubbleMenuComponent extends AteBaseBubbleMenu {
|
|
3135
3129
|
constructor() {
|
|
3136
3130
|
super(...arguments);
|
|
3137
3131
|
this.t = this.i18nService.bubbleMenu;
|
|
@@ -3212,195 +3206,205 @@ class TiptapBubbleMenuComponent extends TiptapBaseBubbleMenu {
|
|
|
3212
3206
|
// Sub-menus now manage their own state. Clearing them here causes
|
|
3213
3207
|
// premature closing when clicking between 'sibling' menu instances.
|
|
3214
3208
|
}
|
|
3215
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
3216
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type:
|
|
3209
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteBubbleMenuComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
3210
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AteBubbleMenuComponent, isStandalone: true, selector: "ate-bubble-menu", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
3217
3211
|
<div #menuRef class="bubble-menu" (mousedown)="$event.preventDefault()">
|
|
3218
3212
|
@if (bubbleMenuConfig().bold) {
|
|
3219
|
-
<
|
|
3213
|
+
<ate-button
|
|
3220
3214
|
icon="format_bold"
|
|
3221
3215
|
[title]="t().bold"
|
|
3222
3216
|
[active]="state().marks.bold"
|
|
3223
3217
|
[disabled]="!state().can.toggleBold"
|
|
3224
|
-
(buttonClick)="onCommand('toggleBold', $event)"></
|
|
3218
|
+
(buttonClick)="onCommand('toggleBold', $event)"></ate-button>
|
|
3225
3219
|
}
|
|
3226
3220
|
@if (bubbleMenuConfig().italic) {
|
|
3227
|
-
<
|
|
3221
|
+
<ate-button
|
|
3228
3222
|
icon="format_italic"
|
|
3229
3223
|
[title]="t().italic"
|
|
3230
3224
|
[active]="state().marks.italic"
|
|
3231
3225
|
[disabled]="!state().can.toggleItalic"
|
|
3232
|
-
(buttonClick)="onCommand('toggleItalic', $event)"></
|
|
3226
|
+
(buttonClick)="onCommand('toggleItalic', $event)"></ate-button>
|
|
3233
3227
|
}
|
|
3234
3228
|
@if (bubbleMenuConfig().underline) {
|
|
3235
|
-
<
|
|
3229
|
+
<ate-button
|
|
3236
3230
|
icon="format_underlined"
|
|
3237
3231
|
[title]="t().underline"
|
|
3238
3232
|
[active]="state().marks.underline"
|
|
3239
3233
|
[disabled]="!state().can.toggleUnderline"
|
|
3240
|
-
(buttonClick)="onCommand('toggleUnderline', $event)"></
|
|
3234
|
+
(buttonClick)="onCommand('toggleUnderline', $event)"></ate-button>
|
|
3241
3235
|
}
|
|
3242
3236
|
@if (bubbleMenuConfig().strike) {
|
|
3243
|
-
<
|
|
3237
|
+
<ate-button
|
|
3244
3238
|
icon="strikethrough_s"
|
|
3245
3239
|
[title]="t().strike"
|
|
3246
3240
|
[active]="state().marks.strike"
|
|
3247
3241
|
[disabled]="!state().can.toggleStrike"
|
|
3248
|
-
(buttonClick)="onCommand('toggleStrike', $event)"></
|
|
3242
|
+
(buttonClick)="onCommand('toggleStrike', $event)"></ate-button>
|
|
3249
3243
|
}
|
|
3250
3244
|
@if (bubbleMenuConfig().code) {
|
|
3251
|
-
<
|
|
3245
|
+
<ate-button
|
|
3252
3246
|
icon="code"
|
|
3253
3247
|
[title]="t().code"
|
|
3254
3248
|
[active]="state().marks.code"
|
|
3255
3249
|
[disabled]="!state().can.toggleCode"
|
|
3256
|
-
(buttonClick)="onCommand('toggleCode', $event)"></
|
|
3250
|
+
(buttonClick)="onCommand('toggleCode', $event)"></ate-button>
|
|
3257
3251
|
}
|
|
3258
3252
|
@if (bubbleMenuConfig().superscript) {
|
|
3259
|
-
<
|
|
3253
|
+
<ate-button
|
|
3260
3254
|
icon="superscript"
|
|
3261
3255
|
[title]="t().superscript"
|
|
3262
3256
|
[active]="state().marks.superscript"
|
|
3263
3257
|
[disabled]="!state().can.toggleSuperscript"
|
|
3264
|
-
(buttonClick)="onCommand('toggleSuperscript', $event)"></
|
|
3258
|
+
(buttonClick)="onCommand('toggleSuperscript', $event)"></ate-button>
|
|
3265
3259
|
}
|
|
3266
3260
|
@if (bubbleMenuConfig().subscript) {
|
|
3267
|
-
<
|
|
3261
|
+
<ate-button
|
|
3268
3262
|
icon="subscript"
|
|
3269
3263
|
[title]="t().subscript"
|
|
3270
3264
|
[active]="state().marks.subscript"
|
|
3271
3265
|
[disabled]="!state().can.toggleSubscript"
|
|
3272
|
-
(buttonClick)="onCommand('toggleSubscript', $event)"></
|
|
3266
|
+
(buttonClick)="onCommand('toggleSubscript', $event)"></ate-button>
|
|
3273
3267
|
}
|
|
3274
3268
|
@if (bubbleMenuConfig().highlight) {
|
|
3275
|
-
<
|
|
3269
|
+
<ate-button
|
|
3276
3270
|
icon="highlight"
|
|
3277
3271
|
[title]="t().highlight"
|
|
3278
3272
|
[active]="state().marks.highlight"
|
|
3279
3273
|
[disabled]="!state().can.toggleHighlight"
|
|
3280
|
-
(buttonClick)="onCommand('toggleHighlight', $event)"></
|
|
3274
|
+
(buttonClick)="onCommand('toggleHighlight', $event)"></ate-button>
|
|
3281
3275
|
}
|
|
3282
3276
|
@if (bubbleMenuConfig().highlightPicker) {
|
|
3283
|
-
<
|
|
3277
|
+
<ate-color-picker
|
|
3284
3278
|
mode="highlight"
|
|
3285
3279
|
[editor]="editor()"
|
|
3286
3280
|
[disabled]="!state().can.setHighlight"
|
|
3287
3281
|
[anchorToText]="true" />
|
|
3288
3282
|
}
|
|
3289
3283
|
@if (bubbleMenuConfig().textColor) {
|
|
3290
|
-
<
|
|
3284
|
+
<ate-color-picker mode="text" [editor]="editor()" [disabled]="!state().can.setColor" [anchorToText]="true" />
|
|
3291
3285
|
}
|
|
3292
3286
|
@if (bubbleMenuConfig().link) {
|
|
3293
|
-
<
|
|
3287
|
+
<ate-button
|
|
3294
3288
|
icon="link"
|
|
3295
3289
|
[title]="t().link"
|
|
3296
3290
|
[active]="state().marks.link"
|
|
3297
3291
|
[disabled]="!state().can.toggleLink"
|
|
3298
|
-
(buttonClick)="onCommand('toggleLink', $event)"></
|
|
3292
|
+
(buttonClick)="onCommand('toggleLink', $event)"></ate-button>
|
|
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
|
+
}
|
|
3299
3298
|
}
|
|
3300
3299
|
</div>
|
|
3301
|
-
`, isInline: true, dependencies: [{ kind: "component", type:
|
|
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 }); }
|
|
3302
3301
|
}
|
|
3303
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
3302
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteBubbleMenuComponent, decorators: [{
|
|
3304
3303
|
type: Component,
|
|
3305
3304
|
args: [{
|
|
3306
|
-
selector: "
|
|
3305
|
+
selector: "ate-bubble-menu",
|
|
3307
3306
|
standalone: true,
|
|
3308
3307
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3309
|
-
imports: [
|
|
3308
|
+
imports: [AteButtonComponent, AteColorPickerComponent],
|
|
3310
3309
|
template: `
|
|
3311
3310
|
<div #menuRef class="bubble-menu" (mousedown)="$event.preventDefault()">
|
|
3312
3311
|
@if (bubbleMenuConfig().bold) {
|
|
3313
|
-
<
|
|
3312
|
+
<ate-button
|
|
3314
3313
|
icon="format_bold"
|
|
3315
3314
|
[title]="t().bold"
|
|
3316
3315
|
[active]="state().marks.bold"
|
|
3317
3316
|
[disabled]="!state().can.toggleBold"
|
|
3318
|
-
(buttonClick)="onCommand('toggleBold', $event)"></
|
|
3317
|
+
(buttonClick)="onCommand('toggleBold', $event)"></ate-button>
|
|
3319
3318
|
}
|
|
3320
3319
|
@if (bubbleMenuConfig().italic) {
|
|
3321
|
-
<
|
|
3320
|
+
<ate-button
|
|
3322
3321
|
icon="format_italic"
|
|
3323
3322
|
[title]="t().italic"
|
|
3324
3323
|
[active]="state().marks.italic"
|
|
3325
3324
|
[disabled]="!state().can.toggleItalic"
|
|
3326
|
-
(buttonClick)="onCommand('toggleItalic', $event)"></
|
|
3325
|
+
(buttonClick)="onCommand('toggleItalic', $event)"></ate-button>
|
|
3327
3326
|
}
|
|
3328
3327
|
@if (bubbleMenuConfig().underline) {
|
|
3329
|
-
<
|
|
3328
|
+
<ate-button
|
|
3330
3329
|
icon="format_underlined"
|
|
3331
3330
|
[title]="t().underline"
|
|
3332
3331
|
[active]="state().marks.underline"
|
|
3333
3332
|
[disabled]="!state().can.toggleUnderline"
|
|
3334
|
-
(buttonClick)="onCommand('toggleUnderline', $event)"></
|
|
3333
|
+
(buttonClick)="onCommand('toggleUnderline', $event)"></ate-button>
|
|
3335
3334
|
}
|
|
3336
3335
|
@if (bubbleMenuConfig().strike) {
|
|
3337
|
-
<
|
|
3336
|
+
<ate-button
|
|
3338
3337
|
icon="strikethrough_s"
|
|
3339
3338
|
[title]="t().strike"
|
|
3340
3339
|
[active]="state().marks.strike"
|
|
3341
3340
|
[disabled]="!state().can.toggleStrike"
|
|
3342
|
-
(buttonClick)="onCommand('toggleStrike', $event)"></
|
|
3341
|
+
(buttonClick)="onCommand('toggleStrike', $event)"></ate-button>
|
|
3343
3342
|
}
|
|
3344
3343
|
@if (bubbleMenuConfig().code) {
|
|
3345
|
-
<
|
|
3344
|
+
<ate-button
|
|
3346
3345
|
icon="code"
|
|
3347
3346
|
[title]="t().code"
|
|
3348
3347
|
[active]="state().marks.code"
|
|
3349
3348
|
[disabled]="!state().can.toggleCode"
|
|
3350
|
-
(buttonClick)="onCommand('toggleCode', $event)"></
|
|
3349
|
+
(buttonClick)="onCommand('toggleCode', $event)"></ate-button>
|
|
3351
3350
|
}
|
|
3352
3351
|
@if (bubbleMenuConfig().superscript) {
|
|
3353
|
-
<
|
|
3352
|
+
<ate-button
|
|
3354
3353
|
icon="superscript"
|
|
3355
3354
|
[title]="t().superscript"
|
|
3356
3355
|
[active]="state().marks.superscript"
|
|
3357
3356
|
[disabled]="!state().can.toggleSuperscript"
|
|
3358
|
-
(buttonClick)="onCommand('toggleSuperscript', $event)"></
|
|
3357
|
+
(buttonClick)="onCommand('toggleSuperscript', $event)"></ate-button>
|
|
3359
3358
|
}
|
|
3360
3359
|
@if (bubbleMenuConfig().subscript) {
|
|
3361
|
-
<
|
|
3360
|
+
<ate-button
|
|
3362
3361
|
icon="subscript"
|
|
3363
3362
|
[title]="t().subscript"
|
|
3364
3363
|
[active]="state().marks.subscript"
|
|
3365
3364
|
[disabled]="!state().can.toggleSubscript"
|
|
3366
|
-
(buttonClick)="onCommand('toggleSubscript', $event)"></
|
|
3365
|
+
(buttonClick)="onCommand('toggleSubscript', $event)"></ate-button>
|
|
3367
3366
|
}
|
|
3368
3367
|
@if (bubbleMenuConfig().highlight) {
|
|
3369
|
-
<
|
|
3368
|
+
<ate-button
|
|
3370
3369
|
icon="highlight"
|
|
3371
3370
|
[title]="t().highlight"
|
|
3372
3371
|
[active]="state().marks.highlight"
|
|
3373
3372
|
[disabled]="!state().can.toggleHighlight"
|
|
3374
|
-
(buttonClick)="onCommand('toggleHighlight', $event)"></
|
|
3373
|
+
(buttonClick)="onCommand('toggleHighlight', $event)"></ate-button>
|
|
3375
3374
|
}
|
|
3376
3375
|
@if (bubbleMenuConfig().highlightPicker) {
|
|
3377
|
-
<
|
|
3376
|
+
<ate-color-picker
|
|
3378
3377
|
mode="highlight"
|
|
3379
3378
|
[editor]="editor()"
|
|
3380
3379
|
[disabled]="!state().can.setHighlight"
|
|
3381
3380
|
[anchorToText]="true" />
|
|
3382
3381
|
}
|
|
3383
3382
|
@if (bubbleMenuConfig().textColor) {
|
|
3384
|
-
<
|
|
3383
|
+
<ate-color-picker mode="text" [editor]="editor()" [disabled]="!state().can.setColor" [anchorToText]="true" />
|
|
3385
3384
|
}
|
|
3386
3385
|
@if (bubbleMenuConfig().link) {
|
|
3387
|
-
<
|
|
3386
|
+
<ate-button
|
|
3388
3387
|
icon="link"
|
|
3389
3388
|
[title]="t().link"
|
|
3390
3389
|
[active]="state().marks.link"
|
|
3391
3390
|
[disabled]="!state().can.toggleLink"
|
|
3392
|
-
(buttonClick)="onCommand('toggleLink', $event)"></
|
|
3391
|
+
(buttonClick)="onCommand('toggleLink', $event)"></ate-button>
|
|
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
|
+
}
|
|
3393
3397
|
}
|
|
3394
3398
|
</div>
|
|
3395
3399
|
`,
|
|
3396
3400
|
}]
|
|
3397
3401
|
}], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }] } });
|
|
3398
3402
|
|
|
3399
|
-
class
|
|
3403
|
+
class AteImageBubbleMenuComponent extends AteBaseBubbleMenu {
|
|
3400
3404
|
constructor() {
|
|
3401
3405
|
super(...arguments);
|
|
3402
3406
|
this.t = this.i18nService.imageUpload;
|
|
3403
|
-
this.imageService = inject(
|
|
3407
|
+
this.imageService = inject(AteImageService);
|
|
3404
3408
|
this.config = input({
|
|
3405
3409
|
changeImage: true,
|
|
3406
3410
|
resizeSmall: true,
|
|
@@ -3501,119 +3505,119 @@ class TiptapImageBubbleMenuComponent extends TiptapBaseBubbleMenu {
|
|
|
3501
3505
|
ed.chain().focus().deleteSelection().run();
|
|
3502
3506
|
}
|
|
3503
3507
|
}
|
|
3504
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
3505
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type:
|
|
3508
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteImageBubbleMenuComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
3509
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AteImageBubbleMenuComponent, isStandalone: true, selector: "ate-image-bubble-menu", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, imageUpload: { classPropertyName: "imageUpload", publicName: "imageUpload", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
3506
3510
|
<div #menuRef class="bubble-menu" (mousedown)="$event.preventDefault()">
|
|
3507
3511
|
@if (imageBubbleMenuConfig().changeImage) {
|
|
3508
|
-
<
|
|
3512
|
+
<ate-button
|
|
3509
3513
|
icon="drive_file_rename_outline"
|
|
3510
3514
|
[title]="t().changeImage"
|
|
3511
|
-
(buttonClick)="onCommand('changeImage', $event)"></
|
|
3515
|
+
(buttonClick)="onCommand('changeImage', $event)"></ate-button>
|
|
3512
3516
|
}
|
|
3513
3517
|
@if (imageBubbleMenuConfig().separator && hasResizeButtons()) {
|
|
3514
|
-
<
|
|
3518
|
+
<ate-separator />
|
|
3515
3519
|
}
|
|
3516
3520
|
@if (imageBubbleMenuConfig().resizeSmall) {
|
|
3517
|
-
<
|
|
3521
|
+
<ate-button
|
|
3518
3522
|
icon="crop_square"
|
|
3519
3523
|
iconSize="small"
|
|
3520
3524
|
[title]="t().resizeSmall"
|
|
3521
|
-
(buttonClick)="onCommand('resizeSmall', $event)"></
|
|
3525
|
+
(buttonClick)="onCommand('resizeSmall', $event)"></ate-button>
|
|
3522
3526
|
}
|
|
3523
3527
|
@if (imageBubbleMenuConfig().resizeMedium) {
|
|
3524
|
-
<
|
|
3528
|
+
<ate-button
|
|
3525
3529
|
icon="crop_square"
|
|
3526
3530
|
iconSize="medium"
|
|
3527
3531
|
[title]="t().resizeMedium"
|
|
3528
|
-
(buttonClick)="onCommand('resizeMedium', $event)"></
|
|
3532
|
+
(buttonClick)="onCommand('resizeMedium', $event)"></ate-button>
|
|
3529
3533
|
}
|
|
3530
3534
|
@if (imageBubbleMenuConfig().resizeLarge) {
|
|
3531
|
-
<
|
|
3535
|
+
<ate-button
|
|
3532
3536
|
icon="crop_square"
|
|
3533
3537
|
iconSize="large"
|
|
3534
3538
|
[title]="t().resizeLarge"
|
|
3535
|
-
(buttonClick)="onCommand('resizeLarge', $event)"></
|
|
3539
|
+
(buttonClick)="onCommand('resizeLarge', $event)"></ate-button>
|
|
3536
3540
|
}
|
|
3537
3541
|
@if (imageBubbleMenuConfig().resizeOriginal) {
|
|
3538
|
-
<
|
|
3542
|
+
<ate-button
|
|
3539
3543
|
icon="photo_size_select_actual"
|
|
3540
3544
|
[title]="t().resizeOriginal"
|
|
3541
|
-
(buttonClick)="onCommand('resizeOriginal', $event)"></
|
|
3545
|
+
(buttonClick)="onCommand('resizeOriginal', $event)"></ate-button>
|
|
3542
3546
|
}
|
|
3543
3547
|
@if (imageBubbleMenuConfig().separator && imageBubbleMenuConfig().deleteImage) {
|
|
3544
|
-
<
|
|
3548
|
+
<ate-separator />
|
|
3545
3549
|
}
|
|
3546
3550
|
@if (imageBubbleMenuConfig().deleteImage) {
|
|
3547
|
-
<
|
|
3551
|
+
<ate-button
|
|
3548
3552
|
icon="delete"
|
|
3549
3553
|
[title]="t().deleteImage"
|
|
3550
3554
|
variant="danger"
|
|
3551
|
-
(buttonClick)="onCommand('deleteImage', $event)"></
|
|
3555
|
+
(buttonClick)="onCommand('deleteImage', $event)"></ate-button>
|
|
3552
3556
|
}
|
|
3553
3557
|
</div>
|
|
3554
|
-
`, isInline: true, dependencies: [{ kind: "component", type:
|
|
3558
|
+
`, 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: AteSeparatorComponent, selector: "ate-separator", inputs: ["orientation", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3555
3559
|
}
|
|
3556
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
3560
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteImageBubbleMenuComponent, decorators: [{
|
|
3557
3561
|
type: Component,
|
|
3558
3562
|
args: [{
|
|
3559
|
-
selector: "
|
|
3563
|
+
selector: "ate-image-bubble-menu",
|
|
3560
3564
|
standalone: true,
|
|
3561
3565
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3562
|
-
imports: [
|
|
3566
|
+
imports: [AteButtonComponent, AteSeparatorComponent],
|
|
3563
3567
|
template: `
|
|
3564
3568
|
<div #menuRef class="bubble-menu" (mousedown)="$event.preventDefault()">
|
|
3565
3569
|
@if (imageBubbleMenuConfig().changeImage) {
|
|
3566
|
-
<
|
|
3570
|
+
<ate-button
|
|
3567
3571
|
icon="drive_file_rename_outline"
|
|
3568
3572
|
[title]="t().changeImage"
|
|
3569
|
-
(buttonClick)="onCommand('changeImage', $event)"></
|
|
3573
|
+
(buttonClick)="onCommand('changeImage', $event)"></ate-button>
|
|
3570
3574
|
}
|
|
3571
3575
|
@if (imageBubbleMenuConfig().separator && hasResizeButtons()) {
|
|
3572
|
-
<
|
|
3576
|
+
<ate-separator />
|
|
3573
3577
|
}
|
|
3574
3578
|
@if (imageBubbleMenuConfig().resizeSmall) {
|
|
3575
|
-
<
|
|
3579
|
+
<ate-button
|
|
3576
3580
|
icon="crop_square"
|
|
3577
3581
|
iconSize="small"
|
|
3578
3582
|
[title]="t().resizeSmall"
|
|
3579
|
-
(buttonClick)="onCommand('resizeSmall', $event)"></
|
|
3583
|
+
(buttonClick)="onCommand('resizeSmall', $event)"></ate-button>
|
|
3580
3584
|
}
|
|
3581
3585
|
@if (imageBubbleMenuConfig().resizeMedium) {
|
|
3582
|
-
<
|
|
3586
|
+
<ate-button
|
|
3583
3587
|
icon="crop_square"
|
|
3584
3588
|
iconSize="medium"
|
|
3585
3589
|
[title]="t().resizeMedium"
|
|
3586
|
-
(buttonClick)="onCommand('resizeMedium', $event)"></
|
|
3590
|
+
(buttonClick)="onCommand('resizeMedium', $event)"></ate-button>
|
|
3587
3591
|
}
|
|
3588
3592
|
@if (imageBubbleMenuConfig().resizeLarge) {
|
|
3589
|
-
<
|
|
3593
|
+
<ate-button
|
|
3590
3594
|
icon="crop_square"
|
|
3591
3595
|
iconSize="large"
|
|
3592
3596
|
[title]="t().resizeLarge"
|
|
3593
|
-
(buttonClick)="onCommand('resizeLarge', $event)"></
|
|
3597
|
+
(buttonClick)="onCommand('resizeLarge', $event)"></ate-button>
|
|
3594
3598
|
}
|
|
3595
3599
|
@if (imageBubbleMenuConfig().resizeOriginal) {
|
|
3596
|
-
<
|
|
3600
|
+
<ate-button
|
|
3597
3601
|
icon="photo_size_select_actual"
|
|
3598
3602
|
[title]="t().resizeOriginal"
|
|
3599
|
-
(buttonClick)="onCommand('resizeOriginal', $event)"></
|
|
3603
|
+
(buttonClick)="onCommand('resizeOriginal', $event)"></ate-button>
|
|
3600
3604
|
}
|
|
3601
3605
|
@if (imageBubbleMenuConfig().separator && imageBubbleMenuConfig().deleteImage) {
|
|
3602
|
-
<
|
|
3606
|
+
<ate-separator />
|
|
3603
3607
|
}
|
|
3604
3608
|
@if (imageBubbleMenuConfig().deleteImage) {
|
|
3605
|
-
<
|
|
3609
|
+
<ate-button
|
|
3606
3610
|
icon="delete"
|
|
3607
3611
|
[title]="t().deleteImage"
|
|
3608
3612
|
variant="danger"
|
|
3609
|
-
(buttonClick)="onCommand('deleteImage', $event)"></
|
|
3613
|
+
(buttonClick)="onCommand('deleteImage', $event)"></ate-button>
|
|
3610
3614
|
}
|
|
3611
3615
|
</div>
|
|
3612
3616
|
`,
|
|
3613
3617
|
}]
|
|
3614
3618
|
}], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }], imageUpload: [{ type: i0.Input, args: [{ isSignal: true, alias: "imageUpload", required: false }] }] } });
|
|
3615
3619
|
|
|
3616
|
-
class
|
|
3620
|
+
class AteTableBubbleMenuComponent extends AteBaseBubbleMenu {
|
|
3617
3621
|
constructor() {
|
|
3618
3622
|
super(...arguments);
|
|
3619
3623
|
// Alias for template
|
|
@@ -3683,195 +3687,195 @@ class TiptapTableBubbleMenuComponent extends TiptapBaseBubbleMenu {
|
|
|
3683
3687
|
executeCommand(editor, command, ...args) {
|
|
3684
3688
|
this.editorCommands.execute(editor, command, ...args);
|
|
3685
3689
|
}
|
|
3686
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
3687
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type:
|
|
3690
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteTableBubbleMenuComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
3691
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AteTableBubbleMenuComponent, isStandalone: true, selector: "ate-table-bubble-menu", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
3688
3692
|
<div #menuRef class="bubble-menu" (mousedown)="$event.preventDefault()">
|
|
3689
3693
|
<!-- Row actions -->
|
|
3690
3694
|
@if (config().addRowBefore !== false) {
|
|
3691
|
-
<
|
|
3695
|
+
<ate-button
|
|
3692
3696
|
icon="add_row_above"
|
|
3693
3697
|
[title]="t().addRowBefore"
|
|
3694
3698
|
[disabled]="!state().can.addRowBefore"
|
|
3695
|
-
(buttonClick)="onCommand('addRowBefore', $event)"></
|
|
3699
|
+
(buttonClick)="onCommand('addRowBefore', $event)"></ate-button>
|
|
3696
3700
|
}
|
|
3697
3701
|
@if (config().addRowAfter !== false) {
|
|
3698
|
-
<
|
|
3702
|
+
<ate-button
|
|
3699
3703
|
icon="add_row_below"
|
|
3700
3704
|
[title]="t().addRowAfter"
|
|
3701
3705
|
[disabled]="!state().can.addRowAfter"
|
|
3702
|
-
(buttonClick)="onCommand('addRowAfter', $event)"></
|
|
3706
|
+
(buttonClick)="onCommand('addRowAfter', $event)"></ate-button>
|
|
3703
3707
|
}
|
|
3704
3708
|
@if (config().deleteRow !== false) {
|
|
3705
|
-
<
|
|
3709
|
+
<ate-button
|
|
3706
3710
|
icon="delete"
|
|
3707
3711
|
[title]="t().deleteRow"
|
|
3708
3712
|
variant="danger"
|
|
3709
3713
|
[disabled]="!state().can.deleteRow"
|
|
3710
|
-
(buttonClick)="onCommand('deleteRow', $event)"></
|
|
3714
|
+
(buttonClick)="onCommand('deleteRow', $event)"></ate-button>
|
|
3711
3715
|
}
|
|
3712
3716
|
@if (config().separator !== false) {
|
|
3713
|
-
<
|
|
3717
|
+
<ate-separator />
|
|
3714
3718
|
}
|
|
3715
3719
|
|
|
3716
3720
|
<!-- Column actions -->
|
|
3717
3721
|
@if (config().addColumnBefore !== false) {
|
|
3718
|
-
<
|
|
3722
|
+
<ate-button
|
|
3719
3723
|
icon="add_column_left"
|
|
3720
3724
|
[title]="t().addColumnBefore"
|
|
3721
3725
|
[disabled]="!state().can.addColumnBefore"
|
|
3722
|
-
(buttonClick)="onCommand('addColumnBefore', $event)"></
|
|
3726
|
+
(buttonClick)="onCommand('addColumnBefore', $event)"></ate-button>
|
|
3723
3727
|
}
|
|
3724
3728
|
@if (config().addColumnAfter !== false) {
|
|
3725
|
-
<
|
|
3729
|
+
<ate-button
|
|
3726
3730
|
icon="add_column_right"
|
|
3727
3731
|
[title]="t().addColumnAfter"
|
|
3728
3732
|
[disabled]="!state().can.addColumnAfter"
|
|
3729
|
-
(buttonClick)="onCommand('addColumnAfter', $event)"></
|
|
3733
|
+
(buttonClick)="onCommand('addColumnAfter', $event)"></ate-button>
|
|
3730
3734
|
}
|
|
3731
3735
|
@if (config().deleteColumn !== false) {
|
|
3732
|
-
<
|
|
3736
|
+
<ate-button
|
|
3733
3737
|
icon="delete"
|
|
3734
3738
|
[title]="t().deleteColumn"
|
|
3735
3739
|
variant="danger"
|
|
3736
3740
|
[disabled]="!state().can.deleteColumn"
|
|
3737
|
-
(buttonClick)="onCommand('deleteColumn', $event)"></
|
|
3741
|
+
(buttonClick)="onCommand('deleteColumn', $event)"></ate-button>
|
|
3738
3742
|
}
|
|
3739
3743
|
@if (config().separator !== false) {
|
|
3740
|
-
<
|
|
3744
|
+
<ate-separator />
|
|
3741
3745
|
}
|
|
3742
3746
|
|
|
3743
3747
|
<!-- Cell actions -->
|
|
3744
3748
|
@if (config().toggleHeaderRow !== false) {
|
|
3745
|
-
<
|
|
3749
|
+
<ate-button
|
|
3746
3750
|
icon="toolbar"
|
|
3747
3751
|
[title]="t().toggleHeaderRow"
|
|
3748
3752
|
[active]="state().nodes.isTableHeaderRow"
|
|
3749
3753
|
[disabled]="!state().can.toggleHeaderRow"
|
|
3750
|
-
(buttonClick)="onCommand('toggleHeaderRow', $event)"></
|
|
3754
|
+
(buttonClick)="onCommand('toggleHeaderRow', $event)"></ate-button>
|
|
3751
3755
|
}
|
|
3752
3756
|
@if (config().toggleHeaderColumn !== false) {
|
|
3753
|
-
<
|
|
3757
|
+
<ate-button
|
|
3754
3758
|
icon="dock_to_right"
|
|
3755
3759
|
[title]="t().toggleHeaderColumn"
|
|
3756
3760
|
[active]="state().nodes.isTableHeaderColumn"
|
|
3757
3761
|
[disabled]="!state().can.toggleHeaderColumn"
|
|
3758
|
-
(buttonClick)="onCommand('toggleHeaderColumn', $event)"></
|
|
3762
|
+
(buttonClick)="onCommand('toggleHeaderColumn', $event)"></ate-button>
|
|
3759
3763
|
}
|
|
3760
3764
|
@if (config().separator !== false && config().deleteTable !== false) {
|
|
3761
|
-
<
|
|
3765
|
+
<ate-separator />
|
|
3762
3766
|
}
|
|
3763
3767
|
|
|
3764
3768
|
<!-- Table actions -->
|
|
3765
3769
|
@if (config().deleteTable !== false) {
|
|
3766
|
-
<
|
|
3770
|
+
<ate-button
|
|
3767
3771
|
icon="delete_forever"
|
|
3768
3772
|
[title]="t().deleteTable"
|
|
3769
3773
|
variant="danger"
|
|
3770
3774
|
[disabled]="!state().can.deleteTable"
|
|
3771
|
-
(buttonClick)="onCommand('deleteTable', $event)"></
|
|
3775
|
+
(buttonClick)="onCommand('deleteTable', $event)"></ate-button>
|
|
3772
3776
|
}
|
|
3773
3777
|
</div>
|
|
3774
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type:
|
|
3778
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3775
3779
|
}
|
|
3776
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
3780
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteTableBubbleMenuComponent, decorators: [{
|
|
3777
3781
|
type: Component,
|
|
3778
3782
|
args: [{
|
|
3779
|
-
selector: "
|
|
3783
|
+
selector: "ate-table-bubble-menu",
|
|
3780
3784
|
standalone: true,
|
|
3781
3785
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3782
|
-
imports: [CommonModule,
|
|
3786
|
+
imports: [CommonModule, AteButtonComponent, AteSeparatorComponent],
|
|
3783
3787
|
template: `
|
|
3784
3788
|
<div #menuRef class="bubble-menu" (mousedown)="$event.preventDefault()">
|
|
3785
3789
|
<!-- Row actions -->
|
|
3786
3790
|
@if (config().addRowBefore !== false) {
|
|
3787
|
-
<
|
|
3791
|
+
<ate-button
|
|
3788
3792
|
icon="add_row_above"
|
|
3789
3793
|
[title]="t().addRowBefore"
|
|
3790
3794
|
[disabled]="!state().can.addRowBefore"
|
|
3791
|
-
(buttonClick)="onCommand('addRowBefore', $event)"></
|
|
3795
|
+
(buttonClick)="onCommand('addRowBefore', $event)"></ate-button>
|
|
3792
3796
|
}
|
|
3793
3797
|
@if (config().addRowAfter !== false) {
|
|
3794
|
-
<
|
|
3798
|
+
<ate-button
|
|
3795
3799
|
icon="add_row_below"
|
|
3796
3800
|
[title]="t().addRowAfter"
|
|
3797
3801
|
[disabled]="!state().can.addRowAfter"
|
|
3798
|
-
(buttonClick)="onCommand('addRowAfter', $event)"></
|
|
3802
|
+
(buttonClick)="onCommand('addRowAfter', $event)"></ate-button>
|
|
3799
3803
|
}
|
|
3800
3804
|
@if (config().deleteRow !== false) {
|
|
3801
|
-
<
|
|
3805
|
+
<ate-button
|
|
3802
3806
|
icon="delete"
|
|
3803
3807
|
[title]="t().deleteRow"
|
|
3804
3808
|
variant="danger"
|
|
3805
3809
|
[disabled]="!state().can.deleteRow"
|
|
3806
|
-
(buttonClick)="onCommand('deleteRow', $event)"></
|
|
3810
|
+
(buttonClick)="onCommand('deleteRow', $event)"></ate-button>
|
|
3807
3811
|
}
|
|
3808
3812
|
@if (config().separator !== false) {
|
|
3809
|
-
<
|
|
3813
|
+
<ate-separator />
|
|
3810
3814
|
}
|
|
3811
3815
|
|
|
3812
3816
|
<!-- Column actions -->
|
|
3813
3817
|
@if (config().addColumnBefore !== false) {
|
|
3814
|
-
<
|
|
3818
|
+
<ate-button
|
|
3815
3819
|
icon="add_column_left"
|
|
3816
3820
|
[title]="t().addColumnBefore"
|
|
3817
3821
|
[disabled]="!state().can.addColumnBefore"
|
|
3818
|
-
(buttonClick)="onCommand('addColumnBefore', $event)"></
|
|
3822
|
+
(buttonClick)="onCommand('addColumnBefore', $event)"></ate-button>
|
|
3819
3823
|
}
|
|
3820
3824
|
@if (config().addColumnAfter !== false) {
|
|
3821
|
-
<
|
|
3825
|
+
<ate-button
|
|
3822
3826
|
icon="add_column_right"
|
|
3823
3827
|
[title]="t().addColumnAfter"
|
|
3824
3828
|
[disabled]="!state().can.addColumnAfter"
|
|
3825
|
-
(buttonClick)="onCommand('addColumnAfter', $event)"></
|
|
3829
|
+
(buttonClick)="onCommand('addColumnAfter', $event)"></ate-button>
|
|
3826
3830
|
}
|
|
3827
3831
|
@if (config().deleteColumn !== false) {
|
|
3828
|
-
<
|
|
3832
|
+
<ate-button
|
|
3829
3833
|
icon="delete"
|
|
3830
3834
|
[title]="t().deleteColumn"
|
|
3831
3835
|
variant="danger"
|
|
3832
3836
|
[disabled]="!state().can.deleteColumn"
|
|
3833
|
-
(buttonClick)="onCommand('deleteColumn', $event)"></
|
|
3837
|
+
(buttonClick)="onCommand('deleteColumn', $event)"></ate-button>
|
|
3834
3838
|
}
|
|
3835
3839
|
@if (config().separator !== false) {
|
|
3836
|
-
<
|
|
3840
|
+
<ate-separator />
|
|
3837
3841
|
}
|
|
3838
3842
|
|
|
3839
3843
|
<!-- Cell actions -->
|
|
3840
3844
|
@if (config().toggleHeaderRow !== false) {
|
|
3841
|
-
<
|
|
3845
|
+
<ate-button
|
|
3842
3846
|
icon="toolbar"
|
|
3843
3847
|
[title]="t().toggleHeaderRow"
|
|
3844
3848
|
[active]="state().nodes.isTableHeaderRow"
|
|
3845
3849
|
[disabled]="!state().can.toggleHeaderRow"
|
|
3846
|
-
(buttonClick)="onCommand('toggleHeaderRow', $event)"></
|
|
3850
|
+
(buttonClick)="onCommand('toggleHeaderRow', $event)"></ate-button>
|
|
3847
3851
|
}
|
|
3848
3852
|
@if (config().toggleHeaderColumn !== false) {
|
|
3849
|
-
<
|
|
3853
|
+
<ate-button
|
|
3850
3854
|
icon="dock_to_right"
|
|
3851
3855
|
[title]="t().toggleHeaderColumn"
|
|
3852
3856
|
[active]="state().nodes.isTableHeaderColumn"
|
|
3853
3857
|
[disabled]="!state().can.toggleHeaderColumn"
|
|
3854
|
-
(buttonClick)="onCommand('toggleHeaderColumn', $event)"></
|
|
3858
|
+
(buttonClick)="onCommand('toggleHeaderColumn', $event)"></ate-button>
|
|
3855
3859
|
}
|
|
3856
3860
|
@if (config().separator !== false && config().deleteTable !== false) {
|
|
3857
|
-
<
|
|
3861
|
+
<ate-separator />
|
|
3858
3862
|
}
|
|
3859
3863
|
|
|
3860
3864
|
<!-- Table actions -->
|
|
3861
3865
|
@if (config().deleteTable !== false) {
|
|
3862
|
-
<
|
|
3866
|
+
<ate-button
|
|
3863
3867
|
icon="delete_forever"
|
|
3864
3868
|
[title]="t().deleteTable"
|
|
3865
3869
|
variant="danger"
|
|
3866
3870
|
[disabled]="!state().can.deleteTable"
|
|
3867
|
-
(buttonClick)="onCommand('deleteTable', $event)"></
|
|
3871
|
+
(buttonClick)="onCommand('deleteTable', $event)"></ate-button>
|
|
3868
3872
|
}
|
|
3869
3873
|
</div>
|
|
3870
3874
|
`,
|
|
3871
3875
|
}]
|
|
3872
3876
|
}], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }] } });
|
|
3873
3877
|
|
|
3874
|
-
class
|
|
3878
|
+
class AteCellBubbleMenuComponent extends AteBaseBubbleMenu {
|
|
3875
3879
|
constructor() {
|
|
3876
3880
|
super(...arguments);
|
|
3877
3881
|
// Inputs
|
|
@@ -3935,61 +3939,61 @@ class TiptapCellBubbleMenuComponent extends TiptapBaseBubbleMenu {
|
|
|
3935
3939
|
executeCommand(editor, command, ...args) {
|
|
3936
3940
|
this.editorCommands.execute(editor, command, ...args);
|
|
3937
3941
|
}
|
|
3938
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
3939
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type:
|
|
3942
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteCellBubbleMenuComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
3943
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AteCellBubbleMenuComponent, isStandalone: true, selector: "ate-cell-bubble-menu", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
3940
3944
|
<div #menuRef class="bubble-menu" (mousedown)="$event.preventDefault()">
|
|
3941
3945
|
<!-- Cell specific actions -->
|
|
3942
3946
|
@if (config().mergeCells !== false && !state().selection.isSingleCell) {
|
|
3943
|
-
<
|
|
3947
|
+
<ate-button
|
|
3944
3948
|
icon="cell_merge"
|
|
3945
3949
|
[title]="i18n().table().mergeCells"
|
|
3946
3950
|
[disabled]="!state().can.mergeCells"
|
|
3947
|
-
(buttonClick)="onCommand('mergeCells', $event)"></
|
|
3951
|
+
(buttonClick)="onCommand('mergeCells', $event)"></ate-button>
|
|
3948
3952
|
}
|
|
3949
3953
|
@if (config().splitCell !== false && state().selection.isSingleCell) {
|
|
3950
|
-
<
|
|
3954
|
+
<ate-button
|
|
3951
3955
|
icon="split_scene"
|
|
3952
3956
|
[title]="i18n().table().splitCell"
|
|
3953
3957
|
[disabled]="!state().can.splitCell"
|
|
3954
|
-
(buttonClick)="onCommand('splitCell', $event)"></
|
|
3958
|
+
(buttonClick)="onCommand('splitCell', $event)"></ate-button>
|
|
3955
3959
|
}
|
|
3956
3960
|
</div>
|
|
3957
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type:
|
|
3961
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AteButtonComponent, selector: "ate-button", inputs: ["icon", "title", "active", "disabled", "color", "backgroundColor", "variant", "size", "iconSize"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3958
3962
|
}
|
|
3959
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
3963
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteCellBubbleMenuComponent, decorators: [{
|
|
3960
3964
|
type: Component,
|
|
3961
3965
|
args: [{
|
|
3962
|
-
selector: "
|
|
3966
|
+
selector: "ate-cell-bubble-menu",
|
|
3963
3967
|
standalone: true,
|
|
3964
3968
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3965
|
-
imports: [CommonModule,
|
|
3969
|
+
imports: [CommonModule, AteButtonComponent],
|
|
3966
3970
|
template: `
|
|
3967
3971
|
<div #menuRef class="bubble-menu" (mousedown)="$event.preventDefault()">
|
|
3968
3972
|
<!-- Cell specific actions -->
|
|
3969
3973
|
@if (config().mergeCells !== false && !state().selection.isSingleCell) {
|
|
3970
|
-
<
|
|
3974
|
+
<ate-button
|
|
3971
3975
|
icon="cell_merge"
|
|
3972
3976
|
[title]="i18n().table().mergeCells"
|
|
3973
3977
|
[disabled]="!state().can.mergeCells"
|
|
3974
|
-
(buttonClick)="onCommand('mergeCells', $event)"></
|
|
3978
|
+
(buttonClick)="onCommand('mergeCells', $event)"></ate-button>
|
|
3975
3979
|
}
|
|
3976
3980
|
@if (config().splitCell !== false && state().selection.isSingleCell) {
|
|
3977
|
-
<
|
|
3981
|
+
<ate-button
|
|
3978
3982
|
icon="split_scene"
|
|
3979
3983
|
[title]="i18n().table().splitCell"
|
|
3980
3984
|
[disabled]="!state().can.splitCell"
|
|
3981
|
-
(buttonClick)="onCommand('splitCell', $event)"></
|
|
3985
|
+
(buttonClick)="onCommand('splitCell', $event)"></ate-button>
|
|
3982
3986
|
}
|
|
3983
3987
|
</div>
|
|
3984
3988
|
`,
|
|
3985
3989
|
}]
|
|
3986
3990
|
}], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }] } });
|
|
3987
3991
|
|
|
3988
|
-
class
|
|
3992
|
+
class AteLinkBubbleMenuComponent {
|
|
3989
3993
|
constructor() {
|
|
3990
|
-
this.i18nService = inject(
|
|
3991
|
-
this.editorCommands = inject(
|
|
3992
|
-
this.linkSvc = inject(
|
|
3994
|
+
this.i18nService = inject(AteI18nService);
|
|
3995
|
+
this.editorCommands = inject(AteEditorCommandsService);
|
|
3996
|
+
this.linkSvc = inject(AteLinkService);
|
|
3993
3997
|
this.t = this.i18nService.bubbleMenu;
|
|
3994
3998
|
this.common = this.i18nService.common;
|
|
3995
3999
|
this.state = this.editorCommands.editorState;
|
|
@@ -4197,8 +4201,8 @@ class TiptapLinkBubbleMenuComponent {
|
|
|
4197
4201
|
this.linkSvc.close();
|
|
4198
4202
|
this.hideTippy();
|
|
4199
4203
|
}
|
|
4200
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
4201
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type:
|
|
4204
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteLinkBubbleMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4205
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type: AteLinkBubbleMenuComponent, isStandalone: true, selector: "ate-link-bubble-menu", inputs: { editor: { classPropertyName: "editor", publicName: "editor", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "linkInput", first: true, predicate: ["linkInput"], descendants: true }, { propertyName: "menuRef", first: true, predicate: ["menuRef"], descendants: true }], ngImport: i0, template: `
|
|
4202
4206
|
<div
|
|
4203
4207
|
#menuRef
|
|
4204
4208
|
class="bubble-menu"
|
|
@@ -4225,32 +4229,32 @@ class TiptapLinkBubbleMenuComponent {
|
|
|
4225
4229
|
</div>
|
|
4226
4230
|
|
|
4227
4231
|
<div class="action-buttons">
|
|
4228
|
-
<
|
|
4232
|
+
<ate-button
|
|
4229
4233
|
icon="check"
|
|
4230
4234
|
[title]="common().apply"
|
|
4231
4235
|
color="var(--ate-primary)"
|
|
4232
4236
|
[disabled]="!editUrl().trim()"
|
|
4233
|
-
(buttonClick)="onApply($event)"></
|
|
4234
|
-
<
|
|
4237
|
+
(buttonClick)="onApply($event)"></ate-button>
|
|
4238
|
+
<ate-button
|
|
4235
4239
|
icon="open_in_new"
|
|
4236
4240
|
[title]="t().openLink"
|
|
4237
4241
|
[disabled]="!currentUrl()"
|
|
4238
|
-
(buttonClick)="onOpenLink($event)"></
|
|
4239
|
-
<
|
|
4240
|
-
<
|
|
4242
|
+
(buttonClick)="onOpenLink($event)"></ate-button>
|
|
4243
|
+
<ate-separator />
|
|
4244
|
+
<ate-button
|
|
4241
4245
|
icon="link_off"
|
|
4242
4246
|
[title]="t().removeLink"
|
|
4243
4247
|
variant="danger"
|
|
4244
4248
|
[disabled]="!currentUrl()"
|
|
4245
|
-
(buttonClick)="onRemove($event)"></
|
|
4249
|
+
(buttonClick)="onRemove($event)"></ate-button>
|
|
4246
4250
|
</div>
|
|
4247
4251
|
</div>
|
|
4248
4252
|
</div>
|
|
4249
|
-
`, isInline: true, styles: [".link-input-row{display:flex;align-items:center;gap:6px}.url-input-container{flex:1;display:flex;align-items:center;background:var(--ate-surface-secondary, #f8fafc);border:1px solid var(--ate-border, #e2e8f0);border-radius:8px;padding:0 10px;height:32px;transition:all .15s ease}.url-input-container:focus-within{border-color:var(--ate-primary, #3b82f6);background:var(--ate-surface, #ffffff);box-shadow:0 0 0 2px var(--ate-primary-light, rgba(59, 130, 246, .1))}.icon-link{font-size:16px;color:var(--ate-text-muted, #94a3b8);margin-right:6px}.url-field{background:transparent;border:none;outline:none;color:var(--ate-text, #1e293b);font-size:13px;width:100%;font-family:inherit}.action-buttons{display:flex;align-items:center;gap:2px}\n"], dependencies: [{ kind: "component", type:
|
|
4253
|
+
`, isInline: true, styles: [".link-input-row{display:flex;align-items:center;gap:6px}.url-input-container{flex:1;display:flex;align-items:center;background:var(--ate-surface-secondary, #f8fafc);border:1px solid var(--ate-border, #e2e8f0);border-radius:8px;padding:0 10px;height:32px;transition:all .15s ease}.url-input-container:focus-within{border-color:var(--ate-primary, #3b82f6);background:var(--ate-surface, #ffffff);box-shadow:0 0 0 2px var(--ate-primary-light, rgba(59, 130, 246, .1))}.icon-link{font-size:16px;color:var(--ate-text-muted, #94a3b8);margin-right:6px}.url-field{background:transparent;border:none;outline:none;color:var(--ate-text, #1e293b);font-size:13px;width:100%;font-family:inherit}.action-buttons{display:flex;align-items:center;gap:2px}\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: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4250
4254
|
}
|
|
4251
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
4255
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteLinkBubbleMenuComponent, decorators: [{
|
|
4252
4256
|
type: Component,
|
|
4253
|
-
args: [{ selector: "
|
|
4257
|
+
args: [{ selector: "ate-link-bubble-menu", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AteButtonComponent, AteSeparatorComponent, FormsModule], template: `
|
|
4254
4258
|
<div
|
|
4255
4259
|
#menuRef
|
|
4256
4260
|
class="bubble-menu"
|
|
@@ -4277,24 +4281,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
4277
4281
|
</div>
|
|
4278
4282
|
|
|
4279
4283
|
<div class="action-buttons">
|
|
4280
|
-
<
|
|
4284
|
+
<ate-button
|
|
4281
4285
|
icon="check"
|
|
4282
4286
|
[title]="common().apply"
|
|
4283
4287
|
color="var(--ate-primary)"
|
|
4284
4288
|
[disabled]="!editUrl().trim()"
|
|
4285
|
-
(buttonClick)="onApply($event)"></
|
|
4286
|
-
<
|
|
4289
|
+
(buttonClick)="onApply($event)"></ate-button>
|
|
4290
|
+
<ate-button
|
|
4287
4291
|
icon="open_in_new"
|
|
4288
4292
|
[title]="t().openLink"
|
|
4289
4293
|
[disabled]="!currentUrl()"
|
|
4290
|
-
(buttonClick)="onOpenLink($event)"></
|
|
4291
|
-
<
|
|
4292
|
-
<
|
|
4294
|
+
(buttonClick)="onOpenLink($event)"></ate-button>
|
|
4295
|
+
<ate-separator />
|
|
4296
|
+
<ate-button
|
|
4293
4297
|
icon="link_off"
|
|
4294
4298
|
[title]="t().removeLink"
|
|
4295
4299
|
variant="danger"
|
|
4296
4300
|
[disabled]="!currentUrl()"
|
|
4297
|
-
(buttonClick)="onRemove($event)"></
|
|
4301
|
+
(buttonClick)="onRemove($event)"></ate-button>
|
|
4298
4302
|
</div>
|
|
4299
4303
|
</div>
|
|
4300
4304
|
</div>
|
|
@@ -4321,11 +4325,11 @@ const PRESET_COLORS = [
|
|
|
4321
4325
|
"#9C27B0",
|
|
4322
4326
|
"#E91E63",
|
|
4323
4327
|
];
|
|
4324
|
-
class
|
|
4328
|
+
class AteColorBubbleMenuComponent {
|
|
4325
4329
|
constructor() {
|
|
4326
|
-
this.i18nService = inject(
|
|
4327
|
-
this.editorCommands = inject(
|
|
4328
|
-
this.colorPickerSvc = inject(
|
|
4330
|
+
this.i18nService = inject(AteI18nService);
|
|
4331
|
+
this.editorCommands = inject(AteEditorCommandsService);
|
|
4332
|
+
this.colorPickerSvc = inject(AteColorPickerService);
|
|
4329
4333
|
this.t = this.i18nService.toolbar;
|
|
4330
4334
|
this.common = this.i18nService.common;
|
|
4331
4335
|
this.state = this.editorCommands.editorState;
|
|
@@ -4566,8 +4570,8 @@ class TiptapColorBubbleMenuComponent {
|
|
|
4566
4570
|
this.updateMenu();
|
|
4567
4571
|
}, 150);
|
|
4568
4572
|
}
|
|
4569
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
4570
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type:
|
|
4573
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteColorBubbleMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4574
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AteColorBubbleMenuComponent, isStandalone: true, selector: "ate-color-bubble-menu", inputs: { editor: { classPropertyName: "editor", publicName: "editor", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "colorInputRef", first: true, predicate: ["colorInput"], descendants: true, isSignal: true }, { propertyName: "menuRef", first: true, predicate: ["menuRef"], descendants: true }], ngImport: i0, template: `
|
|
4571
4575
|
<div
|
|
4572
4576
|
#menuRef
|
|
4573
4577
|
class="bubble-menu color-bubble-menu"
|
|
@@ -4581,13 +4585,13 @@ class TiptapColorBubbleMenuComponent {
|
|
|
4581
4585
|
<div class="dropdown-row presets">
|
|
4582
4586
|
<div class="color-grid">
|
|
4583
4587
|
@for (color of presets; track color) {
|
|
4584
|
-
<
|
|
4588
|
+
<ate-button
|
|
4585
4589
|
class="color-swatch-btn"
|
|
4586
4590
|
size="small"
|
|
4587
4591
|
[title]="color"
|
|
4588
4592
|
[active]="isColorActive(color)"
|
|
4589
4593
|
[backgroundColor]="color"
|
|
4590
|
-
(buttonClick)="applyColor(color, true, $event)"></
|
|
4594
|
+
(buttonClick)="applyColor(color, true, $event)"></ate-button>
|
|
4591
4595
|
}
|
|
4592
4596
|
</div>
|
|
4593
4597
|
</div>
|
|
@@ -4611,12 +4615,12 @@ class TiptapColorBubbleMenuComponent {
|
|
|
4611
4615
|
</div>
|
|
4612
4616
|
|
|
4613
4617
|
<div class="native-trigger-wrapper">
|
|
4614
|
-
<
|
|
4618
|
+
<ate-button
|
|
4615
4619
|
class="btn-native-picker-trigger"
|
|
4616
4620
|
icon="colorize"
|
|
4617
4621
|
[title]="t().customColor"
|
|
4618
4622
|
[backgroundColor]="currentColor()"
|
|
4619
|
-
(buttonClick)="triggerNativePicker($event)"></
|
|
4623
|
+
(buttonClick)="triggerNativePicker($event)"></ate-button>
|
|
4620
4624
|
<input
|
|
4621
4625
|
#colorInput
|
|
4622
4626
|
type="color"
|
|
@@ -4629,27 +4633,27 @@ class TiptapColorBubbleMenuComponent {
|
|
|
4629
4633
|
(blur)="onBlur()" />
|
|
4630
4634
|
</div>
|
|
4631
4635
|
|
|
4632
|
-
<
|
|
4636
|
+
<ate-button
|
|
4633
4637
|
icon="check"
|
|
4634
4638
|
[title]="common().apply"
|
|
4635
4639
|
color="var(--ate-primary)"
|
|
4636
|
-
(buttonClick)="onApply($event)"></
|
|
4640
|
+
(buttonClick)="onApply($event)"></ate-button>
|
|
4637
4641
|
|
|
4638
|
-
<
|
|
4642
|
+
<ate-separator />
|
|
4639
4643
|
|
|
4640
|
-
<
|
|
4644
|
+
<ate-button
|
|
4641
4645
|
icon="format_color_reset"
|
|
4642
4646
|
[title]="t().clear"
|
|
4643
4647
|
variant="danger"
|
|
4644
|
-
(buttonClick)="onClearColor($event)"></
|
|
4648
|
+
(buttonClick)="onClearColor($event)"></ate-button>
|
|
4645
4649
|
</div>
|
|
4646
4650
|
</div>
|
|
4647
4651
|
</div>
|
|
4648
|
-
`, isInline: true, styles: [".color-picker-container{display:flex;flex-direction:column;gap:8px}.dropdown-row{display:flex;align-items:center;width:100%}.dropdown-row.presets{justify-content:center}.dropdown-row.controls{gap:8px;justify-content:space-between;padding-top:4px;border-top:1px solid var(--ate-border, #e2e8f0)}.color-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:4px;width:100%}:host ::ng-deep .color-swatch-btn .
|
|
4652
|
+
`, isInline: true, styles: [".color-picker-container{display:flex;flex-direction:column;gap:8px}.dropdown-row{display:flex;align-items:center;width:100%}.dropdown-row.presets{justify-content:center}.dropdown-row.controls{gap:8px;justify-content:space-between;padding-top:4px;border-top:1px solid var(--ate-border, #e2e8f0)}.color-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:4px;width:100%}:host ::ng-deep .color-swatch-btn .ate-button{width:100%;aspect-ratio:1;height:auto;border-radius:4px;border:1px solid rgba(0,0,0,.1);padding:0}:host ::ng-deep .color-swatch-btn .ate-button.is-active{border-color:var(--ate-primary, #3b82f6);box-shadow:0 0 0 2px #3b82f64d}:host ::ng-deep .btn-native-picker-trigger .ate-button{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.2)}.divider-v{width:1px;height:24px;background:var(--ate-border, #e2e8f0)}.hex-input-wrapper{flex:1;display:flex;align-items:center;background:var(--ate-surface-secondary, #f8fafc);border:1px solid var(--ate-border, #e2e8f0);border-radius:8px;padding:0 10px;height:32px;transition:border-color .15s ease}.hex-input-wrapper:focus-within{border-color:var(--ate-primary, #3b82f6);background:var(--ate-menu-bg, #ffffff)}.hex-hash{color:var(--ate-text-muted, #94a3b8);font-family:monospace;font-size:.875rem}.hex-input{background:transparent;border:none;outline:none;color:var(--ate-text, #1e293b);font-family:monospace;font-size:.875rem;width:100%;padding-left:4px}.native-trigger-wrapper{position:relative;width:32px;height:32px}.hidden-native-input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4649
4653
|
}
|
|
4650
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
4654
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteColorBubbleMenuComponent, decorators: [{
|
|
4651
4655
|
type: Component,
|
|
4652
|
-
args: [{ selector: "
|
|
4656
|
+
args: [{ selector: "ate-color-bubble-menu", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, FormsModule, AteButtonComponent, AteSeparatorComponent], template: `
|
|
4653
4657
|
<div
|
|
4654
4658
|
#menuRef
|
|
4655
4659
|
class="bubble-menu color-bubble-menu"
|
|
@@ -4663,13 +4667,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
4663
4667
|
<div class="dropdown-row presets">
|
|
4664
4668
|
<div class="color-grid">
|
|
4665
4669
|
@for (color of presets; track color) {
|
|
4666
|
-
<
|
|
4670
|
+
<ate-button
|
|
4667
4671
|
class="color-swatch-btn"
|
|
4668
4672
|
size="small"
|
|
4669
4673
|
[title]="color"
|
|
4670
4674
|
[active]="isColorActive(color)"
|
|
4671
4675
|
[backgroundColor]="color"
|
|
4672
|
-
(buttonClick)="applyColor(color, true, $event)"></
|
|
4676
|
+
(buttonClick)="applyColor(color, true, $event)"></ate-button>
|
|
4673
4677
|
}
|
|
4674
4678
|
</div>
|
|
4675
4679
|
</div>
|
|
@@ -4693,12 +4697,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
4693
4697
|
</div>
|
|
4694
4698
|
|
|
4695
4699
|
<div class="native-trigger-wrapper">
|
|
4696
|
-
<
|
|
4700
|
+
<ate-button
|
|
4697
4701
|
class="btn-native-picker-trigger"
|
|
4698
4702
|
icon="colorize"
|
|
4699
4703
|
[title]="t().customColor"
|
|
4700
4704
|
[backgroundColor]="currentColor()"
|
|
4701
|
-
(buttonClick)="triggerNativePicker($event)"></
|
|
4705
|
+
(buttonClick)="triggerNativePicker($event)"></ate-button>
|
|
4702
4706
|
<input
|
|
4703
4707
|
#colorInput
|
|
4704
4708
|
type="color"
|
|
@@ -4711,23 +4715,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
4711
4715
|
(blur)="onBlur()" />
|
|
4712
4716
|
</div>
|
|
4713
4717
|
|
|
4714
|
-
<
|
|
4718
|
+
<ate-button
|
|
4715
4719
|
icon="check"
|
|
4716
4720
|
[title]="common().apply"
|
|
4717
4721
|
color="var(--ate-primary)"
|
|
4718
|
-
(buttonClick)="onApply($event)"></
|
|
4722
|
+
(buttonClick)="onApply($event)"></ate-button>
|
|
4719
4723
|
|
|
4720
|
-
<
|
|
4724
|
+
<ate-separator />
|
|
4721
4725
|
|
|
4722
|
-
<
|
|
4726
|
+
<ate-button
|
|
4723
4727
|
icon="format_color_reset"
|
|
4724
4728
|
[title]="t().clear"
|
|
4725
4729
|
variant="danger"
|
|
4726
|
-
(buttonClick)="onClearColor($event)"></
|
|
4730
|
+
(buttonClick)="onClearColor($event)"></ate-button>
|
|
4727
4731
|
</div>
|
|
4728
4732
|
</div>
|
|
4729
4733
|
</div>
|
|
4730
|
-
`, styles: [".color-picker-container{display:flex;flex-direction:column;gap:8px}.dropdown-row{display:flex;align-items:center;width:100%}.dropdown-row.presets{justify-content:center}.dropdown-row.controls{gap:8px;justify-content:space-between;padding-top:4px;border-top:1px solid var(--ate-border, #e2e8f0)}.color-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:4px;width:100%}:host ::ng-deep .color-swatch-btn .
|
|
4734
|
+
`, styles: [".color-picker-container{display:flex;flex-direction:column;gap:8px}.dropdown-row{display:flex;align-items:center;width:100%}.dropdown-row.presets{justify-content:center}.dropdown-row.controls{gap:8px;justify-content:space-between;padding-top:4px;border-top:1px solid var(--ate-border, #e2e8f0)}.color-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:4px;width:100%}:host ::ng-deep .color-swatch-btn .ate-button{width:100%;aspect-ratio:1;height:auto;border-radius:4px;border:1px solid rgba(0,0,0,.1);padding:0}:host ::ng-deep .color-swatch-btn .ate-button.is-active{border-color:var(--ate-primary, #3b82f6);box-shadow:0 0 0 2px #3b82f64d}:host ::ng-deep .btn-native-picker-trigger .ate-button{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.2)}.divider-v{width:1px;height:24px;background:var(--ate-border, #e2e8f0)}.hex-input-wrapper{flex:1;display:flex;align-items:center;background:var(--ate-surface-secondary, #f8fafc);border:1px solid var(--ate-border, #e2e8f0);border-radius:8px;padding:0 10px;height:32px;transition:border-color .15s ease}.hex-input-wrapper:focus-within{border-color:var(--ate-primary, #3b82f6);background:var(--ate-menu-bg, #ffffff)}.hex-hash{color:var(--ate-text-muted, #94a3b8);font-family:monospace;font-size:.875rem}.hex-input{background:transparent;border:none;outline:none;color:var(--ate-text, #1e293b);font-family:monospace;font-size:.875rem;width:100%;padding-left:4px}.native-trigger-wrapper{position:relative;width:32px;height:32px}.hidden-native-input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}\n"] }]
|
|
4731
4735
|
}], ctorParameters: () => [], propDecorators: { editor: [{ type: i0.Input, args: [{ isSignal: true, alias: "editor", required: true }] }], menuRef: [{
|
|
4732
4736
|
type: ViewChild,
|
|
4733
4737
|
args: ["menuRef", { static: false }]
|
|
@@ -4736,7 +4740,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
4736
4740
|
/**
|
|
4737
4741
|
* Clés des commandes natives dans l'ordre d'affichage
|
|
4738
4742
|
*/
|
|
4739
|
-
const
|
|
4743
|
+
const ATE_SLASH_COMMAND_KEYS = [
|
|
4740
4744
|
"heading1",
|
|
4741
4745
|
"heading2",
|
|
4742
4746
|
"heading3",
|
|
@@ -4751,7 +4755,7 @@ const SLASH_COMMAND_KEYS = [
|
|
|
4751
4755
|
/**
|
|
4752
4756
|
* Configuration par défaut : toutes les commandes natives sont activées
|
|
4753
4757
|
*/
|
|
4754
|
-
const
|
|
4758
|
+
const ATE_DEFAULT_SLASH_COMMANDS_CONFIG = {
|
|
4755
4759
|
heading1: true,
|
|
4756
4760
|
heading2: true,
|
|
4757
4761
|
heading3: true,
|
|
@@ -4852,9 +4856,9 @@ function createDefaultSlashCommands(i18n, commands, imageOptions) {
|
|
|
4852
4856
|
*/
|
|
4853
4857
|
function filterSlashCommands(config, i18n, commands, imageOptions) {
|
|
4854
4858
|
const allNatives = createDefaultSlashCommands(i18n, commands, imageOptions);
|
|
4855
|
-
const activeConfig = { ...
|
|
4859
|
+
const activeConfig = { ...ATE_DEFAULT_SLASH_COMMANDS_CONFIG, ...config };
|
|
4856
4860
|
const filtered = allNatives.filter((_, index) => {
|
|
4857
|
-
const key =
|
|
4861
|
+
const key = ATE_SLASH_COMMAND_KEYS[index];
|
|
4858
4862
|
return key && activeConfig[key] !== false;
|
|
4859
4863
|
});
|
|
4860
4864
|
if (config.custom && Array.isArray(config.custom)) {
|
|
@@ -4864,13 +4868,13 @@ function filterSlashCommands(config, i18n, commands, imageOptions) {
|
|
|
4864
4868
|
}
|
|
4865
4869
|
|
|
4866
4870
|
// Default command definitions are now centralized in src/lib/config/slash-commands.config.ts
|
|
4867
|
-
class
|
|
4871
|
+
class AteSlashCommandsComponent {
|
|
4868
4872
|
constructor() {
|
|
4869
|
-
this.i18nService = inject(
|
|
4873
|
+
this.i18nService = inject(AteI18nService);
|
|
4870
4874
|
this.editor = input.required(...(ngDevMode ? [{ debugName: "editor" }] : []));
|
|
4871
4875
|
this.config = input(undefined, ...(ngDevMode ? [{ debugName: "config" }] : []));
|
|
4872
4876
|
this.tippyInstance = null;
|
|
4873
|
-
this.editorCommands = inject(
|
|
4877
|
+
this.editorCommands = inject(AteEditorCommandsService);
|
|
4874
4878
|
// Local state
|
|
4875
4879
|
this.isActive = false;
|
|
4876
4880
|
this.currentQuery = signal("", ...(ngDevMode ? [{ debugName: "currentQuery" }] : []));
|
|
@@ -5181,8 +5185,8 @@ class TiptapSlashCommandsComponent {
|
|
|
5181
5185
|
plugins: [keyboardPlugin, ...ed.view.state.plugins],
|
|
5182
5186
|
}));
|
|
5183
5187
|
}
|
|
5184
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
5185
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type:
|
|
5188
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteSlashCommandsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5189
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AteSlashCommandsComponent, isStandalone: true, selector: "ate-slash-commands", inputs: { editor: { classPropertyName: "editor", publicName: "editor", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "menuRef", first: true, predicate: ["menuRef"], descendants: true }], ngImport: i0, template: `
|
|
5186
5190
|
<div #menuRef class="slash-commands-menu">
|
|
5187
5191
|
@for (command of filteredCommands(); track command.title) {
|
|
5188
5192
|
<div
|
|
@@ -5202,9 +5206,9 @@ class TiptapSlashCommandsComponent {
|
|
|
5202
5206
|
</div>
|
|
5203
5207
|
`, isInline: true, styles: [".slash-commands-menu{background:var(--ate-menu-bg);border:1px solid var(--ate-menu-border);border-radius:var(--ate-menu-border-radius, 12px);box-shadow:var(--ate-menu-shadow);padding:var(--ate-menu-padding);max-height:320px;overflow-y:auto;min-width:280px;outline:none;animation:slashMenuFadeIn .2s cubic-bezier(0,0,.2,1);scrollbar-width:thin;scrollbar-color:var(--ate-scrollbar-thumb) var(--ate-scrollbar-track)}.slash-commands-menu::-webkit-scrollbar{width:var(--ate-scrollbar-width)}.slash-commands-menu::-webkit-scrollbar-track{background:var(--ate-scrollbar-track)}.slash-commands-menu::-webkit-scrollbar-thumb{background:var(--ate-scrollbar-thumb);border:3px solid transparent;background-clip:content-box;border-radius:10px}.slash-commands-menu::-webkit-scrollbar-thumb:hover{background:var(--ate-scrollbar-thumb-hover);background-clip:content-box}@keyframes slashMenuFadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.slash-command-item{display:flex;align-items:center;gap:12px;padding:var(--ate-menu-padding);border-radius:var(--ate-menu-border-radius, 8px);cursor:pointer;transition:all .15s ease;border:var(--ate-border-width, 1px) solid transparent;outline:none;margin-bottom:2px}.slash-command-item:last-child{margin-bottom:0}.slash-command-item:hover{background:var(--ate-surface-secondary)}.slash-command-item.selected{background:var(--ate-primary-light);border-color:var(--ate-primary-light-alpha)}.slash-command-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--ate-surface-tertiary);border-radius:var(--ate-sub-border-radius, 8px);color:var(--ate-primary);flex-shrink:0;transition:all .15s ease}.slash-command-item.selected .slash-command-icon{background:var(--ate-primary);color:var(--ate-primary-contrast, #ffffff)}.slash-command-icon .material-symbols-outlined{font-size:18px}.slash-command-content{flex:1;min-width:0}.slash-command-title{font-weight:500;color:var(--ate-text);font-size:14px;margin-bottom:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.slash-command-description{color:var(--ate-text-secondary);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5204
5208
|
}
|
|
5205
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
5209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteSlashCommandsComponent, decorators: [{
|
|
5206
5210
|
type: Component,
|
|
5207
|
-
args: [{ selector: "
|
|
5211
|
+
args: [{ selector: "ate-slash-commands", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
5208
5212
|
<div #menuRef class="slash-commands-menu">
|
|
5209
5213
|
@for (command of filteredCommands(); track command.title) {
|
|
5210
5214
|
<div
|
|
@@ -5232,16 +5236,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
5232
5236
|
* Edit Toggle Component
|
|
5233
5237
|
* Allows switching between editable and readonly modes
|
|
5234
5238
|
*/
|
|
5235
|
-
class
|
|
5239
|
+
class AteEditToggleComponent {
|
|
5236
5240
|
constructor() {
|
|
5237
5241
|
this.editable = input.required(...(ngDevMode ? [{ debugName: "editable" }] : []));
|
|
5238
5242
|
this.translations = input.required(...(ngDevMode ? [{ debugName: "translations" }] : []));
|
|
5239
5243
|
this.editToggle = output();
|
|
5240
5244
|
}
|
|
5241
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
5242
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type:
|
|
5245
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteEditToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5246
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type: AteEditToggleComponent, isStandalone: true, selector: "ate-edit-toggle", inputs: { editable: { classPropertyName: "editable", publicName: "editable", isSignal: true, isRequired: true, transformFunction: null }, translations: { classPropertyName: "translations", publicName: "translations", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { editToggle: "editToggle" }, ngImport: i0, template: `
|
|
5243
5247
|
<div class="ate-edit-toggle-container" [class.is-editable]="editable()">
|
|
5244
|
-
<
|
|
5248
|
+
<ate-button
|
|
5245
5249
|
[icon]="editable() ? 'visibility' : 'edit'"
|
|
5246
5250
|
[title]="editable() ? translations().editor.viewMode : translations().editor.toggleEdit"
|
|
5247
5251
|
(buttonClick)="editToggle.emit($event)"
|
|
@@ -5249,13 +5253,13 @@ class TiptapEditToggleComponent {
|
|
|
5249
5253
|
iconSize="small"
|
|
5250
5254
|
backgroundColor="var(--ate-primary-lighter)" />
|
|
5251
5255
|
</div>
|
|
5252
|
-
`, isInline: true, styles: [".ate-edit-toggle-container{position:absolute;margin-top:16px;right:16px;z-index:50}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type:
|
|
5256
|
+
`, isInline: true, styles: [".ate-edit-toggle-container{position:absolute;margin-top:16px;right:16px;z-index:50}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AteButtonComponent, selector: "ate-button", inputs: ["icon", "title", "active", "disabled", "color", "backgroundColor", "variant", "size", "iconSize"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5253
5257
|
}
|
|
5254
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
5258
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteEditToggleComponent, decorators: [{
|
|
5255
5259
|
type: Component,
|
|
5256
|
-
args: [{ selector: "
|
|
5260
|
+
args: [{ selector: "ate-edit-toggle", standalone: true, imports: [CommonModule, AteButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
5257
5261
|
<div class="ate-edit-toggle-container" [class.is-editable]="editable()">
|
|
5258
|
-
<
|
|
5262
|
+
<ate-button
|
|
5259
5263
|
[icon]="editable() ? 'visibility' : 'edit'"
|
|
5260
5264
|
[title]="editable() ? translations().editor.viewMode : translations().editor.toggleEdit"
|
|
5261
5265
|
(buttonClick)="editToggle.emit($event)"
|
|
@@ -5266,7 +5270,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
5266
5270
|
`, styles: [".ate-edit-toggle-container{position:absolute;margin-top:16px;right:16px;z-index:50}\n"] }]
|
|
5267
5271
|
}], propDecorators: { editable: [{ type: i0.Input, args: [{ isSignal: true, alias: "editable", required: true }] }], translations: [{ type: i0.Input, args: [{ isSignal: true, alias: "translations", required: true }] }], editToggle: [{ type: i0.Output, args: ["editToggle"] }] } });
|
|
5268
5272
|
|
|
5269
|
-
|
|
5273
|
+
/**
|
|
5274
|
+
* Noop Value Accessor Directive
|
|
5275
|
+
* @link https://medium.com/netanelbasal/forwarding-form-controls-to-custom-control-components-in-angular-701e8406cc55
|
|
5276
|
+
*/
|
|
5277
|
+
class AteNoopValueAccessorDirective {
|
|
5270
5278
|
writeValue(_obj) {
|
|
5271
5279
|
/* empty */
|
|
5272
5280
|
}
|
|
@@ -5276,16 +5284,16 @@ class NoopValueAccessorDirective {
|
|
|
5276
5284
|
registerOnTouched(_fn) {
|
|
5277
5285
|
/* empty */
|
|
5278
5286
|
}
|
|
5279
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
5280
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.16", type:
|
|
5287
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteNoopValueAccessorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5288
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.16", type: AteNoopValueAccessorDirective, isStandalone: true, providers: [
|
|
5281
5289
|
{
|
|
5282
5290
|
provide: NG_VALUE_ACCESSOR,
|
|
5283
5291
|
multi: true,
|
|
5284
|
-
useExisting:
|
|
5292
|
+
useExisting: AteNoopValueAccessorDirective,
|
|
5285
5293
|
},
|
|
5286
5294
|
], ngImport: i0 }); }
|
|
5287
5295
|
}
|
|
5288
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
5296
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteNoopValueAccessorDirective, decorators: [{
|
|
5289
5297
|
type: Directive,
|
|
5290
5298
|
args: [{
|
|
5291
5299
|
standalone: true,
|
|
@@ -5293,13 +5301,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
5293
5301
|
{
|
|
5294
5302
|
provide: NG_VALUE_ACCESSOR,
|
|
5295
5303
|
multi: true,
|
|
5296
|
-
useExisting:
|
|
5304
|
+
useExisting: AteNoopValueAccessorDirective,
|
|
5297
5305
|
},
|
|
5298
5306
|
],
|
|
5299
5307
|
}]
|
|
5300
5308
|
}] });
|
|
5301
5309
|
|
|
5302
|
-
const
|
|
5310
|
+
const AteSelectionCalculator = editor => {
|
|
5303
5311
|
const { selection } = editor.state;
|
|
5304
5312
|
const { from, to } = selection;
|
|
5305
5313
|
let selectionType = "none";
|
|
@@ -5329,7 +5337,7 @@ const SelectionCalculator = editor => {
|
|
|
5329
5337
|
};
|
|
5330
5338
|
};
|
|
5331
5339
|
|
|
5332
|
-
const
|
|
5340
|
+
const AteMarksCalculator = editor => {
|
|
5333
5341
|
const isCodeBlock = editor.isActive("codeBlock");
|
|
5334
5342
|
const isCode = editor.isActive("code"); // Inline code mark
|
|
5335
5343
|
const isImage = editor.isActive("image") || editor.isActive("resizableImage");
|
|
@@ -5398,7 +5406,7 @@ const MarksCalculator = editor => {
|
|
|
5398
5406
|
};
|
|
5399
5407
|
};
|
|
5400
5408
|
|
|
5401
|
-
const
|
|
5409
|
+
const AteTableCalculator = editor => {
|
|
5402
5410
|
const isTable = editor.isActive("table");
|
|
5403
5411
|
if (!isTable) {
|
|
5404
5412
|
return {
|
|
@@ -5435,7 +5443,7 @@ const TableCalculator = editor => {
|
|
|
5435
5443
|
};
|
|
5436
5444
|
};
|
|
5437
5445
|
|
|
5438
|
-
const
|
|
5446
|
+
const AteImageCalculator = editor => {
|
|
5439
5447
|
return {
|
|
5440
5448
|
nodes: {
|
|
5441
5449
|
isImage: editor.isActive("image") || editor.isActive("resizableImage"),
|
|
@@ -5443,7 +5451,7 @@ const ImageCalculator = editor => {
|
|
|
5443
5451
|
};
|
|
5444
5452
|
};
|
|
5445
5453
|
|
|
5446
|
-
const
|
|
5454
|
+
const AteStructureCalculator = editor => {
|
|
5447
5455
|
return {
|
|
5448
5456
|
nodes: {
|
|
5449
5457
|
isBlockquote: editor.isActive("blockquote"),
|
|
@@ -5482,7 +5490,7 @@ const StructureCalculator = editor => {
|
|
|
5482
5490
|
* It provides a "fallback" reactive state for any mark or node not explicitly handled
|
|
5483
5491
|
* by specialized calculators.
|
|
5484
5492
|
*/
|
|
5485
|
-
const
|
|
5493
|
+
const AteDiscoveryCalculator = (editor) => {
|
|
5486
5494
|
const state = {
|
|
5487
5495
|
marks: {},
|
|
5488
5496
|
nodes: {},
|
|
@@ -5530,7 +5538,7 @@ const DiscoveryCalculator = (editor) => {
|
|
|
5530
5538
|
return state;
|
|
5531
5539
|
};
|
|
5532
5540
|
|
|
5533
|
-
const
|
|
5541
|
+
const AteLinkClickBehavior = Extension.create({
|
|
5534
5542
|
name: "linkClickBehavior",
|
|
5535
5543
|
addProseMirrorPlugins() {
|
|
5536
5544
|
return [
|
|
@@ -5558,7 +5566,7 @@ const LinkClickBehavior = Extension.create({
|
|
|
5558
5566
|
});
|
|
5559
5567
|
|
|
5560
5568
|
// Default toolbar configuration
|
|
5561
|
-
const
|
|
5569
|
+
const ATE_DEFAULT_TOOLBAR_CONFIG = {
|
|
5562
5570
|
bold: true,
|
|
5563
5571
|
italic: true,
|
|
5564
5572
|
underline: true,
|
|
@@ -5590,7 +5598,7 @@ const DEFAULT_TOOLBAR_CONFIG = {
|
|
|
5590
5598
|
separator: true,
|
|
5591
5599
|
};
|
|
5592
5600
|
// Default bubble menu configuration
|
|
5593
|
-
const
|
|
5601
|
+
const ATE_DEFAULT_BUBBLE_MENU_CONFIG = {
|
|
5594
5602
|
bold: true,
|
|
5595
5603
|
italic: true,
|
|
5596
5604
|
underline: true,
|
|
@@ -5605,7 +5613,7 @@ const DEFAULT_BUBBLE_MENU_CONFIG = {
|
|
|
5605
5613
|
separator: true,
|
|
5606
5614
|
};
|
|
5607
5615
|
// Default image bubble menu configuration
|
|
5608
|
-
const
|
|
5616
|
+
const ATE_DEFAULT_IMAGE_BUBBLE_MENU_CONFIG = {
|
|
5609
5617
|
changeImage: true,
|
|
5610
5618
|
resizeSmall: true,
|
|
5611
5619
|
resizeMedium: true,
|
|
@@ -5615,7 +5623,7 @@ const DEFAULT_IMAGE_BUBBLE_MENU_CONFIG = {
|
|
|
5615
5623
|
separator: true,
|
|
5616
5624
|
};
|
|
5617
5625
|
// Default table bubble menu configuration
|
|
5618
|
-
const
|
|
5626
|
+
const ATE_DEFAULT_TABLE_MENU_CONFIG = {
|
|
5619
5627
|
addRowBefore: true,
|
|
5620
5628
|
addRowAfter: true,
|
|
5621
5629
|
deleteRow: true,
|
|
@@ -5628,7 +5636,7 @@ const DEFAULT_TABLE_MENU_CONFIG = {
|
|
|
5628
5636
|
separator: true,
|
|
5629
5637
|
};
|
|
5630
5638
|
// Default cell bubble menu configuration
|
|
5631
|
-
const
|
|
5639
|
+
const ATE_DEFAULT_CELL_MENU_CONFIG = {
|
|
5632
5640
|
mergeCells: true,
|
|
5633
5641
|
splitCell: true,
|
|
5634
5642
|
};
|
|
@@ -5674,16 +5682,16 @@ class AngularTiptapEditorComponent {
|
|
|
5674
5682
|
this.tiptapOptions = input({}, ...(ngDevMode ? [{ debugName: "tiptapOptions" }] : []));
|
|
5675
5683
|
// Nouveaux inputs pour les bubble menus
|
|
5676
5684
|
this.showBubbleMenu = input(true, ...(ngDevMode ? [{ debugName: "showBubbleMenu" }] : []));
|
|
5677
|
-
this.bubbleMenu = input(
|
|
5685
|
+
this.bubbleMenu = input(ATE_DEFAULT_BUBBLE_MENU_CONFIG, ...(ngDevMode ? [{ debugName: "bubbleMenu" }] : []));
|
|
5678
5686
|
this.showImageBubbleMenu = input(true, ...(ngDevMode ? [{ debugName: "showImageBubbleMenu" }] : []));
|
|
5679
|
-
this.imageBubbleMenu = input(
|
|
5687
|
+
this.imageBubbleMenu = input(ATE_DEFAULT_IMAGE_BUBBLE_MENU_CONFIG, ...(ngDevMode ? [{ debugName: "imageBubbleMenu" }] : []));
|
|
5680
5688
|
// Configuration de la toolbar
|
|
5681
5689
|
this.toolbar = input({}, ...(ngDevMode ? [{ debugName: "toolbar" }] : []));
|
|
5682
5690
|
// Configuration des menus de table
|
|
5683
5691
|
this.showTableBubbleMenu = input(true, ...(ngDevMode ? [{ debugName: "showTableBubbleMenu" }] : []));
|
|
5684
|
-
this.tableBubbleMenu = input(
|
|
5692
|
+
this.tableBubbleMenu = input(ATE_DEFAULT_TABLE_MENU_CONFIG, ...(ngDevMode ? [{ debugName: "tableBubbleMenu" }] : []));
|
|
5685
5693
|
this.showCellBubbleMenu = input(true, ...(ngDevMode ? [{ debugName: "showCellBubbleMenu" }] : []));
|
|
5686
|
-
this.cellBubbleMenu = input(
|
|
5694
|
+
this.cellBubbleMenu = input(ATE_DEFAULT_CELL_MENU_CONFIG, ...(ngDevMode ? [{ debugName: "cellBubbleMenu" }] : []));
|
|
5687
5695
|
/**
|
|
5688
5696
|
* Additionnal state calculators to extend the reactive editor state.
|
|
5689
5697
|
*/
|
|
@@ -5763,7 +5771,7 @@ class AngularTiptapEditorComponent {
|
|
|
5763
5771
|
this.finalShowToolbar = computed(() => this.config().showToolbar ?? this.showToolbar(), ...(ngDevMode ? [{ debugName: "finalShowToolbar" }] : []));
|
|
5764
5772
|
this.finalToolbarConfig = computed(() => {
|
|
5765
5773
|
const fromConfig = this.config().toolbar;
|
|
5766
|
-
const base =
|
|
5774
|
+
const base = ATE_DEFAULT_TOOLBAR_CONFIG;
|
|
5767
5775
|
if (fromConfig)
|
|
5768
5776
|
return { ...base, ...fromConfig };
|
|
5769
5777
|
const fromInput = this.toolbar();
|
|
@@ -5773,7 +5781,7 @@ class AngularTiptapEditorComponent {
|
|
|
5773
5781
|
this.finalShowBubbleMenu = computed(() => this.config().showBubbleMenu ?? this.showBubbleMenu(), ...(ngDevMode ? [{ debugName: "finalShowBubbleMenu" }] : []));
|
|
5774
5782
|
this.finalBubbleMenuConfig = computed(() => {
|
|
5775
5783
|
const fromConfig = this.config().bubbleMenu;
|
|
5776
|
-
const base =
|
|
5784
|
+
const base = ATE_DEFAULT_BUBBLE_MENU_CONFIG;
|
|
5777
5785
|
if (fromConfig)
|
|
5778
5786
|
return { ...base, ...fromConfig };
|
|
5779
5787
|
return Object.keys(this.bubbleMenu()).length === 0 ? base : { ...base, ...this.bubbleMenu() };
|
|
@@ -5781,7 +5789,7 @@ class AngularTiptapEditorComponent {
|
|
|
5781
5789
|
this.finalShowImageBubbleMenu = computed(() => this.config().showImageBubbleMenu ?? this.showImageBubbleMenu(), ...(ngDevMode ? [{ debugName: "finalShowImageBubbleMenu" }] : []));
|
|
5782
5790
|
this.finalImageBubbleMenuConfig = computed(() => {
|
|
5783
5791
|
const fromConfig = this.config().imageBubbleMenu;
|
|
5784
|
-
const base =
|
|
5792
|
+
const base = ATE_DEFAULT_IMAGE_BUBBLE_MENU_CONFIG;
|
|
5785
5793
|
if (fromConfig)
|
|
5786
5794
|
return { ...base, ...fromConfig };
|
|
5787
5795
|
return Object.keys(this.imageBubbleMenu()).length === 0 ? base : { ...base, ...this.imageBubbleMenu() };
|
|
@@ -5789,7 +5797,7 @@ class AngularTiptapEditorComponent {
|
|
|
5789
5797
|
this.finalShowTableBubbleMenu = computed(() => this.config().showTableMenu ?? this.showTableBubbleMenu(), ...(ngDevMode ? [{ debugName: "finalShowTableBubbleMenu" }] : []));
|
|
5790
5798
|
this.finalTableBubbleMenuConfig = computed(() => {
|
|
5791
5799
|
const fromConfig = this.config().tableBubbleMenu;
|
|
5792
|
-
const base =
|
|
5800
|
+
const base = ATE_DEFAULT_TABLE_MENU_CONFIG;
|
|
5793
5801
|
if (fromConfig)
|
|
5794
5802
|
return { ...base, ...fromConfig };
|
|
5795
5803
|
return Object.keys(this.tableBubbleMenu()).length === 0 ? base : { ...base, ...this.tableBubbleMenu() };
|
|
@@ -5797,7 +5805,7 @@ class AngularTiptapEditorComponent {
|
|
|
5797
5805
|
this.finalShowCellBubbleMenu = computed(() => this.config().showCellMenu ?? this.showCellBubbleMenu(), ...(ngDevMode ? [{ debugName: "finalShowCellBubbleMenu" }] : []));
|
|
5798
5806
|
this.finalCellBubbleMenuConfig = computed(() => {
|
|
5799
5807
|
const fromConfig = this.config().cellBubbleMenu;
|
|
5800
|
-
const base =
|
|
5808
|
+
const base = ATE_DEFAULT_CELL_MENU_CONFIG;
|
|
5801
5809
|
if (fromConfig)
|
|
5802
5810
|
return { ...base, ...fromConfig };
|
|
5803
5811
|
return Object.keys(this.cellBubbleMenu()).length === 0 ? base : { ...base, ...this.cellBubbleMenu() };
|
|
@@ -5857,8 +5865,8 @@ class AngularTiptapEditorComponent {
|
|
|
5857
5865
|
this._destroyRef = inject(DestroyRef);
|
|
5858
5866
|
// NgControl for management of FormControls
|
|
5859
5867
|
this.ngControl = inject(NgControl, { self: true, optional: true });
|
|
5860
|
-
this.i18nService = inject(
|
|
5861
|
-
this.editorCommandsService = inject(
|
|
5868
|
+
this.i18nService = inject(AteI18nService);
|
|
5869
|
+
this.editorCommandsService = inject(AteEditorCommandsService);
|
|
5862
5870
|
// Access editor state via service
|
|
5863
5871
|
this.editorState = this.editorCommandsService.editorState;
|
|
5864
5872
|
// Effect to update editor content (with anti-echo)
|
|
@@ -5957,38 +5965,38 @@ class AngularTiptapEditorComponent {
|
|
|
5957
5965
|
Link.configure({
|
|
5958
5966
|
openOnClick: false,
|
|
5959
5967
|
HTMLAttributes: {
|
|
5960
|
-
class: "
|
|
5968
|
+
class: "ate-link",
|
|
5961
5969
|
},
|
|
5962
5970
|
}),
|
|
5963
|
-
|
|
5971
|
+
AteLinkClickBehavior,
|
|
5964
5972
|
Highlight.configure({
|
|
5965
5973
|
multicolor: true,
|
|
5966
5974
|
HTMLAttributes: {
|
|
5967
|
-
class: "
|
|
5975
|
+
class: "ate-highlight",
|
|
5968
5976
|
},
|
|
5969
5977
|
}),
|
|
5970
|
-
|
|
5978
|
+
AteResizableImage.configure({
|
|
5971
5979
|
inline: false,
|
|
5972
5980
|
allowBase64: true,
|
|
5973
5981
|
HTMLAttributes: {
|
|
5974
|
-
class: "
|
|
5982
|
+
class: "ate-image",
|
|
5975
5983
|
},
|
|
5976
5984
|
}),
|
|
5977
|
-
|
|
5985
|
+
AteUploadProgress.configure({
|
|
5978
5986
|
isUploading: () => this.editorCommandsService.isUploading(),
|
|
5979
5987
|
uploadProgress: () => this.editorCommandsService.uploadProgress(),
|
|
5980
5988
|
uploadMessage: () => this.editorCommandsService.uploadMessage(),
|
|
5981
5989
|
}),
|
|
5982
|
-
|
|
5983
|
-
|
|
5990
|
+
AteTableExtension,
|
|
5991
|
+
AteTiptapStateExtension.configure({
|
|
5984
5992
|
onUpdate: state => this.editorCommandsService.updateState(state),
|
|
5985
5993
|
calculators: [
|
|
5986
|
-
|
|
5987
|
-
|
|
5988
|
-
|
|
5989
|
-
|
|
5990
|
-
|
|
5991
|
-
|
|
5994
|
+
AteSelectionCalculator,
|
|
5995
|
+
AteMarksCalculator,
|
|
5996
|
+
AteTableCalculator,
|
|
5997
|
+
AteImageCalculator,
|
|
5998
|
+
AteStructureCalculator,
|
|
5999
|
+
AteDiscoveryCalculator,
|
|
5992
6000
|
...this.stateCalculators(),
|
|
5993
6001
|
],
|
|
5994
6002
|
}),
|
|
@@ -6180,7 +6188,7 @@ class AngularTiptapEditorComponent {
|
|
|
6180
6188
|
// Verify if interaction is on the container element and not on the content
|
|
6181
6189
|
const target = event.target;
|
|
6182
6190
|
const editorElement = this.editorElement()?.nativeElement;
|
|
6183
|
-
if (target === editorElement || target.classList.contains("
|
|
6191
|
+
if (target === editorElement || target.classList.contains("ate-content")) {
|
|
6184
6192
|
// Interaction in the empty space, position the cursor at the end
|
|
6185
6193
|
setTimeout(() => {
|
|
6186
6194
|
const { doc } = editor.state;
|
|
@@ -6191,11 +6199,11 @@ class AngularTiptapEditorComponent {
|
|
|
6191
6199
|
}
|
|
6192
6200
|
}
|
|
6193
6201
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AngularTiptapEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6194
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AngularTiptapEditorComponent, isStandalone: true, selector: "angular-tiptap-editor", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, editable: { classPropertyName: "editable", publicName: "editable", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, fillContainer: { classPropertyName: "fillContainer", publicName: "fillContainer", isSignal: true, isRequired: false, transformFunction: null }, showToolbar: { classPropertyName: "showToolbar", publicName: "showToolbar", isSignal: true, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: "showFooter", publicName: "showFooter", isSignal: true, isRequired: false, transformFunction: null }, showCharacterCount: { classPropertyName: "showCharacterCount", publicName: "showCharacterCount", isSignal: true, isRequired: false, transformFunction: null }, showWordCount: { classPropertyName: "showWordCount", publicName: "showWordCount", isSignal: true, isRequired: false, transformFunction: null }, maxCharacters: { classPropertyName: "maxCharacters", publicName: "maxCharacters", isSignal: true, isRequired: false, transformFunction: null }, enableOfficePaste: { classPropertyName: "enableOfficePaste", publicName: "enableOfficePaste", isSignal: true, isRequired: false, transformFunction: null }, enableSlashCommands: { classPropertyName: "enableSlashCommands", publicName: "enableSlashCommands", isSignal: true, isRequired: false, transformFunction: null }, slashCommands: { classPropertyName: "slashCommands", publicName: "slashCommands", isSignal: true, isRequired: false, transformFunction: null }, customSlashCommands: { classPropertyName: "customSlashCommands", publicName: "customSlashCommands", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, seamless: { classPropertyName: "seamless", publicName: "seamless", isSignal: true, isRequired: false, transformFunction: null }, floatingToolbar: { classPropertyName: "floatingToolbar", publicName: "floatingToolbar", isSignal: true, isRequired: false, transformFunction: null }, showEditToggle: { classPropertyName: "showEditToggle", publicName: "showEditToggle", isSignal: true, isRequired: false, transformFunction: null }, spellcheck: { classPropertyName: "spellcheck", publicName: "spellcheck", isSignal: true, isRequired: false, transformFunction: null }, tiptapExtensions: { classPropertyName: "tiptapExtensions", publicName: "tiptapExtensions", isSignal: true, isRequired: false, transformFunction: null }, tiptapOptions: { classPropertyName: "tiptapOptions", publicName: "tiptapOptions", isSignal: true, isRequired: false, transformFunction: null }, showBubbleMenu: { classPropertyName: "showBubbleMenu", publicName: "showBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, bubbleMenu: { classPropertyName: "bubbleMenu", publicName: "bubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, showImageBubbleMenu: { classPropertyName: "showImageBubbleMenu", publicName: "showImageBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, imageBubbleMenu: { classPropertyName: "imageBubbleMenu", publicName: "imageBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, toolbar: { classPropertyName: "toolbar", publicName: "toolbar", isSignal: true, isRequired: false, transformFunction: null }, showTableBubbleMenu: { classPropertyName: "showTableBubbleMenu", publicName: "showTableBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, tableBubbleMenu: { classPropertyName: "tableBubbleMenu", publicName: "tableBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, showCellBubbleMenu: { classPropertyName: "showCellBubbleMenu", publicName: "showCellBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, cellBubbleMenu: { classPropertyName: "cellBubbleMenu", publicName: "cellBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, stateCalculators: { classPropertyName: "stateCalculators", publicName: "stateCalculators", isSignal: true, isRequired: false, transformFunction: null }, imageUpload: { classPropertyName: "imageUpload", publicName: "imageUpload", isSignal: true, isRequired: false, transformFunction: null }, imageUploadHandler: { classPropertyName: "imageUploadHandler", publicName: "imageUploadHandler", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { contentChange: "contentChange", editorCreated: "editorCreated", editorUpdate: "editorUpdate", editorFocus: "editorFocus", editorBlur: "editorBlur", editableChange: "editableChange" }, host: { properties: { "class.fill-container": "finalFillContainer()", "class.floating-toolbar": "finalFloatingToolbar()", "class.is-readonly": "!finalEditable() && !mergedDisabled()", "class.is-disabled": "mergedDisabled()", "style.--ate-border-width": "finalSeamless() || mergedDisabled() ? '0' : null", "style.--ate-background": "finalSeamless() ? 'transparent' : (mergedDisabled() ? 'var(--ate-surface-tertiary)' : null)", "style.--ate-toolbar-border-color": "finalSeamless() ? 'transparent' : null", "style.--ate-counter-background": "finalSeamless() ? 'transparent' : null", "style.--ate-counter-border-color": "finalSeamless() ? 'transparent' : null", "class.dark": "config().theme === 'dark'", "attr.data-theme": "config().theme" } }, providers: [
|
|
6195
|
-
<div class="
|
|
6202
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AngularTiptapEditorComponent, isStandalone: true, selector: "angular-tiptap-editor", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, editable: { classPropertyName: "editable", publicName: "editable", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, fillContainer: { classPropertyName: "fillContainer", publicName: "fillContainer", isSignal: true, isRequired: false, transformFunction: null }, showToolbar: { classPropertyName: "showToolbar", publicName: "showToolbar", isSignal: true, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: "showFooter", publicName: "showFooter", isSignal: true, isRequired: false, transformFunction: null }, showCharacterCount: { classPropertyName: "showCharacterCount", publicName: "showCharacterCount", isSignal: true, isRequired: false, transformFunction: null }, showWordCount: { classPropertyName: "showWordCount", publicName: "showWordCount", isSignal: true, isRequired: false, transformFunction: null }, maxCharacters: { classPropertyName: "maxCharacters", publicName: "maxCharacters", isSignal: true, isRequired: false, transformFunction: null }, enableOfficePaste: { classPropertyName: "enableOfficePaste", publicName: "enableOfficePaste", isSignal: true, isRequired: false, transformFunction: null }, enableSlashCommands: { classPropertyName: "enableSlashCommands", publicName: "enableSlashCommands", isSignal: true, isRequired: false, transformFunction: null }, slashCommands: { classPropertyName: "slashCommands", publicName: "slashCommands", isSignal: true, isRequired: false, transformFunction: null }, customSlashCommands: { classPropertyName: "customSlashCommands", publicName: "customSlashCommands", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, seamless: { classPropertyName: "seamless", publicName: "seamless", isSignal: true, isRequired: false, transformFunction: null }, floatingToolbar: { classPropertyName: "floatingToolbar", publicName: "floatingToolbar", isSignal: true, isRequired: false, transformFunction: null }, showEditToggle: { classPropertyName: "showEditToggle", publicName: "showEditToggle", isSignal: true, isRequired: false, transformFunction: null }, spellcheck: { classPropertyName: "spellcheck", publicName: "spellcheck", isSignal: true, isRequired: false, transformFunction: null }, tiptapExtensions: { classPropertyName: "tiptapExtensions", publicName: "tiptapExtensions", isSignal: true, isRequired: false, transformFunction: null }, tiptapOptions: { classPropertyName: "tiptapOptions", publicName: "tiptapOptions", isSignal: true, isRequired: false, transformFunction: null }, showBubbleMenu: { classPropertyName: "showBubbleMenu", publicName: "showBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, bubbleMenu: { classPropertyName: "bubbleMenu", publicName: "bubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, showImageBubbleMenu: { classPropertyName: "showImageBubbleMenu", publicName: "showImageBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, imageBubbleMenu: { classPropertyName: "imageBubbleMenu", publicName: "imageBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, toolbar: { classPropertyName: "toolbar", publicName: "toolbar", isSignal: true, isRequired: false, transformFunction: null }, showTableBubbleMenu: { classPropertyName: "showTableBubbleMenu", publicName: "showTableBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, tableBubbleMenu: { classPropertyName: "tableBubbleMenu", publicName: "tableBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, showCellBubbleMenu: { classPropertyName: "showCellBubbleMenu", publicName: "showCellBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, cellBubbleMenu: { classPropertyName: "cellBubbleMenu", publicName: "cellBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, stateCalculators: { classPropertyName: "stateCalculators", publicName: "stateCalculators", isSignal: true, isRequired: false, transformFunction: null }, imageUpload: { classPropertyName: "imageUpload", publicName: "imageUpload", isSignal: true, isRequired: false, transformFunction: null }, imageUploadHandler: { classPropertyName: "imageUploadHandler", publicName: "imageUploadHandler", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { contentChange: "contentChange", editorCreated: "editorCreated", editorUpdate: "editorUpdate", editorFocus: "editorFocus", editorBlur: "editorBlur", editableChange: "editableChange" }, host: { properties: { "class.fill-container": "finalFillContainer()", "class.floating-toolbar": "finalFloatingToolbar()", "class.is-readonly": "!finalEditable() && !mergedDisabled()", "class.is-disabled": "mergedDisabled()", "style.--ate-border-width": "finalSeamless() || mergedDisabled() ? '0' : null", "style.--ate-background": "finalSeamless() ? 'transparent' : (mergedDisabled() ? 'var(--ate-surface-tertiary)' : null)", "style.--ate-toolbar-border-color": "finalSeamless() ? 'transparent' : null", "style.--ate-counter-background": "finalSeamless() ? 'transparent' : null", "style.--ate-counter-border-color": "finalSeamless() ? 'transparent' : null", "class.dark": "config().theme === 'dark'", "attr.data-theme": "config().theme" } }, providers: [AteEditorCommandsService, AteImageService, AteColorPickerService, AteLinkService], viewQueries: [{ propertyName: "editorElement", first: true, predicate: ["editorElement"], descendants: true, isSignal: true }], hostDirectives: [{ directive: AteNoopValueAccessorDirective }], ngImport: i0, template: `
|
|
6203
|
+
<div class="ate-editor">
|
|
6196
6204
|
<!-- Toolbar -->
|
|
6197
6205
|
@if (finalEditable() && !mergedDisabled() && finalShowToolbar() && editor()) {
|
|
6198
|
-
<
|
|
6206
|
+
<ate-toolbar
|
|
6199
6207
|
[editor]="editor()!"
|
|
6200
6208
|
[config]="finalToolbarConfig()"
|
|
6201
6209
|
[imageUpload]="finalImageUploadConfig()"
|
|
@@ -6205,7 +6213,7 @@ class AngularTiptapEditorComponent {
|
|
|
6205
6213
|
}
|
|
6206
6214
|
|
|
6207
6215
|
@if (finalShowEditToggle() && !mergedDisabled()) {
|
|
6208
|
-
<
|
|
6216
|
+
<ate-edit-toggle
|
|
6209
6217
|
[editable]="finalEditable()"
|
|
6210
6218
|
[translations]="currentTranslations()"
|
|
6211
6219
|
(editToggle)="toggleEditMode($event)" />
|
|
@@ -6214,7 +6222,7 @@ class AngularTiptapEditorComponent {
|
|
|
6214
6222
|
<!-- Editor Content -->
|
|
6215
6223
|
<div
|
|
6216
6224
|
#editorElement
|
|
6217
|
-
class="
|
|
6225
|
+
class="ate-content"
|
|
6218
6226
|
[class.drag-over]="isDragOver()"
|
|
6219
6227
|
(dragover)="onDragOver($event)"
|
|
6220
6228
|
(drop)="onDrop($event)"
|
|
@@ -6227,57 +6235,57 @@ class AngularTiptapEditorComponent {
|
|
|
6227
6235
|
|
|
6228
6236
|
<!-- Text Bubble Menu -->
|
|
6229
6237
|
@if (finalEditable() && finalShowBubbleMenu() && editor()) {
|
|
6230
|
-
<
|
|
6238
|
+
<ate-bubble-menu
|
|
6231
6239
|
[editor]="editor()!"
|
|
6232
6240
|
[config]="finalBubbleMenuConfig()"
|
|
6233
|
-
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></
|
|
6241
|
+
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></ate-bubble-menu>
|
|
6234
6242
|
}
|
|
6235
6243
|
|
|
6236
6244
|
<!-- Image Bubble Menu -->
|
|
6237
6245
|
@if (finalEditable() && finalShowImageBubbleMenu() && editor()) {
|
|
6238
|
-
<
|
|
6246
|
+
<ate-image-bubble-menu
|
|
6239
6247
|
[editor]="editor()!"
|
|
6240
6248
|
[config]="finalImageBubbleMenuConfig()"
|
|
6241
6249
|
[imageUpload]="finalImageUploadConfig()"
|
|
6242
|
-
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></
|
|
6250
|
+
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></ate-image-bubble-menu>
|
|
6243
6251
|
}
|
|
6244
6252
|
|
|
6245
6253
|
<!-- Link Bubble Menu -->
|
|
6246
6254
|
@if (finalEditable() && editor()) {
|
|
6247
|
-
<
|
|
6255
|
+
<ate-link-bubble-menu
|
|
6248
6256
|
[editor]="editor()!"
|
|
6249
|
-
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></
|
|
6257
|
+
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></ate-link-bubble-menu>
|
|
6250
6258
|
}
|
|
6251
6259
|
|
|
6252
6260
|
<!-- Color Bubble Menu -->
|
|
6253
6261
|
@if (finalEditable() && editor()) {
|
|
6254
|
-
<
|
|
6262
|
+
<ate-color-bubble-menu
|
|
6255
6263
|
[editor]="editor()!"
|
|
6256
|
-
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></
|
|
6264
|
+
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></ate-color-bubble-menu>
|
|
6257
6265
|
}
|
|
6258
6266
|
|
|
6259
6267
|
<!-- Slash Commands -->
|
|
6260
6268
|
@if (finalEditable() && finalEnableSlashCommands() && editor()) {
|
|
6261
|
-
<
|
|
6269
|
+
<ate-slash-commands
|
|
6262
6270
|
[editor]="editor()!"
|
|
6263
6271
|
[config]="finalSlashCommandsConfig()"
|
|
6264
|
-
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></
|
|
6272
|
+
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></ate-slash-commands>
|
|
6265
6273
|
}
|
|
6266
6274
|
|
|
6267
6275
|
<!-- Table Menu -->
|
|
6268
6276
|
@if (finalEditable() && finalShowTableBubbleMenu() && editor()) {
|
|
6269
|
-
<
|
|
6277
|
+
<ate-table-bubble-menu
|
|
6270
6278
|
[editor]="editor()!"
|
|
6271
6279
|
[config]="finalTableBubbleMenuConfig()"
|
|
6272
|
-
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></
|
|
6280
|
+
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></ate-table-bubble-menu>
|
|
6273
6281
|
}
|
|
6274
6282
|
|
|
6275
6283
|
<!-- Cell Menu -->
|
|
6276
6284
|
@if (finalEditable() && finalShowCellBubbleMenu() && editor()) {
|
|
6277
|
-
<
|
|
6285
|
+
<ate-cell-bubble-menu
|
|
6278
6286
|
[editor]="editor()!"
|
|
6279
6287
|
[config]="finalCellBubbleMenuConfig()"
|
|
6280
|
-
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></
|
|
6288
|
+
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></ate-cell-bubble-menu>
|
|
6281
6289
|
}
|
|
6282
6290
|
|
|
6283
6291
|
<!-- Counters -->
|
|
@@ -6306,11 +6314,11 @@ class AngularTiptapEditorComponent {
|
|
|
6306
6314
|
</div>
|
|
6307
6315
|
}
|
|
6308
6316
|
</div>
|
|
6309
|
-
`, isInline: true, 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%}.tiptap-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) .tiptap-editor{overflow:visible}:host(.fill-container) .tiptap-editor{display:flex;flex-direction:column;height:100%}:host(.fill-container) .tiptap-content-wrapper{flex:1;min-height:0}:host(.fill-container) .tiptap-content{flex:1;min-height:0;overflow-y:auto}.tiptap-editor:focus-within{border-color:var(--ate-focus-color)}.tiptap-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) .tiptap-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) .tiptap-content{cursor:default;-webkit-user-select:text;user-select:text}:host(.is-readonly) .tiptap-content ::ng-deep .tiptap-link{cursor:pointer;pointer-events:auto}.tiptap-content::-webkit-scrollbar{width:var(--ate-scrollbar-width)}.tiptap-content-wrapper{position:relative;display:flex;flex-direction:column;min-height:0}.tiptap-content-wrapper .tiptap-content{flex:1}.tiptap-content::-webkit-scrollbar-track{background:var(--ate-scrollbar-track)}.tiptap-content::-webkit-scrollbar-thumb{background:var(--ate-scrollbar-thumb);border:3px solid transparent;background-clip:content-box;border-radius:10px}.tiptap-content::-webkit-scrollbar-thumb:hover{background:var(--ate-scrollbar-thumb-hover);background-clip:content-box}.tiptap-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"], dependencies: [{ kind: "component", type: TiptapToolbarComponent, selector: "tiptap-toolbar", inputs: ["editor", "config", "imageUpload", "floating"] }, { kind: "component", type: TiptapBubbleMenuComponent, selector: "tiptap-bubble-menu", inputs: ["config"] }, { kind: "component", type: TiptapImageBubbleMenuComponent, selector: "tiptap-image-bubble-menu", inputs: ["config", "imageUpload"] }, { kind: "component", type: TiptapTableBubbleMenuComponent, selector: "tiptap-table-bubble-menu", inputs: ["config"] }, { kind: "component", type: TiptapCellBubbleMenuComponent, selector: "tiptap-cell-bubble-menu", inputs: ["config"] }, { kind: "component", type: TiptapSlashCommandsComponent, selector: "tiptap-slash-commands", inputs: ["editor", "config"] }, { kind: "component", type: TiptapLinkBubbleMenuComponent, selector: "tiptap-link-bubble-menu", inputs: ["editor"] }, { kind: "component", type: TiptapColorBubbleMenuComponent, selector: "tiptap-color-bubble-menu", inputs: ["editor"] }, { kind: "component", type: TiptapEditToggleComponent, selector: "tiptap-edit-toggle", inputs: ["editable", "translations"], outputs: ["editToggle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6317
|
+
`, isInline: true, 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"], dependencies: [{ kind: "component", type: AteToolbarComponent, selector: "ate-toolbar", inputs: ["editor", "config", "imageUpload", "floating"] }, { kind: "component", type: AteBubbleMenuComponent, selector: "ate-bubble-menu", inputs: ["config"] }, { kind: "component", type: AteImageBubbleMenuComponent, selector: "ate-image-bubble-menu", inputs: ["config", "imageUpload"] }, { kind: "component", type: AteTableBubbleMenuComponent, selector: "ate-table-bubble-menu", inputs: ["config"] }, { kind: "component", type: AteCellBubbleMenuComponent, selector: "ate-cell-bubble-menu", inputs: ["config"] }, { kind: "component", type: AteSlashCommandsComponent, selector: "ate-slash-commands", inputs: ["editor", "config"] }, { kind: "component", type: AteLinkBubbleMenuComponent, selector: "ate-link-bubble-menu", inputs: ["editor"] }, { kind: "component", type: AteColorBubbleMenuComponent, selector: "ate-color-bubble-menu", inputs: ["editor"] }, { kind: "component", type: AteEditToggleComponent, selector: "ate-edit-toggle", inputs: ["editable", "translations"], outputs: ["editToggle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6310
6318
|
}
|
|
6311
6319
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AngularTiptapEditorComponent, decorators: [{
|
|
6312
6320
|
type: Component,
|
|
6313
|
-
args: [{ selector: "angular-tiptap-editor", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [
|
|
6321
|
+
args: [{ selector: "angular-tiptap-editor", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [AteNoopValueAccessorDirective], host: {
|
|
6314
6322
|
"[class.fill-container]": "finalFillContainer()",
|
|
6315
6323
|
"[class.floating-toolbar]": "finalFloatingToolbar()",
|
|
6316
6324
|
"[class.is-readonly]": "!finalEditable() && !mergedDisabled()",
|
|
@@ -6323,20 +6331,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
6323
6331
|
"[class.dark]": "config().theme === 'dark'",
|
|
6324
6332
|
"[attr.data-theme]": "config().theme",
|
|
6325
6333
|
}, imports: [
|
|
6326
|
-
|
|
6327
|
-
|
|
6328
|
-
|
|
6329
|
-
|
|
6330
|
-
|
|
6331
|
-
|
|
6332
|
-
|
|
6333
|
-
|
|
6334
|
-
|
|
6335
|
-
], providers: [
|
|
6336
|
-
<div class="
|
|
6334
|
+
AteToolbarComponent,
|
|
6335
|
+
AteBubbleMenuComponent,
|
|
6336
|
+
AteImageBubbleMenuComponent,
|
|
6337
|
+
AteTableBubbleMenuComponent,
|
|
6338
|
+
AteCellBubbleMenuComponent,
|
|
6339
|
+
AteSlashCommandsComponent,
|
|
6340
|
+
AteLinkBubbleMenuComponent,
|
|
6341
|
+
AteColorBubbleMenuComponent,
|
|
6342
|
+
AteEditToggleComponent,
|
|
6343
|
+
], providers: [AteEditorCommandsService, AteImageService, AteColorPickerService, AteLinkService], template: `
|
|
6344
|
+
<div class="ate-editor">
|
|
6337
6345
|
<!-- Toolbar -->
|
|
6338
6346
|
@if (finalEditable() && !mergedDisabled() && finalShowToolbar() && editor()) {
|
|
6339
|
-
<
|
|
6347
|
+
<ate-toolbar
|
|
6340
6348
|
[editor]="editor()!"
|
|
6341
6349
|
[config]="finalToolbarConfig()"
|
|
6342
6350
|
[imageUpload]="finalImageUploadConfig()"
|
|
@@ -6346,7 +6354,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
6346
6354
|
}
|
|
6347
6355
|
|
|
6348
6356
|
@if (finalShowEditToggle() && !mergedDisabled()) {
|
|
6349
|
-
<
|
|
6357
|
+
<ate-edit-toggle
|
|
6350
6358
|
[editable]="finalEditable()"
|
|
6351
6359
|
[translations]="currentTranslations()"
|
|
6352
6360
|
(editToggle)="toggleEditMode($event)" />
|
|
@@ -6355,7 +6363,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
6355
6363
|
<!-- Editor Content -->
|
|
6356
6364
|
<div
|
|
6357
6365
|
#editorElement
|
|
6358
|
-
class="
|
|
6366
|
+
class="ate-content"
|
|
6359
6367
|
[class.drag-over]="isDragOver()"
|
|
6360
6368
|
(dragover)="onDragOver($event)"
|
|
6361
6369
|
(drop)="onDrop($event)"
|
|
@@ -6368,57 +6376,57 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
6368
6376
|
|
|
6369
6377
|
<!-- Text Bubble Menu -->
|
|
6370
6378
|
@if (finalEditable() && finalShowBubbleMenu() && editor()) {
|
|
6371
|
-
<
|
|
6379
|
+
<ate-bubble-menu
|
|
6372
6380
|
[editor]="editor()!"
|
|
6373
6381
|
[config]="finalBubbleMenuConfig()"
|
|
6374
|
-
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></
|
|
6382
|
+
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></ate-bubble-menu>
|
|
6375
6383
|
}
|
|
6376
6384
|
|
|
6377
6385
|
<!-- Image Bubble Menu -->
|
|
6378
6386
|
@if (finalEditable() && finalShowImageBubbleMenu() && editor()) {
|
|
6379
|
-
<
|
|
6387
|
+
<ate-image-bubble-menu
|
|
6380
6388
|
[editor]="editor()!"
|
|
6381
6389
|
[config]="finalImageBubbleMenuConfig()"
|
|
6382
6390
|
[imageUpload]="finalImageUploadConfig()"
|
|
6383
|
-
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></
|
|
6391
|
+
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></ate-image-bubble-menu>
|
|
6384
6392
|
}
|
|
6385
6393
|
|
|
6386
6394
|
<!-- Link Bubble Menu -->
|
|
6387
6395
|
@if (finalEditable() && editor()) {
|
|
6388
|
-
<
|
|
6396
|
+
<ate-link-bubble-menu
|
|
6389
6397
|
[editor]="editor()!"
|
|
6390
|
-
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></
|
|
6398
|
+
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></ate-link-bubble-menu>
|
|
6391
6399
|
}
|
|
6392
6400
|
|
|
6393
6401
|
<!-- Color Bubble Menu -->
|
|
6394
6402
|
@if (finalEditable() && editor()) {
|
|
6395
|
-
<
|
|
6403
|
+
<ate-color-bubble-menu
|
|
6396
6404
|
[editor]="editor()!"
|
|
6397
|
-
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></
|
|
6405
|
+
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></ate-color-bubble-menu>
|
|
6398
6406
|
}
|
|
6399
6407
|
|
|
6400
6408
|
<!-- Slash Commands -->
|
|
6401
6409
|
@if (finalEditable() && finalEnableSlashCommands() && editor()) {
|
|
6402
|
-
<
|
|
6410
|
+
<ate-slash-commands
|
|
6403
6411
|
[editor]="editor()!"
|
|
6404
6412
|
[config]="finalSlashCommandsConfig()"
|
|
6405
|
-
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></
|
|
6413
|
+
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></ate-slash-commands>
|
|
6406
6414
|
}
|
|
6407
6415
|
|
|
6408
6416
|
<!-- Table Menu -->
|
|
6409
6417
|
@if (finalEditable() && finalShowTableBubbleMenu() && editor()) {
|
|
6410
|
-
<
|
|
6418
|
+
<ate-table-bubble-menu
|
|
6411
6419
|
[editor]="editor()!"
|
|
6412
6420
|
[config]="finalTableBubbleMenuConfig()"
|
|
6413
|
-
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></
|
|
6421
|
+
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></ate-table-bubble-menu>
|
|
6414
6422
|
}
|
|
6415
6423
|
|
|
6416
6424
|
<!-- Cell Menu -->
|
|
6417
6425
|
@if (finalEditable() && finalShowCellBubbleMenu() && editor()) {
|
|
6418
|
-
<
|
|
6426
|
+
<ate-cell-bubble-menu
|
|
6419
6427
|
[editor]="editor()!"
|
|
6420
6428
|
[config]="finalCellBubbleMenuConfig()"
|
|
6421
|
-
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></
|
|
6429
|
+
[style.display]="editorFullyInitialized() ? 'block' : 'none'"></ate-cell-bubble-menu>
|
|
6422
6430
|
}
|
|
6423
6431
|
|
|
6424
6432
|
<!-- Counters -->
|
|
@@ -6447,17 +6455,129 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
6447
6455
|
</div>
|
|
6448
6456
|
}
|
|
6449
6457
|
</div>
|
|
6450
|
-
`, 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%}.tiptap-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) .tiptap-editor{overflow:visible}:host(.fill-container) .tiptap-editor{display:flex;flex-direction:column;height:100%}:host(.fill-container) .tiptap-content-wrapper{flex:1;min-height:0}:host(.fill-container) .tiptap-content{flex:1;min-height:0;overflow-y:auto}.tiptap-editor:focus-within{border-color:var(--ate-focus-color)}.tiptap-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) .tiptap-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) .tiptap-content{cursor:default;-webkit-user-select:text;user-select:text}:host(.is-readonly) .tiptap-content ::ng-deep .tiptap-link{cursor:pointer;pointer-events:auto}.tiptap-content::-webkit-scrollbar{width:var(--ate-scrollbar-width)}.tiptap-content-wrapper{position:relative;display:flex;flex-direction:column;min-height:0}.tiptap-content-wrapper .tiptap-content{flex:1}.tiptap-content::-webkit-scrollbar-track{background:var(--ate-scrollbar-track)}.tiptap-content::-webkit-scrollbar-thumb{background:var(--ate-scrollbar-thumb);border:3px solid transparent;background-clip:content-box;border-radius:10px}.tiptap-content::-webkit-scrollbar-thumb:hover{background:var(--ate-scrollbar-thumb-hover);background-clip:content-box}.tiptap-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"] }]
|
|
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"] }]
|
|
6451
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 }] }] } });
|
|
6452
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
|
+
|
|
6453
6545
|
/*
|
|
6454
6546
|
* Public API Surface of tiptap-editor
|
|
6455
6547
|
*/
|
|
6456
6548
|
// Main component
|
|
6549
|
+
/** @deprecated Renamed to `ATE_INITIAL_EDITOR_STATE`. This alias will be removed in v3.0.0. */
|
|
6550
|
+
const INITIAL_EDITOR_STATE = ATE_INITIAL_EDITOR_STATE;
|
|
6551
|
+
/** @deprecated Renamed to `ATE_SLASH_COMMAND_KEYS`. This alias will be removed in v3.0.0. */
|
|
6552
|
+
const SLASH_COMMAND_KEYS = ATE_SLASH_COMMAND_KEYS;
|
|
6553
|
+
/** @deprecated Renamed to `ATE_DEFAULT_SLASH_COMMANDS_CONFIG`. This alias will be removed in v3.0.0. */
|
|
6554
|
+
const DEFAULT_SLASH_COMMANDS_CONFIG = ATE_DEFAULT_SLASH_COMMANDS_CONFIG;
|
|
6555
|
+
/** @deprecated Renamed to `AteDiscoveryCalculator`. This alias will be removed in v3.0.0. */
|
|
6556
|
+
const DiscoveryCalculator = AteDiscoveryCalculator;
|
|
6557
|
+
/** @deprecated Renamed to `AteImageCalculator`. This alias will be removed in v3.0.0. */
|
|
6558
|
+
const ImageCalculator = AteImageCalculator;
|
|
6559
|
+
/** @deprecated Renamed to `AteMarksCalculator`. This alias will be removed in v3.0.0. */
|
|
6560
|
+
const MarksCalculator = AteMarksCalculator;
|
|
6561
|
+
/** @deprecated Renamed to `AteSelectionCalculator`. This alias will be removed in v3.0.0. */
|
|
6562
|
+
const SelectionCalculator = AteSelectionCalculator;
|
|
6563
|
+
/** @deprecated Renamed to `AteStructureCalculator`. This alias will be removed in v3.0.0. */
|
|
6564
|
+
const StructureCalculator = AteStructureCalculator;
|
|
6565
|
+
/** @deprecated Renamed to `AteTableCalculator`. This alias will be removed in v3.0.0. */
|
|
6566
|
+
const TableCalculator = AteTableCalculator;
|
|
6567
|
+
/** @deprecated Renamed to `ATE_DEFAULT_TOOLBAR_CONFIG`. This alias will be removed in v3.0.0. */
|
|
6568
|
+
const DEFAULT_TOOLBAR_CONFIG = ATE_DEFAULT_TOOLBAR_CONFIG;
|
|
6569
|
+
/** @deprecated Renamed to `ATE_DEFAULT_BUBBLE_MENU_CONFIG`. This alias will be removed in v3.0.0. */
|
|
6570
|
+
const DEFAULT_BUBBLE_MENU_CONFIG = ATE_DEFAULT_BUBBLE_MENU_CONFIG;
|
|
6571
|
+
/** @deprecated Renamed to `ATE_DEFAULT_IMAGE_BUBBLE_MENU_CONFIG`. This alias will be removed in v3.0.0. */
|
|
6572
|
+
const DEFAULT_IMAGE_BUBBLE_MENU_CONFIG = ATE_DEFAULT_IMAGE_BUBBLE_MENU_CONFIG;
|
|
6573
|
+
/** @deprecated Renamed to `ATE_DEFAULT_TABLE_MENU_CONFIG`. This alias will be removed in v3.0.0. */
|
|
6574
|
+
const DEFAULT_TABLE_MENU_CONFIG = ATE_DEFAULT_TABLE_MENU_CONFIG;
|
|
6575
|
+
/** @deprecated Renamed to `ATE_DEFAULT_CELL_MENU_CONFIG`. This alias will be removed in v3.0.0. */
|
|
6576
|
+
const DEFAULT_CELL_MENU_CONFIG = ATE_DEFAULT_CELL_MENU_CONFIG;
|
|
6457
6577
|
|
|
6458
6578
|
/**
|
|
6459
6579
|
* Generated bundle index. Do not edit.
|
|
6460
6580
|
*/
|
|
6461
6581
|
|
|
6462
|
-
export { AngularTiptapEditorComponent, 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, EditorCommandsService, INITIAL_EDITOR_STATE, ImageCalculator, ImageService, LinkService, MarksCalculator,
|
|
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 };
|
|
6463
6583
|
//# sourceMappingURL=flogeez-angular-tiptap-editor.mjs.map
|