@flogeez/angular-tiptap-editor 3.4.7 → 3.5.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.
Files changed (45) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +36 -1
  3. package/THIRD_PARTY_LICENSES +220 -0
  4. package/esm2022/lib/ate-editor.provider.mjs +32 -1
  5. package/esm2022/lib/components/bubble-menus/color/ate-color-bubble-menu.component.mjs +7 -7
  6. package/esm2022/lib/components/bubble-menus/image/ate-image-bubble-menu.component.mjs +21 -21
  7. package/esm2022/lib/components/bubble-menus/link/ate-link-bubble-menu.component.mjs +12 -11
  8. package/esm2022/lib/components/bubble-menus/table/ate-cell-bubble-menu.component.mjs +5 -5
  9. package/esm2022/lib/components/bubble-menus/table/ate-table-bubble-menu.component.mjs +19 -19
  10. package/esm2022/lib/components/bubble-menus/text/ate-bubble-menu.component.mjs +9 -9
  11. package/esm2022/lib/components/color-picker/ate-color-picker.component.mjs +8 -7
  12. package/esm2022/lib/components/edit-toggle/ate-edit-toggle.component.mjs +3 -3
  13. package/esm2022/lib/components/editor/angular-tiptap-editor.component.mjs +6 -3
  14. package/esm2022/lib/components/editor/ate-block-controls.component.mjs +9 -8
  15. package/esm2022/lib/components/slash-commands/ate-slash-commands.component.mjs +7 -6
  16. package/esm2022/lib/components/toolbar/ate-toolbar.component.mjs +37 -37
  17. package/esm2022/lib/components/ui/ate-button.component.mjs +11 -14
  18. package/esm2022/lib/components/ui/ate-icon.component.mjs +31 -0
  19. package/esm2022/lib/config/ate-slash-commands.config.mjs +11 -11
  20. package/esm2022/lib/extensions/ate-upload-progress.extension.mjs +12 -4
  21. package/esm2022/lib/icons/ate-default-icons.mjs +117 -0
  22. package/esm2022/lib/icons/ate-stroke-icons.mjs +61 -0
  23. package/esm2022/lib/models/ate-bubble-menu.model.mjs +1 -1
  24. package/esm2022/lib/models/ate-slash-command.model.mjs +1 -1
  25. package/esm2022/lib/models/ate-toolbar.model.mjs +1 -1
  26. package/esm2022/lib/services/ate-icon-registry.service.mjs +63 -0
  27. package/esm2022/public-api.mjs +6 -1
  28. package/fesm2022/flogeez-angular-tiptap-editor.mjs +454 -152
  29. package/fesm2022/flogeez-angular-tiptap-editor.mjs.map +1 -1
  30. package/lib/ate-editor.provider.d.ts +29 -0
  31. package/lib/components/bubble-menus/image/ate-image-bubble-menu.component.d.ts +2 -2
  32. package/lib/components/bubble-menus/text/ate-bubble-menu.component.d.ts +1 -1
  33. package/lib/components/color-picker/ate-color-picker.component.d.ts +1 -1
  34. package/lib/components/editor/angular-tiptap-editor.component.d.ts +4 -3
  35. package/lib/components/ui/ate-button.component.d.ts +3 -2
  36. package/lib/components/ui/ate-icon.component.d.ts +17 -0
  37. package/lib/extensions/ate-upload-progress.extension.d.ts +2 -0
  38. package/lib/icons/ate-default-icons.d.ts +65 -0
  39. package/lib/icons/ate-stroke-icons.d.ts +2 -0
  40. package/lib/models/ate-bubble-menu.model.d.ts +2 -1
  41. package/lib/models/ate-slash-command.model.d.ts +2 -1
  42. package/lib/models/ate-toolbar.model.d.ts +2 -1
  43. package/lib/services/ate-icon-registry.service.d.ts +52 -0
  44. package/package.json +6 -1
  45. package/public-api.d.ts +4 -0
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { computed, signal, Directive, ApplicationRef, EnvironmentInjector, createComponent, Injectable, input, booleanAttribute, inject, effect, untracked, Component, ChangeDetectionStrategy, HostListener, ElementRef, output, viewChild, InjectionToken, DestroyRef, Injector, makeEnvironmentProviders, APP_INITIALIZER } from '@angular/core';
2
+ import { InjectionToken, signal, inject, Injectable, computed, Directive, ApplicationRef, EnvironmentInjector, createComponent, input, booleanAttribute, effect, untracked, Component, ChangeDetectionStrategy, HostListener, ElementRef, ViewEncapsulation, output, viewChild, DestroyRef, Injector, makeEnvironmentProviders, APP_INITIALIZER } from '@angular/core';
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { Node as Node$1, mergeAttributes, nodeInputRule, Extension, getAttributes, Editor } from '@tiptap/core';
5
5
  import StarterKit from '@tiptap/starter-kit';
@@ -16,6 +16,7 @@ import { DecorationSet, Decoration } from '@tiptap/pm/view';
16
16
  import { Table, TableRow, TableHeader, TableCell } from '@tiptap/extension-table';
17
17
  import { Subscription, isObservable, firstValueFrom, concat, defer, of, tap } from 'rxjs';
18
18
  import tippy, { sticky } from 'tippy.js';
19
+ import { DomSanitizer } from '@angular/platform-browser';
19
20
  import { CommonModule } from '@angular/common';
20
21
  import * as i1 from '@angular/forms';
21
22
  import { FormsModule, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';
@@ -303,6 +304,183 @@ const AteResizableImage = Node$1.create({
303
304
  },
304
305
  });
305
306
 
307
+ // Generated by scripts/generate-ate-icons.mjs, do not edit by hand.
308
+ // Material Symbols Outlined (weight 400) by Google, Apache License 2.0 (see THIRD_PARTY_LICENSES).
309
+ /** ViewBox shared by every Material Symbols SVG */
310
+ const ATE_MATERIAL_SYMBOLS_VIEWBOX = "0 -960 960 960";
311
+ const ADD = "<path d=\"M440-440H200v-80h240v-240h80v240h240v80H520v240h-80v-240Z\"/>";
312
+ const ADD_COLUMN_LEFT = "<path d=\"M800-200v-560H560v560h240Zm-640 80v-160h80v80h240v-560H240v80h-80v-160h720v720H160Zm320-360Zm80 0h-80 80Zm0 0ZM160-360v-80H80v-80h80v-80h80v80h80v80h-80v80h-80Z\"/>";
313
+ const ADD_COLUMN_RIGHT = "<path d=\"M160-760v560h240v-560H160ZM80-120v-720h720v160h-80v-80H480v560h240v-80h80v160H80Zm400-360Zm-80 0h80-80Zm0 0Zm320 120v-80h-80v-80h80v-80h80v80h80v80h-80v80h-80Z\"/>";
314
+ const ADD_ROW_ABOVE = "<path d=\"M200-160h560v-240H200v240Zm640 80H120v-720h160v80h-80v240h560v-240h-80v-80h160v720ZM480-480Zm0 80v-80 80Zm0 0Zm-40-240v-80h-80v-80h80v-80h80v80h80v80h-80v80h-80Z\"/>";
315
+ const ADD_ROW_BELOW = "<path d=\"M200-560h560v-240H200v240Zm-80 400v-720h720v720H680v-80h80v-240H200v240h80v80H120Zm360-320Zm0-80v80-80Zm0 0ZM440-80v-80h-80v-80h80v-80h80v80h80v80h-80v80h-80Z\"/>";
316
+ const CELL_MERGE = "<path d=\"M120-120v-240h80v160h160v80H120Zm480 0v-80h160v-160h80v240H600ZM287-327l-57-56 57-57H80v-80h207l-57-57 57-56 153 153-153 153Zm386 0L520-480l153-153 57 56-57 57h207v80H673l57 57-57 56ZM120-600v-240h240v80H200v160h-80Zm640 0v-160H600v-80h240v240h-80Z\"/>";
317
+ const CHECK = "<path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"/>";
318
+ const CLOSE = "<path d=\"m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z\"/>";
319
+ const CODE = "<path d=\"M320-240 80-480l240-240 57 57-184 184 183 183-56 56Zm320 0-57-57 184-184-183-183 56-56 240 240-240 240Z\"/>";
320
+ const COLORIZE = "<path d=\"M120-120v-190l358-358-58-56 58-56 76 76 124-124q5-5 12.5-8t15.5-3q8 0 15 3t13 8l94 94q5 6 8 13t3 15q0 8-3 15.5t-8 12.5L705-555l76 78-57 57-56-58-358 358H120Zm80-80h78l332-334-76-76-334 332v78Zm447-410 96-96-37-37-96 96 37 37Zm0 0-37-37 37 37Z\"/>";
321
+ const CROP_SQUARE = "<path d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm0 0v-560 560Z\"/>";
322
+ const DELETE = "<path d=\"M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z\"/>";
323
+ const DELETE_FOREVER = "<path d=\"m376-300 104-104 104 104 56-56-104-104 104-104-56-56-104 104-104-104-56 56 104 104-104 104 56 56Zm-96 180q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520Zm-400 0v520-520Z\"/>";
324
+ const DOCK_TO_RIGHT = "<path d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm120-80v-560H200v560h120Zm80 0h360v-560H400v560Zm-80 0H200h120Z\"/>";
325
+ const DOWNLOAD = "<path d=\"M480-320 280-520l56-58 104 104v-326h80v326l104-104 56 58-200 200ZM240-160q-33 0-56.5-23.5T160-240v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-160H240Z\"/>";
326
+ const DRAG_INDICATOR = "<path d=\"M360-160q-33 0-56.5-23.5T280-240q0-33 23.5-56.5T360-320q33 0 56.5 23.5T440-240q0 33-23.5 56.5T360-160Zm240 0q-33 0-56.5-23.5T520-240q0-33 23.5-56.5T600-320q33 0 56.5 23.5T680-240q0 33-23.5 56.5T600-160ZM360-400q-33 0-56.5-23.5T280-480q0-33 23.5-56.5T360-560q33 0 56.5 23.5T440-480q0 33-23.5 56.5T360-400Zm240 0q-33 0-56.5-23.5T520-480q0-33 23.5-56.5T600-560q33 0 56.5 23.5T680-480q0 33-23.5 56.5T600-400ZM360-640q-33 0-56.5-23.5T280-720q0-33 23.5-56.5T360-800q33 0 56.5 23.5T440-720q0 33-23.5 56.5T360-640Zm240 0q-33 0-56.5-23.5T520-720q0-33 23.5-56.5T600-800q33 0 56.5 23.5T680-720q0 33-23.5 56.5T600-640Z\"/>";
327
+ const DRIVE_FILE_RENAME_OUTLINE = "<path d=\"m400-120 160-160h320v160H400Zm-240-80h57l391-391-57-57-391 391v57Zm-80 80v-170l528-527q12-11 26.5-17t30.5-6q16 0 31 6t26 18l55 56q12 11 17.5 26t5.5 30q0 16-5.5 30.5T777-647L250-120H80Zm640-584-56-56 56 56Zm-141 85-28-29 57 57-29-28Z\"/>";
328
+ const EDIT = "<path d=\"M200-200h57l391-391-57-57-391 391v57Zm-80 80v-170l528-527q12-11 26.5-17t30.5-6q16 0 31 6t26 18l55 56q12 11 17.5 26t5.5 30q0 16-5.5 30.5T817-647L290-120H120Zm640-584-56-56 56 56Zm-141 85-28-29 57 57-29-28Z\"/>";
329
+ const FORMAT_ALIGN_CENTER = "<path d=\"M120-120v-80h720v80H120Zm160-160v-80h400v80H280ZM120-440v-80h720v80H120Zm160-160v-80h400v80H280ZM120-760v-80h720v80H120Z\"/>";
330
+ const FORMAT_ALIGN_JUSTIFY = "<path d=\"M120-120v-80h720v80H120Zm0-160v-80h720v80H120Zm0-160v-80h720v80H120Zm0-160v-80h720v80H120Zm0-160v-80h720v80H120Z\"/>";
331
+ const FORMAT_ALIGN_LEFT = "<path d=\"M120-120v-80h720v80H120Zm0-160v-80h480v80H120Zm0-160v-80h720v80H120Zm0-160v-80h480v80H120Zm0-160v-80h720v80H120Z\"/>";
332
+ const FORMAT_ALIGN_RIGHT = "<path d=\"M120-760v-80h720v80H120Zm240 160v-80h480v80H360ZM120-440v-80h720v80H120Zm240 160v-80h480v80H360ZM120-120v-80h720v80H120Z\"/>";
333
+ const FORMAT_BOLD = "<path d=\"M272-200v-560h221q65 0 120 40t55 111q0 51-23 78.5T602-491q25 11 55.5 41t30.5 90q0 89-65 124.5T501-200H272Zm121-112h104q48 0 58.5-24.5T566-372q0-11-10.5-35.5T494-432H393v120Zm0-228h93q33 0 48-17t15-38q0-24-17-39t-44-15h-95v109Z\"/>";
334
+ const FORMAT_COLOR_FILL = "<path d=\"m247-904 57-56 343 343q23 23 23 57t-23 57L457-313q-23 23-57 23t-57-23L153-503q-23-23-23-57t23-57l190-191-96-96Zm153 153L209-560h382L400-751Zm303.5 447.5Q680-327 680-360q0-21 12.5-45t27.5-45q9-12 19-25t21-25q11 12 21 25t19 25q15 21 27.5 45t12.5 45q0 33-23.5 56.5T760-280q-33 0-56.5-23.5ZM80 0v-160h800V0H80Z\"/>";
335
+ const FORMAT_COLOR_RESET = "<path d=\"M800-436q0 36-8 69t-22 63l-62-60q6-17 9-34.5t3-37.5q0-47-17.5-89T650-600L480-768l-88 86-56-56 144-142 226 222q44 42 69 99.5T800-436Zm-8 380L668-180q-41 29-88 44.5T480-120q-133 0-226.5-92.5T160-436q0-51 16-98t48-90L56-792l56-56 736 736-56 56ZM480-200q36 0 68.5-10t61.5-28L280-566q-21 32-30.5 64t-9.5 66q0 98 70 167t170 69Zm-37-204Zm110-116Z\"/>";
336
+ const FORMAT_COLOR_TEXT = "<path d=\"M80 0v-160h800V0H80Zm140-280 210-560h100l210 560h-96l-50-144H368l-52 144h-96Zm176-224h168l-82-232h-4l-82 232Z\"/>";
337
+ const FORMAT_H1 = "<path d=\"M200-280v-400h80v160h160v-160h80v400h-80v-160H280v160h-80Zm480 0v-320h-80v-80h160v400h-80Z\"/>";
338
+ const FORMAT_H2 = "<path d=\"M120-280v-400h80v160h160v-160h80v400h-80v-160H200v160h-80Zm400 0v-160q0-33 23.5-56.5T600-520h160v-80H520v-80h240q33 0 56.5 23.5T840-600v80q0 33-23.5 56.5T760-440H600v80h240v80H520Z\"/>";
339
+ const FORMAT_H3 = "<path d=\"M120-280v-400h80v160h160v-160h80v400h-80v-160H200v160h-80Zm400 0v-80h240v-80H600v-80h160v-80H520v-80h240q33 0 56.5 23.5T840-600v240q0 33-23.5 56.5T760-280H520Z\"/>";
340
+ const FORMAT_ITALIC = "<path d=\"M200-200v-100h160l120-360H320v-100h400v100H580L460-300h140v100H200Z\"/>";
341
+ const FORMAT_LIST_BULLETED = "<path d=\"M360-200v-80h480v80H360Zm0-240v-80h480v80H360Zm0-240v-80h480v80H360ZM200-160q-33 0-56.5-23.5T120-240q0-33 23.5-56.5T200-320q33 0 56.5 23.5T280-240q0 33-23.5 56.5T200-160Zm0-240q-33 0-56.5-23.5T120-480q0-33 23.5-56.5T200-560q33 0 56.5 23.5T280-480q0 33-23.5 56.5T200-400Zm-56.5-263.5Q120-687 120-720t23.5-56.5Q167-800 200-800t56.5 23.5Q280-753 280-720t-23.5 56.5Q233-640 200-640t-56.5-23.5Z\"/>";
342
+ const FORMAT_LIST_NUMBERED = "<path d=\"M120-80v-60h100v-30h-60v-60h60v-30H120v-60h120q17 0 28.5 11.5T280-280v40q0 17-11.5 28.5T240-200q17 0 28.5 11.5T280-160v40q0 17-11.5 28.5T240-80H120Zm0-280v-110q0-17 11.5-28.5T160-510h60v-30H120v-60h120q17 0 28.5 11.5T280-560v70q0 17-11.5 28.5T240-450h-60v30h100v60H120Zm60-280v-180h-60v-60h120v240h-60Zm180 440v-80h480v80H360Zm0-240v-80h480v80H360Zm0-240v-80h480v80H360Z\"/>";
343
+ const FORMAT_QUOTE = "<path d=\"m228-240 92-160q-66 0-113-47t-47-113q0-66 47-113t113-47q66 0 113 47t47 113q0 23-5.5 42.5T458-480L320-240h-92Zm360 0 92-160q-66 0-113-47t-47-113q0-66 47-113t113-47q66 0 113 47t47 113q0 23-5.5 42.5T818-480L680-240h-92ZM362.5-517.5Q380-535 380-560t-17.5-42.5Q345-620 320-620t-42.5 17.5Q260-585 260-560t17.5 42.5Q295-500 320-500t42.5-17.5Zm360 0Q740-535 740-560t-17.5-42.5Q705-620 680-620t-42.5 17.5Q620-585 620-560t17.5 42.5Q655-500 680-500t42.5-17.5ZM680-560Zm-360 0Z\"/>";
344
+ const FORMAT_UNDERLINED = "<path d=\"M200-120v-80h560v80H200Zm123-223q-56-63-56-167v-330h103v336q0 56 28 91t82 35q54 0 82-35t28-91v-336h103v330q0 104-56 167t-157 63q-101 0-157-63Z\"/>";
345
+ const HIGHLIGHT = "<path d=\"m226-640-86-84 56-58 86 86-56 56Zm214-120v-120h80v120h-80Zm296 120-58-56 86-84 56 56-84 84ZM360-80v-200L240-400v-200h480v200L600-280v200H360Zm80-80h80v-153l120-120v-87H320v87l120 120v153Zm40-180Z\"/>";
346
+ const HORIZONTAL_RULE = "<path d=\"M160-440v-80h640v80H160Z\"/>";
347
+ const IMAGE = "<path d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm40-80h480L570-480 450-320l-90-120-120 160Zm-40 80v-560 560Z\"/>";
348
+ const LINK = "<path d=\"M440-280H280q-83 0-141.5-58.5T80-480q0-83 58.5-141.5T280-680h160v80H280q-50 0-85 35t-35 85q0 50 35 85t85 35h160v80ZM320-440v-80h320v80H320Zm200 160v-80h160q50 0 85-35t35-85q0-50-35-85t-85-35H520v-80h160q83 0 141.5 58.5T880-480q0 83-58.5 141.5T680-280H520Z\"/>";
349
+ const LINK_OFF = "<path d=\"m770-302-60-62q40-11 65-42.5t25-73.5q0-50-35-85t-85-35H520v-80h160q83 0 141.5 58.5T880-480q0 57-29.5 105T770-302ZM634-440l-80-80h86v80h-6ZM792-56 56-792l56-56 736 736-56 56ZM440-280H280q-83 0-141.5-58.5T80-480q0-69 42-123t108-71l74 74h-24q-50 0-85 35t-35 85q0 50 35 85t85 35h160v80ZM320-440v-80h65l79 80H320Z\"/>";
350
+ const OPEN_IN_NEW = "<path d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h280v80H200v560h560v-280h80v280q0 33-23.5 56.5T760-120H200Zm188-212-56-56 372-372H560v-80h280v280h-80v-144L388-332Z\"/>";
351
+ const PHOTO = "<path d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm40-80h480L570-480 450-320l-90-120-120 160Zm-40 80v-560 560Z\"/>";
352
+ const REDO = "<path d=\"M396-200q-97 0-166.5-63T160-420q0-94 69.5-157T396-640h252L544-744l56-56 200 200-200 200-56-56 104-104H396q-63 0-109.5 40T240-420q0 60 46.5 100T396-280h284v80H396Z\"/>";
353
+ const SPLIT_SCENE = "<path d=\"M200-160q-33 0-56.5-23.5T120-240v-480q0-33 23.5-56.5T200-800h160v80H200v480h160v80H200Zm240 80v-800h80v80h240q33 0 56.5 23.5T840-720v480q0 33-23.5 56.5T760-160H520v80h-80Zm80-160h240v-480H520v480Zm-320 0v-480 480Zm560 0v-480 480Z\"/>";
354
+ const STRIKETHROUGH_S = "<path d=\"M486-160q-76 0-135-45t-85-123l88-38q14 48 48.5 79t85.5 31q42 0 76-20t34-64q0-18-7-33t-19-27h112q5 14 7.5 28.5T694-340q0 86-61.5 133T486-160ZM80-480v-80h800v80H80Zm402-326q66 0 115.5 32.5T674-674l-88 39q-9-29-33.5-52T484-710q-41 0-68 18.5T386-640h-96q2-69 54.5-117.5T482-806Z\"/>";
355
+ const SUBSCRIPT = "<path d=\"M760-160v-80q0-17 11.5-28.5T800-280h80v-40H760v-40h120q17 0 28.5 11.5T920-320v40q0 17-11.5 28.5T880-240h-80v40h120v40H760Zm-525-80 185-291-172-269h106l124 200h4l123-200h107L539-531l186 291H618L482-457h-4L342-240H235Z\"/>";
356
+ const SUPERSCRIPT = "<path d=\"M760-600v-80q0-17 11.5-28.5T800-720h80v-40H760v-40h120q17 0 28.5 11.5T920-760v40q0 17-11.5 28.5T880-680h-80v40h120v40H760ZM235-160l185-291-172-269h106l124 200h4l123-200h107L539-451l186 291H618L482-377h-4L342-160H235Z\"/>";
357
+ const TABLE_VIEW = "<path d=\"M320-80q-33 0-56.5-23.5T240-160v-480q0-33 23.5-56.5T320-720h480q33 0 56.5 23.5T880-640v480q0 33-23.5 56.5T800-80H320Zm0-80h200v-120H320v120Zm280 0h200v-120H600v120ZM80-240v-560q0-33 23.5-56.5T160-880h560v80H160v560H80Zm240-120h200v-120H320v120Zm280 0h200v-120H600v120ZM320-560h480v-80H320v80Z\"/>";
358
+ const TERMINAL = "<path d=\"M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h640q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160Zm0-80h640v-400H160v400Zm140-40-56-56 103-104-104-104 57-56 160 160-160 160Zm180 0v-80h240v80H480Z\"/>";
359
+ const TOOLBAR = "<path d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-520h560v-120H200v120Zm560 80H200v360h560v-360Zm-560-80v80-80Zm0 0v-120 120Zm0 80v360-360Z\"/>";
360
+ const UNDO = "<path d=\"M280-200v-80h284q63 0 109.5-40T720-420q0-60-46.5-100T564-560H312l104 104-56 56-200-200 200-200 56 56-104 104h252q97 0 166.5 63T800-420q0 94-69.5 157T564-200H280Z\"/>";
361
+ const VISIBILITY = "<path d=\"M607.5-372.5Q660-425 660-500t-52.5-127.5Q555-680 480-680t-127.5 52.5Q300-575 300-500t52.5 127.5Q405-320 480-320t127.5-52.5Zm-204-51Q372-455 372-500t31.5-76.5Q435-608 480-608t76.5 31.5Q588-545 588-500t-31.5 76.5Q525-392 480-392t-76.5-31.5ZM214-281.5Q94-363 40-500q54-137 174-218.5T480-800q146 0 266 81.5T920-500q-54 137-174 218.5T480-200q-146 0-266-81.5ZM480-500Zm207.5 160.5Q782-399 832-500q-50-101-144.5-160.5T480-720q-113 0-207.5 59.5T128-500q50 101 144.5 160.5T480-280q113 0 207.5-59.5Z\"/>";
362
+ /** Inner SVG markup of the library icons, keyed by what they do */
363
+ const ATE_DEFAULT_ICONS = {
364
+ bold: FORMAT_BOLD,
365
+ italic: FORMAT_ITALIC,
366
+ underline: FORMAT_UNDERLINED,
367
+ strike: STRIKETHROUGH_S,
368
+ code: CODE,
369
+ superscript: SUPERSCRIPT,
370
+ subscript: SUBSCRIPT,
371
+ highlight: HIGHLIGHT,
372
+ link: LINK,
373
+ heading1: FORMAT_H1,
374
+ heading2: FORMAT_H2,
375
+ heading3: FORMAT_H3,
376
+ bulletList: FORMAT_LIST_BULLETED,
377
+ orderedList: FORMAT_LIST_NUMBERED,
378
+ blockquote: FORMAT_QUOTE,
379
+ codeBlock: TERMINAL,
380
+ horizontalRule: HORIZONTAL_RULE,
381
+ image: IMAGE,
382
+ table: TABLE_VIEW,
383
+ tableOfContents: FORMAT_LIST_BULLETED,
384
+ alignLeft: FORMAT_ALIGN_LEFT,
385
+ alignCenter: FORMAT_ALIGN_CENTER,
386
+ alignRight: FORMAT_ALIGN_RIGHT,
387
+ alignJustify: FORMAT_ALIGN_JUSTIFY,
388
+ textColor: FORMAT_COLOR_TEXT,
389
+ highlightColor: FORMAT_COLOR_FILL,
390
+ customColor: COLORIZE,
391
+ unsetColor: FORMAT_COLOR_RESET,
392
+ openLink: OPEN_IN_NEW,
393
+ unsetLink: LINK_OFF,
394
+ changeImage: DRIVE_FILE_RENAME_OUTLINE,
395
+ downloadImage: DOWNLOAD,
396
+ resizeSmall: CROP_SQUARE,
397
+ resizeMedium: CROP_SQUARE,
398
+ resizeLarge: CROP_SQUARE,
399
+ resizeOriginal: PHOTO,
400
+ deleteImage: DELETE,
401
+ imageUpload: IMAGE,
402
+ addRowBefore: ADD_ROW_ABOVE,
403
+ addRowAfter: ADD_ROW_BELOW,
404
+ deleteRow: DELETE,
405
+ addColumnBefore: ADD_COLUMN_LEFT,
406
+ addColumnAfter: ADD_COLUMN_RIGHT,
407
+ deleteColumn: DELETE,
408
+ toggleHeaderRow: TOOLBAR,
409
+ toggleHeaderColumn: DOCK_TO_RIGHT,
410
+ deleteTable: DELETE_FOREVER,
411
+ mergeCells: CELL_MERGE,
412
+ splitCell: SPLIT_SCENE,
413
+ undo: UNDO,
414
+ redo: REDO,
415
+ clearContent: DELETE,
416
+ blockAdd: ADD,
417
+ blockDrag: DRAG_INDICATOR,
418
+ edit: EDIT,
419
+ preview: VISIBILITY,
420
+ apply: CHECK,
421
+ clear: CLOSE,
422
+ };
423
+
424
+ /**
425
+ * Injection Token for the icons registered with `provideAteIcons()`.
426
+ */
427
+ const ATE_ICONS = new InjectionToken("ATE_ICONS");
428
+ /**
429
+ * A root-level registry resolving icon names to SVG markup.
430
+ *
431
+ * The library ships the SVG of every icon it uses, so the Material Symbols font is not required.
432
+ * Names that are not registered fall back to the Material Symbols font ligature: load the font
433
+ * to use any Material Symbols name in custom toolbar items, bubble menus or slash commands.
434
+ */
435
+ class AteIconRegistry {
436
+ constructor() {
437
+ this._icons = signal(Object.assign({}, ATE_DEFAULT_ICONS, ...(inject(ATE_ICONS, { optional: true }) ?? [])));
438
+ }
439
+ /**
440
+ * Register or override icons at runtime.
441
+ */
442
+ register(icons) {
443
+ this._icons.update(current => ({ ...current, ...icons }));
444
+ }
445
+ /**
446
+ * Full SVG markup of an icon, or null when it is not registered.
447
+ * Reactive when called inside a computed or an effect.
448
+ */
449
+ svg(name) {
450
+ const icon = this._icons()[name];
451
+ if (!icon) {
452
+ return null;
453
+ }
454
+ return icon.trimStart().startsWith("<svg")
455
+ ? icon
456
+ : `<svg xmlns="http://www.w3.org/2000/svg" viewBox="${ATE_MATERIAL_SYMBOLS_VIEWBOX}" fill="currentColor">${icon}</svg>`;
457
+ }
458
+ /**
459
+ * Markup drawing an icon: its SVG, or the Material Symbols font ligature when it is not registered.
460
+ */
461
+ markup(name) {
462
+ return this.svg(name) ?? `<span class="material-symbols-outlined">${escapeHtml(name)}</span>`;
463
+ }
464
+ /**
465
+ * HTML of an icon for contexts outside Angular templates (ProseMirror widgets, raw HTML).
466
+ */
467
+ html(name, className = "") {
468
+ const classes = escapeHtml(`ate-icon ${className}`.trim());
469
+ return `<span class="${classes}" aria-hidden="true">${this.markup(name)}</span>`;
470
+ }
471
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteIconRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
472
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteIconRegistry, providedIn: "root" }); }
473
+ }
474
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteIconRegistry, decorators: [{
475
+ type: Injectable,
476
+ args: [{
477
+ providedIn: "root",
478
+ }]
479
+ }] });
480
+ function escapeHtml(value) {
481
+ return value.replace(/[&<>"']/g, char => ({ "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" })[char]);
482
+ }
483
+
306
484
  const AteUploadProgress = Extension.create({
307
485
  name: "uploadProgress",
308
486
  addOptions() {
@@ -310,6 +488,7 @@ const AteUploadProgress = Extension.create({
310
488
  isUploading: () => false,
311
489
  uploadProgress: () => 0,
312
490
  uploadMessage: () => "",
491
+ iconHtml: () => "",
313
492
  };
314
493
  },
315
494
  addProseMirrorPlugins() {
@@ -339,7 +518,7 @@ const AteUploadProgress = Extension.create({
339
518
  <div class="upload-skeleton">
340
519
  <div class="upload-content">
341
520
  <div class="upload-icon">
342
- <span class="material-symbols-outlined spinning">image</span>
521
+ ${options.iconHtml()}
343
522
  </div>
344
523
  <div class="upload-info">
345
524
  <div class="upload-message">${uploadMessage}</div>
@@ -393,9 +572,16 @@ const AteUploadProgress = Extension.create({
393
572
  border-radius: 50%;
394
573
  color: var(--ate-primary);
395
574
  }
396
- .upload-icon .material-symbols-outlined {
575
+ .upload-icon .ate-icon {
576
+ display: inline-flex;
577
+ width: 1em;
578
+ height: 1em;
397
579
  font-size: 24px;
398
580
  }
581
+ .upload-icon .ate-icon > svg {
582
+ width: 100%;
583
+ height: 100%;
584
+ }
399
585
  .spinning {
400
586
  animation: spin 1s linear infinite;
401
587
  }
@@ -458,7 +644,7 @@ const AteUploadProgress = Extension.create({
458
644
  <div class="upload-skeleton">
459
645
  <div class="upload-content">
460
646
  <div class="upload-icon">
461
- <span class="material-symbols-outlined spinning">image</span>
647
+ ${options.iconHtml()}
462
648
  </div>
463
649
  <div class="upload-info">
464
650
  <div class="upload-message">${uploadMessage}</div>
@@ -2782,6 +2968,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
2782
2968
  }]
2783
2969
  }], ctorParameters: () => [] });
2784
2970
 
2971
+ /**
2972
+ * Renders an icon from the AteIconRegistry as inline SVG,
2973
+ * or with the Material Symbols font when the name is not registered.
2974
+ * Its size follows the `font-size` (1em). Library icons are filled with `currentColor`;
2975
+ * a full custom `<svg>` keeps its own `fill` and `stroke` attributes.
2976
+ */
2977
+ class AteIconComponent {
2978
+ constructor() {
2979
+ this.registry = inject(AteIconRegistry);
2980
+ this.sanitizer = inject(DomSanitizer);
2981
+ /** Library icon, icon registered with provideAteIcons, or Material Symbols name (font) */
2982
+ this.name = input.required();
2983
+ // Icons come from the library or from the developer, never from user content
2984
+ this.content = computed(() => this.sanitizer.bypassSecurityTrustHtml(this.registry.markup(this.name())));
2985
+ }
2986
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2987
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: AteIconComponent, isStandalone: true, selector: "ate-icon", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "aria-hidden": "true" }, properties: { "innerHTML": "content()" }, classAttribute: "ate-icon" }, ngImport: i0, template: "", isInline: true, styles: [".ate-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1em;height:1em;font-size:24px;line-height:1}.ate-icon>svg{display:block;width:100%;height:100%}.ate-icon>.material-symbols-outlined{font-size:inherit}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2988
+ }
2989
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteIconComponent, decorators: [{
2990
+ type: Component,
2991
+ args: [{ selector: "ate-icon", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
2992
+ class: "ate-icon",
2993
+ "aria-hidden": "true",
2994
+ "[innerHTML]": "content()",
2995
+ }, template: "", styles: [".ate-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1em;height:1em;font-size:24px;line-height:1}.ate-icon>svg{display:block;width:100%;height:100%}.ate-icon>.material-symbols-outlined{font-size:inherit}\n"] }]
2996
+ }] });
2997
+
2785
2998
  class AteButtonComponent {
2786
2999
  constructor() {
2787
3000
  // Inputs
@@ -2822,21 +3035,19 @@ class AteButtonComponent {
2822
3035
  (click)="buttonClick.emit($event)"
2823
3036
  type="button">
2824
3037
  @if (icon()) {
2825
- <span
2826
- class="material-symbols-outlined"
3038
+ <ate-icon
3039
+ [name]="icon()"
2827
3040
  [class.icon-small]="iconSize() === 'small'"
2828
3041
  [class.icon-medium]="iconSize() === 'medium'"
2829
- [class.icon-large]="iconSize() === 'large'"
2830
- >{{ icon() }}</span
2831
- >
3042
+ [class.icon-large]="iconSize() === 'large'" />
2832
3043
  }
2833
3044
  <ng-content></ng-content>
2834
3045
  </button>
2835
- `, 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"], dependencies: [{ kind: "directive", type: AteTooltipDirective, selector: "[ateTooltip]", inputs: ["ateTooltip", "ateTooltipPlacement", "ateTooltipDelay", "ateTooltipDisabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3046
+ `, 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 .ate-icon{font-size:20px;position:relative;z-index:1}.ate-button .ate-icon.icon-small{font-size:16px}.ate-button .ate-icon.icon-medium{font-size:20px}.ate-button .ate-icon.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 .ate-icon{font-size:18px}.ate-button.text-button{padding:0 8px;font-size:13px}}\n"], dependencies: [{ kind: "directive", type: AteTooltipDirective, selector: "[ateTooltip]", inputs: ["ateTooltip", "ateTooltipPlacement", "ateTooltipDelay", "ateTooltipDisabled"] }, { kind: "component", type: AteIconComponent, selector: "ate-icon", inputs: ["name"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2836
3047
  }
2837
3048
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteButtonComponent, decorators: [{
2838
3049
  type: Component,
2839
- args: [{ selector: "ate-button", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AteTooltipDirective], template: `
3050
+ args: [{ selector: "ate-button", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AteTooltipDirective, AteIconComponent], template: `
2840
3051
  <button
2841
3052
  class="ate-button"
2842
3053
  [class.is-active]="active()"
@@ -2857,17 +3068,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
2857
3068
  (click)="buttonClick.emit($event)"
2858
3069
  type="button">
2859
3070
  @if (icon()) {
2860
- <span
2861
- class="material-symbols-outlined"
3071
+ <ate-icon
3072
+ [name]="icon()"
2862
3073
  [class.icon-small]="iconSize() === 'small'"
2863
3074
  [class.icon-medium]="iconSize() === 'medium'"
2864
- [class.icon-large]="iconSize() === 'large'"
2865
- >{{ icon() }}</span
2866
- >
3075
+ [class.icon-large]="iconSize() === 'large'" />
2867
3076
  }
2868
3077
  <ng-content></ng-content>
2869
3078
  </button>
2870
- `, 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"] }]
3079
+ `, 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 .ate-icon{font-size:20px;position:relative;z-index:1}.ate-button .ate-icon.icon-small{font-size:16px}.ate-button .ate-icon.icon-medium{font-size:20px}.ate-button .ate-icon.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 .ate-icon{font-size:18px}.ate-button.text-button{padding:0 8px;font-size:13px}}\n"] }]
2871
3080
  }] });
2872
3081
 
2873
3082
  class AteSeparatorComponent {
@@ -4454,7 +4663,7 @@ class AteColorPickerComponent {
4454
4663
  return (this.mode() === "text" ? marks.color : marks.background) !== null;
4455
4664
  });
4456
4665
  this.buttonIcon = computed(() => {
4457
- return this.mode() === "text" ? "format_color_text" : "format_color_fill";
4666
+ return this.mode() === "text" ? "textColor" : "highlightColor";
4458
4667
  });
4459
4668
  this.buttonBgColor = computed(() => {
4460
4669
  const color = this.currentColor();
@@ -4513,16 +4722,16 @@ class AteColorPickerComponent {
4513
4722
  [ateTooltip]="t().clear"
4514
4723
  [attr.aria-label]="t().clear"
4515
4724
  (click)="onClear($event)">
4516
- <span class="material-symbols-outlined">close</span>
4725
+ <ate-icon name="clear" />
4517
4726
  </button>
4518
4727
  }
4519
4728
  </div>
4520
4729
  </div>
4521
- `, 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 }, { kind: "directive", type: AteTooltipDirective, selector: "[ateTooltip]", inputs: ["ateTooltip", "ateTooltipPlacement", "ateTooltipDelay", "ateTooltipDisabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4730
+ `, 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 .ate-icon{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 }, { kind: "directive", type: AteTooltipDirective, selector: "[ateTooltip]", inputs: ["ateTooltip", "ateTooltipPlacement", "ateTooltipDelay", "ateTooltipDisabled"] }, { kind: "component", type: AteIconComponent, selector: "ate-icon", inputs: ["name"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4522
4731
  }
4523
4732
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteColorPickerComponent, decorators: [{
4524
4733
  type: Component,
4525
- args: [{ selector: "ate-color-picker", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AteButtonComponent, CommonModule, AteTooltipDirective], template: `
4734
+ args: [{ selector: "ate-color-picker", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AteButtonComponent, CommonModule, AteTooltipDirective, AteIconComponent], template: `
4526
4735
  <div class="color-picker-wrapper">
4527
4736
  <div class="color-picker-container" [class.is-highlight]="mode() === 'highlight'">
4528
4737
  <ate-button
@@ -4540,12 +4749,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4540
4749
  [ateTooltip]="t().clear"
4541
4750
  [attr.aria-label]="t().clear"
4542
4751
  (click)="onClear($event)">
4543
- <span class="material-symbols-outlined">close</span>
4752
+ <ate-icon name="clear" />
4544
4753
  </button>
4545
4754
  }
4546
4755
  </div>
4547
4756
  </div>
4548
- `, 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"] }]
4757
+ `, 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 .ate-icon{font-size:10px;line-height:1}\n"] }]
4549
4758
  }] });
4550
4759
 
4551
4760
  class AteToolbarComponent {
@@ -4571,7 +4780,7 @@ class AteToolbarComponent {
4571
4780
  <div class="ate-toolbar" [class.floating]="floating()">
4572
4781
  @if (config().bold) {
4573
4782
  <ate-button
4574
- icon="format_bold"
4783
+ icon="bold"
4575
4784
  [title]="t().bold"
4576
4785
  [active]="state().marks.bold"
4577
4786
  [disabled]="!state().can.toggleBold"
@@ -4579,7 +4788,7 @@ class AteToolbarComponent {
4579
4788
  }
4580
4789
  @if (config().italic) {
4581
4790
  <ate-button
4582
- icon="format_italic"
4791
+ icon="italic"
4583
4792
  [title]="t().italic"
4584
4793
  [active]="state().marks.italic"
4585
4794
  [disabled]="!state().can.toggleItalic"
@@ -4587,7 +4796,7 @@ class AteToolbarComponent {
4587
4796
  }
4588
4797
  @if (config().underline) {
4589
4798
  <ate-button
4590
- icon="format_underlined"
4799
+ icon="underline"
4591
4800
  [title]="t().underline"
4592
4801
  [active]="state().marks.underline"
4593
4802
  [disabled]="!state().can.toggleUnderline"
@@ -4595,7 +4804,7 @@ class AteToolbarComponent {
4595
4804
  }
4596
4805
  @if (config().strike) {
4597
4806
  <ate-button
4598
- icon="strikethrough_s"
4807
+ icon="strike"
4599
4808
  [title]="t().strike"
4600
4809
  [active]="state().marks.strike"
4601
4810
  [disabled]="!state().can.toggleStrike"
@@ -4611,7 +4820,7 @@ class AteToolbarComponent {
4611
4820
  }
4612
4821
  @if (config().codeBlock) {
4613
4822
  <ate-button
4614
- icon="terminal"
4823
+ icon="codeBlock"
4615
4824
  [title]="t().codeBlock"
4616
4825
  [active]="state().nodes.isCodeBlock"
4617
4826
  [disabled]="!state().can.toggleCodeBlock"
@@ -4656,7 +4865,7 @@ class AteToolbarComponent {
4656
4865
  }
4657
4866
  @if (config().heading1) {
4658
4867
  <ate-button
4659
- icon="format_h1"
4868
+ icon="heading1"
4660
4869
  [title]="t().heading1"
4661
4870
  [active]="state().nodes.h1"
4662
4871
  [disabled]="!state().can.toggleHeading1"
@@ -4664,7 +4873,7 @@ class AteToolbarComponent {
4664
4873
  }
4665
4874
  @if (config().heading2) {
4666
4875
  <ate-button
4667
- icon="format_h2"
4876
+ icon="heading2"
4668
4877
  [title]="t().heading2"
4669
4878
  [active]="state().nodes.h2"
4670
4879
  [disabled]="!state().can.toggleHeading2"
@@ -4672,7 +4881,7 @@ class AteToolbarComponent {
4672
4881
  }
4673
4882
  @if (config().heading3) {
4674
4883
  <ate-button
4675
- icon="format_h3"
4884
+ icon="heading3"
4676
4885
  [title]="t().heading3"
4677
4886
  [active]="state().nodes.h3"
4678
4887
  [disabled]="!state().can.toggleHeading3"
@@ -4685,7 +4894,7 @@ class AteToolbarComponent {
4685
4894
  }
4686
4895
  @if (config().bulletList) {
4687
4896
  <ate-button
4688
- icon="format_list_bulleted"
4897
+ icon="bulletList"
4689
4898
  [title]="t().bulletList"
4690
4899
  [active]="state().nodes.isBulletList"
4691
4900
  [disabled]="!state().can.toggleBulletList"
@@ -4693,7 +4902,7 @@ class AteToolbarComponent {
4693
4902
  }
4694
4903
  @if (config().orderedList) {
4695
4904
  <ate-button
4696
- icon="format_list_numbered"
4905
+ icon="orderedList"
4697
4906
  [title]="t().orderedList"
4698
4907
  [active]="state().nodes.isOrderedList"
4699
4908
  [disabled]="!state().can.toggleOrderedList"
@@ -4701,7 +4910,7 @@ class AteToolbarComponent {
4701
4910
  }
4702
4911
  @if (config().blockquote) {
4703
4912
  <ate-button
4704
- icon="format_quote"
4913
+ icon="blockquote"
4705
4914
  [title]="t().blockquote"
4706
4915
  [active]="state().nodes.isBlockquote"
4707
4916
  [disabled]="!state().can.toggleBlockquote"
@@ -4715,7 +4924,7 @@ class AteToolbarComponent {
4715
4924
  }
4716
4925
  @if (config().alignLeft) {
4717
4926
  <ate-button
4718
- icon="format_align_left"
4927
+ icon="alignLeft"
4719
4928
  [title]="t().alignLeft"
4720
4929
  [active]="state().nodes.alignLeft"
4721
4930
  [disabled]="!state().can.setTextAlignLeft"
@@ -4723,7 +4932,7 @@ class AteToolbarComponent {
4723
4932
  }
4724
4933
  @if (config().alignCenter) {
4725
4934
  <ate-button
4726
- icon="format_align_center"
4935
+ icon="alignCenter"
4727
4936
  [title]="t().alignCenter"
4728
4937
  [active]="state().nodes.alignCenter"
4729
4938
  [disabled]="!state().can.setTextAlignCenter"
@@ -4731,7 +4940,7 @@ class AteToolbarComponent {
4731
4940
  }
4732
4941
  @if (config().alignRight) {
4733
4942
  <ate-button
4734
- icon="format_align_right"
4943
+ icon="alignRight"
4735
4944
  [title]="t().alignRight"
4736
4945
  [active]="state().nodes.alignRight"
4737
4946
  [disabled]="!state().can.setTextAlignRight"
@@ -4739,7 +4948,7 @@ class AteToolbarComponent {
4739
4948
  }
4740
4949
  @if (config().alignJustify) {
4741
4950
  <ate-button
4742
- icon="format_align_justify"
4951
+ icon="alignJustify"
4743
4952
  [title]="t().alignJustify"
4744
4953
  [active]="state().nodes.alignJustify"
4745
4954
  [disabled]="!state().can.setTextAlignJustify"
@@ -4758,14 +4967,14 @@ class AteToolbarComponent {
4758
4967
  }
4759
4968
  @if (config().horizontalRule) {
4760
4969
  <ate-button
4761
- icon="horizontal_rule"
4970
+ icon="horizontalRule"
4762
4971
  [title]="t().horizontalRule"
4763
4972
  [disabled]="!state().can.insertHorizontalRule"
4764
4973
  (buttonClick)="onCommand('insertHorizontalRule')" />
4765
4974
  }
4766
4975
  @if (config().table) {
4767
4976
  <ate-button
4768
- icon="table_view"
4977
+ icon="table"
4769
4978
  [title]="t().table"
4770
4979
  [disabled]="!state().can.insertTable"
4771
4980
  (buttonClick)="onCommand('insertTable')" />
@@ -4802,7 +5011,7 @@ class AteToolbarComponent {
4802
5011
  }
4803
5012
  @if (config().clear) {
4804
5013
  <ate-button
4805
- icon="delete"
5014
+ icon="clearContent"
4806
5015
  [title]="t().clear"
4807
5016
  [disabled]="!state().isEditable"
4808
5017
  (buttonClick)="onCommand('clearContent')" />
@@ -4824,7 +5033,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4824
5033
  <div class="ate-toolbar" [class.floating]="floating()">
4825
5034
  @if (config().bold) {
4826
5035
  <ate-button
4827
- icon="format_bold"
5036
+ icon="bold"
4828
5037
  [title]="t().bold"
4829
5038
  [active]="state().marks.bold"
4830
5039
  [disabled]="!state().can.toggleBold"
@@ -4832,7 +5041,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4832
5041
  }
4833
5042
  @if (config().italic) {
4834
5043
  <ate-button
4835
- icon="format_italic"
5044
+ icon="italic"
4836
5045
  [title]="t().italic"
4837
5046
  [active]="state().marks.italic"
4838
5047
  [disabled]="!state().can.toggleItalic"
@@ -4840,7 +5049,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4840
5049
  }
4841
5050
  @if (config().underline) {
4842
5051
  <ate-button
4843
- icon="format_underlined"
5052
+ icon="underline"
4844
5053
  [title]="t().underline"
4845
5054
  [active]="state().marks.underline"
4846
5055
  [disabled]="!state().can.toggleUnderline"
@@ -4848,7 +5057,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4848
5057
  }
4849
5058
  @if (config().strike) {
4850
5059
  <ate-button
4851
- icon="strikethrough_s"
5060
+ icon="strike"
4852
5061
  [title]="t().strike"
4853
5062
  [active]="state().marks.strike"
4854
5063
  [disabled]="!state().can.toggleStrike"
@@ -4864,7 +5073,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4864
5073
  }
4865
5074
  @if (config().codeBlock) {
4866
5075
  <ate-button
4867
- icon="terminal"
5076
+ icon="codeBlock"
4868
5077
  [title]="t().codeBlock"
4869
5078
  [active]="state().nodes.isCodeBlock"
4870
5079
  [disabled]="!state().can.toggleCodeBlock"
@@ -4909,7 +5118,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4909
5118
  }
4910
5119
  @if (config().heading1) {
4911
5120
  <ate-button
4912
- icon="format_h1"
5121
+ icon="heading1"
4913
5122
  [title]="t().heading1"
4914
5123
  [active]="state().nodes.h1"
4915
5124
  [disabled]="!state().can.toggleHeading1"
@@ -4917,7 +5126,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4917
5126
  }
4918
5127
  @if (config().heading2) {
4919
5128
  <ate-button
4920
- icon="format_h2"
5129
+ icon="heading2"
4921
5130
  [title]="t().heading2"
4922
5131
  [active]="state().nodes.h2"
4923
5132
  [disabled]="!state().can.toggleHeading2"
@@ -4925,7 +5134,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4925
5134
  }
4926
5135
  @if (config().heading3) {
4927
5136
  <ate-button
4928
- icon="format_h3"
5137
+ icon="heading3"
4929
5138
  [title]="t().heading3"
4930
5139
  [active]="state().nodes.h3"
4931
5140
  [disabled]="!state().can.toggleHeading3"
@@ -4938,7 +5147,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4938
5147
  }
4939
5148
  @if (config().bulletList) {
4940
5149
  <ate-button
4941
- icon="format_list_bulleted"
5150
+ icon="bulletList"
4942
5151
  [title]="t().bulletList"
4943
5152
  [active]="state().nodes.isBulletList"
4944
5153
  [disabled]="!state().can.toggleBulletList"
@@ -4946,7 +5155,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4946
5155
  }
4947
5156
  @if (config().orderedList) {
4948
5157
  <ate-button
4949
- icon="format_list_numbered"
5158
+ icon="orderedList"
4950
5159
  [title]="t().orderedList"
4951
5160
  [active]="state().nodes.isOrderedList"
4952
5161
  [disabled]="!state().can.toggleOrderedList"
@@ -4954,7 +5163,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4954
5163
  }
4955
5164
  @if (config().blockquote) {
4956
5165
  <ate-button
4957
- icon="format_quote"
5166
+ icon="blockquote"
4958
5167
  [title]="t().blockquote"
4959
5168
  [active]="state().nodes.isBlockquote"
4960
5169
  [disabled]="!state().can.toggleBlockquote"
@@ -4968,7 +5177,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4968
5177
  }
4969
5178
  @if (config().alignLeft) {
4970
5179
  <ate-button
4971
- icon="format_align_left"
5180
+ icon="alignLeft"
4972
5181
  [title]="t().alignLeft"
4973
5182
  [active]="state().nodes.alignLeft"
4974
5183
  [disabled]="!state().can.setTextAlignLeft"
@@ -4976,7 +5185,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4976
5185
  }
4977
5186
  @if (config().alignCenter) {
4978
5187
  <ate-button
4979
- icon="format_align_center"
5188
+ icon="alignCenter"
4980
5189
  [title]="t().alignCenter"
4981
5190
  [active]="state().nodes.alignCenter"
4982
5191
  [disabled]="!state().can.setTextAlignCenter"
@@ -4984,7 +5193,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4984
5193
  }
4985
5194
  @if (config().alignRight) {
4986
5195
  <ate-button
4987
- icon="format_align_right"
5196
+ icon="alignRight"
4988
5197
  [title]="t().alignRight"
4989
5198
  [active]="state().nodes.alignRight"
4990
5199
  [disabled]="!state().can.setTextAlignRight"
@@ -4992,7 +5201,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4992
5201
  }
4993
5202
  @if (config().alignJustify) {
4994
5203
  <ate-button
4995
- icon="format_align_justify"
5204
+ icon="alignJustify"
4996
5205
  [title]="t().alignJustify"
4997
5206
  [active]="state().nodes.alignJustify"
4998
5207
  [disabled]="!state().can.setTextAlignJustify"
@@ -5011,14 +5220,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
5011
5220
  }
5012
5221
  @if (config().horizontalRule) {
5013
5222
  <ate-button
5014
- icon="horizontal_rule"
5223
+ icon="horizontalRule"
5015
5224
  [title]="t().horizontalRule"
5016
5225
  [disabled]="!state().can.insertHorizontalRule"
5017
5226
  (buttonClick)="onCommand('insertHorizontalRule')" />
5018
5227
  }
5019
5228
  @if (config().table) {
5020
5229
  <ate-button
5021
- icon="table_view"
5230
+ icon="table"
5022
5231
  [title]="t().table"
5023
5232
  [disabled]="!state().can.insertTable"
5024
5233
  (buttonClick)="onCommand('insertTable')" />
@@ -5055,7 +5264,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
5055
5264
  }
5056
5265
  @if (config().clear) {
5057
5266
  <ate-button
5058
- icon="delete"
5267
+ icon="clearContent"
5059
5268
  [title]="t().clear"
5060
5269
  [disabled]="!state().isEditable"
5061
5270
  (buttonClick)="onCommand('clearContent')" />
@@ -5470,7 +5679,7 @@ class AteBubbleMenuComponent extends AteBaseBubbleMenu {
5470
5679
  <div #menuRef class="bubble-menu" (mousedown)="$event.preventDefault()">
5471
5680
  @if (bubbleMenuConfig().bold) {
5472
5681
  <ate-button
5473
- icon="format_bold"
5682
+ icon="bold"
5474
5683
  [title]="t().bold"
5475
5684
  [active]="state().marks.bold"
5476
5685
  [disabled]="!state().can.toggleBold"
@@ -5478,7 +5687,7 @@ class AteBubbleMenuComponent extends AteBaseBubbleMenu {
5478
5687
  }
5479
5688
  @if (bubbleMenuConfig().italic) {
5480
5689
  <ate-button
5481
- icon="format_italic"
5690
+ icon="italic"
5482
5691
  [title]="t().italic"
5483
5692
  [active]="state().marks.italic"
5484
5693
  [disabled]="!state().can.toggleItalic"
@@ -5486,7 +5695,7 @@ class AteBubbleMenuComponent extends AteBaseBubbleMenu {
5486
5695
  }
5487
5696
  @if (bubbleMenuConfig().underline) {
5488
5697
  <ate-button
5489
- icon="format_underlined"
5698
+ icon="underline"
5490
5699
  [title]="t().underline"
5491
5700
  [active]="state().marks.underline"
5492
5701
  [disabled]="!state().can.toggleUnderline"
@@ -5494,7 +5703,7 @@ class AteBubbleMenuComponent extends AteBaseBubbleMenu {
5494
5703
  }
5495
5704
  @if (bubbleMenuConfig().strike) {
5496
5705
  <ate-button
5497
- icon="strikethrough_s"
5706
+ icon="strike"
5498
5707
  [title]="t().strike"
5499
5708
  [active]="state().marks.strike"
5500
5709
  [disabled]="!state().can.toggleStrike"
@@ -5576,7 +5785,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
5576
5785
  <div #menuRef class="bubble-menu" (mousedown)="$event.preventDefault()">
5577
5786
  @if (bubbleMenuConfig().bold) {
5578
5787
  <ate-button
5579
- icon="format_bold"
5788
+ icon="bold"
5580
5789
  [title]="t().bold"
5581
5790
  [active]="state().marks.bold"
5582
5791
  [disabled]="!state().can.toggleBold"
@@ -5584,7 +5793,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
5584
5793
  }
5585
5794
  @if (bubbleMenuConfig().italic) {
5586
5795
  <ate-button
5587
- icon="format_italic"
5796
+ icon="italic"
5588
5797
  [title]="t().italic"
5589
5798
  [active]="state().marks.italic"
5590
5799
  [disabled]="!state().can.toggleItalic"
@@ -5592,7 +5801,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
5592
5801
  }
5593
5802
  @if (bubbleMenuConfig().underline) {
5594
5803
  <ate-button
5595
- icon="format_underlined"
5804
+ icon="underline"
5596
5805
  [title]="t().underline"
5597
5806
  [active]="state().marks.underline"
5598
5807
  [disabled]="!state().can.toggleUnderline"
@@ -5600,7 +5809,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
5600
5809
  }
5601
5810
  @if (bubbleMenuConfig().strike) {
5602
5811
  <ate-button
5603
- icon="strikethrough_s"
5812
+ icon="strike"
5604
5813
  [title]="t().strike"
5605
5814
  [active]="state().marks.strike"
5606
5815
  [disabled]="!state().can.toggleStrike"
@@ -5850,13 +6059,13 @@ class AteImageBubbleMenuComponent extends AteBaseBubbleMenu {
5850
6059
  <div #menuRef class="bubble-menu" (mousedown)="$event.preventDefault()">
5851
6060
  @if (imageBubbleMenuConfig().changeImage && editor().isEditable) {
5852
6061
  <ate-button
5853
- icon="drive_file_rename_outline"
6062
+ icon="changeImage"
5854
6063
  [title]="t().changeImage"
5855
6064
  (buttonClick)="onCommand('changeImage', $event)"></ate-button>
5856
6065
  }
5857
6066
  @if (imageBubbleMenuConfig().downloadImage) {
5858
6067
  <ate-button
5859
- icon="download"
6068
+ icon="downloadImage"
5860
6069
  [title]="t().downloadImage"
5861
6070
  (buttonClick)="onCommand('downloadImage', $event)"></ate-button>
5862
6071
  }
@@ -5865,28 +6074,28 @@ class AteImageBubbleMenuComponent extends AteBaseBubbleMenu {
5865
6074
  }
5866
6075
  @if (imageBubbleMenuConfig().resizeSmall && editor().isEditable) {
5867
6076
  <ate-button
5868
- icon="crop_square"
6077
+ icon="resizeSmall"
5869
6078
  iconSize="small"
5870
6079
  [title]="t().resizeSmall"
5871
6080
  (buttonClick)="onCommand('resizeSmall', $event)"></ate-button>
5872
6081
  }
5873
6082
  @if (imageBubbleMenuConfig().resizeMedium && editor().isEditable) {
5874
6083
  <ate-button
5875
- icon="crop_square"
6084
+ icon="resizeMedium"
5876
6085
  iconSize="medium"
5877
6086
  [title]="t().resizeMedium"
5878
6087
  (buttonClick)="onCommand('resizeMedium', $event)"></ate-button>
5879
6088
  }
5880
6089
  @if (imageBubbleMenuConfig().resizeLarge && editor().isEditable) {
5881
6090
  <ate-button
5882
- icon="crop_square"
6091
+ icon="resizeLarge"
5883
6092
  iconSize="large"
5884
6093
  [title]="t().resizeLarge"
5885
6094
  (buttonClick)="onCommand('resizeLarge', $event)"></ate-button>
5886
6095
  }
5887
6096
  @if (imageBubbleMenuConfig().resizeOriginal && editor().isEditable) {
5888
6097
  <ate-button
5889
- icon="photo_size_select_actual"
6098
+ icon="resizeOriginal"
5890
6099
  [title]="t().resizeOriginal"
5891
6100
  (buttonClick)="onCommand('resizeOriginal', $event)"></ate-button>
5892
6101
  }
@@ -5895,21 +6104,21 @@ class AteImageBubbleMenuComponent extends AteBaseBubbleMenu {
5895
6104
  }
5896
6105
  @if (imageBubbleMenuConfig().alignLeft && editor().isEditable) {
5897
6106
  <ate-button
5898
- icon="format_align_left"
6107
+ icon="alignLeft"
5899
6108
  [title]="t().alignLeft"
5900
6109
  [active]="editor().isActive({ textAlign: 'left' })"
5901
6110
  (buttonClick)="onCommand('alignLeft', $event)"></ate-button>
5902
6111
  }
5903
6112
  @if (imageBubbleMenuConfig().alignCenter && editor().isEditable) {
5904
6113
  <ate-button
5905
- icon="format_align_center"
6114
+ icon="alignCenter"
5906
6115
  [title]="t().alignCenter"
5907
6116
  [active]="editor().isActive({ textAlign: 'center' })"
5908
6117
  (buttonClick)="onCommand('alignCenter', $event)"></ate-button>
5909
6118
  }
5910
6119
  @if (imageBubbleMenuConfig().alignRight && editor().isEditable) {
5911
6120
  <ate-button
5912
- icon="format_align_right"
6121
+ icon="alignRight"
5913
6122
  [title]="t().alignRight"
5914
6123
  [active]="editor().isActive({ textAlign: 'right' })"
5915
6124
  (buttonClick)="onCommand('alignRight', $event)"></ate-button>
@@ -5924,7 +6133,7 @@ class AteImageBubbleMenuComponent extends AteBaseBubbleMenu {
5924
6133
  }
5925
6134
  @if (imageBubbleMenuConfig().deleteImage && editor().isEditable) {
5926
6135
  <ate-button
5927
- icon="delete"
6136
+ icon="deleteImage"
5928
6137
  [title]="t().deleteImage"
5929
6138
  variant="danger"
5930
6139
  (buttonClick)="onCommand('deleteImage', $event)"></ate-button>
@@ -5943,13 +6152,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
5943
6152
  <div #menuRef class="bubble-menu" (mousedown)="$event.preventDefault()">
5944
6153
  @if (imageBubbleMenuConfig().changeImage && editor().isEditable) {
5945
6154
  <ate-button
5946
- icon="drive_file_rename_outline"
6155
+ icon="changeImage"
5947
6156
  [title]="t().changeImage"
5948
6157
  (buttonClick)="onCommand('changeImage', $event)"></ate-button>
5949
6158
  }
5950
6159
  @if (imageBubbleMenuConfig().downloadImage) {
5951
6160
  <ate-button
5952
- icon="download"
6161
+ icon="downloadImage"
5953
6162
  [title]="t().downloadImage"
5954
6163
  (buttonClick)="onCommand('downloadImage', $event)"></ate-button>
5955
6164
  }
@@ -5958,28 +6167,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
5958
6167
  }
5959
6168
  @if (imageBubbleMenuConfig().resizeSmall && editor().isEditable) {
5960
6169
  <ate-button
5961
- icon="crop_square"
6170
+ icon="resizeSmall"
5962
6171
  iconSize="small"
5963
6172
  [title]="t().resizeSmall"
5964
6173
  (buttonClick)="onCommand('resizeSmall', $event)"></ate-button>
5965
6174
  }
5966
6175
  @if (imageBubbleMenuConfig().resizeMedium && editor().isEditable) {
5967
6176
  <ate-button
5968
- icon="crop_square"
6177
+ icon="resizeMedium"
5969
6178
  iconSize="medium"
5970
6179
  [title]="t().resizeMedium"
5971
6180
  (buttonClick)="onCommand('resizeMedium', $event)"></ate-button>
5972
6181
  }
5973
6182
  @if (imageBubbleMenuConfig().resizeLarge && editor().isEditable) {
5974
6183
  <ate-button
5975
- icon="crop_square"
6184
+ icon="resizeLarge"
5976
6185
  iconSize="large"
5977
6186
  [title]="t().resizeLarge"
5978
6187
  (buttonClick)="onCommand('resizeLarge', $event)"></ate-button>
5979
6188
  }
5980
6189
  @if (imageBubbleMenuConfig().resizeOriginal && editor().isEditable) {
5981
6190
  <ate-button
5982
- icon="photo_size_select_actual"
6191
+ icon="resizeOriginal"
5983
6192
  [title]="t().resizeOriginal"
5984
6193
  (buttonClick)="onCommand('resizeOriginal', $event)"></ate-button>
5985
6194
  }
@@ -5988,21 +6197,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
5988
6197
  }
5989
6198
  @if (imageBubbleMenuConfig().alignLeft && editor().isEditable) {
5990
6199
  <ate-button
5991
- icon="format_align_left"
6200
+ icon="alignLeft"
5992
6201
  [title]="t().alignLeft"
5993
6202
  [active]="editor().isActive({ textAlign: 'left' })"
5994
6203
  (buttonClick)="onCommand('alignLeft', $event)"></ate-button>
5995
6204
  }
5996
6205
  @if (imageBubbleMenuConfig().alignCenter && editor().isEditable) {
5997
6206
  <ate-button
5998
- icon="format_align_center"
6207
+ icon="alignCenter"
5999
6208
  [title]="t().alignCenter"
6000
6209
  [active]="editor().isActive({ textAlign: 'center' })"
6001
6210
  (buttonClick)="onCommand('alignCenter', $event)"></ate-button>
6002
6211
  }
6003
6212
  @if (imageBubbleMenuConfig().alignRight && editor().isEditable) {
6004
6213
  <ate-button
6005
- icon="format_align_right"
6214
+ icon="alignRight"
6006
6215
  [title]="t().alignRight"
6007
6216
  [active]="editor().isActive({ textAlign: 'right' })"
6008
6217
  (buttonClick)="onCommand('alignRight', $event)"></ate-button>
@@ -6017,7 +6226,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6017
6226
  }
6018
6227
  @if (imageBubbleMenuConfig().deleteImage && editor().isEditable) {
6019
6228
  <ate-button
6020
- icon="delete"
6229
+ icon="deleteImage"
6021
6230
  [title]="t().deleteImage"
6022
6231
  variant="danger"
6023
6232
  (buttonClick)="onCommand('deleteImage', $event)"></ate-button>
@@ -6104,21 +6313,21 @@ class AteTableBubbleMenuComponent extends AteBaseBubbleMenu {
6104
6313
  <!-- Row actions -->
6105
6314
  @if (tableBubbleMenuConfig().addRowBefore !== false) {
6106
6315
  <ate-button
6107
- icon="add_row_above"
6316
+ icon="addRowBefore"
6108
6317
  [title]="t().addRowBefore"
6109
6318
  [disabled]="!state().can.addRowBefore"
6110
6319
  (buttonClick)="onCommand('addRowBefore', $event)"></ate-button>
6111
6320
  }
6112
6321
  @if (tableBubbleMenuConfig().addRowAfter !== false) {
6113
6322
  <ate-button
6114
- icon="add_row_below"
6323
+ icon="addRowAfter"
6115
6324
  [title]="t().addRowAfter"
6116
6325
  [disabled]="!state().can.addRowAfter"
6117
6326
  (buttonClick)="onCommand('addRowAfter', $event)"></ate-button>
6118
6327
  }
6119
6328
  @if (tableBubbleMenuConfig().deleteRow !== false) {
6120
6329
  <ate-button
6121
- icon="delete"
6330
+ icon="deleteRow"
6122
6331
  [title]="t().deleteRow"
6123
6332
  variant="danger"
6124
6333
  [disabled]="!state().can.deleteRow"
@@ -6131,21 +6340,21 @@ class AteTableBubbleMenuComponent extends AteBaseBubbleMenu {
6131
6340
  <!-- Column actions -->
6132
6341
  @if (tableBubbleMenuConfig().addColumnBefore !== false) {
6133
6342
  <ate-button
6134
- icon="add_column_left"
6343
+ icon="addColumnBefore"
6135
6344
  [title]="t().addColumnBefore"
6136
6345
  [disabled]="!state().can.addColumnBefore"
6137
6346
  (buttonClick)="onCommand('addColumnBefore', $event)"></ate-button>
6138
6347
  }
6139
6348
  @if (tableBubbleMenuConfig().addColumnAfter !== false) {
6140
6349
  <ate-button
6141
- icon="add_column_right"
6350
+ icon="addColumnAfter"
6142
6351
  [title]="t().addColumnAfter"
6143
6352
  [disabled]="!state().can.addColumnAfter"
6144
6353
  (buttonClick)="onCommand('addColumnAfter', $event)"></ate-button>
6145
6354
  }
6146
6355
  @if (tableBubbleMenuConfig().deleteColumn !== false) {
6147
6356
  <ate-button
6148
- icon="delete"
6357
+ icon="deleteColumn"
6149
6358
  [title]="t().deleteColumn"
6150
6359
  variant="danger"
6151
6360
  [disabled]="!state().can.deleteColumn"
@@ -6158,7 +6367,7 @@ class AteTableBubbleMenuComponent extends AteBaseBubbleMenu {
6158
6367
  <!-- Cell actions -->
6159
6368
  @if (tableBubbleMenuConfig().toggleHeaderRow !== false) {
6160
6369
  <ate-button
6161
- icon="toolbar"
6370
+ icon="toggleHeaderRow"
6162
6371
  [title]="t().toggleHeaderRow"
6163
6372
  [active]="state().nodes.isTableHeaderRow"
6164
6373
  [disabled]="!state().can.toggleHeaderRow"
@@ -6166,7 +6375,7 @@ class AteTableBubbleMenuComponent extends AteBaseBubbleMenu {
6166
6375
  }
6167
6376
  @if (tableBubbleMenuConfig().toggleHeaderColumn !== false) {
6168
6377
  <ate-button
6169
- icon="dock_to_right"
6378
+ icon="toggleHeaderColumn"
6170
6379
  [title]="t().toggleHeaderColumn"
6171
6380
  [active]="state().nodes.isTableHeaderColumn"
6172
6381
  [disabled]="!state().can.toggleHeaderColumn"
@@ -6181,7 +6390,7 @@ class AteTableBubbleMenuComponent extends AteBaseBubbleMenu {
6181
6390
  <!-- Table actions -->
6182
6391
  @if (tableBubbleMenuConfig().deleteTable !== false) {
6183
6392
  <ate-button
6184
- icon="delete_forever"
6393
+ icon="deleteTable"
6185
6394
  [title]="t().deleteTable"
6186
6395
  variant="danger"
6187
6396
  [disabled]="!state().can.deleteTable"
@@ -6202,21 +6411,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6202
6411
  <!-- Row actions -->
6203
6412
  @if (tableBubbleMenuConfig().addRowBefore !== false) {
6204
6413
  <ate-button
6205
- icon="add_row_above"
6414
+ icon="addRowBefore"
6206
6415
  [title]="t().addRowBefore"
6207
6416
  [disabled]="!state().can.addRowBefore"
6208
6417
  (buttonClick)="onCommand('addRowBefore', $event)"></ate-button>
6209
6418
  }
6210
6419
  @if (tableBubbleMenuConfig().addRowAfter !== false) {
6211
6420
  <ate-button
6212
- icon="add_row_below"
6421
+ icon="addRowAfter"
6213
6422
  [title]="t().addRowAfter"
6214
6423
  [disabled]="!state().can.addRowAfter"
6215
6424
  (buttonClick)="onCommand('addRowAfter', $event)"></ate-button>
6216
6425
  }
6217
6426
  @if (tableBubbleMenuConfig().deleteRow !== false) {
6218
6427
  <ate-button
6219
- icon="delete"
6428
+ icon="deleteRow"
6220
6429
  [title]="t().deleteRow"
6221
6430
  variant="danger"
6222
6431
  [disabled]="!state().can.deleteRow"
@@ -6229,21 +6438,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6229
6438
  <!-- Column actions -->
6230
6439
  @if (tableBubbleMenuConfig().addColumnBefore !== false) {
6231
6440
  <ate-button
6232
- icon="add_column_left"
6441
+ icon="addColumnBefore"
6233
6442
  [title]="t().addColumnBefore"
6234
6443
  [disabled]="!state().can.addColumnBefore"
6235
6444
  (buttonClick)="onCommand('addColumnBefore', $event)"></ate-button>
6236
6445
  }
6237
6446
  @if (tableBubbleMenuConfig().addColumnAfter !== false) {
6238
6447
  <ate-button
6239
- icon="add_column_right"
6448
+ icon="addColumnAfter"
6240
6449
  [title]="t().addColumnAfter"
6241
6450
  [disabled]="!state().can.addColumnAfter"
6242
6451
  (buttonClick)="onCommand('addColumnAfter', $event)"></ate-button>
6243
6452
  }
6244
6453
  @if (tableBubbleMenuConfig().deleteColumn !== false) {
6245
6454
  <ate-button
6246
- icon="delete"
6455
+ icon="deleteColumn"
6247
6456
  [title]="t().deleteColumn"
6248
6457
  variant="danger"
6249
6458
  [disabled]="!state().can.deleteColumn"
@@ -6256,7 +6465,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6256
6465
  <!-- Cell actions -->
6257
6466
  @if (tableBubbleMenuConfig().toggleHeaderRow !== false) {
6258
6467
  <ate-button
6259
- icon="toolbar"
6468
+ icon="toggleHeaderRow"
6260
6469
  [title]="t().toggleHeaderRow"
6261
6470
  [active]="state().nodes.isTableHeaderRow"
6262
6471
  [disabled]="!state().can.toggleHeaderRow"
@@ -6264,7 +6473,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6264
6473
  }
6265
6474
  @if (tableBubbleMenuConfig().toggleHeaderColumn !== false) {
6266
6475
  <ate-button
6267
- icon="dock_to_right"
6476
+ icon="toggleHeaderColumn"
6268
6477
  [title]="t().toggleHeaderColumn"
6269
6478
  [active]="state().nodes.isTableHeaderColumn"
6270
6479
  [disabled]="!state().can.toggleHeaderColumn"
@@ -6279,7 +6488,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6279
6488
  <!-- Table actions -->
6280
6489
  @if (tableBubbleMenuConfig().deleteTable !== false) {
6281
6490
  <ate-button
6282
- icon="delete_forever"
6491
+ icon="deleteTable"
6283
6492
  [title]="t().deleteTable"
6284
6493
  variant="danger"
6285
6494
  [disabled]="!state().can.deleteTable"
@@ -6366,14 +6575,14 @@ class AteCellBubbleMenuComponent extends AteBaseBubbleMenu {
6366
6575
  <!-- Cell specific actions -->
6367
6576
  @if (cellBubbleMenuConfig().mergeCells !== false && !state().selection.isSingleCell) {
6368
6577
  <ate-button
6369
- icon="cell_merge"
6578
+ icon="mergeCells"
6370
6579
  [title]="i18n().table().mergeCells"
6371
6580
  [disabled]="!state().can.mergeCells"
6372
6581
  (buttonClick)="onCommand('mergeCells', $event)"></ate-button>
6373
6582
  }
6374
6583
  @if (cellBubbleMenuConfig().splitCell !== false && state().selection.isSingleCell) {
6375
6584
  <ate-button
6376
- icon="split_scene"
6585
+ icon="splitCell"
6377
6586
  [title]="i18n().table().splitCell"
6378
6587
  [disabled]="!state().can.splitCell"
6379
6588
  (buttonClick)="onCommand('splitCell', $event)"></ate-button>
@@ -6393,14 +6602,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6393
6602
  <!-- Cell specific actions -->
6394
6603
  @if (cellBubbleMenuConfig().mergeCells !== false && !state().selection.isSingleCell) {
6395
6604
  <ate-button
6396
- icon="cell_merge"
6605
+ icon="mergeCells"
6397
6606
  [title]="i18n().table().mergeCells"
6398
6607
  [disabled]="!state().can.mergeCells"
6399
6608
  (buttonClick)="onCommand('mergeCells', $event)"></ate-button>
6400
6609
  }
6401
6610
  @if (cellBubbleMenuConfig().splitCell !== false && state().selection.isSingleCell) {
6402
6611
  <ate-button
6403
- icon="split_scene"
6612
+ icon="splitCell"
6404
6613
  [title]="i18n().table().splitCell"
6405
6614
  [disabled]="!state().can.splitCell"
6406
6615
  (buttonClick)="onCommand('splitCell', $event)"></ate-button>
@@ -6690,7 +6899,7 @@ class AteLinkBubbleMenuComponent extends AteBaseSubBubbleMenu {
6690
6899
  role="dialog">
6691
6900
  <div class="link-input-row">
6692
6901
  <div class="url-input-container">
6693
- <span class="material-symbols-outlined icon-link">link</span>
6902
+ <ate-icon class="icon-link" name="link" />
6694
6903
  <input
6695
6904
  #linkInput
6696
6905
  type="text"
@@ -6706,19 +6915,19 @@ class AteLinkBubbleMenuComponent extends AteBaseSubBubbleMenu {
6706
6915
 
6707
6916
  <div class="action-buttons">
6708
6917
  <ate-button
6709
- icon="check"
6918
+ icon="apply"
6710
6919
  [title]="common().apply"
6711
6920
  color="var(--ate-primary)"
6712
6921
  [disabled]="!editUrl().trim()"
6713
6922
  (buttonClick)="onApply($event)"></ate-button>
6714
6923
  <ate-button
6715
- icon="open_in_new"
6924
+ icon="openLink"
6716
6925
  [title]="t().openLink"
6717
6926
  [disabled]="!currentUrl()"
6718
6927
  (buttonClick)="onOpenLink($event)"></ate-button>
6719
6928
  <ate-separator />
6720
6929
  <ate-button
6721
- icon="link_off"
6930
+ icon="unsetLink"
6722
6931
  [title]="t().removeLink"
6723
6932
  variant="danger"
6724
6933
  [disabled]="!currentUrl()"
@@ -6726,11 +6935,11 @@ class AteLinkBubbleMenuComponent extends AteBaseSubBubbleMenu {
6726
6935
  </div>
6727
6936
  </div>
6728
6937
  </div>
6729
- `, 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" }, { 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 }); }
6938
+ `, 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" }, { kind: "component", type: AteIconComponent, selector: "ate-icon", inputs: ["name"] }, { 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 }); }
6730
6939
  }
6731
6940
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteLinkBubbleMenuComponent, decorators: [{
6732
6941
  type: Component,
6733
- args: [{ selector: "ate-link-bubble-menu", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AteButtonComponent, AteSeparatorComponent, FormsModule], template: `
6942
+ args: [{ selector: "ate-link-bubble-menu", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AteButtonComponent, AteSeparatorComponent, AteIconComponent, FormsModule], template: `
6734
6943
  <div
6735
6944
  #menuRef
6736
6945
  class="bubble-menu"
@@ -6742,7 +6951,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6742
6951
  role="dialog">
6743
6952
  <div class="link-input-row">
6744
6953
  <div class="url-input-container">
6745
- <span class="material-symbols-outlined icon-link">link</span>
6954
+ <ate-icon class="icon-link" name="link" />
6746
6955
  <input
6747
6956
  #linkInput
6748
6957
  type="text"
@@ -6758,19 +6967,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6758
6967
 
6759
6968
  <div class="action-buttons">
6760
6969
  <ate-button
6761
- icon="check"
6970
+ icon="apply"
6762
6971
  [title]="common().apply"
6763
6972
  color="var(--ate-primary)"
6764
6973
  [disabled]="!editUrl().trim()"
6765
6974
  (buttonClick)="onApply($event)"></ate-button>
6766
6975
  <ate-button
6767
- icon="open_in_new"
6976
+ icon="openLink"
6768
6977
  [title]="t().openLink"
6769
6978
  [disabled]="!currentUrl()"
6770
6979
  (buttonClick)="onOpenLink($event)"></ate-button>
6771
6980
  <ate-separator />
6772
6981
  <ate-button
6773
- icon="link_off"
6982
+ icon="unsetLink"
6774
6983
  [title]="t().removeLink"
6775
6984
  variant="danger"
6776
6985
  [disabled]="!currentUrl()"
@@ -7021,7 +7230,7 @@ class AteColorBubbleMenuComponent extends AteBaseSubBubbleMenu {
7021
7230
  <div class="native-trigger-wrapper">
7022
7231
  <ate-button
7023
7232
  class="btn-native-picker-trigger"
7024
- icon="colorize"
7233
+ icon="customColor"
7025
7234
  [title]="t().customColor"
7026
7235
  [backgroundColor]="currentColor()"
7027
7236
  (buttonClick)="triggerNativePicker($event)"></ate-button>
@@ -7038,7 +7247,7 @@ class AteColorBubbleMenuComponent extends AteBaseSubBubbleMenu {
7038
7247
  </div>
7039
7248
 
7040
7249
  <ate-button
7041
- icon="check"
7250
+ icon="apply"
7042
7251
  [title]="common().apply"
7043
7252
  color="var(--ate-primary)"
7044
7253
  (buttonClick)="onApply($event)"></ate-button>
@@ -7046,7 +7255,7 @@ class AteColorBubbleMenuComponent extends AteBaseSubBubbleMenu {
7046
7255
  <ate-separator />
7047
7256
 
7048
7257
  <ate-button
7049
- icon="format_color_reset"
7258
+ icon="unsetColor"
7050
7259
  [title]="t().clear"
7051
7260
  variant="danger"
7052
7261
  (buttonClick)="onClearColor($event)"></ate-button>
@@ -7103,7 +7312,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
7103
7312
  <div class="native-trigger-wrapper">
7104
7313
  <ate-button
7105
7314
  class="btn-native-picker-trigger"
7106
- icon="colorize"
7315
+ icon="customColor"
7107
7316
  [title]="t().customColor"
7108
7317
  [backgroundColor]="currentColor()"
7109
7318
  (buttonClick)="triggerNativePicker($event)"></ate-button>
@@ -7120,7 +7329,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
7120
7329
  </div>
7121
7330
 
7122
7331
  <ate-button
7123
- icon="check"
7332
+ icon="apply"
7124
7333
  [title]="common().apply"
7125
7334
  color="var(--ate-primary)"
7126
7335
  (buttonClick)="onApply($event)"></ate-button>
@@ -7128,7 +7337,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
7128
7337
  <ate-separator />
7129
7338
 
7130
7339
  <ate-button
7131
- icon="format_color_reset"
7340
+ icon="unsetColor"
7132
7341
  [title]="t().clear"
7133
7342
  variant="danger"
7134
7343
  (buttonClick)="onClearColor($event)"></ate-button>
@@ -7180,49 +7389,49 @@ function createDefaultSlashCommands(i18n, commands, imageOptions) {
7180
7389
  {
7181
7390
  title: t.heading1.title,
7182
7391
  description: t.heading1.description,
7183
- icon: "format_h1",
7392
+ icon: "heading1",
7184
7393
  keywords: t.heading1.keywords,
7185
7394
  command: (editor) => commands.toggleHeading(editor, 1),
7186
7395
  },
7187
7396
  {
7188
7397
  title: t.heading2.title,
7189
7398
  description: t.heading2.description,
7190
- icon: "format_h2",
7399
+ icon: "heading2",
7191
7400
  keywords: t.heading2.keywords,
7192
7401
  command: (editor) => commands.toggleHeading(editor, 2),
7193
7402
  },
7194
7403
  {
7195
7404
  title: t.heading3.title,
7196
7405
  description: t.heading3.description,
7197
- icon: "format_h3",
7406
+ icon: "heading3",
7198
7407
  keywords: t.heading3.keywords,
7199
7408
  command: (editor) => commands.toggleHeading(editor, 3),
7200
7409
  },
7201
7410
  {
7202
7411
  title: t.bulletList.title,
7203
7412
  description: t.bulletList.description,
7204
- icon: "format_list_bulleted",
7413
+ icon: "bulletList",
7205
7414
  keywords: t.bulletList.keywords,
7206
7415
  command: (editor) => commands.toggleBulletList(editor),
7207
7416
  },
7208
7417
  {
7209
7418
  title: t.orderedList.title,
7210
7419
  description: t.orderedList.description,
7211
- icon: "format_list_numbered",
7420
+ icon: "orderedList",
7212
7421
  keywords: t.orderedList.keywords,
7213
7422
  command: (editor) => commands.toggleOrderedList(editor),
7214
7423
  },
7215
7424
  {
7216
7425
  title: t.blockquote.title,
7217
7426
  description: t.blockquote.description,
7218
- icon: "format_quote",
7427
+ icon: "blockquote",
7219
7428
  keywords: t.blockquote.keywords,
7220
7429
  command: (editor) => commands.toggleBlockquote(editor),
7221
7430
  },
7222
7431
  {
7223
7432
  title: t.code.title,
7224
7433
  description: t.code.description,
7225
- icon: "code",
7434
+ icon: "codeBlock",
7226
7435
  keywords: t.code.keywords,
7227
7436
  command: (editor) => commands.toggleCodeBlock(editor),
7228
7437
  },
@@ -7241,21 +7450,21 @@ function createDefaultSlashCommands(i18n, commands, imageOptions) {
7241
7450
  {
7242
7451
  title: t.horizontalRule.title,
7243
7452
  description: t.horizontalRule.description,
7244
- icon: "horizontal_rule",
7453
+ icon: "horizontalRule",
7245
7454
  keywords: t.horizontalRule.keywords,
7246
7455
  command: (editor) => commands.insertHorizontalRule(editor),
7247
7456
  },
7248
7457
  {
7249
7458
  title: t.table.title,
7250
7459
  description: t.table.description,
7251
- icon: "table_view",
7460
+ icon: "table",
7252
7461
  keywords: t.table.keywords,
7253
7462
  command: (editor) => commands.insertTable(editor),
7254
7463
  },
7255
7464
  {
7256
7465
  title: t.tableOfContents.title,
7257
7466
  description: t.tableOfContents.description,
7258
- icon: "format_list_bulleted",
7467
+ icon: "tableOfContents",
7259
7468
  keywords: t.tableOfContents.keywords,
7260
7469
  command: (editor) => editor.chain().focus().insertContent({ type: "tableOfContents" }).run(),
7261
7470
  },
@@ -7587,7 +7796,7 @@ class AteSlashCommandsComponent {
7587
7796
  (mousedown)="executeCommand(command); $event.preventDefault(); $event.stopPropagation()"
7588
7797
  (mouseenter)="selectedIndex.set($index)">
7589
7798
  <div class="slash-command-icon">
7590
- <span class="material-symbols-outlined">{{ command.icon }}</span>
7799
+ <ate-icon [name]="command.icon" />
7591
7800
  </div>
7592
7801
  <div class="slash-command-content">
7593
7802
  <div class="slash-command-title">{{ command.title }}</div>
@@ -7596,11 +7805,11 @@ class AteSlashCommandsComponent {
7596
7805
  </div>
7597
7806
  }
7598
7807
  </div>
7599
- `, 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 }); }
7808
+ `, 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 .ate-icon{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"], dependencies: [{ kind: "component", type: AteIconComponent, selector: "ate-icon", inputs: ["name"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7600
7809
  }
7601
7810
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteSlashCommandsComponent, decorators: [{
7602
7811
  type: Component,
7603
- args: [{ selector: "ate-slash-commands", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
7812
+ args: [{ selector: "ate-slash-commands", imports: [AteIconComponent], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
7604
7813
  <div #menuRef class="slash-commands-menu">
7605
7814
  @for (command of filteredCommands(); track command.title) {
7606
7815
  <div
@@ -7609,7 +7818,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
7609
7818
  (mousedown)="executeCommand(command); $event.preventDefault(); $event.stopPropagation()"
7610
7819
  (mouseenter)="selectedIndex.set($index)">
7611
7820
  <div class="slash-command-icon">
7612
- <span class="material-symbols-outlined">{{ command.icon }}</span>
7821
+ <ate-icon [name]="command.icon" />
7613
7822
  </div>
7614
7823
  <div class="slash-command-content">
7615
7824
  <div class="slash-command-title">{{ command.title }}</div>
@@ -7618,7 +7827,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
7618
7827
  </div>
7619
7828
  }
7620
7829
  </div>
7621
- `, 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"] }]
7830
+ `, 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 .ate-icon{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"] }]
7622
7831
  }], ctorParameters: () => [] });
7623
7832
 
7624
7833
  /**
@@ -7826,7 +8035,7 @@ class AteBlockControlsComponent {
7826
8035
  (click)="addBlock($event)"
7827
8036
  [ateTooltip]="i18n.editor().blockAdd"
7828
8037
  ateTooltipPlacement="top">
7829
- <span class="material-symbols-outlined">add</span>
8038
+ <ate-icon name="blockAdd" />
7830
8039
  </button>
7831
8040
  <div
7832
8041
  class="ate-control-btn ate-block-drag"
@@ -7836,14 +8045,14 @@ class AteBlockControlsComponent {
7836
8045
  (dragend)="onDragEnd()"
7837
8046
  [ateTooltip]="i18n.editor().blockDrag"
7838
8047
  ateTooltipPlacement="top">
7839
- <span class="material-symbols-outlined">drag_indicator</span>
8048
+ <ate-icon name="blockDrag" />
7840
8049
  </div>
7841
8050
  </div>
7842
- `, isInline: true, styles: [".ate-block-controls{display:flex;align-items:center;gap:2px;padding:4px;pointer-events:auto;will-change:transform}.ate-control-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;border:none;background:transparent;color:var(--ate-text-secondary);cursor:pointer;transition:all .15s ease}.ate-control-btn:hover{background:var(--ate-surface-tertiary);color:var(--ate-text)}.ate-control-btn .material-symbols-outlined{font-size:18px}@media (max-width: 768px){:host{display:none!important}}\n"], dependencies: [{ kind: "directive", type: AteTooltipDirective, selector: "[ateTooltip]", inputs: ["ateTooltip", "ateTooltipPlacement", "ateTooltipDelay", "ateTooltipDisabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8051
+ `, isInline: true, styles: [".ate-block-controls{display:flex;align-items:center;gap:2px;padding:4px;pointer-events:auto;will-change:transform}.ate-control-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;border:none;background:transparent;color:var(--ate-text-secondary);cursor:pointer;transition:all .15s ease}.ate-control-btn:hover{background:var(--ate-surface-tertiary);color:var(--ate-text)}.ate-control-btn .ate-icon{font-size:18px}@media (max-width: 768px){:host{display:none!important}}\n"], dependencies: [{ kind: "directive", type: AteTooltipDirective, selector: "[ateTooltip]", inputs: ["ateTooltip", "ateTooltipPlacement", "ateTooltipDelay", "ateTooltipDisabled"] }, { kind: "component", type: AteIconComponent, selector: "ate-icon", inputs: ["name"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7843
8052
  }
7844
8053
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteBlockControlsComponent, decorators: [{
7845
8054
  type: Component,
7846
- args: [{ selector: "ate-block-controls", standalone: true, imports: [AteTooltipDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: `
8055
+ args: [{ selector: "ate-block-controls", standalone: true, imports: [AteTooltipDirective, AteIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
7847
8056
  <div
7848
8057
  #menuRef
7849
8058
  class="ate-block-controls"
@@ -7856,7 +8065,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
7856
8065
  (click)="addBlock($event)"
7857
8066
  [ateTooltip]="i18n.editor().blockAdd"
7858
8067
  ateTooltipPlacement="top">
7859
- <span class="material-symbols-outlined">add</span>
8068
+ <ate-icon name="blockAdd" />
7860
8069
  </button>
7861
8070
  <div
7862
8071
  class="ate-control-btn ate-block-drag"
@@ -7866,10 +8075,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
7866
8075
  (dragend)="onDragEnd()"
7867
8076
  [ateTooltip]="i18n.editor().blockDrag"
7868
8077
  ateTooltipPlacement="top">
7869
- <span class="material-symbols-outlined">drag_indicator</span>
8078
+ <ate-icon name="blockDrag" />
7870
8079
  </div>
7871
8080
  </div>
7872
- `, styles: [".ate-block-controls{display:flex;align-items:center;gap:2px;padding:4px;pointer-events:auto;will-change:transform}.ate-control-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;border:none;background:transparent;color:var(--ate-text-secondary);cursor:pointer;transition:all .15s ease}.ate-control-btn:hover{background:var(--ate-surface-tertiary);color:var(--ate-text)}.ate-control-btn .material-symbols-outlined{font-size:18px}@media (max-width: 768px){:host{display:none!important}}\n"] }]
8081
+ `, styles: [".ate-block-controls{display:flex;align-items:center;gap:2px;padding:4px;pointer-events:auto;will-change:transform}.ate-control-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;border:none;background:transparent;color:var(--ate-text-secondary);cursor:pointer;transition:all .15s ease}.ate-control-btn:hover{background:var(--ate-surface-tertiary);color:var(--ate-text)}.ate-control-btn .ate-icon{font-size:18px}@media (max-width: 768px){:host{display:none!important}}\n"] }]
7873
8082
  }], ctorParameters: () => [] });
7874
8083
 
7875
8084
  /**
@@ -7886,7 +8095,7 @@ class AteEditToggleComponent {
7886
8095
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", 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: `
7887
8096
  <div class="ate-edit-toggle-container" [class.is-editable]="editable()">
7888
8097
  <ate-button
7889
- [icon]="editable() ? 'visibility' : 'edit'"
8098
+ [icon]="editable() ? 'preview' : 'edit'"
7890
8099
  [title]="editable() ? translations().editor.viewMode : translations().editor.toggleEdit"
7891
8100
  (buttonClick)="editToggle.emit($event)"
7892
8101
  size="medium"
@@ -7900,7 +8109,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
7900
8109
  args: [{ selector: "ate-edit-toggle", standalone: true, imports: [CommonModule, AteButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
7901
8110
  <div class="ate-edit-toggle-container" [class.is-editable]="editable()">
7902
8111
  <ate-button
7903
- [icon]="editable() ? 'visibility' : 'edit'"
8112
+ [icon]="editable() ? 'preview' : 'edit'"
7904
8113
  [title]="editable() ? translations().editor.viewMode : translations().editor.toggleEdit"
7905
8114
  (buttonClick)="editToggle.emit($event)"
7906
8115
  size="medium"
@@ -8704,6 +8913,7 @@ class AngularTiptapEditorComponent {
8704
8913
  // Access editor state via service
8705
8914
  this.editorState = this.editorCommandsService.editorState;
8706
8915
  this.editorRegistry = inject(AteEditorRegistry);
8916
+ this.iconRegistry = inject(AteIconRegistry);
8707
8917
  this._registeredId = signal(null);
8708
8918
  this.registeredId = this._registeredId.asReadonly();
8709
8919
  this.injector = inject(Injector);
@@ -8865,6 +9075,7 @@ class AngularTiptapEditorComponent {
8865
9075
  isUploading: () => this.editorCommandsService.isUploading(),
8866
9076
  uploadProgress: () => this.editorCommandsService.uploadProgress(),
8867
9077
  uploadMessage: () => this.editorCommandsService.uploadMessage(),
9078
+ iconHtml: () => this.iconRegistry.html("imageUpload", "spinning"),
8868
9079
  }),
8869
9080
  AteTableExtension,
8870
9081
  registerAngularComponent(this.injector, AteTocNodeOptions),
@@ -9282,7 +9493,7 @@ class AngularTiptapEditorComponent {
9282
9493
  </div>
9283
9494
  }
9284
9495
  </div>
9285
- `, isInline: true, styles: [":host{--ate-primary: #2563eb;--ate-primary-hover: #153ca9;--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-selection-bg: var(--ate-primary-light-alpha);--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-sub-border-radius: 8px;--ate-focus-color: var(--ate-primary);--ate-background: var(--ate-surface);--ate-text-color: var(--ate-text, #2d3748);--ate-placeholder-color: var(--ate-text-muted, #a0aec0);--ate-line-height: 1.6;--ate-content-padding-block: 16px;--ate-content-padding-inline: 16px;--ate-content-gutter: 0px;--ate-menu-bg: var(--ate-surface, #ffffff);--ate-menu-border-radius: var(--ate-border-radius, 12px);--ate-menu-border: var(--ate-border, #e2e8f0);--ate-menu-shadow: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--ate-menu-padding: 4px;--ate-menu-gap: 2px;--ate-toolbar-padding: var(--ate-menu-padding);--ate-toolbar-gap: var(--ate-menu-gap);--ate-toolbar-background: var(--ate-surface-secondary, #f8f9fa);--ate-toolbar-border-color: var(--ate-border, #e2e8f0);--ate-toolbar-button-color: var(--ate-text-secondary, #64748b);--ate-toolbar-button-hover-background: transparent;--ate-toolbar-button-active-background: color-mix( in srgb, var(--ate-primary, #2563eb), transparent 90% );--ate-toolbar-button-active-color: var(--ate-primary, #2563eb);--ate-counter-color: var(--ate-text-secondary, #64748b);--ate-counter-background: var(--ate-surface-secondary, #f8f9fa);--ate-counter-border-color: var(--ate-border, #e2e8f0);--ate-drag-background: #f0f8ff;--ate-drag-border-color: var(--ate-primary, #2563eb);--ate-blockquote-border-color: var(--ate-border, #e2e8f0);--ate-blockquote-background: var(--ate-surface-secondary, #f8f9fa);--ate-code-background: var(--ate-surface-secondary, #f8f9fa);--ate-code-color: var(--ate-text, #2d3748);--ate-code-border-color: var(--ate-border, #e2e8f0);--ate-code-block-background: #0f172a;--ate-code-block-color: #e2e8f0;--ate-code-block-border-color: var(--ate-border, #e2e8f0);--ate-image-border-radius: 16px;--ate-image-selected-color: var(--ate-primary, #2563eb);--ate-scrollbar-width: 10px;--ate-scrollbar-thumb: var(--ate-border, #e2e8f0);--ate-scrollbar-thumb-hover: var(--ate-text-muted, #a0aec0);--ate-scrollbar-track: transparent;--ate-table-border-color: var(--ate-border, #e2e8f0);--ate-table-header-background: var(--ate-surface-secondary, #f8f9fa);--ate-table-header-color: var(--ate-text, #2d3748);--ate-table-cell-background: var(--ate-surface, #ffffff);--ate-table-cell-selected-background: color-mix( in srgb, var(--ate-primary, #2563eb), transparent 90% );--ate-table-resize-handle-color: var(--ate-primary, #2563eb);--ate-table-row-hover-background: color-mix( in srgb, var(--ate-primary, #2563eb), transparent 95% );--ate-tooltip-bg: var(--ate-code-block-background, #0f172a);--ate-tooltip-color: var(--ate-code-block-color, #e2e8f0)}: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.ate-blocks-inside{--ate-content-gutter: 54px}@media (max-width: 768px){:host.ate-blocks-inside{--ate-content-gutter: 0px}ate-block-controls{display:none!important}}:host ::ng-deep .ProseMirror{padding-inline:calc(var(--ate-content-padding-inline) + var(--ate-content-gutter));padding-block:var(--ate-content-padding-block);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 ::selection{background-color:var(--ate-selection-bg);color:inherit}:host ::ng-deep .ProseMirror ::-moz-selection{background-color:var(--ate-selection-bg);color:inherit}: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 h4{font-size:1.1em;font-weight:700;margin-top:1em;margin-bottom:.5em}:host ::ng-deep .ProseMirror h5,:host ::ng-deep .ProseMirror h6{font-size:1em;font-weight:700;margin-top:1em;margin-bottom:.5em}:host ::ng-deep .ProseMirror p{margin:.5em 0}:host ::ng-deep .ProseMirror ul{list-style-type:disc;list-style-position:outside;padding-left:2em;margin:.5em 0}:host ::ng-deep .ProseMirror ol{list-style-type:decimal;list-style-position:outside;padding-left:2em;margin:.5em 0}:host ::ng-deep .ProseMirror ul ul{list-style-type:circle}:host ::ng-deep .ProseMirror ul ul ul{list-style-type:square}:host ::ng-deep .ProseMirror hr{border:none;border-top:1px solid var(--ate-border);margin:1.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] img{cursor:pointer}:host ::ng-deep .ProseMirror[contenteditable=false] a{cursor:pointer}: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,:host ::ng-deep .resizable-image-container.selected img{border-color:var(--ate-image-selected-color);transition:all .2s ease}:host ::ng-deep .ProseMirror [data-text-align=center],:host ::ng-deep .ProseMirror [data-align=center]{text-align:center}:host ::ng-deep .ProseMirror [data-text-align=right],:host ::ng-deep .ProseMirror [data-align=right]{text-align:right}:host ::ng-deep .ProseMirror [data-text-align=left],:host ::ng-deep .ProseMirror [data-align=left]{text-align:left}:host ::ng-deep .resizable-image-wrapper{display:block;width:100%;margin:.5em 0}:host ::ng-deep .resizable-image-container{position:relative;display:inline-block;max-width:100%}:host ::ng-deep .resize-controls{position:absolute;inset:0;pointer-events:none;z-index:1000;opacity:0;transition:opacity .2s ease}::ng-deep .ate-slash-decoration{background:var( --ate-primary-light, color-mix(in srgb, var(--ate-primary, #2563eb), transparent 90%) );padding:4px 8px;border-radius:var(--ate-sub-border-radius, 8px)}::ng-deep .ate-slash-decoration.is-empty:after{content:attr(data-decoration-content);color:var(--ate-text-secondary);font-weight:400;opacity:.7}:host:not(.is-readonly):not(.is-disabled) ::ng-deep .resizable-image-container:hover .resize-controls,:host:not(.is-readonly):not(.is-disabled) ::ng-deep body.resizing .resize-controls{opacity:1}:host ::ng-deep .resize-handle{position:absolute;width:.35rem;height:2rem;background:var(--ate-primary);border:2px solid var(--ate-surface);border-radius:var(--ate-border-radius);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-w:hover,:host ::ng-deep .resize-handle-e:hover{background:var(--ate-primary-hover)}:host ::ng-deep .resize-handle-w:active,:host ::ng-deep .resize-handle-e:active{transform:translateY(-50%) scale(.9);background:var(--ate-primary-hover)}:host ::ng-deep .resize-handle-w{top:50%;left:.35rem;transform:translateY(-50%);cursor:w-resize}:host ::ng-deep .resize-handle-e{top:50%;right:.35rem;transform:translateY(-50%);cursor:e-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 .resizable-image-container{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 .resizable-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" }, { kind: "component", type: AteColorBubbleMenuComponent, selector: "ate-color-bubble-menu" }, { kind: "component", type: AteEditToggleComponent, selector: "ate-edit-toggle", inputs: ["editable", "translations"], outputs: ["editToggle"] }, { kind: "component", type: AteBlockControlsComponent, selector: "ate-block-controls", inputs: ["editor", "hoveredData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9496
+ `, isInline: true, styles: [":host{--ate-primary: #2563eb;--ate-primary-hover: #153ca9;--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-selection-bg: var(--ate-primary-light-alpha);--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-sub-border-radius: 8px;--ate-focus-color: var(--ate-primary);--ate-background: var(--ate-surface);--ate-text-color: var(--ate-text, #2d3748);--ate-placeholder-color: var(--ate-text-muted, #a0aec0);--ate-line-height: 1.6;--ate-content-padding-block: 16px;--ate-content-padding-inline: 16px;--ate-content-gutter: 0px;--ate-menu-bg: var(--ate-surface, #ffffff);--ate-menu-border-radius: var(--ate-border-radius, 12px);--ate-menu-border: var(--ate-border, #e2e8f0);--ate-menu-shadow: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--ate-menu-padding: 4px;--ate-menu-gap: 2px;--ate-toolbar-padding: var(--ate-menu-padding);--ate-toolbar-gap: var(--ate-menu-gap);--ate-toolbar-background: var(--ate-surface-secondary, #f8f9fa);--ate-toolbar-border-color: var(--ate-border, #e2e8f0);--ate-toolbar-button-color: var(--ate-text-secondary, #64748b);--ate-toolbar-button-hover-background: transparent;--ate-toolbar-button-active-background: color-mix( in srgb, var(--ate-primary, #2563eb), transparent 90% );--ate-toolbar-button-active-color: var(--ate-primary, #2563eb);--ate-counter-color: var(--ate-text-secondary, #64748b);--ate-counter-background: var(--ate-surface-secondary, #f8f9fa);--ate-counter-border-color: var(--ate-border, #e2e8f0);--ate-drag-background: #f0f8ff;--ate-drag-border-color: var(--ate-primary, #2563eb);--ate-blockquote-border-color: var(--ate-border, #e2e8f0);--ate-blockquote-background: var(--ate-surface-secondary, #f8f9fa);--ate-code-background: var(--ate-surface-secondary, #f8f9fa);--ate-code-color: var(--ate-text, #2d3748);--ate-code-border-color: var(--ate-border, #e2e8f0);--ate-code-block-background: #0f172a;--ate-code-block-color: #e2e8f0;--ate-code-block-border-color: var(--ate-border, #e2e8f0);--ate-image-border-radius: 16px;--ate-image-selected-color: var(--ate-primary, #2563eb);--ate-scrollbar-width: 10px;--ate-scrollbar-thumb: var(--ate-border, #e2e8f0);--ate-scrollbar-thumb-hover: var(--ate-text-muted, #a0aec0);--ate-scrollbar-track: transparent;--ate-table-border-color: var(--ate-border, #e2e8f0);--ate-table-header-background: var(--ate-surface-secondary, #f8f9fa);--ate-table-header-color: var(--ate-text, #2d3748);--ate-table-cell-background: var(--ate-surface, #ffffff);--ate-table-cell-selected-background: color-mix( in srgb, var(--ate-primary, #2563eb), transparent 90% );--ate-table-resize-handle-color: var(--ate-primary, #2563eb);--ate-table-row-hover-background: color-mix( in srgb, var(--ate-primary, #2563eb), transparent 95% );--ate-tooltip-bg: var(--ate-code-block-background, #0f172a);--ate-tooltip-color: var(--ate-code-block-color, #e2e8f0)}: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.ate-blocks-inside{--ate-content-gutter: 54px}@media (max-width: 768px){:host.ate-blocks-inside{--ate-content-gutter: 0px}ate-block-controls{display:none!important}}:host ::ng-deep .ProseMirror{padding-inline:calc(var(--ate-content-padding-inline) + var(--ate-content-gutter));padding-block:var(--ate-content-padding-block);outline:none;line-height:var(--ate-line-height);color:var(--ate-text-color);min-height:100%;word-wrap:break-word;overflow-wrap:break-word}:host ::ng-deep .ProseMirror ::selection{background-color:var(--ate-selection-bg);color:inherit}:host ::ng-deep .ProseMirror ::-moz-selection{background-color:var(--ate-selection-bg);color:inherit}: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 h4{font-size:1.1em;font-weight:700;margin-top:1em;margin-bottom:.5em}:host ::ng-deep .ProseMirror h5,:host ::ng-deep .ProseMirror h6{font-size:1em;font-weight:700;margin-top:1em;margin-bottom:.5em}:host ::ng-deep .ProseMirror p{margin:.5em 0}:host ::ng-deep .ProseMirror ul{list-style-type:disc;list-style-position:outside;padding-left:2em;margin:.5em 0}:host ::ng-deep .ProseMirror ol{list-style-type:decimal;list-style-position:outside;padding-left:2em;margin:.5em 0}:host ::ng-deep .ProseMirror ul ul{list-style-type:circle}:host ::ng-deep .ProseMirror ul ul ul{list-style-type:square}:host ::ng-deep .ProseMirror hr{border:none;border-top:1px solid var(--ate-border);margin:1.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] img{cursor:pointer}:host ::ng-deep .ProseMirror[contenteditable=false] a{cursor:pointer}: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,:host ::ng-deep .resizable-image-container.selected img{border-color:var(--ate-image-selected-color);transition:all .2s ease}:host ::ng-deep .ProseMirror [data-text-align=center],:host ::ng-deep .ProseMirror [data-align=center]{text-align:center}:host ::ng-deep .ProseMirror [data-text-align=right],:host ::ng-deep .ProseMirror [data-align=right]{text-align:right}:host ::ng-deep .ProseMirror [data-text-align=left],:host ::ng-deep .ProseMirror [data-align=left]{text-align:left}:host ::ng-deep .resizable-image-wrapper{display:block;width:100%;margin:.5em 0}:host ::ng-deep .resizable-image-container{position:relative;display:inline-block;max-width:100%}:host ::ng-deep .resize-controls{position:absolute;inset:0;pointer-events:none;z-index:1000;opacity:0;transition:opacity .2s ease}::ng-deep .ate-slash-decoration{background:var( --ate-primary-light, color-mix(in srgb, var(--ate-primary, #2563eb), transparent 90%) );padding:4px 8px;border-radius:var(--ate-sub-border-radius, 8px)}::ng-deep .ate-slash-decoration.is-empty:after{content:attr(data-decoration-content);color:var(--ate-text-secondary);font-weight:400;opacity:.7}:host:not(.is-readonly):not(.is-disabled) ::ng-deep .resizable-image-container:hover .resize-controls,:host:not(.is-readonly):not(.is-disabled) ::ng-deep body.resizing .resize-controls{opacity:1}:host ::ng-deep .resize-handle{position:absolute;width:.35rem;height:2rem;background:var(--ate-primary);border:2px solid var(--ate-surface);border-radius:var(--ate-border-radius);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-w:hover,:host ::ng-deep .resize-handle-e:hover{background:var(--ate-primary-hover)}:host ::ng-deep .resize-handle-w:active,:host ::ng-deep .resize-handle-e:active{transform:translateY(-50%) scale(.9);background:var(--ate-primary-hover)}:host ::ng-deep .resize-handle-w{top:50%;left:.35rem;transform:translateY(-50%);cursor:w-resize}:host ::ng-deep .resize-handle-e{top:50%;right:.35rem;transform:translateY(-50%);cursor:e-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 .resizable-image-container{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 .resizable-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" }, { kind: "component", type: AteColorBubbleMenuComponent, selector: "ate-color-bubble-menu" }, { kind: "component", type: AteEditToggleComponent, selector: "ate-edit-toggle", inputs: ["editable", "translations"], outputs: ["editToggle"] }, { kind: "component", type: AteBlockControlsComponent, selector: "ate-block-controls", inputs: ["editor", "hoveredData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9286
9497
  }
9287
9498
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AngularTiptapEditorComponent, decorators: [{
9288
9499
  type: Component,
@@ -9451,7 +9662,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
9451
9662
  </div>
9452
9663
  }
9453
9664
  </div>
9454
- `, styles: [":host{--ate-primary: #2563eb;--ate-primary-hover: #153ca9;--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-selection-bg: var(--ate-primary-light-alpha);--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-sub-border-radius: 8px;--ate-focus-color: var(--ate-primary);--ate-background: var(--ate-surface);--ate-text-color: var(--ate-text, #2d3748);--ate-placeholder-color: var(--ate-text-muted, #a0aec0);--ate-line-height: 1.6;--ate-content-padding-block: 16px;--ate-content-padding-inline: 16px;--ate-content-gutter: 0px;--ate-menu-bg: var(--ate-surface, #ffffff);--ate-menu-border-radius: var(--ate-border-radius, 12px);--ate-menu-border: var(--ate-border, #e2e8f0);--ate-menu-shadow: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--ate-menu-padding: 4px;--ate-menu-gap: 2px;--ate-toolbar-padding: var(--ate-menu-padding);--ate-toolbar-gap: var(--ate-menu-gap);--ate-toolbar-background: var(--ate-surface-secondary, #f8f9fa);--ate-toolbar-border-color: var(--ate-border, #e2e8f0);--ate-toolbar-button-color: var(--ate-text-secondary, #64748b);--ate-toolbar-button-hover-background: transparent;--ate-toolbar-button-active-background: color-mix( in srgb, var(--ate-primary, #2563eb), transparent 90% );--ate-toolbar-button-active-color: var(--ate-primary, #2563eb);--ate-counter-color: var(--ate-text-secondary, #64748b);--ate-counter-background: var(--ate-surface-secondary, #f8f9fa);--ate-counter-border-color: var(--ate-border, #e2e8f0);--ate-drag-background: #f0f8ff;--ate-drag-border-color: var(--ate-primary, #2563eb);--ate-blockquote-border-color: var(--ate-border, #e2e8f0);--ate-blockquote-background: var(--ate-surface-secondary, #f8f9fa);--ate-code-background: var(--ate-surface-secondary, #f8f9fa);--ate-code-color: var(--ate-text, #2d3748);--ate-code-border-color: var(--ate-border, #e2e8f0);--ate-code-block-background: #0f172a;--ate-code-block-color: #e2e8f0;--ate-code-block-border-color: var(--ate-border, #e2e8f0);--ate-image-border-radius: 16px;--ate-image-selected-color: var(--ate-primary, #2563eb);--ate-scrollbar-width: 10px;--ate-scrollbar-thumb: var(--ate-border, #e2e8f0);--ate-scrollbar-thumb-hover: var(--ate-text-muted, #a0aec0);--ate-scrollbar-track: transparent;--ate-table-border-color: var(--ate-border, #e2e8f0);--ate-table-header-background: var(--ate-surface-secondary, #f8f9fa);--ate-table-header-color: var(--ate-text, #2d3748);--ate-table-cell-background: var(--ate-surface, #ffffff);--ate-table-cell-selected-background: color-mix( in srgb, var(--ate-primary, #2563eb), transparent 90% );--ate-table-resize-handle-color: var(--ate-primary, #2563eb);--ate-table-row-hover-background: color-mix( in srgb, var(--ate-primary, #2563eb), transparent 95% );--ate-tooltip-bg: var(--ate-code-block-background, #0f172a);--ate-tooltip-color: var(--ate-code-block-color, #e2e8f0)}: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.ate-blocks-inside{--ate-content-gutter: 54px}@media (max-width: 768px){:host.ate-blocks-inside{--ate-content-gutter: 0px}ate-block-controls{display:none!important}}:host ::ng-deep .ProseMirror{padding-inline:calc(var(--ate-content-padding-inline) + var(--ate-content-gutter));padding-block:var(--ate-content-padding-block);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 ::selection{background-color:var(--ate-selection-bg);color:inherit}:host ::ng-deep .ProseMirror ::-moz-selection{background-color:var(--ate-selection-bg);color:inherit}: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 h4{font-size:1.1em;font-weight:700;margin-top:1em;margin-bottom:.5em}:host ::ng-deep .ProseMirror h5,:host ::ng-deep .ProseMirror h6{font-size:1em;font-weight:700;margin-top:1em;margin-bottom:.5em}:host ::ng-deep .ProseMirror p{margin:.5em 0}:host ::ng-deep .ProseMirror ul{list-style-type:disc;list-style-position:outside;padding-left:2em;margin:.5em 0}:host ::ng-deep .ProseMirror ol{list-style-type:decimal;list-style-position:outside;padding-left:2em;margin:.5em 0}:host ::ng-deep .ProseMirror ul ul{list-style-type:circle}:host ::ng-deep .ProseMirror ul ul ul{list-style-type:square}:host ::ng-deep .ProseMirror hr{border:none;border-top:1px solid var(--ate-border);margin:1.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] img{cursor:pointer}:host ::ng-deep .ProseMirror[contenteditable=false] a{cursor:pointer}: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,:host ::ng-deep .resizable-image-container.selected img{border-color:var(--ate-image-selected-color);transition:all .2s ease}:host ::ng-deep .ProseMirror [data-text-align=center],:host ::ng-deep .ProseMirror [data-align=center]{text-align:center}:host ::ng-deep .ProseMirror [data-text-align=right],:host ::ng-deep .ProseMirror [data-align=right]{text-align:right}:host ::ng-deep .ProseMirror [data-text-align=left],:host ::ng-deep .ProseMirror [data-align=left]{text-align:left}:host ::ng-deep .resizable-image-wrapper{display:block;width:100%;margin:.5em 0}:host ::ng-deep .resizable-image-container{position:relative;display:inline-block;max-width:100%}:host ::ng-deep .resize-controls{position:absolute;inset:0;pointer-events:none;z-index:1000;opacity:0;transition:opacity .2s ease}::ng-deep .ate-slash-decoration{background:var( --ate-primary-light, color-mix(in srgb, var(--ate-primary, #2563eb), transparent 90%) );padding:4px 8px;border-radius:var(--ate-sub-border-radius, 8px)}::ng-deep .ate-slash-decoration.is-empty:after{content:attr(data-decoration-content);color:var(--ate-text-secondary);font-weight:400;opacity:.7}:host:not(.is-readonly):not(.is-disabled) ::ng-deep .resizable-image-container:hover .resize-controls,:host:not(.is-readonly):not(.is-disabled) ::ng-deep body.resizing .resize-controls{opacity:1}:host ::ng-deep .resize-handle{position:absolute;width:.35rem;height:2rem;background:var(--ate-primary);border:2px solid var(--ate-surface);border-radius:var(--ate-border-radius);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-w:hover,:host ::ng-deep .resize-handle-e:hover{background:var(--ate-primary-hover)}:host ::ng-deep .resize-handle-w:active,:host ::ng-deep .resize-handle-e:active{transform:translateY(-50%) scale(.9);background:var(--ate-primary-hover)}:host ::ng-deep .resize-handle-w{top:50%;left:.35rem;transform:translateY(-50%);cursor:w-resize}:host ::ng-deep .resize-handle-e{top:50%;right:.35rem;transform:translateY(-50%);cursor:e-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 .resizable-image-container{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 .resizable-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"] }]
9665
+ `, styles: [":host{--ate-primary: #2563eb;--ate-primary-hover: #153ca9;--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-selection-bg: var(--ate-primary-light-alpha);--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-sub-border-radius: 8px;--ate-focus-color: var(--ate-primary);--ate-background: var(--ate-surface);--ate-text-color: var(--ate-text, #2d3748);--ate-placeholder-color: var(--ate-text-muted, #a0aec0);--ate-line-height: 1.6;--ate-content-padding-block: 16px;--ate-content-padding-inline: 16px;--ate-content-gutter: 0px;--ate-menu-bg: var(--ate-surface, #ffffff);--ate-menu-border-radius: var(--ate-border-radius, 12px);--ate-menu-border: var(--ate-border, #e2e8f0);--ate-menu-shadow: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--ate-menu-padding: 4px;--ate-menu-gap: 2px;--ate-toolbar-padding: var(--ate-menu-padding);--ate-toolbar-gap: var(--ate-menu-gap);--ate-toolbar-background: var(--ate-surface-secondary, #f8f9fa);--ate-toolbar-border-color: var(--ate-border, #e2e8f0);--ate-toolbar-button-color: var(--ate-text-secondary, #64748b);--ate-toolbar-button-hover-background: transparent;--ate-toolbar-button-active-background: color-mix( in srgb, var(--ate-primary, #2563eb), transparent 90% );--ate-toolbar-button-active-color: var(--ate-primary, #2563eb);--ate-counter-color: var(--ate-text-secondary, #64748b);--ate-counter-background: var(--ate-surface-secondary, #f8f9fa);--ate-counter-border-color: var(--ate-border, #e2e8f0);--ate-drag-background: #f0f8ff;--ate-drag-border-color: var(--ate-primary, #2563eb);--ate-blockquote-border-color: var(--ate-border, #e2e8f0);--ate-blockquote-background: var(--ate-surface-secondary, #f8f9fa);--ate-code-background: var(--ate-surface-secondary, #f8f9fa);--ate-code-color: var(--ate-text, #2d3748);--ate-code-border-color: var(--ate-border, #e2e8f0);--ate-code-block-background: #0f172a;--ate-code-block-color: #e2e8f0;--ate-code-block-border-color: var(--ate-border, #e2e8f0);--ate-image-border-radius: 16px;--ate-image-selected-color: var(--ate-primary, #2563eb);--ate-scrollbar-width: 10px;--ate-scrollbar-thumb: var(--ate-border, #e2e8f0);--ate-scrollbar-thumb-hover: var(--ate-text-muted, #a0aec0);--ate-scrollbar-track: transparent;--ate-table-border-color: var(--ate-border, #e2e8f0);--ate-table-header-background: var(--ate-surface-secondary, #f8f9fa);--ate-table-header-color: var(--ate-text, #2d3748);--ate-table-cell-background: var(--ate-surface, #ffffff);--ate-table-cell-selected-background: color-mix( in srgb, var(--ate-primary, #2563eb), transparent 90% );--ate-table-resize-handle-color: var(--ate-primary, #2563eb);--ate-table-row-hover-background: color-mix( in srgb, var(--ate-primary, #2563eb), transparent 95% );--ate-tooltip-bg: var(--ate-code-block-background, #0f172a);--ate-tooltip-color: var(--ate-code-block-color, #e2e8f0)}: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.ate-blocks-inside{--ate-content-gutter: 54px}@media (max-width: 768px){:host.ate-blocks-inside{--ate-content-gutter: 0px}ate-block-controls{display:none!important}}:host ::ng-deep .ProseMirror{padding-inline:calc(var(--ate-content-padding-inline) + var(--ate-content-gutter));padding-block:var(--ate-content-padding-block);outline:none;line-height:var(--ate-line-height);color:var(--ate-text-color);min-height:100%;word-wrap:break-word;overflow-wrap:break-word}:host ::ng-deep .ProseMirror ::selection{background-color:var(--ate-selection-bg);color:inherit}:host ::ng-deep .ProseMirror ::-moz-selection{background-color:var(--ate-selection-bg);color:inherit}: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 h4{font-size:1.1em;font-weight:700;margin-top:1em;margin-bottom:.5em}:host ::ng-deep .ProseMirror h5,:host ::ng-deep .ProseMirror h6{font-size:1em;font-weight:700;margin-top:1em;margin-bottom:.5em}:host ::ng-deep .ProseMirror p{margin:.5em 0}:host ::ng-deep .ProseMirror ul{list-style-type:disc;list-style-position:outside;padding-left:2em;margin:.5em 0}:host ::ng-deep .ProseMirror ol{list-style-type:decimal;list-style-position:outside;padding-left:2em;margin:.5em 0}:host ::ng-deep .ProseMirror ul ul{list-style-type:circle}:host ::ng-deep .ProseMirror ul ul ul{list-style-type:square}:host ::ng-deep .ProseMirror hr{border:none;border-top:1px solid var(--ate-border);margin:1.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] img{cursor:pointer}:host ::ng-deep .ProseMirror[contenteditable=false] a{cursor:pointer}: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,:host ::ng-deep .resizable-image-container.selected img{border-color:var(--ate-image-selected-color);transition:all .2s ease}:host ::ng-deep .ProseMirror [data-text-align=center],:host ::ng-deep .ProseMirror [data-align=center]{text-align:center}:host ::ng-deep .ProseMirror [data-text-align=right],:host ::ng-deep .ProseMirror [data-align=right]{text-align:right}:host ::ng-deep .ProseMirror [data-text-align=left],:host ::ng-deep .ProseMirror [data-align=left]{text-align:left}:host ::ng-deep .resizable-image-wrapper{display:block;width:100%;margin:.5em 0}:host ::ng-deep .resizable-image-container{position:relative;display:inline-block;max-width:100%}:host ::ng-deep .resize-controls{position:absolute;inset:0;pointer-events:none;z-index:1000;opacity:0;transition:opacity .2s ease}::ng-deep .ate-slash-decoration{background:var( --ate-primary-light, color-mix(in srgb, var(--ate-primary, #2563eb), transparent 90%) );padding:4px 8px;border-radius:var(--ate-sub-border-radius, 8px)}::ng-deep .ate-slash-decoration.is-empty:after{content:attr(data-decoration-content);color:var(--ate-text-secondary);font-weight:400;opacity:.7}:host:not(.is-readonly):not(.is-disabled) ::ng-deep .resizable-image-container:hover .resize-controls,:host:not(.is-readonly):not(.is-disabled) ::ng-deep body.resizing .resize-controls{opacity:1}:host ::ng-deep .resize-handle{position:absolute;width:.35rem;height:2rem;background:var(--ate-primary);border:2px solid var(--ate-surface);border-radius:var(--ate-border-radius);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-w:hover,:host ::ng-deep .resize-handle-e:hover{background:var(--ate-primary-hover)}:host ::ng-deep .resize-handle-w:active,:host ::ng-deep .resize-handle-e:active{transform:translateY(-50%) scale(.9);background:var(--ate-primary-hover)}:host ::ng-deep .resize-handle-w{top:50%;left:.35rem;transform:translateY(-50%);cursor:w-resize}:host ::ng-deep .resize-handle-e{top:50%;right:.35rem;transform:translateY(-50%);cursor:e-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 .resizable-image-container{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 .resizable-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"] }]
9455
9666
  }], ctorParameters: () => [] });
9456
9667
 
9457
9668
  /**
@@ -9488,6 +9699,97 @@ function provideAteEditor(config) {
9488
9699
  },
9489
9700
  ]);
9490
9701
  }
9702
+ /**
9703
+ * Registers SVG icons, to override the library icons or to add icons for custom
9704
+ * toolbar items, bubble menus and slash commands. Can be called several times.
9705
+ *
9706
+ * Must be provided at application bootstrap (`app.config.ts` or `main.ts`) because
9707
+ * `AteIconRegistry` is root-scoped (`providedIn: 'root'`); for lazy routes or
9708
+ * runtime changes, inject `AteIconRegistry` and call `register()`.
9709
+ *
9710
+ * Values are a full `<svg>` element, used as-is with its own `fill` and `stroke`,
9711
+ * or only its inner markup, drawn in the Material Symbols viewBox (`0 -960 960 960`)
9712
+ * and filled with `currentColor`. Unregistered names fall back to
9713
+ * the Material Symbols font, when it is loaded.
9714
+ * @example
9715
+ * ```ts
9716
+ * bootstrapApplication(AppComponent, {
9717
+ * providers: [
9718
+ * provideAteEditor(),
9719
+ * provideAteIcons({
9720
+ * // full <svg>: keeps its own fill and stroke (here a stroke icon, Lucide style)
9721
+ * bold: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="…"/></svg>',
9722
+ * // inner markup: Material Symbols viewBox, filled with currentColor
9723
+ * rocket: '<path d="…"/>',
9724
+ * })
9725
+ * ]
9726
+ * });
9727
+ * ```
9728
+ */
9729
+ function provideAteIcons(icons) {
9730
+ return makeEnvironmentProviders([{ provide: ATE_ICONS, useValue: icons, multi: true }]);
9731
+ }
9732
+
9733
+ const ATE_STROKE_ICONS = {
9734
+ addColumnAfter: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"4\" y=\"3\" width=\"10\" height=\"18\" rx=\"3\"/><path d=\"M9 3v18M4 9.5h10M16.5 12h5M19 9.5v5\"/></svg>",
9735
+ addColumnBefore: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"10\" y=\"3\" width=\"10\" height=\"18\" rx=\"3\"/><path d=\"M15 3v18M10 9.5h10M2.5 12h5M5 9.5v5\"/></svg>",
9736
+ addRowAfter: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"10\" rx=\"3\"/><path d=\"M3 9h18M9.5 4v10M12 16.5v5M9.5 19h5\"/></svg>",
9737
+ addRowBefore: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"10\" width=\"18\" height=\"10\" rx=\"3\"/><path d=\"M3 15h18M9.5 10v10M12 2.5v5M9.5 5h5\"/></svg>",
9738
+ alignCenter: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 6h16M7 10h10M4 14h16M7 18h10\"/></svg>",
9739
+ alignJustify: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 6h16M4 10h16M4 14h16M4 18h16\"/></svg>",
9740
+ alignLeft: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 6h16M4 10h10M4 14h16M4 18h10\"/></svg>",
9741
+ alignRight: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 6h16M10 10h10M4 14h16M10 18h10\"/></svg>",
9742
+ apply: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m5 12.5 4.5 4.5L19 7.5\"/></svg>",
9743
+ blockAdd: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3.5\" y=\"3.5\" width=\"17\" height=\"17\" rx=\"5\"/><path d=\"M12 8.5v7M8.5 12h7\"/></svg>",
9744
+ blockDrag: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"currentColor\" stroke=\"none\"><circle cx=\"9\" cy=\"6\" r=\"1.5\"/><circle cx=\"15\" cy=\"6\" r=\"1.5\"/><circle cx=\"9\" cy=\"12\" r=\"1.5\"/><circle cx=\"15\" cy=\"12\" r=\"1.5\"/><circle cx=\"9\" cy=\"18\" r=\"1.5\"/><circle cx=\"15\" cy=\"18\" r=\"1.5\"/></g></svg>",
9745
+ blockquote: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 5v14M9 7.5h11M9 12h11M9 16.5h7\"/></svg>",
9746
+ bold: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M7 5h5.5a3.5 3.5 0 0 1 0 7H7zM7 12h6.5a3.5 3.5 0 0 1 0 7H7z\" stroke-width=\"2.6\"/></svg>",
9747
+ bulletList: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10 6h10M10 12h10M10 18h10\"/><circle cx=\"5\" cy=\"6\" r=\"1.4\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"5\" cy=\"12\" r=\"1.4\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"5\" cy=\"18\" r=\"1.4\" fill=\"currentColor\" stroke=\"none\"/></svg>",
9748
+ changeImage: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M11 20H6.5A3.5 3.5 0 0 1 3 16.5v-9A3.5 3.5 0 0 1 6.5 4h11A3.5 3.5 0 0 1 21 7.5V11M3 16l5-5 3.5 3.5\"/><circle cx=\"15.5\" cy=\"8.5\" r=\"1.4\"/><path d=\"m18.5 13.5 2 2-4.5 4.5h-2v-2z\"/></svg>",
9749
+ clear: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M6 6l12 12M18 6 6 18\"/></svg>",
9750
+ clearContent: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 20.5h11M4.8 14.8 13.6 6a2 2 0 0 1 2.8 0l3.2 3.2a2 2 0 0 1 0 2.8L11.1 20.5H9.3l-4.5-4.5a.9.9 0 0 1 0-1.2zM9.5 10.2l5.8 5.8\"/></svg>",
9751
+ code: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8.5 7 3.5 12l5 5M15.5 7l5 5-5 5\"/></svg>",
9752
+ codeBlock: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"3.5\"/><path d=\"m7.5 10 2.5 2-2.5 2M12.5 15h4\"/></svg>",
9753
+ customColor: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m13 7 4 4M14.5 5.5l1.2-1.2a2.3 2.3 0 0 1 3.3 3.3l-1.2 1.2M14 8l-8.3 8.3-.9 3 3-.9L16.1 10\"/></svg>",
9754
+ deleteColumn: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"3.5\"/><path d=\"M8.5 4v16M15.5 4v16\"/><path d=\"M10.4 10.4l3.2 3.2M13.6 10.4l-3.2 3.2\"/></svg>",
9755
+ deleteImage: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 7h16M6.5 7l.9 11.6A2 2 0 0 0 9.4 20.5h5.2a2 2 0 0 0 2-1.9L17.5 7M9.5 7V5a1.5 1.5 0 0 1 1.5-1.5h2A1.5 1.5 0 0 1 14.5 5v2M10.5 11v5.5M13.5 11v5.5\"/></svg>",
9756
+ deleteRow: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"3.5\"/><path d=\"M3 9.2h18M3 14.8h18\"/><path d=\"M10.4 10.4l3.2 3.2M13.6 10.4l-3.2 3.2\"/></svg>",
9757
+ deleteTable: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"13.5\" height=\"13.5\" rx=\"3\"/><path d=\"M3 8h13.5M8 8v8.5\"/><path d=\"M16.5 16.5l4 4M20.5 16.5l-4 4\"/></svg>",
9758
+ downloadImage: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 4v11M7.5 10.5 12 15l4.5-4.5M4 15.5v2.5A2 2 0 0 0 6 20h12a2 2 0 0 0 2-2v-2.5\"/></svg>",
9759
+ edit: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 20h4L18.3 9.7a2.8 2.8 0 0 0-4-4L4 16zM13 7l4 4\"/></svg>",
9760
+ heading1: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3.5 6v12M11.5 6v12M3.5 12h8M16 9.5 19 7.5V18\"/></svg>",
9761
+ heading2: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3.5 6v12M11.5 6v12M3.5 12h8M15.5 9.5a2.6 2.6 0 0 1 5 .9c0 .8-.4 1.5-1 2.1L15.5 18h5\"/></svg>",
9762
+ heading3: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3.5 6v12M11.5 6v12M3.5 12h8M15.5 7.5h4.8l-2.8 3.6a3.4 3.4 0 1 1-2.3 5.6\"/></svg>",
9763
+ highlight: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 16.5 5.5 13 14.8 3.7a2.5 2.5 0 0 1 3.5 3.5z M5.5 13 3.5 18.5h4L9 16.5 M13 20.5h7.5\"/></svg>",
9764
+ highlightColor: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m14.5 4.5 5 5-7.8 7.8H6.7v-5z M4 20h16\"/></svg>",
9765
+ horizontalRule: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 12h18\"/><path d=\"M7 6.5h10M7 17.5h10\" stroke-opacity=\".35\"/></svg>",
9766
+ image: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"3.5\"/><circle cx=\"8.5\" cy=\"9.5\" r=\"1.6\"/><path d=\"m21 15.5-4.8-4.8L6 20\"/></svg>",
9767
+ imageUpload: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 15V4M7.5 8.5 12 4l4.5 4.5M4 15.5v2.5A2 2 0 0 0 6 20h12a2 2 0 0 0 2-2v-2.5\"/></svg>",
9768
+ italic: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10 5h8M6 19h8M14.5 5l-5 14\"/></svg>",
9769
+ link: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10 14a4 4 0 0 0 5.66 0l3.17-3.17a4 4 0 0 0-5.66-5.66L12 6.34M14 10a4 4 0 0 0-5.66 0l-3.17 3.17a4 4 0 0 0 5.66 5.66L12 17.66\"/></svg>",
9770
+ mergeCells: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 4v16M3.5 12H9M6.5 9.5 9 12l-2.5 2.5M20.5 12H15M17.5 9.5 15 12l2.5 2.5\"/></svg>",
9771
+ openLink: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 4h6v6M20 4l-8.5 8.5M18 14v3.5A2.5 2.5 0 0 1 15.5 20h-9A2.5 2.5 0 0 1 4 17.5v-9A2.5 2.5 0 0 1 6.5 6H10\"/></svg>",
9772
+ orderedList: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10.5 6H20M10.5 12H20M10.5 18H20M4 4.5 5.5 3.8V9M3.8 13.4a1.3 1.3 0 0 1 2.5.4c0 .4-.2.7-.5 1L3.8 17h2.6\" stroke-width=\"1.8\"/></svg>",
9773
+ preview: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></svg>",
9774
+ redo: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M15 13.5 19.5 9 15 4.5M19.5 9H9a5 5 0 0 0 0 10h4\"/></svg>",
9775
+ resizeLarge: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"3.5\" stroke-opacity=\".35\" stroke-dasharray=\"3 3\"/><rect x=\"5.5\" y=\"5.5\" width=\"13\" height=\"13\" rx=\"2.5\"/></svg>",
9776
+ resizeMedium: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"3.5\" stroke-opacity=\".35\" stroke-dasharray=\"3 3\"/><rect x=\"7\" y=\"7\" width=\"10\" height=\"10\" rx=\"2\"/></svg>",
9777
+ resizeOriginal: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 9V4h5M4 4l5.5 5.5M20 15v5h-5M20 20l-5.5-5.5\"/></svg>",
9778
+ resizeSmall: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"3.5\" stroke-opacity=\".35\" stroke-dasharray=\"3 3\"/><rect x=\"9\" y=\"9\" width=\"6\" height=\"6\" rx=\"1.5\"/></svg>",
9779
+ splitCell: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 4v16M9 12H3.5M6 9.5 3.5 12 6 14.5M15 12h5.5M18 9.5l2.5 2.5-2.5 2.5\"/></svg>",
9780
+ strike: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M16.5 7.2C15.8 5.8 14.2 5 12.2 5 9.7 5 8 6.3 8 8.1c0 1.4.9 2.3 2.4 2.9M4 12h16M7.6 16.8c.7 1.4 2.3 2.2 4.4 2.2 2.6 0 4.5-1.3 4.5-3.3 0-.7-.2-1.3-.6-1.7\"/></svg>",
9781
+ subscript: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 5.5l8 10M12 5.5l-8 10\"/><path d=\"M15.5 14.7a1.7 1.7 0 0 1 3.2.8c0 .5-.3 1-.7 1.4l-2.5 2.6h3.5\" stroke-width=\"1.7\"/></svg>",
9782
+ superscript: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 8.5l8 10M12 8.5l-8 10\"/><path d=\"M15.5 5.2a1.7 1.7 0 0 1 3.2.8c0 .5-.3 1-.7 1.4L15.5 10h3.5\" stroke-width=\"1.7\"/></svg>",
9783
+ table: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"3.5\"/><path d=\"M3 9.5h18M3 14.8h18M9.5 9.5V20\"/></svg>",
9784
+ tableOfContents: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 5h11M8 10h12M8 15h12M4 20h11\"/></svg>",
9785
+ textColor: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M6.5 16 12 4l5.5 12M8.4 12h7.2M4 20h16\"/></svg>",
9786
+ toggleHeaderColumn: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"3.5\"/><path d=\"M9.5 4H6.5A3.5 3.5 0 0 0 3 7.5v9A3.5 3.5 0 0 0 6.5 20h3z\" fill=\"currentColor\"/><path d=\"M9.5 12H21M15.2 4v16\"/></svg>",
9787
+ toggleHeaderRow: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"3.5\"/><path d=\"M3 9.5V7.5A3.5 3.5 0 0 1 6.5 4h11A3.5 3.5 0 0 1 21 7.5v2z\" fill=\"currentColor\"/><path d=\"M9.5 9.5V20M3 14.8h18\"/></svg>",
9788
+ underline: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M7 4v6.5a5 5 0 0 0 10 0V4M5 20h14\"/></svg>",
9789
+ undo: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 13.5 4.5 9 9 4.5M4.5 9H15a5 5 0 0 1 0 10h-4\"/></svg>",
9790
+ unsetColor: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 5.8C9.2 4.4 10.5 3.5 12 3.5c1.9 2 5.5 5.7 5.5 9.7 0 .8-.1 1.5-.4 2.2M15.8 17.2A5.5 5.5 0 0 1 6.5 13.2c0-1.8.8-3.6 1.8-5.2M4 4l16 16\"/></svg>",
9791
+ unsetLink: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m13.5 6.5.8-.8a4 4 0 0 1 5.66 5.66l-.8.8M10.5 17.5l-.8.8a4 4 0 0 1-5.66-5.66l.8-.8M4 4l16 16\"/></svg>",
9792
+ };
9491
9793
 
9492
9794
  /**
9493
9795
  * Clés des boutons de la barre d'outils native
@@ -9547,5 +9849,5 @@ const ATE_DEFAULT_TOC_CONFIG = {
9547
9849
  * Generated bundle index. Do not edit.
9548
9850
  */
9549
9851
 
9550
- export { ATE_BUBBLE_MENU_KEYS, ATE_CELL_BUBBLE_MENU_KEYS, ATE_DEFAULT_BUBBLE_MENU_CONFIG, ATE_DEFAULT_CELL_MENU_CONFIG, ATE_DEFAULT_CONFIG, ATE_DEFAULT_IMAGE_BUBBLE_MENU_CONFIG, ATE_DEFAULT_IMAGE_UPLOAD_CONFIG, ATE_DEFAULT_SLASH_COMMANDS_CONFIG, ATE_DEFAULT_TABLE_MENU_CONFIG, ATE_DEFAULT_TOC_CONFIG, ATE_DEFAULT_TOOLBAR_CONFIG, ATE_GLOBAL_CONFIG, ATE_IMAGE_BUBBLE_MENU_KEYS, ATE_INITIAL_EDITOR_STATE, ATE_SLASH_COMMAND_KEYS, ATE_TABLE_BUBBLE_MENU_KEYS, ATE_TOOLBAR_KEYS, AngularTiptapEditorComponent, AteAngularNodeView, AteColorPickerService, AteDiscoveryCalculator, AteEditorCommandsService, AteEditorRef, AteEditorRegistry, AteExportService, AteI18nService, AteImageCalculator, AteImageService, AteLinkService, AteMarksCalculator, AteNodeViewRenderer, AteNoopValueAccessorDirective, AteSelectionCalculator, AteStructureCalculator, AteTableCalculator, AteTableOfContentsComponent, AteTocNodeComponent, AteTocNodeOptions, AteTooltipDirective, createAngularComponentExtension, createDefaultSlashCommands, filterSlashCommands, getAteTocNodeExtension, provideAteEditor, registerAngularComponent };
9852
+ export { ATE_BUBBLE_MENU_KEYS, ATE_CELL_BUBBLE_MENU_KEYS, ATE_DEFAULT_BUBBLE_MENU_CONFIG, ATE_DEFAULT_CELL_MENU_CONFIG, ATE_DEFAULT_CONFIG, ATE_DEFAULT_ICONS, ATE_DEFAULT_IMAGE_BUBBLE_MENU_CONFIG, ATE_DEFAULT_IMAGE_UPLOAD_CONFIG, ATE_DEFAULT_SLASH_COMMANDS_CONFIG, ATE_DEFAULT_TABLE_MENU_CONFIG, ATE_DEFAULT_TOC_CONFIG, ATE_DEFAULT_TOOLBAR_CONFIG, ATE_GLOBAL_CONFIG, ATE_ICONS, ATE_IMAGE_BUBBLE_MENU_KEYS, ATE_INITIAL_EDITOR_STATE, ATE_MATERIAL_SYMBOLS_VIEWBOX, ATE_SLASH_COMMAND_KEYS, ATE_STROKE_ICONS, ATE_TABLE_BUBBLE_MENU_KEYS, ATE_TOOLBAR_KEYS, AngularTiptapEditorComponent, AteAngularNodeView, AteColorPickerService, AteDiscoveryCalculator, AteEditorCommandsService, AteEditorRef, AteEditorRegistry, AteExportService, AteI18nService, AteIconComponent, AteIconRegistry, AteImageCalculator, AteImageService, AteLinkService, AteMarksCalculator, AteNodeViewRenderer, AteNoopValueAccessorDirective, AteSelectionCalculator, AteStructureCalculator, AteTableCalculator, AteTableOfContentsComponent, AteTocNodeComponent, AteTocNodeOptions, AteTooltipDirective, createAngularComponentExtension, createDefaultSlashCommands, filterSlashCommands, getAteTocNodeExtension, provideAteEditor, provideAteIcons, registerAngularComponent };
9551
9853
  //# sourceMappingURL=flogeez-angular-tiptap-editor.mjs.map