@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.
@@ -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 ResizableImage = Node$1.create({
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 = "tiptap-image";
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 UploadProgress = Extension.create({
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 TableExtension = Extension.create({
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 INITIAL_EDITOR_STATE = {
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(INITIAL_EDITOR_STATE));
630
+ return JSON.parse(JSON.stringify(ATE_INITIAL_EDITOR_STATE));
631
631
  }
632
- const TiptapStateExtension = Extension.create({
633
- name: "tiptapState",
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 TiptapButtonComponent {
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: TiptapButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
695
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: TiptapButtonComponent, isStandalone: true, selector: "tiptap-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: `
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="tiptap-button"
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: [".tiptap-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}.tiptap-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)}.tiptap-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)}.tiptap-button.has-custom-color:hover:not(.has-custom-bg){background:var(--ate-toolbar-button-hover-background, transparent);transform:translateY(-1px)}.tiptap-button.has-custom-bg:hover{transform:translateY(-1px);filter:brightness(.9)}.tiptap-button:hover:before{opacity:.1}.tiptap-button:active{transform:translateY(0)}.tiptap-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))}.tiptap-button.is-active.has-custom-color{background:var(--ate-toolbar-button-active-background, var(--ate-primary-light))}.tiptap-button:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.tiptap-button .material-symbols-outlined{font-size:20px;position:relative;z-index:1}.tiptap-button .material-symbols-outlined.icon-small{font-size:16px}.tiptap-button .material-symbols-outlined.icon-medium{font-size:20px}.tiptap-button .material-symbols-outlined.icon-large{font-size:24px}.tiptap-button.text-button{width:auto;padding:0 12px;font-size:14px;font-weight:500;gap:8px}.tiptap-button.color-button{width:28px;height:28px;border-radius:50%;border:2px solid transparent;transition:all .2s ease}.tiptap-button.color-button:hover{border-color:var(--ate-border);transform:scale(1.1)}.tiptap-button.color-button.is-active{border-color:var(--ate-primary);box-shadow:0 0 0 2px var(--ate-primary-light)}.tiptap-button.danger{color:var(--ate-error-color, #ef4444)}.tiptap-button.danger:hover{color:var(--ate-error-color, #ef4444);background:var(--ate-error-bg, rgba(239, 68, 68, .1))}.tiptap-button.danger:before{background:var(--ate-error-color, #ef4444)}.tiptap-button.small{width:24px;height:24px}.tiptap-button.medium{width:32px;height:32px}.tiptap-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}}.tiptap-button.is-active.pulse{animation:pulse 2s infinite}@media (max-width: 768px){.tiptap-button{width:32px;height:32px}.tiptap-button .material-symbols-outlined{font-size:18px}.tiptap-button.text-button{padding:0 8px;font-size:13px}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
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: TiptapButtonComponent, decorators: [{
728
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteButtonComponent, decorators: [{
729
729
  type: Component,
730
- args: [{ selector: "tiptap-button", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
730
+ args: [{ selector: "ate-button", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
731
731
  <button
732
- class="tiptap-button"
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: [".tiptap-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}.tiptap-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)}.tiptap-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)}.tiptap-button.has-custom-color:hover:not(.has-custom-bg){background:var(--ate-toolbar-button-hover-background, transparent);transform:translateY(-1px)}.tiptap-button.has-custom-bg:hover{transform:translateY(-1px);filter:brightness(.9)}.tiptap-button:hover:before{opacity:.1}.tiptap-button:active{transform:translateY(0)}.tiptap-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))}.tiptap-button.is-active.has-custom-color{background:var(--ate-toolbar-button-active-background, var(--ate-primary-light))}.tiptap-button:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.tiptap-button .material-symbols-outlined{font-size:20px;position:relative;z-index:1}.tiptap-button .material-symbols-outlined.icon-small{font-size:16px}.tiptap-button .material-symbols-outlined.icon-medium{font-size:20px}.tiptap-button .material-symbols-outlined.icon-large{font-size:24px}.tiptap-button.text-button{width:auto;padding:0 12px;font-size:14px;font-weight:500;gap:8px}.tiptap-button.color-button{width:28px;height:28px;border-radius:50%;border:2px solid transparent;transition:all .2s ease}.tiptap-button.color-button:hover{border-color:var(--ate-border);transform:scale(1.1)}.tiptap-button.color-button.is-active{border-color:var(--ate-primary);box-shadow:0 0 0 2px var(--ate-primary-light)}.tiptap-button.danger{color:var(--ate-error-color, #ef4444)}.tiptap-button.danger:hover{color:var(--ate-error-color, #ef4444);background:var(--ate-error-bg, rgba(239, 68, 68, .1))}.tiptap-button.danger:before{background:var(--ate-error-color, #ef4444)}.tiptap-button.small{width:24px;height:24px}.tiptap-button.medium{width:32px;height:32px}.tiptap-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}}.tiptap-button.is-active.pulse{animation:pulse 2s infinite}@media (max-width: 768px){.tiptap-button{width:32px;height:32px}.tiptap-button .material-symbols-outlined{font-size:18px}.tiptap-button.text-button{padding:0 8px;font-size:13px}}\n"] }]
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 TiptapSeparatorComponent {
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: TiptapSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
770
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type: TiptapSeparatorComponent, isStandalone: true, selector: "tiptap-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: `
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="tiptap-separator"
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: [".tiptap-separator{background-color:var(--ate-border, #e2e8f0);margin:0}.tiptap-separator.vertical{width:1px;height:24px;margin:0 8px}.tiptap-separator.horizontal{height:1px;width:100%;margin:8px 0}.tiptap-separator.small.vertical{height:16px;margin:0 4px}.tiptap-separator.small.horizontal{margin:4px 0}.tiptap-separator.medium.vertical{height:24px;margin:0 8px}.tiptap-separator.medium.horizontal{margin:8px 0}.tiptap-separator.large.vertical{height:32px;margin:0 12px}.tiptap-separator.large.horizontal{margin:12px 0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
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: TiptapSeparatorComponent, decorators: [{
780
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteSeparatorComponent, decorators: [{
781
781
  type: Component,
782
- args: [{ selector: "tiptap-separator", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
782
+ args: [{ selector: "ate-separator", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
783
783
  <div
784
- class="tiptap-separator"
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: [".tiptap-separator{background-color:var(--ate-border, #e2e8f0);margin:0}.tiptap-separator.vertical{width:1px;height:24px;margin:0 8px}.tiptap-separator.horizontal{height:1px;width:100%;margin:8px 0}.tiptap-separator.small.vertical{height:16px;margin:0 4px}.tiptap-separator.small.horizontal{margin:4px 0}.tiptap-separator.medium.vertical{height:24px;margin:0 8px}.tiptap-separator.medium.horizontal{margin:8px 0}.tiptap-separator.large.vertical{height:32px;margin:0 12px}.tiptap-separator.large.horizontal{margin:12px 0}\n"] }]
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 TiptapI18nService {
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: TiptapI18nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1192
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TiptapI18nService, providedIn: "root" }); }
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: TiptapI18nService, decorators: [{
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 ImageService {
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(TiptapI18nService);
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: ImageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1543
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ImageService }); }
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: ImageService, decorators: [{
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 ColorPickerService {
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: ColorPickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1780
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ColorPickerService }); }
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: ColorPickerService, decorators: [{
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 LinkService {
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: LinkService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1871
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LinkService }); }
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: LinkService, decorators: [{
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 EditorCommandsService {
1877
+ class AteEditorCommandsService {
1878
1878
  constructor() {
1879
- this.imageService = inject(ImageService);
1880
- this.colorPickerSvc = inject(ColorPickerService);
1881
- this.linkSvc = inject(LinkService);
1882
- this._editorState = signal(INITIAL_EDITOR_STATE, ...(ngDevMode ? [{ debugName: "_editorState", equal: (a, b) => {
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: EditorCommandsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2317
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: EditorCommandsService }); }
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: EditorCommandsService, decorators: [{
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 TiptapColorPickerComponent {
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(ColorPickerService);
2330
- this.i18nService = inject(TiptapI18nService);
2331
- this.editorCommands = inject(EditorCommandsService);
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: TiptapColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2385
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: TiptapColorPickerComponent, isStandalone: true, selector: "tiptap-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: `
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
- <tiptap-button
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: TiptapButtonComponent, selector: "tiptap-button", inputs: ["icon", "title", "active", "disabled", "color", "backgroundColor", "variant", "size", "iconSize"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
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: TiptapColorPickerComponent, decorators: [{
2410
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteColorPickerComponent, decorators: [{
2411
2411
  type: Component,
2412
- args: [{ selector: "tiptap-color-picker", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TiptapButtonComponent, CommonModule], template: `
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
- <tiptap-button
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 TiptapToolbarComponent {
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(TiptapI18nService);
2445
- this.editorCommands = inject(EditorCommandsService);
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: TiptapToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2456
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: TiptapToolbarComponent, isStandalone: true, selector: "tiptap-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="tiptap-toolbar" [class.floating]="floating()">
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-color-picker mode="highlight" [editor]="editor()" [disabled]="!state().can.setHighlight" />
2531
+ <ate-color-picker mode="highlight" [editor]="editor()" [disabled]="!state().can.setHighlight" />
2532
2532
  }
2533
2533
  @if (config().textColor) {
2534
- <tiptap-color-picker mode="text" [editor]="editor()" [disabled]="!state().can.setColor" />
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
- <tiptap-separator />
2538
+ <ate-separator />
2539
2539
  }
2540
2540
  @if (config().heading1) {
2541
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-separator />
2565
+ <ate-separator />
2566
2566
  }
2567
2567
  @if (config().bulletList) {
2568
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-separator />
2595
+ <ate-separator />
2596
2596
  }
2597
2597
  @if (config().alignLeft) {
2598
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-separator />
2630
+ <ate-separator />
2631
2631
  }
2632
2632
  @if (config().link) {
2633
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-separator />
2655
+ <ate-separator />
2656
2656
  }
2657
2657
  @if (config().image) {
2658
- <tiptap-button
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
- <tiptap-separator />
2665
+ <ate-separator />
2666
2666
  }
2667
2667
  @if (config().undo) {
2668
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-separator />
2674
+ <ate-separator />
2683
2675
  }
2684
2676
  @if (config().clear) {
2685
- <tiptap-button
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}.tiptap-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))}.tiptap-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)}.tiptap-toolbar.floating::-webkit-scrollbar{display:none}:host-context(.floating-toolbar:focus-within) .tiptap-toolbar.floating,:host-context(.floating-toolbar:hover) .tiptap-toolbar.floating{transform:translateY(-2rem)}@media (max-width: 768px){.tiptap-toolbar{padding:6px 8px;gap:2px}}@keyframes toolbarSlideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.tiptap-toolbar{animation:toolbarSlideIn .3s cubic-bezier(.4,0,.2,1)}\n"], dependencies: [{ kind: "component", type: TiptapButtonComponent, selector: "tiptap-button", inputs: ["icon", "title", "active", "disabled", "color", "backgroundColor", "variant", "size", "iconSize"], outputs: ["buttonClick"] }, { kind: "component", type: TiptapSeparatorComponent, selector: "tiptap-separator", inputs: ["orientation", "size"] }, { kind: "component", type: TiptapColorPickerComponent, selector: "tiptap-color-picker", inputs: ["editor", "mode", "disabled", "anchorToText"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
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: TiptapToolbarComponent, decorators: [{
2691
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteToolbarComponent, decorators: [{
2695
2692
  type: Component,
2696
- args: [{ selector: "tiptap-toolbar", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TiptapButtonComponent, TiptapSeparatorComponent, TiptapColorPickerComponent], template: `
2697
- <div class="tiptap-toolbar" [class.floating]="floating()">
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-color-picker mode="highlight" [editor]="editor()" [disabled]="!state().can.setHighlight" />
2768
+ <ate-color-picker mode="highlight" [editor]="editor()" [disabled]="!state().can.setHighlight" />
2772
2769
  }
2773
2770
  @if (config().textColor) {
2774
- <tiptap-color-picker mode="text" [editor]="editor()" [disabled]="!state().can.setColor" />
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
- <tiptap-separator />
2775
+ <ate-separator />
2779
2776
  }
2780
2777
  @if (config().heading1) {
2781
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-separator />
2802
+ <ate-separator />
2806
2803
  }
2807
2804
  @if (config().bulletList) {
2808
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-separator />
2832
+ <ate-separator />
2836
2833
  }
2837
2834
  @if (config().alignLeft) {
2838
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-separator />
2867
+ <ate-separator />
2871
2868
  }
2872
2869
  @if (config().link) {
2873
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-separator />
2892
+ <ate-separator />
2896
2893
  }
2897
2894
  @if (config().image) {
2898
- <tiptap-button
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
- <tiptap-separator />
2902
+ <ate-separator />
2906
2903
  }
2907
2904
  @if (config().undo) {
2908
- <tiptap-button
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
- <tiptap-button
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
- <tiptap-separator />
2911
+ <ate-separator />
2923
2912
  }
2924
2913
  @if (config().clear) {
2925
- <tiptap-button
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}.tiptap-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))}.tiptap-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)}.tiptap-toolbar.floating::-webkit-scrollbar{display:none}:host-context(.floating-toolbar:focus-within) .tiptap-toolbar.floating,:host-context(.floating-toolbar:hover) .tiptap-toolbar.floating{transform:translateY(-2rem)}@media (max-width: 768px){.tiptap-toolbar{padding:6px 8px;gap:2px}}@keyframes toolbarSlideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.tiptap-toolbar{animation:toolbarSlideIn .3s cubic-bezier(.4,0,.2,1)}\n"] }]
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 TiptapBaseBubbleMenu {
2933
+ class AteBaseBubbleMenu {
2940
2934
  constructor() {
2941
- this.i18nService = inject(TiptapI18nService);
2942
- this.editorCommands = inject(EditorCommandsService);
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: TiptapBaseBubbleMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3125
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", type: TiptapBaseBubbleMenu, 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 }); }
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: TiptapBaseBubbleMenu, decorators: [{
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 TiptapBubbleMenuComponent extends TiptapBaseBubbleMenu {
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: TiptapBubbleMenuComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3216
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: TiptapBubbleMenuComponent, isStandalone: true, selector: "tiptap-bubble-menu", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
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
- <tiptap-button
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)"></tiptap-button>
3218
+ (buttonClick)="onCommand('toggleBold', $event)"></ate-button>
3225
3219
  }
3226
3220
  @if (bubbleMenuConfig().italic) {
3227
- <tiptap-button
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)"></tiptap-button>
3226
+ (buttonClick)="onCommand('toggleItalic', $event)"></ate-button>
3233
3227
  }
3234
3228
  @if (bubbleMenuConfig().underline) {
3235
- <tiptap-button
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)"></tiptap-button>
3234
+ (buttonClick)="onCommand('toggleUnderline', $event)"></ate-button>
3241
3235
  }
3242
3236
  @if (bubbleMenuConfig().strike) {
3243
- <tiptap-button
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)"></tiptap-button>
3242
+ (buttonClick)="onCommand('toggleStrike', $event)"></ate-button>
3249
3243
  }
3250
3244
  @if (bubbleMenuConfig().code) {
3251
- <tiptap-button
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)"></tiptap-button>
3250
+ (buttonClick)="onCommand('toggleCode', $event)"></ate-button>
3257
3251
  }
3258
3252
  @if (bubbleMenuConfig().superscript) {
3259
- <tiptap-button
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)"></tiptap-button>
3258
+ (buttonClick)="onCommand('toggleSuperscript', $event)"></ate-button>
3265
3259
  }
3266
3260
  @if (bubbleMenuConfig().subscript) {
3267
- <tiptap-button
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)"></tiptap-button>
3266
+ (buttonClick)="onCommand('toggleSubscript', $event)"></ate-button>
3273
3267
  }
3274
3268
  @if (bubbleMenuConfig().highlight) {
3275
- <tiptap-button
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)"></tiptap-button>
3274
+ (buttonClick)="onCommand('toggleHighlight', $event)"></ate-button>
3281
3275
  }
3282
3276
  @if (bubbleMenuConfig().highlightPicker) {
3283
- <tiptap-color-picker
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
- <tiptap-color-picker mode="text" [editor]="editor()" [disabled]="!state().can.setColor" [anchorToText]="true" />
3284
+ <ate-color-picker mode="text" [editor]="editor()" [disabled]="!state().can.setColor" [anchorToText]="true" />
3291
3285
  }
3292
3286
  @if (bubbleMenuConfig().link) {
3293
- <tiptap-button
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)"></tiptap-button>
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: TiptapButtonComponent, selector: "tiptap-button", inputs: ["icon", "title", "active", "disabled", "color", "backgroundColor", "variant", "size", "iconSize"], outputs: ["buttonClick"] }, { kind: "component", type: TiptapColorPickerComponent, selector: "tiptap-color-picker", inputs: ["editor", "mode", "disabled", "anchorToText"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
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: TiptapBubbleMenuComponent, decorators: [{
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: "tiptap-bubble-menu",
3305
+ selector: "ate-bubble-menu",
3307
3306
  standalone: true,
3308
3307
  changeDetection: ChangeDetectionStrategy.OnPush,
3309
- imports: [TiptapButtonComponent, TiptapColorPickerComponent],
3308
+ imports: [AteButtonComponent, AteColorPickerComponent],
3310
3309
  template: `
3311
3310
  <div #menuRef class="bubble-menu" (mousedown)="$event.preventDefault()">
3312
3311
  @if (bubbleMenuConfig().bold) {
3313
- <tiptap-button
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)"></tiptap-button>
3317
+ (buttonClick)="onCommand('toggleBold', $event)"></ate-button>
3319
3318
  }
3320
3319
  @if (bubbleMenuConfig().italic) {
3321
- <tiptap-button
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)"></tiptap-button>
3325
+ (buttonClick)="onCommand('toggleItalic', $event)"></ate-button>
3327
3326
  }
3328
3327
  @if (bubbleMenuConfig().underline) {
3329
- <tiptap-button
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)"></tiptap-button>
3333
+ (buttonClick)="onCommand('toggleUnderline', $event)"></ate-button>
3335
3334
  }
3336
3335
  @if (bubbleMenuConfig().strike) {
3337
- <tiptap-button
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)"></tiptap-button>
3341
+ (buttonClick)="onCommand('toggleStrike', $event)"></ate-button>
3343
3342
  }
3344
3343
  @if (bubbleMenuConfig().code) {
3345
- <tiptap-button
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)"></tiptap-button>
3349
+ (buttonClick)="onCommand('toggleCode', $event)"></ate-button>
3351
3350
  }
3352
3351
  @if (bubbleMenuConfig().superscript) {
3353
- <tiptap-button
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)"></tiptap-button>
3357
+ (buttonClick)="onCommand('toggleSuperscript', $event)"></ate-button>
3359
3358
  }
3360
3359
  @if (bubbleMenuConfig().subscript) {
3361
- <tiptap-button
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)"></tiptap-button>
3365
+ (buttonClick)="onCommand('toggleSubscript', $event)"></ate-button>
3367
3366
  }
3368
3367
  @if (bubbleMenuConfig().highlight) {
3369
- <tiptap-button
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)"></tiptap-button>
3373
+ (buttonClick)="onCommand('toggleHighlight', $event)"></ate-button>
3375
3374
  }
3376
3375
  @if (bubbleMenuConfig().highlightPicker) {
3377
- <tiptap-color-picker
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
- <tiptap-color-picker mode="text" [editor]="editor()" [disabled]="!state().can.setColor" [anchorToText]="true" />
3383
+ <ate-color-picker mode="text" [editor]="editor()" [disabled]="!state().can.setColor" [anchorToText]="true" />
3385
3384
  }
3386
3385
  @if (bubbleMenuConfig().link) {
3387
- <tiptap-button
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)"></tiptap-button>
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 TiptapImageBubbleMenuComponent extends TiptapBaseBubbleMenu {
3403
+ class AteImageBubbleMenuComponent extends AteBaseBubbleMenu {
3400
3404
  constructor() {
3401
3405
  super(...arguments);
3402
3406
  this.t = this.i18nService.imageUpload;
3403
- this.imageService = inject(ImageService);
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: TiptapImageBubbleMenuComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3505
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: TiptapImageBubbleMenuComponent, isStandalone: true, selector: "tiptap-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: `
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
- <tiptap-button
3512
+ <ate-button
3509
3513
  icon="drive_file_rename_outline"
3510
3514
  [title]="t().changeImage"
3511
- (buttonClick)="onCommand('changeImage', $event)"></tiptap-button>
3515
+ (buttonClick)="onCommand('changeImage', $event)"></ate-button>
3512
3516
  }
3513
3517
  @if (imageBubbleMenuConfig().separator && hasResizeButtons()) {
3514
- <tiptap-separator />
3518
+ <ate-separator />
3515
3519
  }
3516
3520
  @if (imageBubbleMenuConfig().resizeSmall) {
3517
- <tiptap-button
3521
+ <ate-button
3518
3522
  icon="crop_square"
3519
3523
  iconSize="small"
3520
3524
  [title]="t().resizeSmall"
3521
- (buttonClick)="onCommand('resizeSmall', $event)"></tiptap-button>
3525
+ (buttonClick)="onCommand('resizeSmall', $event)"></ate-button>
3522
3526
  }
3523
3527
  @if (imageBubbleMenuConfig().resizeMedium) {
3524
- <tiptap-button
3528
+ <ate-button
3525
3529
  icon="crop_square"
3526
3530
  iconSize="medium"
3527
3531
  [title]="t().resizeMedium"
3528
- (buttonClick)="onCommand('resizeMedium', $event)"></tiptap-button>
3532
+ (buttonClick)="onCommand('resizeMedium', $event)"></ate-button>
3529
3533
  }
3530
3534
  @if (imageBubbleMenuConfig().resizeLarge) {
3531
- <tiptap-button
3535
+ <ate-button
3532
3536
  icon="crop_square"
3533
3537
  iconSize="large"
3534
3538
  [title]="t().resizeLarge"
3535
- (buttonClick)="onCommand('resizeLarge', $event)"></tiptap-button>
3539
+ (buttonClick)="onCommand('resizeLarge', $event)"></ate-button>
3536
3540
  }
3537
3541
  @if (imageBubbleMenuConfig().resizeOriginal) {
3538
- <tiptap-button
3542
+ <ate-button
3539
3543
  icon="photo_size_select_actual"
3540
3544
  [title]="t().resizeOriginal"
3541
- (buttonClick)="onCommand('resizeOriginal', $event)"></tiptap-button>
3545
+ (buttonClick)="onCommand('resizeOriginal', $event)"></ate-button>
3542
3546
  }
3543
3547
  @if (imageBubbleMenuConfig().separator && imageBubbleMenuConfig().deleteImage) {
3544
- <tiptap-separator />
3548
+ <ate-separator />
3545
3549
  }
3546
3550
  @if (imageBubbleMenuConfig().deleteImage) {
3547
- <tiptap-button
3551
+ <ate-button
3548
3552
  icon="delete"
3549
3553
  [title]="t().deleteImage"
3550
3554
  variant="danger"
3551
- (buttonClick)="onCommand('deleteImage', $event)"></tiptap-button>
3555
+ (buttonClick)="onCommand('deleteImage', $event)"></ate-button>
3552
3556
  }
3553
3557
  </div>
3554
- `, isInline: true, dependencies: [{ kind: "component", type: TiptapButtonComponent, selector: "tiptap-button", inputs: ["icon", "title", "active", "disabled", "color", "backgroundColor", "variant", "size", "iconSize"], outputs: ["buttonClick"] }, { kind: "component", type: TiptapSeparatorComponent, selector: "tiptap-separator", inputs: ["orientation", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
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: TiptapImageBubbleMenuComponent, decorators: [{
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: "tiptap-image-bubble-menu",
3563
+ selector: "ate-image-bubble-menu",
3560
3564
  standalone: true,
3561
3565
  changeDetection: ChangeDetectionStrategy.OnPush,
3562
- imports: [TiptapButtonComponent, TiptapSeparatorComponent],
3566
+ imports: [AteButtonComponent, AteSeparatorComponent],
3563
3567
  template: `
3564
3568
  <div #menuRef class="bubble-menu" (mousedown)="$event.preventDefault()">
3565
3569
  @if (imageBubbleMenuConfig().changeImage) {
3566
- <tiptap-button
3570
+ <ate-button
3567
3571
  icon="drive_file_rename_outline"
3568
3572
  [title]="t().changeImage"
3569
- (buttonClick)="onCommand('changeImage', $event)"></tiptap-button>
3573
+ (buttonClick)="onCommand('changeImage', $event)"></ate-button>
3570
3574
  }
3571
3575
  @if (imageBubbleMenuConfig().separator && hasResizeButtons()) {
3572
- <tiptap-separator />
3576
+ <ate-separator />
3573
3577
  }
3574
3578
  @if (imageBubbleMenuConfig().resizeSmall) {
3575
- <tiptap-button
3579
+ <ate-button
3576
3580
  icon="crop_square"
3577
3581
  iconSize="small"
3578
3582
  [title]="t().resizeSmall"
3579
- (buttonClick)="onCommand('resizeSmall', $event)"></tiptap-button>
3583
+ (buttonClick)="onCommand('resizeSmall', $event)"></ate-button>
3580
3584
  }
3581
3585
  @if (imageBubbleMenuConfig().resizeMedium) {
3582
- <tiptap-button
3586
+ <ate-button
3583
3587
  icon="crop_square"
3584
3588
  iconSize="medium"
3585
3589
  [title]="t().resizeMedium"
3586
- (buttonClick)="onCommand('resizeMedium', $event)"></tiptap-button>
3590
+ (buttonClick)="onCommand('resizeMedium', $event)"></ate-button>
3587
3591
  }
3588
3592
  @if (imageBubbleMenuConfig().resizeLarge) {
3589
- <tiptap-button
3593
+ <ate-button
3590
3594
  icon="crop_square"
3591
3595
  iconSize="large"
3592
3596
  [title]="t().resizeLarge"
3593
- (buttonClick)="onCommand('resizeLarge', $event)"></tiptap-button>
3597
+ (buttonClick)="onCommand('resizeLarge', $event)"></ate-button>
3594
3598
  }
3595
3599
  @if (imageBubbleMenuConfig().resizeOriginal) {
3596
- <tiptap-button
3600
+ <ate-button
3597
3601
  icon="photo_size_select_actual"
3598
3602
  [title]="t().resizeOriginal"
3599
- (buttonClick)="onCommand('resizeOriginal', $event)"></tiptap-button>
3603
+ (buttonClick)="onCommand('resizeOriginal', $event)"></ate-button>
3600
3604
  }
3601
3605
  @if (imageBubbleMenuConfig().separator && imageBubbleMenuConfig().deleteImage) {
3602
- <tiptap-separator />
3606
+ <ate-separator />
3603
3607
  }
3604
3608
  @if (imageBubbleMenuConfig().deleteImage) {
3605
- <tiptap-button
3609
+ <ate-button
3606
3610
  icon="delete"
3607
3611
  [title]="t().deleteImage"
3608
3612
  variant="danger"
3609
- (buttonClick)="onCommand('deleteImage', $event)"></tiptap-button>
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 TiptapTableBubbleMenuComponent extends TiptapBaseBubbleMenu {
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: TiptapTableBubbleMenuComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3687
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: TiptapTableBubbleMenuComponent, isStandalone: true, selector: "tiptap-table-bubble-menu", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
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
- <tiptap-button
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)"></tiptap-button>
3699
+ (buttonClick)="onCommand('addRowBefore', $event)"></ate-button>
3696
3700
  }
3697
3701
  @if (config().addRowAfter !== false) {
3698
- <tiptap-button
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)"></tiptap-button>
3706
+ (buttonClick)="onCommand('addRowAfter', $event)"></ate-button>
3703
3707
  }
3704
3708
  @if (config().deleteRow !== false) {
3705
- <tiptap-button
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)"></tiptap-button>
3714
+ (buttonClick)="onCommand('deleteRow', $event)"></ate-button>
3711
3715
  }
3712
3716
  @if (config().separator !== false) {
3713
- <tiptap-separator />
3717
+ <ate-separator />
3714
3718
  }
3715
3719
 
3716
3720
  <!-- Column actions -->
3717
3721
  @if (config().addColumnBefore !== false) {
3718
- <tiptap-button
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)"></tiptap-button>
3726
+ (buttonClick)="onCommand('addColumnBefore', $event)"></ate-button>
3723
3727
  }
3724
3728
  @if (config().addColumnAfter !== false) {
3725
- <tiptap-button
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)"></tiptap-button>
3733
+ (buttonClick)="onCommand('addColumnAfter', $event)"></ate-button>
3730
3734
  }
3731
3735
  @if (config().deleteColumn !== false) {
3732
- <tiptap-button
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)"></tiptap-button>
3741
+ (buttonClick)="onCommand('deleteColumn', $event)"></ate-button>
3738
3742
  }
3739
3743
  @if (config().separator !== false) {
3740
- <tiptap-separator />
3744
+ <ate-separator />
3741
3745
  }
3742
3746
 
3743
3747
  <!-- Cell actions -->
3744
3748
  @if (config().toggleHeaderRow !== false) {
3745
- <tiptap-button
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)"></tiptap-button>
3754
+ (buttonClick)="onCommand('toggleHeaderRow', $event)"></ate-button>
3751
3755
  }
3752
3756
  @if (config().toggleHeaderColumn !== false) {
3753
- <tiptap-button
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)"></tiptap-button>
3762
+ (buttonClick)="onCommand('toggleHeaderColumn', $event)"></ate-button>
3759
3763
  }
3760
3764
  @if (config().separator !== false && config().deleteTable !== false) {
3761
- <tiptap-separator />
3765
+ <ate-separator />
3762
3766
  }
3763
3767
 
3764
3768
  <!-- Table actions -->
3765
3769
  @if (config().deleteTable !== false) {
3766
- <tiptap-button
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)"></tiptap-button>
3775
+ (buttonClick)="onCommand('deleteTable', $event)"></ate-button>
3772
3776
  }
3773
3777
  </div>
3774
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: TiptapButtonComponent, selector: "tiptap-button", inputs: ["icon", "title", "active", "disabled", "color", "backgroundColor", "variant", "size", "iconSize"], outputs: ["buttonClick"] }, { kind: "component", type: TiptapSeparatorComponent, selector: "tiptap-separator", inputs: ["orientation", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
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: TiptapTableBubbleMenuComponent, decorators: [{
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: "tiptap-table-bubble-menu",
3783
+ selector: "ate-table-bubble-menu",
3780
3784
  standalone: true,
3781
3785
  changeDetection: ChangeDetectionStrategy.OnPush,
3782
- imports: [CommonModule, TiptapButtonComponent, TiptapSeparatorComponent],
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
- <tiptap-button
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)"></tiptap-button>
3795
+ (buttonClick)="onCommand('addRowBefore', $event)"></ate-button>
3792
3796
  }
3793
3797
  @if (config().addRowAfter !== false) {
3794
- <tiptap-button
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)"></tiptap-button>
3802
+ (buttonClick)="onCommand('addRowAfter', $event)"></ate-button>
3799
3803
  }
3800
3804
  @if (config().deleteRow !== false) {
3801
- <tiptap-button
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)"></tiptap-button>
3810
+ (buttonClick)="onCommand('deleteRow', $event)"></ate-button>
3807
3811
  }
3808
3812
  @if (config().separator !== false) {
3809
- <tiptap-separator />
3813
+ <ate-separator />
3810
3814
  }
3811
3815
 
3812
3816
  <!-- Column actions -->
3813
3817
  @if (config().addColumnBefore !== false) {
3814
- <tiptap-button
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)"></tiptap-button>
3822
+ (buttonClick)="onCommand('addColumnBefore', $event)"></ate-button>
3819
3823
  }
3820
3824
  @if (config().addColumnAfter !== false) {
3821
- <tiptap-button
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)"></tiptap-button>
3829
+ (buttonClick)="onCommand('addColumnAfter', $event)"></ate-button>
3826
3830
  }
3827
3831
  @if (config().deleteColumn !== false) {
3828
- <tiptap-button
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)"></tiptap-button>
3837
+ (buttonClick)="onCommand('deleteColumn', $event)"></ate-button>
3834
3838
  }
3835
3839
  @if (config().separator !== false) {
3836
- <tiptap-separator />
3840
+ <ate-separator />
3837
3841
  }
3838
3842
 
3839
3843
  <!-- Cell actions -->
3840
3844
  @if (config().toggleHeaderRow !== false) {
3841
- <tiptap-button
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)"></tiptap-button>
3850
+ (buttonClick)="onCommand('toggleHeaderRow', $event)"></ate-button>
3847
3851
  }
3848
3852
  @if (config().toggleHeaderColumn !== false) {
3849
- <tiptap-button
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)"></tiptap-button>
3858
+ (buttonClick)="onCommand('toggleHeaderColumn', $event)"></ate-button>
3855
3859
  }
3856
3860
  @if (config().separator !== false && config().deleteTable !== false) {
3857
- <tiptap-separator />
3861
+ <ate-separator />
3858
3862
  }
3859
3863
 
3860
3864
  <!-- Table actions -->
3861
3865
  @if (config().deleteTable !== false) {
3862
- <tiptap-button
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)"></tiptap-button>
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 TiptapCellBubbleMenuComponent extends TiptapBaseBubbleMenu {
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: TiptapCellBubbleMenuComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3939
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: TiptapCellBubbleMenuComponent, isStandalone: true, selector: "tiptap-cell-bubble-menu", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
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
- <tiptap-button
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)"></tiptap-button>
3951
+ (buttonClick)="onCommand('mergeCells', $event)"></ate-button>
3948
3952
  }
3949
3953
  @if (config().splitCell !== false && state().selection.isSingleCell) {
3950
- <tiptap-button
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)"></tiptap-button>
3958
+ (buttonClick)="onCommand('splitCell', $event)"></ate-button>
3955
3959
  }
3956
3960
  </div>
3957
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: TiptapButtonComponent, selector: "tiptap-button", inputs: ["icon", "title", "active", "disabled", "color", "backgroundColor", "variant", "size", "iconSize"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
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: TiptapCellBubbleMenuComponent, decorators: [{
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: "tiptap-cell-bubble-menu",
3966
+ selector: "ate-cell-bubble-menu",
3963
3967
  standalone: true,
3964
3968
  changeDetection: ChangeDetectionStrategy.OnPush,
3965
- imports: [CommonModule, TiptapButtonComponent],
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
- <tiptap-button
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)"></tiptap-button>
3978
+ (buttonClick)="onCommand('mergeCells', $event)"></ate-button>
3975
3979
  }
3976
3980
  @if (config().splitCell !== false && state().selection.isSingleCell) {
3977
- <tiptap-button
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)"></tiptap-button>
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 TiptapLinkBubbleMenuComponent {
3992
+ class AteLinkBubbleMenuComponent {
3989
3993
  constructor() {
3990
- this.i18nService = inject(TiptapI18nService);
3991
- this.editorCommands = inject(EditorCommandsService);
3992
- this.linkSvc = inject(LinkService);
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: TiptapLinkBubbleMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4201
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type: TiptapLinkBubbleMenuComponent, isStandalone: true, selector: "tiptap-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: `
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
- <tiptap-button
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)"></tiptap-button>
4234
- <tiptap-button
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)"></tiptap-button>
4239
- <tiptap-separator />
4240
- <tiptap-button
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)"></tiptap-button>
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: TiptapButtonComponent, selector: "tiptap-button", inputs: ["icon", "title", "active", "disabled", "color", "backgroundColor", "variant", "size", "iconSize"], outputs: ["buttonClick"] }, { kind: "component", type: TiptapSeparatorComponent, selector: "tiptap-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 }); }
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: TiptapLinkBubbleMenuComponent, decorators: [{
4255
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteLinkBubbleMenuComponent, decorators: [{
4252
4256
  type: Component,
4253
- args: [{ selector: "tiptap-link-bubble-menu", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TiptapButtonComponent, TiptapSeparatorComponent, FormsModule], template: `
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
- <tiptap-button
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)"></tiptap-button>
4286
- <tiptap-button
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)"></tiptap-button>
4291
- <tiptap-separator />
4292
- <tiptap-button
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)"></tiptap-button>
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 TiptapColorBubbleMenuComponent {
4328
+ class AteColorBubbleMenuComponent {
4325
4329
  constructor() {
4326
- this.i18nService = inject(TiptapI18nService);
4327
- this.editorCommands = inject(EditorCommandsService);
4328
- this.colorPickerSvc = inject(ColorPickerService);
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: TiptapColorBubbleMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4570
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: TiptapColorBubbleMenuComponent, isStandalone: true, selector: "tiptap-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: `
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
- <tiptap-button
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)"></tiptap-button>
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
- <tiptap-button
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)"></tiptap-button>
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
- <tiptap-button
4636
+ <ate-button
4633
4637
  icon="check"
4634
4638
  [title]="common().apply"
4635
4639
  color="var(--ate-primary)"
4636
- (buttonClick)="onApply($event)"></tiptap-button>
4640
+ (buttonClick)="onApply($event)"></ate-button>
4637
4641
 
4638
- <tiptap-separator />
4642
+ <ate-separator />
4639
4643
 
4640
- <tiptap-button
4644
+ <ate-button
4641
4645
  icon="format_color_reset"
4642
4646
  [title]="t().clear"
4643
4647
  variant="danger"
4644
- (buttonClick)="onClearColor($event)"></tiptap-button>
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 .tiptap-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 .tiptap-button.is-active{border-color:var(--ate-primary, #3b82f6);box-shadow:0 0 0 2px #3b82f64d}:host ::ng-deep .btn-native-picker-trigger .tiptap-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: TiptapButtonComponent, selector: "tiptap-button", inputs: ["icon", "title", "active", "disabled", "color", "backgroundColor", "variant", "size", "iconSize"], outputs: ["buttonClick"] }, { kind: "component", type: TiptapSeparatorComponent, selector: "tiptap-separator", inputs: ["orientation", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
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: TiptapColorBubbleMenuComponent, decorators: [{
4654
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteColorBubbleMenuComponent, decorators: [{
4651
4655
  type: Component,
4652
- args: [{ selector: "tiptap-color-bubble-menu", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, FormsModule, TiptapButtonComponent, TiptapSeparatorComponent], template: `
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
- <tiptap-button
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)"></tiptap-button>
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
- <tiptap-button
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)"></tiptap-button>
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
- <tiptap-button
4718
+ <ate-button
4715
4719
  icon="check"
4716
4720
  [title]="common().apply"
4717
4721
  color="var(--ate-primary)"
4718
- (buttonClick)="onApply($event)"></tiptap-button>
4722
+ (buttonClick)="onApply($event)"></ate-button>
4719
4723
 
4720
- <tiptap-separator />
4724
+ <ate-separator />
4721
4725
 
4722
- <tiptap-button
4726
+ <ate-button
4723
4727
  icon="format_color_reset"
4724
4728
  [title]="t().clear"
4725
4729
  variant="danger"
4726
- (buttonClick)="onClearColor($event)"></tiptap-button>
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 .tiptap-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 .tiptap-button.is-active{border-color:var(--ate-primary, #3b82f6);box-shadow:0 0 0 2px #3b82f64d}:host ::ng-deep .btn-native-picker-trigger .tiptap-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"] }]
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 SLASH_COMMAND_KEYS = [
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 DEFAULT_SLASH_COMMANDS_CONFIG = {
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 = { ...DEFAULT_SLASH_COMMANDS_CONFIG, ...config };
4859
+ const activeConfig = { ...ATE_DEFAULT_SLASH_COMMANDS_CONFIG, ...config };
4856
4860
  const filtered = allNatives.filter((_, index) => {
4857
- const key = SLASH_COMMAND_KEYS[index];
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 TiptapSlashCommandsComponent {
4871
+ class AteSlashCommandsComponent {
4868
4872
  constructor() {
4869
- this.i18nService = inject(TiptapI18nService);
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(EditorCommandsService);
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: TiptapSlashCommandsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5185
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: TiptapSlashCommandsComponent, isStandalone: true, selector: "tiptap-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: `
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: TiptapSlashCommandsComponent, decorators: [{
5209
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteSlashCommandsComponent, decorators: [{
5206
5210
  type: Component,
5207
- args: [{ selector: "tiptap-slash-commands", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
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 TiptapEditToggleComponent {
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: TiptapEditToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5242
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type: TiptapEditToggleComponent, isStandalone: true, selector: "tiptap-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: `
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
- <tiptap-button
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: TiptapButtonComponent, selector: "tiptap-button", inputs: ["icon", "title", "active", "disabled", "color", "backgroundColor", "variant", "size", "iconSize"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
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: TiptapEditToggleComponent, decorators: [{
5258
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AteEditToggleComponent, decorators: [{
5255
5259
  type: Component,
5256
- args: [{ selector: "tiptap-edit-toggle", standalone: true, imports: [CommonModule, TiptapButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
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
- <tiptap-button
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
- class NoopValueAccessorDirective {
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: NoopValueAccessorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5280
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.16", type: NoopValueAccessorDirective, isStandalone: true, providers: [
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: NoopValueAccessorDirective,
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: NoopValueAccessorDirective, decorators: [{
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: NoopValueAccessorDirective,
5304
+ useExisting: AteNoopValueAccessorDirective,
5297
5305
  },
5298
5306
  ],
5299
5307
  }]
5300
5308
  }] });
5301
5309
 
5302
- const SelectionCalculator = editor => {
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 MarksCalculator = editor => {
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 TableCalculator = editor => {
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 ImageCalculator = editor => {
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 StructureCalculator = editor => {
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 DiscoveryCalculator = (editor) => {
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 LinkClickBehavior = Extension.create({
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 DEFAULT_TOOLBAR_CONFIG = {
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 DEFAULT_BUBBLE_MENU_CONFIG = {
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 DEFAULT_IMAGE_BUBBLE_MENU_CONFIG = {
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 DEFAULT_TABLE_MENU_CONFIG = {
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 DEFAULT_CELL_MENU_CONFIG = {
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(DEFAULT_BUBBLE_MENU_CONFIG, ...(ngDevMode ? [{ debugName: "bubbleMenu" }] : []));
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(DEFAULT_IMAGE_BUBBLE_MENU_CONFIG, ...(ngDevMode ? [{ debugName: "imageBubbleMenu" }] : []));
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(DEFAULT_TABLE_MENU_CONFIG, ...(ngDevMode ? [{ debugName: "tableBubbleMenu" }] : []));
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(DEFAULT_CELL_MENU_CONFIG, ...(ngDevMode ? [{ debugName: "cellBubbleMenu" }] : []));
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 = DEFAULT_TOOLBAR_CONFIG;
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 = DEFAULT_BUBBLE_MENU_CONFIG;
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 = DEFAULT_IMAGE_BUBBLE_MENU_CONFIG;
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 = DEFAULT_TABLE_MENU_CONFIG;
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 = DEFAULT_CELL_MENU_CONFIG;
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(TiptapI18nService);
5861
- this.editorCommandsService = inject(EditorCommandsService);
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: "tiptap-link",
5968
+ class: "ate-link",
5961
5969
  },
5962
5970
  }),
5963
- LinkClickBehavior,
5971
+ AteLinkClickBehavior,
5964
5972
  Highlight.configure({
5965
5973
  multicolor: true,
5966
5974
  HTMLAttributes: {
5967
- class: "tiptap-highlight",
5975
+ class: "ate-highlight",
5968
5976
  },
5969
5977
  }),
5970
- ResizableImage.configure({
5978
+ AteResizableImage.configure({
5971
5979
  inline: false,
5972
5980
  allowBase64: true,
5973
5981
  HTMLAttributes: {
5974
- class: "tiptap-image",
5982
+ class: "ate-image",
5975
5983
  },
5976
5984
  }),
5977
- UploadProgress.configure({
5985
+ AteUploadProgress.configure({
5978
5986
  isUploading: () => this.editorCommandsService.isUploading(),
5979
5987
  uploadProgress: () => this.editorCommandsService.uploadProgress(),
5980
5988
  uploadMessage: () => this.editorCommandsService.uploadMessage(),
5981
5989
  }),
5982
- TableExtension,
5983
- TiptapStateExtension.configure({
5990
+ AteTableExtension,
5991
+ AteTiptapStateExtension.configure({
5984
5992
  onUpdate: state => this.editorCommandsService.updateState(state),
5985
5993
  calculators: [
5986
- SelectionCalculator,
5987
- MarksCalculator,
5988
- TableCalculator,
5989
- ImageCalculator,
5990
- StructureCalculator,
5991
- DiscoveryCalculator,
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("tiptap-content")) {
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: [EditorCommandsService, ImageService, ColorPickerService, LinkService], viewQueries: [{ propertyName: "editorElement", first: true, predicate: ["editorElement"], descendants: true, isSignal: true }], hostDirectives: [{ directive: NoopValueAccessorDirective }], ngImport: i0, template: `
6195
- <div class="tiptap-editor">
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
- <tiptap-toolbar
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
- <tiptap-edit-toggle
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="tiptap-content"
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
- <tiptap-bubble-menu
6238
+ <ate-bubble-menu
6231
6239
  [editor]="editor()!"
6232
6240
  [config]="finalBubbleMenuConfig()"
6233
- [style.display]="editorFullyInitialized() ? 'block' : 'none'"></tiptap-bubble-menu>
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
- <tiptap-image-bubble-menu
6246
+ <ate-image-bubble-menu
6239
6247
  [editor]="editor()!"
6240
6248
  [config]="finalImageBubbleMenuConfig()"
6241
6249
  [imageUpload]="finalImageUploadConfig()"
6242
- [style.display]="editorFullyInitialized() ? 'block' : 'none'"></tiptap-image-bubble-menu>
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
- <tiptap-link-bubble-menu
6255
+ <ate-link-bubble-menu
6248
6256
  [editor]="editor()!"
6249
- [style.display]="editorFullyInitialized() ? 'block' : 'none'"></tiptap-link-bubble-menu>
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
- <tiptap-color-bubble-menu
6262
+ <ate-color-bubble-menu
6255
6263
  [editor]="editor()!"
6256
- [style.display]="editorFullyInitialized() ? 'block' : 'none'"></tiptap-color-bubble-menu>
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
- <tiptap-slash-commands
6269
+ <ate-slash-commands
6262
6270
  [editor]="editor()!"
6263
6271
  [config]="finalSlashCommandsConfig()"
6264
- [style.display]="editorFullyInitialized() ? 'block' : 'none'"></tiptap-slash-commands>
6272
+ [style.display]="editorFullyInitialized() ? 'block' : 'none'"></ate-slash-commands>
6265
6273
  }
6266
6274
 
6267
6275
  <!-- Table Menu -->
6268
6276
  @if (finalEditable() && finalShowTableBubbleMenu() && editor()) {
6269
- <tiptap-table-bubble-menu
6277
+ <ate-table-bubble-menu
6270
6278
  [editor]="editor()!"
6271
6279
  [config]="finalTableBubbleMenuConfig()"
6272
- [style.display]="editorFullyInitialized() ? 'block' : 'none'"></tiptap-table-bubble-menu>
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
- <tiptap-cell-bubble-menu
6285
+ <ate-cell-bubble-menu
6278
6286
  [editor]="editor()!"
6279
6287
  [config]="finalCellBubbleMenuConfig()"
6280
- [style.display]="editorFullyInitialized() ? 'block' : 'none'"></tiptap-cell-bubble-menu>
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: [NoopValueAccessorDirective], host: {
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
- TiptapToolbarComponent,
6327
- TiptapBubbleMenuComponent,
6328
- TiptapImageBubbleMenuComponent,
6329
- TiptapTableBubbleMenuComponent,
6330
- TiptapCellBubbleMenuComponent,
6331
- TiptapSlashCommandsComponent,
6332
- TiptapLinkBubbleMenuComponent,
6333
- TiptapColorBubbleMenuComponent,
6334
- TiptapEditToggleComponent,
6335
- ], providers: [EditorCommandsService, ImageService, ColorPickerService, LinkService], template: `
6336
- <div class="tiptap-editor">
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
- <tiptap-toolbar
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
- <tiptap-edit-toggle
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="tiptap-content"
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
- <tiptap-bubble-menu
6379
+ <ate-bubble-menu
6372
6380
  [editor]="editor()!"
6373
6381
  [config]="finalBubbleMenuConfig()"
6374
- [style.display]="editorFullyInitialized() ? 'block' : 'none'"></tiptap-bubble-menu>
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
- <tiptap-image-bubble-menu
6387
+ <ate-image-bubble-menu
6380
6388
  [editor]="editor()!"
6381
6389
  [config]="finalImageBubbleMenuConfig()"
6382
6390
  [imageUpload]="finalImageUploadConfig()"
6383
- [style.display]="editorFullyInitialized() ? 'block' : 'none'"></tiptap-image-bubble-menu>
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
- <tiptap-link-bubble-menu
6396
+ <ate-link-bubble-menu
6389
6397
  [editor]="editor()!"
6390
- [style.display]="editorFullyInitialized() ? 'block' : 'none'"></tiptap-link-bubble-menu>
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
- <tiptap-color-bubble-menu
6403
+ <ate-color-bubble-menu
6396
6404
  [editor]="editor()!"
6397
- [style.display]="editorFullyInitialized() ? 'block' : 'none'"></tiptap-color-bubble-menu>
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
- <tiptap-slash-commands
6410
+ <ate-slash-commands
6403
6411
  [editor]="editor()!"
6404
6412
  [config]="finalSlashCommandsConfig()"
6405
- [style.display]="editorFullyInitialized() ? 'block' : 'none'"></tiptap-slash-commands>
6413
+ [style.display]="editorFullyInitialized() ? 'block' : 'none'"></ate-slash-commands>
6406
6414
  }
6407
6415
 
6408
6416
  <!-- Table Menu -->
6409
6417
  @if (finalEditable() && finalShowTableBubbleMenu() && editor()) {
6410
- <tiptap-table-bubble-menu
6418
+ <ate-table-bubble-menu
6411
6419
  [editor]="editor()!"
6412
6420
  [config]="finalTableBubbleMenuConfig()"
6413
- [style.display]="editorFullyInitialized() ? 'block' : 'none'"></tiptap-table-bubble-menu>
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
- <tiptap-cell-bubble-menu
6426
+ <ate-cell-bubble-menu
6419
6427
  [editor]="editor()!"
6420
6428
  [config]="finalCellBubbleMenuConfig()"
6421
- [style.display]="editorFullyInitialized() ? 'block' : 'none'"></tiptap-cell-bubble-menu>
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, NoopValueAccessorDirective, SLASH_COMMAND_KEYS, SelectionCalculator, StructureCalculator, TableCalculator, TiptapI18nService, createDefaultSlashCommands, filterSlashCommands };
6582
+ export { ATE_BUBBLE_MENU_KEYS, ATE_CELL_BUBBLE_MENU_KEYS, ATE_DEFAULT_BUBBLE_MENU_CONFIG, ATE_DEFAULT_CELL_MENU_CONFIG, ATE_DEFAULT_IMAGE_BUBBLE_MENU_CONFIG, ATE_DEFAULT_SLASH_COMMANDS_CONFIG, ATE_DEFAULT_TABLE_MENU_CONFIG, ATE_DEFAULT_TOOLBAR_CONFIG, ATE_IMAGE_BUBBLE_MENU_KEYS, ATE_INITIAL_EDITOR_STATE, ATE_SLASH_COMMAND_KEYS, ATE_TABLE_BUBBLE_MENU_KEYS, ATE_TOOLBAR_KEYS, AngularTiptapEditorComponent, AteColorPickerService, AteDiscoveryCalculator, AteEditorCommandsService, AteI18nService, AteImageCalculator, AteImageService, AteLinkService, AteMarksCalculator, AteNoopValueAccessorDirective, AteSelectionCalculator, AteStructureCalculator, AteTableCalculator, AteColorPickerService as ColorPickerService, DEFAULT_BUBBLE_MENU_CONFIG, DEFAULT_CELL_MENU_CONFIG, DEFAULT_IMAGE_BUBBLE_MENU_CONFIG, DEFAULT_SLASH_COMMANDS_CONFIG, DEFAULT_TABLE_MENU_CONFIG, DEFAULT_TOOLBAR_CONFIG, DiscoveryCalculator, AteEditorCommandsService as EditorCommandsService, INITIAL_EDITOR_STATE, ImageCalculator, AteImageService as ImageService, AteLinkService as LinkService, MarksCalculator, SLASH_COMMAND_KEYS, SelectionCalculator, StructureCalculator, TableCalculator, AteI18nService as TiptapI18nService, createDefaultSlashCommands, filterSlashCommands };
6463
6583
  //# sourceMappingURL=flogeez-angular-tiptap-editor.mjs.map