@acorex/components 22.3.25 → 22.4.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-wysiwyg.mjs","sources":["../../../../packages/components/wysiwyg/src/lib/wysiwyg-toolbar/wysiwyg-toolbar.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-toolbar/wysiwyg-toolbar.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-view/wysiwyg-view.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-view/wysiwyg-view.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg.service.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-container/wysiwyg-container.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-container/wysiwyg-container.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-alignment/wysiwyg-alignment.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-alignment/wysiwyg-alignment.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-colors/wysiwyg-colors.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-colors/wysiwyg-colors.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-font-style/wysiwyg-font-style.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-font-style/wysiwyg-font-style.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-history/wysiwyg-history.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-history/wysiwyg-history.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-insert/wysiwyg-insert.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-insert/wysiwyg-insert.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-list/wysiwyg-list.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-list/wysiwyg-list.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg.module.ts","../../../../packages/components/wysiwyg/src/acorex-components-wysiwyg.ts"],"sourcesContent":["import { AXComponent } from '@acorex/cdk/common';\nimport { AXZIndexService, AXZToken } from '@acorex/core/z-index';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n afterNextRender,\n Component,\n DestroyRef,\n ElementRef,\n inject,\n PLATFORM_ID,\n Renderer2,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\ninterface PickerOverlayState {\n picker: HTMLElement;\n options: HTMLElement | null;\n zToken: AXZToken;\n}\n\n/**\n * Toolbar for the WYSIWYG editor.\n * Formatting controls belong in `ax-prefix`. Actions such as submit belong in `ax-suffix`.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-toolbar',\n templateUrl: './wysiwyg-toolbar.component.html',\n styleUrl: './wysiwyg-toolbar.component.css',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXComponent, useExisting: AXWysiwygToolbarComponent }],\n})\nexport class AXWysiwygToolbarComponent {\n toolbar = viewChild<ElementRef<HTMLDivElement>>('toolbar');\n\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly renderer = inject(Renderer2);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\n private readonly zIndexService = inject(AXZIndexService);\n\n private observer: MutationObserver | null = null;\n private overlayState: PickerOverlayState | null = null;\n private unlistenClick: (() => void) | null = null;\n private clampFrame = 0;\n\n constructor() {\n afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n this.setupPickerOverlay();\n });\n\n this.destroyRef.onDestroy(() => this.teardownPickerOverlay());\n }\n\n private setupPickerOverlay(): void {\n const toolbarEl = this.toolbar()?.nativeElement;\n if (!toolbarEl) return;\n\n this.observer = new MutationObserver(() => this.syncPickerOverlay());\n this.observer.observe(toolbarEl, {\n attributes: true,\n attributeFilter: ['class'],\n subtree: true,\n });\n\n this.unlistenClick = this.renderer.listen(toolbarEl, 'click', (event: Event) => {\n const target = event.target;\n if (!(target instanceof Element) || !target.closest('.ql-picker-label, .ql-picker-item')) return;\n this.queueClamp();\n });\n }\n\n private syncPickerOverlay(): void {\n const toolbarEl = this.toolbar()?.nativeElement;\n if (!toolbarEl) return;\n\n const expandedPicker = toolbarEl.querySelector<HTMLElement>('.ql-picker.ql-expanded');\n if (!expandedPicker) {\n this.closePickerOverlay();\n return;\n }\n\n if (this.overlayState?.picker !== expandedPicker) {\n this.closePickerOverlay();\n this.openPickerOverlay(expandedPicker);\n }\n\n this.queueClamp();\n }\n\n private openPickerOverlay(picker: HTMLElement): void {\n const zToken = this.zIndexService.acquire();\n this.overlayState = {\n picker,\n options: picker.querySelector<HTMLElement>('.ql-picker-options'),\n zToken,\n };\n\n this.renderer.setStyle(this.host.nativeElement, 'z-index', String(zToken.zIndex));\n this.renderer.setStyle(picker, 'z-index', String(zToken.zIndex));\n }\n\n private closePickerOverlay(): void {\n if (!this.overlayState) return;\n\n const { picker, options, zToken } = this.overlayState;\n this.renderer.removeStyle(this.host.nativeElement, 'z-index');\n this.renderer.removeStyle(picker, 'z-index');\n this.clearPickerOffset(options);\n\n this.zIndexService.release(zToken);\n this.overlayState = null;\n }\n\n private queueClamp(): void {\n cancelAnimationFrame(this.clampFrame);\n this.clampFrame = requestAnimationFrame(() => this.keepPickerInViewport());\n }\n\n /**\n * Keep expanded picker menus inside the viewport horizontally.\n * Vertical direction is handled by CSS (open upward when the toolbar is below the editor).\n */\n private keepPickerInViewport(): void {\n const options = this.overlayState?.options;\n const picker = this.overlayState?.picker;\n if (!options || !picker || !picker.classList.contains('ql-expanded')) return;\n if (picker.classList.contains('ql-color-picker') || picker.classList.contains('ql-icon-picker')) return;\n\n this.renderer.removeStyle(options, 'left');\n\n const pad = 8;\n const viewportWidth = document.documentElement.clientWidth;\n const rect = options.getBoundingClientRect();\n\n if (rect.right > viewportWidth - pad) {\n this.renderer.setStyle(options, 'left', `${options.offsetLeft - (rect.right - (viewportWidth - pad))}px`);\n } else if (rect.left < pad) {\n this.renderer.setStyle(options, 'left', `${options.offsetLeft + (pad - rect.left)}px`);\n }\n }\n\n private clearPickerOffset(options: HTMLElement | null): void {\n if (!options) return;\n this.renderer.removeStyle(options, 'left');\n }\n\n private teardownPickerOverlay(): void {\n cancelAnimationFrame(this.clampFrame);\n this.unlistenClick?.();\n this.unlistenClick = null;\n this.observer?.disconnect();\n this.observer = null;\n this.closePickerOverlay();\n }\n}\n","<div class=\"ax-wysiwyg-toolbar-content\">\n <div #toolbar class=\"ax-wysiwyg-toolbar-tools\" role=\"toolbar\" aria-label=\"Formatting\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content></ng-content>\n </div>\n <ng-content select=\"ax-suffix\"></ng-content>\n</div>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, ElementRef, viewChild, ViewEncapsulation } from '@angular/core';\n\n/**\n * Editing surface for the WYSIWYG editor.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-view',\n templateUrl: './wysiwyg-view.component.html',\n styleUrl: './wysiwyg-view.component.css',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXComponent, useExisting: AXWysiwygViewComponent }],\n})\nexport class AXWysiwygViewComponent {\n editor = viewChild<ElementRef<HTMLDivElement>>('editor');\n}\n","<div #editor></div>\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable()\nexport class WysiwygService {\n selectedColor = signal('');\n selectedBackgroundColor = signal('');\n}\n","import {\n AXComponent,\n AXFocusableComponent,\n AXValuableComponent,\n MXInputBaseValueComponent,\n MXLookComponent,\n} from '@acorex/cdk/common';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n Component,\n DestroyRef,\n PLATFORM_ID,\n ViewEncapsulation,\n afterNextRender,\n contentChild,\n effect,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport { QuillDeltaToHtmlConverter } from 'quill-delta-to-html';\nimport type Quill from 'quill/quill.d.ts';\nimport { AXWysiwygToolbarComponent } from '../wysiwyg-toolbar/wysiwyg-toolbar.component';\nimport { AXWysiwygViewComponent } from '../wysiwyg-view/wysiwyg-view.component';\nimport { WysiwygService } from '../wysiwyg.service';\n\ntype QuillIconMap = Record<string, string | Record<string, string>>;\n\nlet quillIconsRegistered = false;\n\n/**\n * A container component for WYSIWYG (What You See Is What You Get) editor functionality.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-container',\n templateUrl: './wysiwyg-container.component.html',\n styleUrl: './wysiwyg-container.component.css',\n inputs: ['look', 'readonly', 'disabled', 'value'],\n outputs: ['onValueChanged'],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[style.--ax-comp-wysiwyg-initial-line]': 'initialLine() + \"\"',\n '[attr.name]': 'name || null',\n '[class.ax-disable]': 'disabled',\n '[class.ax-readonly]': 'readonly && !disabled',\n },\n providers: [\n WysiwygService,\n { provide: AXComponent, useExisting: AXWysiwygContainerComponent },\n { provide: AXFocusableComponent, useExisting: AXWysiwygContainerComponent },\n { provide: AXValuableComponent, useExisting: AXWysiwygContainerComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXWysiwygContainerComponent),\n multi: true,\n },\n ],\n})\nexport class AXWysiwygContainerComponent extends classes(MXInputBaseValueComponent<string>, MXLookComponent) {\n /**\n * Specifies the placeholder text.\n *\n */\n placeHolder = input<string>();\n\n /**\n * Specifies the initial editor height in number of text lines.\n *\n */\n initialLine = input(3);\n\n private readonly wysiwygService = inject(WysiwygService);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\n private readonly container = contentChild(AXWysiwygViewComponent);\n private readonly toolbar = contentChild(AXWysiwygToolbarComponent);\n\n private readonly wysiwyg = signal<Quill | null>(null);\n private lastCommittedHtml: string | null = null;\n private applyingExternal = false;\n private alive = true;\n private changeHandlerTimer: ReturnType<typeof setTimeout> | null = null;\n private tooltipObserver: MutationObserver | null = null;\n\n #init = afterNextRender(() => {\n this.destroyRef.onDestroy(() => {\n this.alive = false;\n if (this.changeHandlerTimer != null) {\n clearTimeout(this.changeHandlerTimer);\n }\n });\n void this.initEditor();\n });\n\n #placeholder = effect(() => {\n const quill = this.wysiwyg();\n if (!quill) return;\n quill.root.setAttribute('data-placeholder', this.placeHolder() || 'Write Your Message ...');\n });\n\n /**\n * Focuses the component.\n *\n * @returns void - No return value. The component gains focus.\n */\n override focus(): void {\n this.wysiwyg()?.focus();\n }\n\n /**\n * Removes focus from the component.\n *\n * @returns void - No return value. The component loses focus.\n */\n override blur(): void {\n this.wysiwyg()?.blur();\n }\n\n /**\n * Replaces the editor document. External value updates go through the form binding;\n * this method does not emit a user change.\n */\n public setWysiwygContent(value: string): void {\n this.syncEditorFromValue(value);\n }\n\n /** @ignore */\n protected override internalValueChanged(value: string): void {\n this.syncEditorFromValue(value);\n }\n\n private async initEditor(): Promise<void> {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const editorElement = this.container()?.editor()?.nativeElement;\n if (!editorElement) return;\n\n const quillModule = await import('quill');\n if (!this.alive) return;\n const QuillCtor = quillModule.default;\n registerQuillIcons(QuillCtor);\n\n const hljs = (await import('highlight.js')).default;\n if (!this.alive) return;\n const toolbarElement = this.toolbar()?.toolbar()?.nativeElement;\n\n const quill = new QuillCtor(editorElement, {\n modules: {\n syntax: { hljs },\n toolbar: toolbarElement\n ? {\n container: toolbarElement,\n handlers: {\n undo: () => {\n quill.history.undo();\n },\n redo: () => {\n quill.history.redo();\n },\n color: (value: string) => {\n this.wysiwygService.selectedColor.set(value || '');\n quill.format('color', value || false);\n },\n background: (value: string) => {\n this.wysiwygService.selectedBackgroundColor.set(value || '');\n quill.format('background', value || false);\n },\n },\n }\n : false,\n history: {\n delay: 500,\n maxStack: 200,\n userOnly: true,\n },\n },\n theme: 'snow',\n });\n\n quill.on('text-change', this.onTextChange);\n quill.on('selection-change', this.onSelectionChange);\n this.watchTooltip(quill.container, toolbarElement);\n\n this.disabledChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.syncEditable());\n this.readonlyChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.syncEditable());\n\n this.destroyRef.onDestroy(() => {\n quill.off('text-change', this.onTextChange);\n quill.off('selection-change', this.onSelectionChange);\n this.tooltipObserver?.disconnect();\n this.tooltipObserver = null;\n toolbarElement?.removeEventListener('click', this.onTooltipTrigger);\n });\n\n this.wysiwyg.set(quill);\n this.syncEditable();\n this.syncEditorFromValue(this.value);\n }\n\n private readonly onTextChange = (_delta: unknown, _oldDelta: unknown, source: string): void => {\n if (source !== 'user' || this.applyingExternal || this.disabled || this.readonly) return;\n this.scheduleCommit();\n };\n\n private readonly onSelectionChange = (\n range: { index: number; length: number } | null,\n oldRange: { index: number; length: number } | null,\n ): void => {\n const quill = this.wysiwyg();\n if (!quill || this.disabled) return;\n\n if (range && !oldRange) {\n this.emitOnFocusEvent();\n } else if (!range && oldRange) {\n this.emitOnBlurEvent();\n }\n\n if (!range) return;\n const format = quill.getFormat(range);\n this.wysiwygService.selectedColor.set((format['color'] as string) || '');\n this.wysiwygService.selectedBackgroundColor.set((format['background'] as string) || '');\n };\n\n private scheduleCommit(): void {\n if (this.changeHandlerTimer != null) {\n clearTimeout(this.changeHandlerTimer);\n }\n\n this.changeHandlerTimer = setTimeout(() => {\n this.changeHandlerTimer = null;\n const quill = this.wysiwyg();\n if (!quill || this.disabled || this.readonly) return;\n\n if (quill.getLength() <= 1) {\n this.publishHtml(null);\n return;\n }\n\n const delta = quill.getContents().ops;\n const converter = new QuillDeltaToHtmlConverter(delta, {\n inlineStyles: true,\n allowBackgroundClasses: true,\n });\n this.publishHtml(converter.convert());\n }, 300);\n }\n\n private publishHtml(html: string | null): void {\n if (html === this.lastCommittedHtml) return;\n this.lastCommittedHtml = html;\n this.commitValue(html, true);\n }\n\n private syncEditorFromValue(value: string | null | undefined): void {\n const quill = this.wysiwyg();\n if (!quill) return;\n\n const next = normalizeHtml(value);\n if (next === this.lastCommittedHtml) return;\n\n this.applyingExternal = true;\n this.lastCommittedHtml = next;\n try {\n if (!next) {\n quill.setText('', 'api');\n } else {\n const delta = quill.clipboard.convert({ html: next });\n quill.setContents(delta, 'api');\n }\n } finally {\n this.applyingExternal = false;\n }\n }\n\n private watchTooltip(container: HTMLElement, toolbarElement: HTMLElement | undefined): void {\n const tooltip = container.querySelector<HTMLElement>('.ql-tooltip');\n if (tooltip) {\n this.tooltipObserver = new MutationObserver(() => this.onTooltipTrigger());\n this.tooltipObserver.observe(tooltip, { attributes: true, attributeFilter: ['class'] });\n }\n toolbarElement?.addEventListener('click', this.onTooltipTrigger);\n }\n\n private readonly onTooltipTrigger = (event?: Event): void => {\n if (event) {\n const target = event.target;\n if (!(target instanceof Element) || !target.closest('.ql-video, .ql-link, .ql-image')) return;\n }\n requestAnimationFrame(() => {\n this.clampTooltip();\n requestAnimationFrame(() => this.clampTooltip());\n });\n };\n\n /**\n * Quill anchors the link/video popover to the caret and lets it spill out of the\n * editor. Keep it fully inside the writing area so it does not cover the toolbar\n * or get clipped at the field edge.\n */\n private clampTooltip(): void {\n const quill = this.wysiwyg();\n const tooltip = quill?.container.querySelector<HTMLElement>('.ql-tooltip');\n if (!quill || !tooltip || tooltip.classList.contains('ql-hidden')) return;\n\n const pad = 8;\n const containerRect = quill.container.getBoundingClientRect();\n if (tooltip.getBoundingClientRect().width > containerRect.width - pad * 2) {\n tooltip.style.maxWidth = `${Math.max(0, containerRect.width - pad * 2)}px`;\n }\n\n const tipRect = tooltip.getBoundingClientRect();\n let left = tooltip.offsetLeft;\n let top = tooltip.offsetTop;\n\n if (tipRect.left < containerRect.left + pad) {\n left += containerRect.left + pad - tipRect.left;\n } else if (tipRect.right > containerRect.right - pad) {\n left -= tipRect.right - (containerRect.right - pad);\n }\n\n const bottomOverflow = Math.max(0, tipRect.bottom - (containerRect.bottom - pad));\n if (bottomOverflow > 0) {\n top -= bottomOverflow;\n }\n const shiftedTop = tipRect.top - bottomOverflow;\n if (shiftedTop < containerRect.top + pad) {\n top += containerRect.top + pad - shiftedTop;\n }\n\n tooltip.style.left = `${left}px`;\n tooltip.style.top = `${top}px`;\n }\n\n private syncEditable(): void {\n const quill = this.wysiwyg();\n if (!quill) return;\n if (this.disabled || this.readonly) {\n quill.disable();\n } else {\n quill.enable();\n }\n }\n}\n\nfunction normalizeHtml(value: string | null | undefined): string | null {\n if (value == null) return null;\n const trimmed = value.trim();\n if (!trimmed || trimmed === '<p><br></p>' || trimmed === '<p></p>') return null;\n return value;\n}\n\nfunction registerQuillIcons(QuillCtor: { import: (path: string) => unknown }): void {\n if (quillIconsRegistered) return;\n\n const icons = QuillCtor.import('ui/icons') as QuillIconMap;\n const icon = (name: string) => `<ax-icon class=\"ax-icon ax-icon-${name}\"></ax-icon>`;\n\n icons['bold'] = icon('bold');\n icons['italic'] = icon('italic');\n icons['underline'] = icon('under-line');\n icons['strike'] = icon('strike');\n icons['code-block'] = icon('code');\n icons['color'] = icon('color-palette');\n icons['background'] = icon('highlight');\n icons['image'] = icon('image');\n icons['link'] = icon('link');\n icons['video'] = icon('play');\n icons['undo'] = icon('undo');\n icons['redo'] = icon('redo');\n\n const list = (icons['list'] ?? {}) as Record<string, string>;\n list['ordered'] = icon('order-list');\n list['bullet'] = icon('un-order-list');\n icons['list'] = list;\n\n const direction = (icons['direction'] ?? {}) as Record<string, string>;\n direction[''] = icon('align-left');\n direction['rtl'] =\n '<svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M20 7H9v2h11V7zm0 4H4v2h16v-2zm0 4h-9v2h9v-2zM3.5 16.5 7 13v7z\"/></svg>';\n icons['direction'] = direction;\n\n const align = (icons['align'] ?? {}) as Record<string, string>;\n align[''] = icon('align-left');\n align['center'] = icon('align-center');\n align['justify'] = icon('align-justify');\n align['right'] = icon('align-right');\n icons['align'] = align;\n\n quillIconsRegistered = true;\n}\n","<div\n class=\"ax-editor-container ax-default {{ look }}\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly && !disabled\"\n>\n <div class=\"ax-quill-container\">\n <ng-content></ng-content>\n </div>\n <ng-content select=\"ax-validation-rule\"> </ng-content>\n</div>\n<div class=\"ax-error-container\"></div>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Alignment controls for the WYSIWYG toolbar.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-alignment',\n templateUrl: './wysiwyg-alignment.component.html',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXComponent, useExisting: AXWysiwygAlignmentComponent }],\n})\nexport class AXWysiwygAlignmentComponent {}\n","<span class=\"ql-formats\">\n <select class=\"ql-align\" title=\"Alignment\" aria-label=\"Alignment\"></select>\n</span>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorColorIndicatorComponent } from '@acorex/components/decorators';\nimport { Component, inject, ViewEncapsulation } from '@angular/core';\nimport { WysiwygService } from '../../wysiwyg.service';\n\n/**\n * Text and highlight color controls for the WYSIWYG toolbar.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-colors',\n templateUrl: './wysiwyg-colors.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [AXDecoratorColorIndicatorComponent],\n providers: [{ provide: AXComponent, useExisting: AXWysiwygColorsComponent }],\n})\nexport class AXWysiwygColorsComponent {\n protected readonly wysiwygService = inject(WysiwygService);\n}\n","<div class=\"ax-wysiwyg-tool-group\">\n <div class=\"ql-formats ax-wysiwyg-text-color\">\n <ax-color-indicator class=\"ax-wysiwyg-swatch\" [previewColor]=\"wysiwygService.selectedColor()\"></ax-color-indicator>\n <select class=\"ql-color\" title=\"Text color\" aria-label=\"Text color\"></select>\n </div>\n <div class=\"ql-formats ax-wysiwyg-highlight-color\">\n <ax-color-indicator\n class=\"ax-wysiwyg-swatch\"\n [previewColor]=\"wysiwygService.selectedBackgroundColor()\"\n ></ax-color-indicator>\n <select class=\"ql-background\" title=\"Highlight color\" aria-label=\"Highlight color\"></select>\n </div>\n</div>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Font style, size, and heading controls for the WYSIWYG toolbar.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-font-style',\n templateUrl: './wysiwyg-font-style.component.html',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXComponent, useExisting: AXWysiwygFontStyleComponent }],\n})\nexport class AXWysiwygFontStyleComponent {}\n","<div class=\"ax-wysiwyg-tool-group\">\n <span class=\"ql-formats\">\n <button type=\"button\" class=\"ql-bold\" title=\"Bold\" aria-label=\"Bold\"></button>\n <button type=\"button\" class=\"ql-italic\" title=\"Italic\" aria-label=\"Italic\"></button>\n <button type=\"button\" class=\"ql-underline\" title=\"Underline\" aria-label=\"Underline\"></button>\n <button type=\"button\" class=\"ql-strike\" title=\"Strikethrough\" aria-label=\"Strikethrough\"></button>\n <button type=\"button\" class=\"ql-code-block\" title=\"Code block\" aria-label=\"Code block\"></button>\n </span>\n\n <span class=\"ql-formats\">\n <select class=\"ql-size\" title=\"Font size\" aria-label=\"Font size\">\n <option value=\"small\"></option>\n <option selected></option>\n <option value=\"large\"></option>\n <option value=\"huge\"></option>\n </select>\n </span>\n\n <span class=\"ql-formats\">\n <select class=\"ql-header\" title=\"Heading\" aria-label=\"Heading\">\n <option value=\"1\">H1</option>\n <option value=\"2\">H2</option>\n <option value=\"3\">H3</option>\n <option value=\"4\">H4</option>\n <option value=\"5\">H5</option>\n <option value=\"6\">H6</option>\n <option selected></option>\n </select>\n </span>\n</div>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Undo and redo controls for the WYSIWYG toolbar.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-history',\n templateUrl: './wysiwyg-history.component.html',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXComponent, useExisting: AXWysiwygHistoryComponent }],\n})\nexport class AXWysiwygHistoryComponent {}\n","<span class=\"ql-formats\">\n <button type=\"button\" class=\"ql-undo\" title=\"Undo\" aria-label=\"Undo\"></button>\n <button type=\"button\" class=\"ql-redo\" title=\"Redo\" aria-label=\"Redo\"></button>\n</span>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Image, video, and link controls for the WYSIWYG toolbar.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-insert',\n templateUrl: './wysiwyg-insert.component.html',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXComponent, useExisting: AXWysiwygInsertComponent }],\n})\nexport class AXWysiwygInsertComponent {}\n","<span class=\"ql-formats\">\n <button type=\"button\" class=\"ql-image\" title=\"Insert image\" aria-label=\"Insert image\"></button>\n <button type=\"button\" class=\"ql-video\" title=\"Insert video\" aria-label=\"Insert video\"></button>\n <button type=\"button\" class=\"ql-link\" title=\"Insert link\" aria-label=\"Insert link\"></button>\n</span>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * List and text-direction controls for the WYSIWYG toolbar.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-list',\n templateUrl: './wysiwyg-list.component.html',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXComponent, useExisting: AXWysiwygListComponent }],\n})\nexport class AXWysiwygListComponent {}\n","<span class=\"ql-formats\">\n <button type=\"button\" class=\"ql-list\" value=\"ordered\" title=\"Ordered list\" aria-label=\"Ordered list\"></button>\n <button type=\"button\" class=\"ql-list\" value=\"bullet\" title=\"Bulleted list\" aria-label=\"Bulleted list\"></button>\n <button type=\"button\" class=\"ql-direction\" value=\"rtl\" title=\"Right-to-left\" aria-label=\"Right-to-left\"></button>\n</span>\n","import { NgModule } from '@angular/core';\nimport { AXWysiwygContainerComponent } from './wysiwyg-container/wysiwyg-container.component';\nimport { AXWysiwygToolbarComponent } from './wysiwyg-toolbar/wysiwyg-toolbar.component';\nimport { AXWysiwygAlignmentComponent } from './wysiwyg-tools/wysiwyg-alignment/wysiwyg-alignment.component';\nimport { AXWysiwygColorsComponent } from './wysiwyg-tools/wysiwyg-colors/wysiwyg-colors.component';\nimport { AXWysiwygFontStyleComponent } from './wysiwyg-tools/wysiwyg-font-style/wysiwyg-font-style.component';\nimport { AXWysiwygHistoryComponent } from './wysiwyg-tools/wysiwyg-history/wysiwyg-history.component';\nimport { AXWysiwygInsertComponent } from './wysiwyg-tools/wysiwyg-insert/wysiwyg-insert.component';\nimport { AXWysiwygListComponent } from './wysiwyg-tools/wysiwyg-list/wysiwyg-list.component';\nimport { AXWysiwygViewComponent } from './wysiwyg-view/wysiwyg-view.component';\n\nconst COMPONENT = [\n AXWysiwygContainerComponent,\n AXWysiwygViewComponent,\n AXWysiwygAlignmentComponent,\n AXWysiwygColorsComponent,\n AXWysiwygFontStyleComponent,\n AXWysiwygHistoryComponent,\n AXWysiwygInsertComponent,\n AXWysiwygListComponent,\n AXWysiwygToolbarComponent,\n];\n\n@NgModule({\n imports: [...COMPONENT],\n exports: [...COMPONENT],\n})\nexport class AXWysiwygModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-wysiwyg.mjs","sources":["../../../../packages/components/wysiwyg/src/lib/wysiwyg-context.service.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-toolbar/wysiwyg-toolbar.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-toolbar/wysiwyg-toolbar.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-i18n.keys.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-view/wysiwyg-view.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-view/wysiwyg-view.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-container/wysiwyg-container.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-container/wysiwyg-container.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-button.util.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-alignment/wysiwyg-alignment.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-alignment/wysiwyg-alignment.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-colors/wysiwyg-colors.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-colors/wysiwyg-colors.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-font-style/wysiwyg-font-style.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-font-style/wysiwyg-font-style.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-history/wysiwyg-history.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-history/wysiwyg-history.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-insert/wysiwyg-insert.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-insert/wysiwyg-insert.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-list/wysiwyg-list.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-list/wysiwyg-list.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg.module.ts","../../../../packages/components/wysiwyg/src/acorex-components-wysiwyg.ts"],"sourcesContent":["import { computed, Injectable, signal } from '@angular/core';\nimport type { AXWysiwygMode } from './wysiwyg.types';\n\n@Injectable()\nexport class AXWysiwygContext {\n readonly disabled = signal(false);\n readonly readonly = signal(false);\n readonly mode = signal<AXWysiwygMode>('compact');\n readonly compact = computed(() => this.mode() === 'compact');\n readonly interactionDisabled = computed(() => this.disabled() || this.readonly());\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXZIndexService, AXZToken } from '@acorex/core/z-index';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n afterNextRender,\n Component,\n DestroyRef,\n ElementRef,\n inject,\n PLATFORM_ID,\n Renderer2,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\ninterface PickerOverlayState {\n picker: HTMLElement;\n options: HTMLElement | null;\n zToken: AXZToken;\n}\n\n/**\n * Toolbar for the WYSIWYG editor.\n * Formatting controls belong in `ax-prefix`. Actions such as submit belong in `ax-suffix`.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-toolbar',\n templateUrl: './wysiwyg-toolbar.component.html',\n styleUrl: './wysiwyg-toolbar.component.css',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXComponent, useExisting: AXWysiwygToolbarComponent }],\n})\nexport class AXWysiwygToolbarComponent {\n toolbar = viewChild<ElementRef<HTMLDivElement>>('toolbar');\n\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly renderer = inject(Renderer2);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\n private readonly zIndexService = inject(AXZIndexService);\n\n private observer: MutationObserver | null = null;\n private overlayState: PickerOverlayState | null = null;\n private unlistenClick: (() => void) | null = null;\n private clampFrame = 0;\n\n constructor() {\n afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n this.setupPickerOverlay();\n });\n\n this.destroyRef.onDestroy(() => this.teardownPickerOverlay());\n }\n\n private setupPickerOverlay(): void {\n const toolbarEl = this.toolbar()?.nativeElement;\n if (!toolbarEl) return;\n\n this.observer = new MutationObserver(() => this.syncPickerOverlay());\n this.observer.observe(toolbarEl, {\n attributes: true,\n attributeFilter: ['class'],\n subtree: true,\n });\n\n this.unlistenClick = this.renderer.listen(toolbarEl, 'click', (event: Event) => {\n const target = event.target;\n if (!(target instanceof Element) || !target.closest('.ql-picker-label, .ql-picker-item')) return;\n this.queueClamp();\n });\n }\n\n private syncPickerOverlay(): void {\n const toolbarEl = this.toolbar()?.nativeElement;\n if (!toolbarEl) return;\n\n const expandedPicker = toolbarEl.querySelector<HTMLElement>('.ql-picker.ql-expanded');\n if (!expandedPicker) {\n this.closePickerOverlay();\n return;\n }\n\n if (this.overlayState?.picker !== expandedPicker) {\n this.closePickerOverlay();\n this.openPickerOverlay(expandedPicker);\n }\n\n this.queueClamp();\n }\n\n private openPickerOverlay(picker: HTMLElement): void {\n const zToken = this.zIndexService.acquire();\n this.overlayState = {\n picker,\n options: picker.querySelector<HTMLElement>('.ql-picker-options'),\n zToken,\n };\n\n this.renderer.setStyle(this.host.nativeElement, 'z-index', String(zToken.zIndex));\n this.renderer.setStyle(picker, 'z-index', String(zToken.zIndex));\n }\n\n private closePickerOverlay(): void {\n if (!this.overlayState) return;\n\n const { picker, options, zToken } = this.overlayState;\n this.renderer.removeStyle(this.host.nativeElement, 'z-index');\n this.renderer.removeStyle(picker, 'z-index');\n this.clearPickerOffset(options);\n\n this.zIndexService.release(zToken);\n this.overlayState = null;\n }\n\n private queueClamp(): void {\n cancelAnimationFrame(this.clampFrame);\n this.clampFrame = requestAnimationFrame(() => this.keepPickerInViewport());\n }\n\n /**\n * Keep expanded picker menus inside the viewport horizontally.\n * Vertical direction is handled by CSS (open upward when the toolbar is below the editor).\n */\n private keepPickerInViewport(): void {\n const options = this.overlayState?.options;\n const picker = this.overlayState?.picker;\n if (!options || !picker || !picker.classList.contains('ql-expanded')) return;\n if (picker.classList.contains('ql-color-picker') || picker.classList.contains('ql-icon-picker')) return;\n\n this.renderer.removeStyle(options, 'left');\n\n const pad = 8;\n const viewportWidth = document.documentElement.clientWidth;\n const rect = options.getBoundingClientRect();\n\n if (rect.right > viewportWidth - pad) {\n this.renderer.setStyle(options, 'left', `${options.offsetLeft - (rect.right - (viewportWidth - pad))}px`);\n } else if (rect.left < pad) {\n this.renderer.setStyle(options, 'left', `${options.offsetLeft + (pad - rect.left)}px`);\n }\n }\n\n private clearPickerOffset(options: HTMLElement | null): void {\n if (!options) return;\n this.renderer.removeStyle(options, 'left');\n }\n\n private teardownPickerOverlay(): void {\n cancelAnimationFrame(this.clampFrame);\n this.unlistenClick?.();\n this.unlistenClick = null;\n this.observer?.disconnect();\n this.observer = null;\n this.closePickerOverlay();\n }\n}\n","<div class=\"ax-wysiwyg-toolbar-content\">\n <div #toolbar class=\"ax-wysiwyg-toolbar-tools\" role=\"toolbar\" aria-label=\"Formatting\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content></ng-content>\n </div>\n <ng-content select=\"ax-suffix\"></ng-content>\n</div>\n","const SCOPE = '@acorex:wysiwyg';\n\nexport const AX_WYSIWYG_I18N = {\n placeholder: `${SCOPE}.placeholder`,\n menu: {\n blockType: `${SCOPE}.menu.block-type`,\n insert: `${SCOPE}.menu.insert`,\n align: `${SCOPE}.menu.align`,\n },\n tools: {\n undo: `${SCOPE}.tools.undo`,\n redo: `${SCOPE}.tools.redo`,\n bold: `${SCOPE}.tools.bold`,\n italic: `${SCOPE}.tools.italic`,\n underline: `${SCOPE}.tools.underline`,\n strike: `${SCOPE}.tools.strike`,\n code: `${SCOPE}.tools.code`,\n codeBlock: `${SCOPE}.tools.code-block`,\n link: `${SCOPE}.tools.link`,\n image: `${SCOPE}.tools.image`,\n video: `${SCOPE}.tools.video`,\n bulletList: `${SCOPE}.tools.bullet-list`,\n orderedList: `${SCOPE}.tools.ordered-list`,\n rtl: `${SCOPE}.tools.rtl`,\n textColor: `${SCOPE}.tools.text-color`,\n highlight: `${SCOPE}.tools.highlight`,\n paragraph: `${SCOPE}.tools.paragraph`,\n alignLeft: `${SCOPE}.tools.align-left`,\n alignCenter: `${SCOPE}.tools.align-center`,\n alignRight: `${SCOPE}.tools.align-right`,\n alignJustify: `${SCOPE}.tools.align-justify`,\n },\n blocks: {\n paragraph: `${SCOPE}.blocks.paragraph`,\n blockquote: `${SCOPE}.blocks.blockquote`,\n codeBlock: `${SCOPE}.blocks.code-block`,\n bulletList: `${SCOPE}.blocks.bullet-list`,\n orderedList: `${SCOPE}.blocks.ordered-list`,\n image: `${SCOPE}.blocks.image`,\n video: `${SCOPE}.blocks.video`,\n heading: (level: number) => `${SCOPE}.blocks.heading${level}`,\n },\n fontSize: {\n placeholder: `${SCOPE}.font-size.placeholder`,\n small: `${SCOPE}.font-size.small`,\n normal: `${SCOPE}.font-size.normal`,\n large: `${SCOPE}.font-size.large`,\n huge: `${SCOPE}.font-size.huge`,\n },\n insert: {\n linkUrl: `${SCOPE}.insert.link-url`,\n imageUrl: `${SCOPE}.insert.image-url`,\n videoUrl: `${SCOPE}.insert.video-url`,\n apply: `${SCOPE}.insert.apply`,\n remove: `${SCOPE}.insert.remove`,\n insert: `${SCOPE}.insert.insert`,\n },\n} as const;\n","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, ElementRef, viewChild, ViewEncapsulation } from '@angular/core';\n\n/**\n * Editing surface for the WYSIWYG editor.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-view',\n templateUrl: './wysiwyg-view.component.html',\n styleUrl: './wysiwyg-view.component.css',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXComponent, useExisting: AXWysiwygViewComponent }],\n})\nexport class AXWysiwygViewComponent {\n editor = viewChild<ElementRef<HTMLDivElement>>('editor');\n}\n","<div #editor class=\"ax-wysiwyg-editor-host\"></div>\n","import {\n AXComponent,\n AXFocusableComponent,\n AXValuableComponent,\n MXInputBaseValueComponent,\n MXLookComponent,\n} from '@acorex/cdk/common';\nimport { AX_DEFAULT_WYSIWYG_FEATURES, AXWysiwyg } from '@acorex/cdk/wysiwyg';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n afterNextRender,\n Component,\n contentChild,\n DestroyRef,\n effect,\n forwardRef,\n inject,\n input,\n PLATFORM_ID,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport { AXWysiwygContext } from '../wysiwyg-context.service';\nimport { AXWysiwygToolbarComponent } from '../wysiwyg-toolbar/wysiwyg-toolbar.component';\nimport { AX_WYSIWYG_I18N } from '../wysiwyg-i18n.keys';\nimport type { AXWysiwygMode } from '../wysiwyg.types';\nimport { AXWysiwygViewComponent } from '../wysiwyg-view/wysiwyg-view.component';\n\n/**\n * A container component for WYSIWYG (What You See Is What You Get) editor functionality.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-container',\n templateUrl: './wysiwyg-container.component.html',\n styleUrl: './wysiwyg-container.component.css',\n inputs: ['look', 'readonly', 'disabled', 'value'],\n outputs: ['onValueChanged'],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[style.--ax-comp-wysiwyg-initial-line]': 'initialLine() + \"\"',\n '[attr.name]': 'name || null',\n '[class.ax-disable]': 'disabled',\n '[class.ax-readonly]': 'readonly && !disabled',\n '[class.ax-wysiwyg-compact]': \"mode() === 'compact'\",\n ngSkipHydration: 'true',\n },\n providers: [\n AXWysiwyg,\n AXWysiwygContext,\n { provide: AXComponent, useExisting: AXWysiwygContainerComponent },\n { provide: AXFocusableComponent, useExisting: AXWysiwygContainerComponent },\n { provide: AXValuableComponent, useExisting: AXWysiwygContainerComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXWysiwygContainerComponent),\n multi: true,\n },\n ],\n})\nexport class AXWysiwygContainerComponent extends classes(MXInputBaseValueComponent<string>, MXLookComponent) {\n /**\n * Specifies the placeholder text.\n *\n */\n placeHolder = input<string>();\n\n /**\n * Specifies the initial editor height in number of text lines.\n *\n */\n initialLine = input(3);\n\n /**\n * Toolbar layout: `compact` groups block types and insert actions in a dropdown; `normal` shows all tools inline.\n */\n mode = input<AXWysiwygMode>('compact');\n\n private readonly wysiwyg = inject(AXWysiwyg);\n private readonly context = inject(AXWysiwygContext);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\n private readonly translation = inject(AXTranslationService);\n private readonly view = contentChild(AXWysiwygViewComponent);\n private readonly toolbar = contentChild(AXWysiwygToolbarComponent);\n\n private lastCommittedHtml: string | null = null;\n private alive = true;\n private changeHandlerTimer: ReturnType<typeof setTimeout> | null = null;\n\n private readonly syncToolbarMode = effect(() => {\n this.context.mode.set(this.mode());\n });\n\n #init = afterNextRender(() => {\n this.destroyRef.onDestroy(() => {\n this.alive = false;\n if (this.changeHandlerTimer != null) {\n clearTimeout(this.changeHandlerTimer);\n }\n this.wysiwyg.destroy();\n });\n void this.initEditor();\n });\n\n /**\n * Focuses the component.\n *\n * @returns void - No return value. The component gains focus.\n */\n override focus(): void {\n this.wysiwyg.focus();\n }\n\n /**\n * Removes focus from the component.\n *\n * @returns void - No return value. The component loses focus.\n */\n override blur(): void {\n this.wysiwyg.blur();\n }\n\n /**\n * Replaces the editor document. External value updates go through the form binding;\n * this method does not emit a user change.\n */\n public setWysiwygContent(value: string): void {\n this.syncEditorFromValue(value);\n }\n\n /** @ignore */\n protected override internalValueChanged(value: string): void {\n this.syncEditorFromValue(value);\n }\n\n private async initEditor(): Promise<void> {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const editorElement = this.view()?.editor()?.nativeElement;\n if (!editorElement) {\n return;\n }\n\n void this.toolbar();\n\n await this.wysiwyg.init(editorElement, {\n content: this.value ?? '',\n editable: !this.disabled && !this.readonly,\n placeholder:\n this.placeHolder() ||\n this.translation.translateSync(AX_WYSIWYG_I18N.placeholder, { waitForLoad: true }),\n features: AX_DEFAULT_WYSIWYG_FEATURES,\n onUpdate: () => {\n if (this.disabled || this.readonly) {\n return;\n }\n this.scheduleCommit();\n },\n onFocus: () => this.emitOnFocusEvent(),\n onBlur: () => this.emitOnBlurEvent(),\n });\n\n if (!this.alive) {\n return;\n }\n\n this.disabledChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.context.disabled.set(this.disabled);\n this.syncEditable();\n });\n this.readonlyChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.context.readonly.set(this.readonly);\n this.syncEditable();\n });\n this.context.disabled.set(this.disabled);\n this.context.readonly.set(this.readonly);\n\n this.syncEditable();\n this.syncEditorFromValue(this.value);\n }\n\n private scheduleCommit(): void {\n if (this.changeHandlerTimer != null) {\n clearTimeout(this.changeHandlerTimer);\n }\n\n this.changeHandlerTimer = setTimeout(() => {\n this.changeHandlerTimer = null;\n if (this.disabled || this.readonly) {\n return;\n }\n\n if (this.wysiwyg.isEmpty()) {\n this.publishHtml(null);\n return;\n }\n\n this.publishHtml(this.wysiwyg.getHTML());\n }, 300);\n }\n\n private publishHtml(html: string | null): void {\n if (html === this.lastCommittedHtml) {\n return;\n }\n this.lastCommittedHtml = html;\n this.commitValue(html, true);\n }\n\n private syncEditorFromValue(value: string | null | undefined): void {\n if (!this.wysiwyg.ready()) {\n return;\n }\n\n const next = normalizeWysiwygHtml(value);\n if (next === this.lastCommittedHtml) {\n return;\n }\n\n this.lastCommittedHtml = next;\n this.wysiwyg.setContent(next, false);\n }\n\n private syncEditable(): void {\n this.wysiwyg.setEditable(!this.disabled && !this.readonly);\n }\n}\n\nfunction normalizeWysiwygHtml(value: string | null | undefined): string | null {\n if (value == null) {\n return null;\n }\n const trimmed = value.trim();\n if (!trimmed || trimmed === '<p></p>' || trimmed === '<p><br></p>') {\n return null;\n }\n return value;\n}\n","<div\n class=\"ax-editor-container ax-default {{ look }}\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly && !disabled\"\n>\n <div class=\"ax-wysiwyg-editor-inner\">\n <ng-content></ng-content>\n </div>\n <ng-content select=\"ax-validation-rule\"> </ng-content>\n</div>\n<div class=\"ax-error-container\"></div>\n","import type { AXWysiwygButtonConfig } from './wysiwyg.types';\n\nexport function resolveAXWysiwygButton<T extends string>(\n key: T,\n defaults: AXWysiwygButtonConfig,\n config?: Partial<Record<T, AXWysiwygButtonConfig | false>>,\n): AXWysiwygButtonConfig | null {\n const entry = config?.[key];\n if (entry === false) {\n return null;\n }\n return { ...defaults, ...entry };\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXWysiwyg, type AXWysiwygTextAlign } from '@acorex/cdk/wysiwyg';\nimport { AXButtonComponent, AXButtonItemComponent, AXButtonItemListComponent } from '@acorex/components/button';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXDropdownPanelComponent } from '@acorex/components/dropdown';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { resolveAXWysiwygButton } from '../../wysiwyg-button.util';\nimport { AXWysiwygContext } from '../../wysiwyg-context.service';\nimport { AX_WYSIWYG_I18N } from '../../wysiwyg-i18n.keys';\nimport type { AXWysiwygButtonConfig } from '../../wysiwyg.types';\n\nexport type AXWysiwygAlignmentButtonKey = 'left' | 'center' | 'right' | 'justify';\n\n/**\n * Text alignment controls for the WYSIWYG toolbar.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-alignment',\n templateUrl: './wysiwyg-alignment.component.html',\n styleUrl: './wysiwyg-alignment.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n AXButtonComponent,\n AXButtonItemComponent,\n AXButtonItemListComponent,\n AXDecoratorGenericComponent,\n AXDecoratorIconComponent,\n AXDropdownPanelComponent,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXWysiwygAlignmentComponent }],\n})\nexport class AXWysiwygAlignmentComponent {\n buttons = input<Partial<Record<AXWysiwygAlignmentButtonKey, AXWysiwygButtonConfig | false>>>();\n\n protected readonly wysiwyg = inject(AXWysiwyg);\n protected readonly context = inject(AXWysiwygContext);\n protected readonly state = this.wysiwyg.state;\n protected readonly i18n = AX_WYSIWYG_I18N;\n\n protected readonly alignButtons = computed(() => {\n const icons: Record<AXWysiwygAlignmentButtonKey, string> = {\n left: 'ax-icon-align-left',\n center: 'ax-icon-align-center',\n right: 'ax-icon-align-right',\n justify: 'ax-icon-align-justify',\n };\n const tooltips: Record<AXWysiwygAlignmentButtonKey, string> = {\n left: AX_WYSIWYG_I18N.tools.alignLeft,\n center: AX_WYSIWYG_I18N.tools.alignCenter,\n right: AX_WYSIWYG_I18N.tools.alignRight,\n justify: AX_WYSIWYG_I18N.tools.alignJustify,\n };\n return (['left', 'center', 'right', 'justify'] as AXWysiwygTextAlign[])\n .map((align) => {\n const resolved = resolveAXWysiwygButton(\n align,\n { icon: icons[align], tooltip: tooltips[align] },\n this.buttons(),\n );\n return resolved ? { align, config: resolved } : null;\n })\n .filter((item): item is { align: AXWysiwygTextAlign; config: AXWysiwygButtonConfig } => item != null);\n });\n\n protected readonly activeAlignIcon = computed(() => {\n const current = this.state().textAlign ?? 'left';\n return this.alignButtons().find((item) => item.align === current)?.config.icon ?? 'ax-icon-align-left';\n });\n\n protected isAlignActive(align: AXWysiwygTextAlign): boolean {\n const current = this.state().textAlign;\n if (align === 'left') {\n return current === 'left' || current === null;\n }\n return current === align;\n }\n}\n","@if (context.compact()) {\n <div class=\"ax-wysiwyg-tool-group ax-wysiwyg-align-menu-group\">\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"i18n.menu.align | translate | async\"\n [attr.aria-label]=\"i18n.menu.align | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ activeAlignIcon() }}\"></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-wysiwyg-align-menu\">\n <ax-title>{{ i18n.menu.align | translate | async }}</ax-title>\n @for (item of alignButtons(); track item.align) {\n <ax-button-item\n [text]=\"item.config.tooltip!\"\n [selected]=\"isAlignActive(item.align)\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.setTextAlign(item.align)\"\n >\n <ax-prefix>\n <ax-icon class=\"ax-icon {{ item.config.icon }}\"></ax-icon>\n </ax-prefix>\n @if (isAlignActive(item.align)) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n} @else {\n <div class=\"ax-wysiwyg-tool-group\">\n @for (item of alignButtons(); track item.align) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"isAlignActive(item.align)\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"item.config.tooltip | translate | async\"\n (onClick)=\"wysiwyg.setTextAlign(item.align)\"\n >\n <ax-icon class=\"ax-icon {{ item.config.icon }}\"></ax-icon>\n </ax-button>\n }\n </div>\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXWysiwyg } from '@acorex/cdk/wysiwyg';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport {\n AXColorPaletteComponent,\n AXColorPaletteInputComponent,\n AXColorPalettePickerComponent,\n AXColorPaletteSwatchesComponent,\n} from '@acorex/components/color-palette';\nimport { AXDecoratorColorIndicatorComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, signal, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { resolveAXWysiwygButton } from '../../wysiwyg-button.util';\nimport { AX_WYSIWYG_I18N } from '../../wysiwyg-i18n.keys';\nimport { AXWysiwygContext } from '../../wysiwyg-context.service';\nimport type { AXWysiwygButtonConfig } from '../../wysiwyg.types';\n\nexport type AXWysiwygColorsButtonKey = 'textColor' | 'highlight';\n\n/**\n * Text and highlight color controls for the WYSIWYG toolbar.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-colors',\n templateUrl: './wysiwyg-colors.component.html',\n styleUrl: './wysiwyg-colors.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n FormsModule,\n AXButtonComponent,\n AXDecoratorIconComponent,\n AXDecoratorColorIndicatorComponent,\n AXPopoverComponent,\n AXColorPaletteComponent,\n AXColorPalettePickerComponent,\n AXColorPaletteSwatchesComponent,\n AXColorPaletteInputComponent,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXWysiwygColorsComponent }],\n})\nexport class AXWysiwygColorsComponent {\n buttons = input<Partial<Record<AXWysiwygColorsButtonKey, AXWysiwygButtonConfig | false>>>();\n\n protected readonly clearLabel = '@acorex:common.general.clear';\n\n protected readonly wysiwyg = inject(AXWysiwyg);\n protected readonly context = inject(AXWysiwygContext);\n protected readonly state = this.wysiwyg.state;\n\n protected readonly textColorButton = computed(() =>\n resolveAXWysiwygButton(\n 'textColor',\n { icon: 'ax-icon-color-palette', tooltip: AX_WYSIWYG_I18N.tools.textColor },\n this.buttons(),\n ),\n );\n protected readonly highlightButton = computed(() =>\n resolveAXWysiwygButton('highlight', { icon: 'ax-icon-highlight', tooltip: AX_WYSIWYG_I18N.tools.highlight }, this.buttons()),\n );\n\n protected readonly draftTextColor = signal('#111827');\n protected readonly draftHighlightColor = signal('#fef08a');\n}\n","<div class=\"ax-wysiwyg-tool-group\">\n @if (textColorButton(); as btn) {\n <div class=\"ax-wysiwyg-color-control\">\n <ax-button\n class=\"ax-sm\"\n #textColorTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"!!state().textColor\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n <ax-color-indicator\n class=\"ax-wysiwyg-swatch ax-wysiwyg-text-swatch\"\n [previewColor]=\"state().textColor || 'currentColor'\"\n ></ax-color-indicator>\n </ax-button>\n <ax-popover [target]=\"textColorTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-color-panel ax-md\">\n <ax-color-palette\n [ngModel]=\"draftTextColor()\"\n (ngModelChange)=\"draftTextColor.set($event); wysiwyg.setColor($event)\"\n >\n <ax-color-palette-picker></ax-color-palette-picker>\n <ax-color-palette-swatches></ax-color-palette-swatches>\n <ax-color-palette-input></ax-color-palette-input>\n </ax-color-palette>\n <ax-button\n look=\"flat\"\n [text]=\"clearLabel\"\n [disabled]=\"!state().textColor\"\n (onClick)=\"wysiwyg.unsetColor()\"\n ></ax-button>\n </div>\n </ax-popover>\n </div>\n }\n\n @if (highlightButton(); as btn) {\n <div class=\"ax-wysiwyg-color-control\">\n <ax-button\n class=\"ax-sm\"\n #highlightTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"!!state().highlightColor\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n <ax-color-indicator\n class=\"ax-wysiwyg-swatch ax-wysiwyg-highlight-swatch\"\n [previewColor]=\"state().highlightColor || '#fef08a'\"\n ></ax-color-indicator>\n </ax-button>\n <ax-popover [target]=\"highlightTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-color-panel ax-md\">\n <ax-color-palette\n [ngModel]=\"draftHighlightColor()\"\n (ngModelChange)=\"draftHighlightColor.set($event); wysiwyg.setHighlight($event)\"\n >\n <ax-color-palette-picker></ax-color-palette-picker>\n <ax-color-palette-swatches></ax-color-palette-swatches>\n <ax-color-palette-input></ax-color-palette-input>\n </ax-color-palette>\n <ax-button\n look=\"flat\"\n [text]=\"clearLabel\"\n [disabled]=\"!state().highlightColor\"\n (onClick)=\"wysiwyg.unsetHighlight()\"\n ></ax-button>\n </div>\n </ax-popover>\n </div>\n }\n</div>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXWysiwyg, type AXWysiwygHeadingLevel } from '@acorex/cdk/wysiwyg';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXButtonItemComponent, AXButtonItemListComponent } from '@acorex/components/button';\nimport { AXComboBoxComponent, type AXComboBoxItem, type AXComboBoxValue } from '@acorex/components/combo-box';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXDropdownPanelComponent } from '@acorex/components/dropdown';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXTextBoxComponent } from '@acorex/components/text-box';\nimport { AXTranslatorPipe, toTranslatedSignal } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { resolveAXWysiwygButton } from '../../wysiwyg-button.util';\nimport { AXWysiwygContext } from '../../wysiwyg-context.service';\nimport { AX_WYSIWYG_I18N } from '../../wysiwyg-i18n.keys';\nimport type { AXWysiwygButtonConfig } from '../../wysiwyg.types';\n\nexport type AXWysiwygFontStyleButtonKey =\n | 'bold'\n | 'italic'\n | 'underline'\n | 'strike'\n | 'code'\n | 'codeBlock';\n\nexport type AXWysiwygBlockMenuItemKey =\n | 'paragraph'\n | 'blockquote'\n | 'codeBlock'\n | 'bulletList'\n | 'orderedList'\n | 'image'\n | 'video'\n | 'heading1'\n | 'heading2'\n | 'heading3'\n | 'heading4'\n | 'heading5'\n | 'heading6';\n\nconst HEADING_MENU_KEYS: Record<AXWysiwygHeadingLevel, AXWysiwygBlockMenuItemKey> = {\n 1: 'heading1',\n 2: 'heading2',\n 3: 'heading3',\n 4: 'heading4',\n 5: 'heading5',\n 6: 'heading6',\n};\n\n/**\n * Font style, size, and heading controls for the WYSIWYG toolbar.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-font-style',\n templateUrl: './wysiwyg-font-style.component.html',\n styleUrl: './wysiwyg-font-style.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n FormsModule,\n AXButtonComponent,\n AXButtonItemComponent,\n AXButtonItemListComponent,\n AXComboBoxComponent,\n AXDecoratorGenericComponent,\n AXDecoratorIconComponent,\n AXDropdownPanelComponent,\n AXPopoverComponent,\n AXTextBoxComponent,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXWysiwygFontStyleComponent }],\n})\nexport class AXWysiwygFontStyleComponent {\n headingLevels = input<AXWysiwygHeadingLevel[]>([1, 2, 3, 4, 5, 6]);\n buttons = input<Partial<Record<AXWysiwygFontStyleButtonKey, AXWysiwygButtonConfig | false>>>();\n menuItems = input<Partial<Record<AXWysiwygBlockMenuItemKey, AXWysiwygButtonConfig | false>>>();\n\n protected readonly wysiwyg = inject(AXWysiwyg);\n protected readonly context = inject(AXWysiwygContext);\n protected readonly state = this.wysiwyg.state;\n\n protected readonly i18n = AX_WYSIWYG_I18N;\n\n private readonly insertPopover = viewChild<AXPopoverComponent>('insertPopover');\n\n protected readonly insertUrl = signal('');\n protected readonly insertKind = signal<'image' | 'video' | null>(null);\n\n protected readonly boldButton = computed(() =>\n resolveAXWysiwygButton('bold', { icon: 'ax-icon-bold', tooltip: AX_WYSIWYG_I18N.tools.bold }, this.buttons()),\n );\n protected readonly italicButton = computed(() =>\n resolveAXWysiwygButton('italic', { icon: 'ax-icon-italic', tooltip: AX_WYSIWYG_I18N.tools.italic }, this.buttons()),\n );\n protected readonly underlineButton = computed(() =>\n resolveAXWysiwygButton(\n 'underline',\n { icon: 'ax-icon-under-line', tooltip: AX_WYSIWYG_I18N.tools.underline },\n this.buttons(),\n ),\n );\n protected readonly strikeButton = computed(() =>\n resolveAXWysiwygButton('strike', { icon: 'ax-icon-strike', tooltip: AX_WYSIWYG_I18N.tools.strike }, this.buttons()),\n );\n protected readonly codeButton = computed(() =>\n resolveAXWysiwygButton('code', { icon: 'ax-icon-code', tooltip: AX_WYSIWYG_I18N.tools.code }, this.buttons()),\n );\n protected readonly codeBlockButton = computed(() =>\n resolveAXWysiwygButton(\n 'codeBlock',\n { icon: 'ax-icon-code', tooltip: AX_WYSIWYG_I18N.tools.codeBlock },\n this.buttons(),\n ),\n );\n\n protected readonly paragraphMenuItem = computed(() =>\n resolveAXWysiwygButton('paragraph', { text: AX_WYSIWYG_I18N.blocks.paragraph }, this.menuItems()),\n );\n protected readonly blockquoteMenuItem = computed(() =>\n resolveAXWysiwygButton('blockquote', { text: AX_WYSIWYG_I18N.blocks.blockquote }, this.menuItems()),\n );\n protected readonly codeBlockMenuItem = computed(() =>\n resolveAXWysiwygButton('codeBlock', { text: AX_WYSIWYG_I18N.blocks.codeBlock }, this.menuItems()),\n );\n protected readonly bulletListMenuItem = computed(() =>\n resolveAXWysiwygButton('bulletList', { text: AX_WYSIWYG_I18N.blocks.bulletList }, this.menuItems()),\n );\n protected readonly orderedListMenuItem = computed(() =>\n resolveAXWysiwygButton('orderedList', { text: AX_WYSIWYG_I18N.blocks.orderedList }, this.menuItems()),\n );\n protected readonly imageMenuItem = computed(() =>\n resolveAXWysiwygButton('image', { text: AX_WYSIWYG_I18N.blocks.image }, this.menuItems()),\n );\n protected readonly videoMenuItem = computed(() =>\n resolveAXWysiwygButton('video', { text: AX_WYSIWYG_I18N.blocks.video }, this.menuItems()),\n );\n\n protected readonly headingButtons = computed(() =>\n this.headingLevels().map((level) => ({\n level,\n label: `H${level}`,\n menuKey: HEADING_MENU_KEYS[level],\n config: resolveAXWysiwygButton(\n HEADING_MENU_KEYS[level],\n { text: AX_WYSIWYG_I18N.blocks.heading(level) },\n this.menuItems(),\n ),\n })),\n );\n\n protected readonly fontSizeItems = computed<AXComboBoxItem[]>(() => [\n { id: 'small', text: AX_WYSIWYG_I18N.fontSize.small, value: 'small' },\n { id: 'normal', text: AX_WYSIWYG_I18N.fontSize.normal, value: 'normal' },\n { id: 'large', text: AX_WYSIWYG_I18N.fontSize.large, value: 'large' },\n { id: 'huge', text: AX_WYSIWYG_I18N.fontSize.huge, value: 'huge' },\n ]);\n\n protected readonly fontSizeComboValue = computed(() => this.state().fontSize ?? 'normal');\n\n protected readonly blockLabelSource = computed(() => {\n const s = this.state();\n if (s.orderedList) {\n return this.orderedListMenuItem()?.text ?? AX_WYSIWYG_I18N.blocks.orderedList;\n }\n if (s.bulletList) {\n return this.bulletListMenuItem()?.text ?? AX_WYSIWYG_I18N.blocks.bulletList;\n }\n if (s.blockquote) {\n return this.blockquoteMenuItem()?.text ?? AX_WYSIWYG_I18N.blocks.blockquote;\n }\n if (s.codeBlock) {\n return this.codeBlockMenuItem()?.text ?? AX_WYSIWYG_I18N.blocks.codeBlock;\n }\n if (s.headingLevel) {\n const heading = this.headingButtons().find((h) => h.level === s.headingLevel);\n return heading?.config?.text ?? AX_WYSIWYG_I18N.blocks.heading(s.headingLevel);\n }\n return this.paragraphMenuItem()?.text ?? AX_WYSIWYG_I18N.blocks.paragraph;\n });\n\n protected readonly blockLabel = toTranslatedSignal(this.blockLabelSource);\n\n protected readonly insertPlaceholderSource = computed(() =>\n this.insertKind() === 'video' ? AX_WYSIWYG_I18N.insert.videoUrl : AX_WYSIWYG_I18N.insert.imageUrl,\n );\n\n protected readonly insertPlaceholder = toTranslatedSignal(this.insertPlaceholderSource);\n\n protected isHeadingActive(level: AXWysiwygHeadingLevel): boolean {\n return this.state().headingLevel === level;\n }\n\n protected isParagraphActive(): boolean {\n const s = this.state();\n return !s.headingLevel && !s.bulletList && !s.orderedList && !s.blockquote && !s.codeBlock;\n }\n\n protected onFontSizeComboChange(value: AXComboBoxValue): void {\n if (value == null || value === 'normal') {\n this.wysiwyg.setFontSize(null);\n return;\n }\n if (value === 'small' || value === 'large' || value === 'huge') {\n this.wysiwyg.setFontSize(value);\n }\n }\n\n protected beginInsert(kind: 'image' | 'video'): void {\n this.insertKind.set(kind);\n this.insertUrl.set('');\n queueMicrotask(() => this.insertPopover()?.open());\n }\n\n protected applyInsert(): void {\n const url = this.insertUrl().trim();\n if (!url) {\n return;\n }\n if (this.insertKind() === 'image') {\n this.wysiwyg.insertImage(url);\n } else if (this.insertKind() === 'video') {\n this.wysiwyg.insertVideo(url);\n }\n this.insertPopover()?.close();\n this.insertUrl.set('');\n this.insertKind.set(null);\n }\n}\n","@if (context.compact()) {\n <div class=\"ax-wysiwyg-tool-group ax-wysiwyg-block-menu-group\">\n <ax-button\n #blockMenuTrigger\n class=\"ax-sm ax-wysiwyg-block-menu-trigger\"\n look=\"blank\"\n [text]=\"blockLabel()\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"i18n.menu.blockType | translate | async\"\n >\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-chevron-down\"></ax-icon>\n </ax-suffix>\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-wysiwyg-block-menu\">\n <ax-title>{{ i18n.menu.blockType | translate | async }}</ax-title>\n @if (paragraphMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"isParagraphActive()\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.setParagraph()\"\n >\n @if (isParagraphActive()) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @for (heading of headingButtons(); track heading.level) {\n @if (heading.config; as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"isHeadingActive(heading.level)\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleHeading(heading.level)\"\n >\n @if (isHeadingActive(heading.level)) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n }\n @if (blockquoteMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"state().blockquote\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleBlockquote()\"\n >\n @if (state().blockquote) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @if (codeBlockMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"state().codeBlock\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleCodeBlock()\"\n >\n @if (state().codeBlock) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @if (bulletListMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"state().bulletList\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleBulletList()\"\n >\n @if (state().bulletList) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @if (orderedListMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"state().orderedList\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleOrderedList()\"\n >\n @if (state().orderedList) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n\n <ax-divider></ax-divider>\n <ax-title>{{ i18n.menu.insert | translate | async }}</ax-title>\n @if (imageMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"beginInsert('image')\"\n ></ax-button-item>\n }\n @if (videoMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"beginInsert('video')\"\n ></ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <ax-popover\n #insertPopover\n [target]=\"blockMenuTrigger\"\n openOn=\"manual\"\n closeOn=\"clickOut\"\n placement=\"bottom-start\"\n >\n <div class=\"ax-wysiwyg-block-insert-panel\">\n <ax-text-box\n look=\"none\"\n [placeholder]=\"insertPlaceholder()\"\n [ngModel]=\"insertUrl()\"\n (ngModelChange)=\"insertUrl.set($event)\"\n ></ax-text-box>\n <ax-button\n look=\"flat\"\n [text]=\"i18n.insert.insert\"\n (onClick)=\"applyInsert()\"\n ></ax-button>\n </div>\n </ax-popover>\n </div>\n}\n\n<div class=\"ax-wysiwyg-tool-group\">\n @if (boldButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().bold\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleBold()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (italicButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().italic\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleItalic()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (underlineButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().underline\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleUnderline()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (strikeButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().strike\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleStrike()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (context.compact()) {\n @if (codeButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().code\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleCode()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n } @else if (codeBlockButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().codeBlock\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleCodeBlock()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n</div>\n\n<div class=\"ax-wysiwyg-tool-group ax-wysiwyg-font-size-group\">\n <ax-combo-box\n class=\"ax-wysiwyg-font-size-combo ax-sm\"\n [items]=\"fontSizeItems()\"\n [searchable]=\"false\"\n [adaptivityEnabled]=\"false\"\n look=\"blank\"\n [placeholder]=\"i18n.fontSize.placeholder\"\n name=\"wysiwyg-font-size\"\n [disabled]=\"context.interactionDisabled()\"\n [ngModel]=\"fontSizeComboValue()\"\n (ngModelChange)=\"onFontSizeComboChange($event)\"\n ></ax-combo-box>\n</div>\n\n@if (!context.compact()) {\n <div class=\"ax-wysiwyg-tool-group\">\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n text=\"P\"\n [toggleable]=\"true\"\n [selected]=\"isParagraphActive()\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"i18n.tools.paragraph | translate | async\"\n [attr.aria-label]=\"i18n.tools.paragraph | translate | async\"\n (onClick)=\"wysiwyg.setParagraph()\"\n ></ax-button>\n @for (item of headingButtons(); track item.level) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [text]=\"item.label\"\n [toggleable]=\"true\"\n [selected]=\"isHeadingActive(item.level)\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"(item.config?.text ?? i18n.blocks.heading(item.level)) | translate | async\"\n [attr.aria-label]=\"(item.config?.text ?? i18n.blocks.heading(item.level)) | translate | async\"\n (onClick)=\"wysiwyg.toggleHeading(item.level)\"\n ></ax-button>\n }\n </div>\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXWysiwyg } from '@acorex/cdk/wysiwyg';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { resolveAXWysiwygButton } from '../../wysiwyg-button.util';\nimport { AX_WYSIWYG_I18N } from '../../wysiwyg-i18n.keys';\nimport { AXWysiwygContext } from '../../wysiwyg-context.service';\nimport type { AXWysiwygButtonConfig } from '../../wysiwyg.types';\n\nexport type AXWysiwygHistoryButtonKey = 'undo' | 'redo';\n\n/**\n * Undo and redo controls for the WYSIWYG toolbar.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-history',\n templateUrl: './wysiwyg-history.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, AXButtonComponent, AXDecoratorIconComponent, AXTranslatorPipe],\n providers: [{ provide: AXComponent, useExisting: AXWysiwygHistoryComponent }],\n})\nexport class AXWysiwygHistoryComponent {\n buttons = input<Partial<Record<AXWysiwygHistoryButtonKey, AXWysiwygButtonConfig | false>>>();\n\n protected readonly wysiwyg = inject(AXWysiwyg);\n protected readonly context = inject(AXWysiwygContext);\n protected readonly state = this.wysiwyg.state;\n\n protected readonly undoButton = computed(() =>\n resolveAXWysiwygButton('undo', { icon: 'ax-icon-undo', tooltip: AX_WYSIWYG_I18N.tools.undo }, this.buttons()),\n );\n protected readonly redoButton = computed(() =>\n resolveAXWysiwygButton('redo', { icon: 'ax-icon-redo', tooltip: AX_WYSIWYG_I18N.tools.redo }, this.buttons()),\n );\n}\n","<div class=\"ax-wysiwyg-tool-group\">\n @if (undoButton(); as undo) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled() || !state().canUndo\"\n [attr.title]=\"undo.tooltip | translate | async\"\n [attr.aria-label]=\"undo.tooltip | translate | async\"\n (onClick)=\"wysiwyg.undo()\"\n >\n <ax-icon class=\"ax-icon {{ undo.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (redoButton(); as redo) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled() || !state().canRedo\"\n [attr.title]=\"redo.tooltip | translate | async\"\n [attr.aria-label]=\"redo.tooltip | translate | async\"\n (onClick)=\"wysiwyg.redo()\"\n >\n <ax-icon class=\"ax-icon {{ redo.icon }}\"></ax-icon>\n </ax-button>\n }\n</div>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXWysiwyg } from '@acorex/cdk/wysiwyg';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXTextBoxComponent } from '@acorex/components/text-box';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, signal, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { resolveAXWysiwygButton } from '../../wysiwyg-button.util';\nimport { AX_WYSIWYG_I18N } from '../../wysiwyg-i18n.keys';\nimport { AXWysiwygContext } from '../../wysiwyg-context.service';\nimport type { AXWysiwygButtonConfig } from '../../wysiwyg.types';\n\nexport type AXWysiwygInsertButtonKey = 'link' | 'image' | 'video';\n\n/**\n * Link, image, and video insertion controls for the WYSIWYG toolbar.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-insert',\n templateUrl: './wysiwyg-insert.component.html',\n styleUrl: './wysiwyg-insert.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n FormsModule,\n AXButtonComponent,\n AXDecoratorIconComponent,\n AXPopoverComponent,\n AXTextBoxComponent,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXWysiwygInsertComponent }],\n})\nexport class AXWysiwygInsertComponent {\n buttons = input<Partial<Record<AXWysiwygInsertButtonKey, AXWysiwygButtonConfig | false>>>();\n\n protected readonly i18n = AX_WYSIWYG_I18N;\n\n protected readonly wysiwyg = inject(AXWysiwyg);\n protected readonly context = inject(AXWysiwygContext);\n protected readonly state = this.wysiwyg.state;\n\n protected readonly linkButton = computed(() =>\n resolveAXWysiwygButton('link', { icon: 'ax-icon-link', tooltip: AX_WYSIWYG_I18N.tools.link }, this.buttons()),\n );\n protected readonly imageButton = computed(() =>\n resolveAXWysiwygButton('image', { icon: 'ax-icon-image', tooltip: AX_WYSIWYG_I18N.tools.image }, this.buttons()),\n );\n protected readonly videoButton = computed(() =>\n resolveAXWysiwygButton('video', { icon: 'ax-icon-play', tooltip: AX_WYSIWYG_I18N.tools.video }, this.buttons()),\n );\n\n protected readonly linkUrl = signal('');\n protected readonly imageUrl = signal('');\n protected readonly videoUrl = signal('');\n\n protected applyLink(): void {\n const url = this.linkUrl().trim();\n if (url) {\n this.wysiwyg.setLink(url);\n }\n }\n\n protected removeLink(): void {\n this.wysiwyg.unsetLink();\n this.linkUrl.set('');\n }\n\n protected applyImage(): void {\n const url = this.imageUrl().trim();\n if (url) {\n this.wysiwyg.insertImage(url);\n }\n }\n\n protected applyVideo(): void {\n const url = this.videoUrl().trim();\n if (url) {\n this.wysiwyg.insertVideo(url);\n }\n }\n}\n","<div class=\"ax-wysiwyg-tool-group\">\n @if (linkButton(); as btn) {\n <div class=\"ax-wysiwyg-insert-control\">\n <ax-button\n class=\"ax-sm\"\n #linkTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"!!state().linkHref\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n <ax-popover [target]=\"linkTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-insert-panel\">\n <ax-text-box\n look=\"none\"\n [placeholder]=\"i18n.insert.linkUrl | translate | async\"\n [ngModel]=\"linkUrl()\"\n (ngModelChange)=\"linkUrl.set($event)\"\n ></ax-text-box>\n <div class=\"ax-wysiwyg-insert-actions\">\n <ax-button look=\"flat\" [text]=\"i18n.insert.apply\" (onClick)=\"applyLink()\"></ax-button>\n <ax-button\n look=\"flat\"\n [text]=\"i18n.insert.remove\"\n [disabled]=\"!state().linkHref\"\n (onClick)=\"removeLink()\"\n ></ax-button>\n </div>\n </div>\n </ax-popover>\n </div>\n }\n\n @if (!context.compact()) {\n @if (imageButton(); as btn) {\n <div class=\"ax-wysiwyg-insert-control\">\n <ax-button\n class=\"ax-sm\"\n #imageTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n <ax-popover [target]=\"imageTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-insert-panel\">\n <ax-text-box\n look=\"none\"\n [placeholder]=\"i18n.insert.imageUrl | translate | async\"\n [ngModel]=\"imageUrl()\"\n (ngModelChange)=\"imageUrl.set($event)\"\n ></ax-text-box>\n <ax-button look=\"flat\" [text]=\"i18n.insert.insert\" (onClick)=\"applyImage()\"></ax-button>\n </div>\n </ax-popover>\n </div>\n }\n\n @if (videoButton(); as btn) {\n <div class=\"ax-wysiwyg-insert-control\">\n <ax-button\n class=\"ax-sm\"\n #videoTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n <ax-popover [target]=\"videoTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-insert-panel\">\n <ax-text-box\n look=\"none\"\n [placeholder]=\"i18n.insert.videoUrl | translate | async\"\n [ngModel]=\"videoUrl()\"\n (ngModelChange)=\"videoUrl.set($event)\"\n ></ax-text-box>\n <ax-button look=\"flat\" [text]=\"i18n.insert.insert\" (onClick)=\"applyVideo()\"></ax-button>\n </div>\n </ax-popover>\n </div>\n }\n }\n</div>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXWysiwyg } from '@acorex/cdk/wysiwyg';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { resolveAXWysiwygButton } from '../../wysiwyg-button.util';\nimport { AX_WYSIWYG_I18N } from '../../wysiwyg-i18n.keys';\nimport { AXWysiwygContext } from '../../wysiwyg-context.service';\nimport type { AXWysiwygButtonConfig } from '../../wysiwyg.types';\n\nexport type AXWysiwygListButtonKey = 'bulletList' | 'orderedList' | 'rtl';\n\n/**\n * List and text-direction controls for the WYSIWYG toolbar.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-list',\n templateUrl: './wysiwyg-list.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, AXButtonComponent, AXDecoratorIconComponent, AXTranslatorPipe],\n providers: [{ provide: AXComponent, useExisting: AXWysiwygListComponent }],\n})\nexport class AXWysiwygListComponent {\n buttons = input<Partial<Record<AXWysiwygListButtonKey, AXWysiwygButtonConfig | false>>>();\n\n protected readonly wysiwyg = inject(AXWysiwyg);\n protected readonly context = inject(AXWysiwygContext);\n protected readonly state = this.wysiwyg.state;\n\n protected readonly bulletButton = computed(() =>\n resolveAXWysiwygButton(\n 'bulletList',\n { icon: 'ax-icon-un-order-list', tooltip: AX_WYSIWYG_I18N.tools.bulletList },\n this.buttons(),\n ),\n );\n protected readonly orderedButton = computed(() =>\n resolveAXWysiwygButton(\n 'orderedList',\n { icon: 'ax-icon-order-list', tooltip: AX_WYSIWYG_I18N.tools.orderedList },\n this.buttons(),\n ),\n );\n protected readonly rtlButton = computed(() =>\n resolveAXWysiwygButton('rtl', { icon: 'ax-icon-text-direction-rtl', tooltip: AX_WYSIWYG_I18N.tools.rtl }, this.buttons()),\n );\n}\n","<div class=\"ax-wysiwyg-tool-group\">\n @if (!context.compact()) {\n @if (orderedButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().orderedList\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleOrderedList()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (bulletButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().bulletList\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleBulletList()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n }\n @if (rtlButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().textDirection === 'rtl'\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.setTextDirection(state().textDirection === 'rtl' ? 'ltr' : 'rtl')\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { AXWysiwygContainerComponent } from './wysiwyg-container/wysiwyg-container.component';\nimport { AXWysiwygToolbarComponent } from './wysiwyg-toolbar/wysiwyg-toolbar.component';\nimport { AXWysiwygAlignmentComponent } from './wysiwyg-tools/wysiwyg-alignment/wysiwyg-alignment.component';\nimport { AXWysiwygColorsComponent } from './wysiwyg-tools/wysiwyg-colors/wysiwyg-colors.component';\nimport { AXWysiwygFontStyleComponent } from './wysiwyg-tools/wysiwyg-font-style/wysiwyg-font-style.component';\nimport { AXWysiwygHistoryComponent } from './wysiwyg-tools/wysiwyg-history/wysiwyg-history.component';\nimport { AXWysiwygInsertComponent } from './wysiwyg-tools/wysiwyg-insert/wysiwyg-insert.component';\nimport { AXWysiwygListComponent } from './wysiwyg-tools/wysiwyg-list/wysiwyg-list.component';\nimport { AXWysiwygViewComponent } from './wysiwyg-view/wysiwyg-view.component';\n\nconst COMPONENT = [\n AXWysiwygContainerComponent,\n AXWysiwygViewComponent,\n AXWysiwygAlignmentComponent,\n AXWysiwygColorsComponent,\n AXWysiwygFontStyleComponent,\n AXWysiwygHistoryComponent,\n AXWysiwygInsertComponent,\n AXWysiwygListComponent,\n AXWysiwygToolbarComponent,\n];\n\n@NgModule({\n imports: [...COMPONENT],\n exports: [...COMPONENT],\n})\nexport class AXWysiwygModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@acorex/components",
3
- "version": "22.3.25",
3
+ "version": "22.4.0",
4
4
  "peerDependencies": {
5
- "@acorex/core": "22.3.25",
6
- "@acorex/cdk": "22.3.25",
5
+ "@acorex/core": "22.4.0",
6
+ "@acorex/cdk": "22.4.0",
7
7
  "@angular/aria": ">=22.1.0",
8
8
  "polytype": ">=0.17.0",
9
9
  "hammerjs": ">=2.0.8",
@@ -16,8 +16,15 @@
16
16
  "leaflet-draw": "1.0.4",
17
17
  "leaflet.locatecontrol": "0.81.1",
18
18
  "highlight.js": ">=11.11.1",
19
- "quill": ">=2.0.3",
20
- "quill-delta-to-html": ">=0.12.1",
19
+ "@tiptap/core": ">=3.31.4",
20
+ "@tiptap/extension-color": ">=3.31.4",
21
+ "@tiptap/extension-highlight": ">=3.31.4",
22
+ "@tiptap/extension-image": ">=3.31.4",
23
+ "@tiptap/extension-text-align": ">=3.31.4",
24
+ "@tiptap/extension-text-style": ">=3.31.4",
25
+ "@tiptap/extension-underline": ">=3.31.4",
26
+ "@tiptap/extensions": ">=3.31.4",
27
+ "@tiptap/starter-kit": ">=3.31.4",
21
28
  "@codemirror/state": ">=6.4.0",
22
29
  "@codemirror/view": ">=6.30.0",
23
30
  "@codemirror/language": ">=6.10.0",