@acorex/components 22.3.22 → 22.3.23
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 zToken: AXZToken;\n}\n\n/**\n * @category Components\n * A component for viewing WYSIWYG content.\n */\n@Component({\n selector: 'ax-wysiwyg-toolbar',\n templateUrl: './wysiwyg-toolbar.component.html',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXComponent, useExisting: AXWysiwygToolbarComponent }],\n styleUrl: 'wysiwyg-toolbar.component.css',\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\n constructor() {\n afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\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) {\n return;\n }\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 toolbarEl.addEventListener('click', (event) => {\n const target = event.target as HTMLElement | null;\n if (target?.closest('.ql-picker-label, .ql-picker-item')) {\n requestAnimationFrame(() => this.syncPickerOverlay());\n }\n });\n }\n\n private syncPickerOverlay(): void {\n const toolbarEl = this.toolbar()?.nativeElement;\n if (!toolbarEl) {\n return;\n }\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 return;\n }\n\n this.closePickerOverlay();\n this.openPickerOverlay(expandedPicker);\n }\n\n private openPickerOverlay(picker: HTMLElement): void {\n const zToken = this.zIndexService.acquire();\n this.overlayState = { picker, zToken };\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) {\n return;\n }\n\n const { picker, zToken } = this.overlayState;\n this.renderer.removeStyle(this.host.nativeElement, 'z-index');\n this.renderer.removeStyle(picker, 'z-index');\n\n this.zIndexService.release(zToken);\n this.overlayState = null;\n }\n\n private teardownPickerOverlay(): void {\n this.observer?.disconnect();\n this.observer = null;\n this.closePickerOverlay();\n }\n}\n","<div #toolbar class=\"ax-wysiwyg-toolbar-content\">\n <ng-content select=\"ax-prefix\"></ng-content>\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 * @category Components\n * A component for viewing WYSIWYG content.\n */\n@Component({\n selector: 'ax-wysiwyg-view',\n templateUrl: './wysiwyg-view.component.html',\n encapsulation: ViewEncapsulation.None,\n\n providers: [{ provide: AXComponent, useExisting: AXWysiwygViewComponent }],\n styleUrl: 'wysiwyg-view.component.css',\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 ChangeDetectionStrategy,\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 { 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 changeDetection: ChangeDetectionStrategy.OnPush,\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 * Checks if the component is focused or has any focused element.\n *\n * @returns boolean - True if the component has focus.\n */\n override hasFocus(): boolean {\n return super.hasFocus();\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 const editableSub = this.disabledChange.subscribe(() => this.syncEditable());\n const readonlySub = this.readonlyChange.subscribe(() => this.syncEditable());\n\n this.destroyRef.onDestroy(() => {\n editableSub.unsubscribe();\n readonlySub.unsubscribe();\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 } from '@angular/core';\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-alignment',\n templateUrl: './wysiwyg-alignment.component.html',\n\n imports: [],\n\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 * A container component for WYSIWYG (What You See Is What You Get) editor functionality.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-colors',\n templateUrl: './wysiwyg-colors.component.html',\n\n encapsulation: ViewEncapsulation.None,\n imports: [AXDecoratorColorIndicatorComponent],\n\n providers: [{ provide: AXComponent, useExisting: AXWysiwygColorsComponent }],\n})\nexport class AXWysiwygColorsComponent {\n protected wysiwygService = inject(WysiwygService);\n}\n","<div class=\"contents\">\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 } from '@angular/core';\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-font-style',\n templateUrl: './wysiwyg-font-style.component.html',\n imports: [],\n\n providers: [{ provide: AXComponent, useExisting: AXWysiwygFontStyleComponent }],\n})\nexport class AXWysiwygFontStyleComponent {}\n","<div class=\"contents\">\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 * A container component for WYSIWYG (What You See Is What You Get) editor functionality.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-history',\n templateUrl: './wysiwyg-history.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [],\n\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 * A container component for WYSIWYG (What You See Is What You Get) editor functionality.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-insert',\n templateUrl: './wysiwyg-insert.component.html',\n\n encapsulation: ViewEncapsulation.None,\n imports: [],\n\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 * A container component for WYSIWYG (What You See Is What You Get) editor functionality.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-list',\n templateUrl: './wysiwyg-list.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [],\n\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 { AXButtonModule } from '@acorex/components/button';\nimport { AXColorPaletteModule } from '@acorex/components/color-palette';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\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\nconst MODULES = [\n AXButtonModule,\n AXDecoratorModule,\n AXSelectBoxModule,\n FormsModule,\n AXColorPaletteModule,\n AXPopoverModule,\n AXTextBoxModule,\n];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXWysiwygModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAoBA;;;AAGG;MAQU,yBAAyB,CAAA;AAYpC,IAAA,WAAA,GAAA;QAXA,IAAA,CAAA,OAAO,GAAG,SAAS,CAA6B,SAAS;oFAAC;AAEzC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,EAAC,UAAuB,EAAC;AACtC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;QAEhD,IAAA,CAAA,QAAQ,GAA4B,IAAI;QACxC,IAAA,CAAA,YAAY,GAA8B,IAAI;QAGpD,eAAe,CAAC,MAAK;YACnB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBACvC;YACF;YACA,IAAI,CAAC,kBAAkB,EAAE;AAC3B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/D;IAEQ,kBAAkB,GAAA;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;QAC/C,IAAI,CAAC,SAAS,EAAE;YACd;QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACpE,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE;AAC/B,YAAA,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,CAAC,OAAO,CAAC;AAC1B,YAAA,OAAO,EAAE,IAAI;AACd,SAAA,CAAC;QAEF,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,KAAI;AAC5C,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA4B;AACjD,YAAA,IAAI,MAAM,EAAE,OAAO,CAAC,mCAAmC,CAAC,EAAE;gBACxD,qBAAqB,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvD;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,iBAAiB,GAAA;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;QAC/C,IAAI,CAAC,SAAS,EAAE;YACd;QACF;QAEA,MAAM,cAAc,GAAG,SAAS,CAAC,aAAa,CAAc,wBAAwB,CAAC;QACrF,IAAI,CAAC,cAAc,EAAE;YACnB,IAAI,CAAC,kBAAkB,EAAE;YACzB;QACF;QAEA,IAAI,IAAI,CAAC,YAAY,EAAE,MAAM,KAAK,cAAc,EAAE;YAChD;QACF;QAEA,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC;IACxC;AAEQ,IAAA,iBAAiB,CAAC,MAAmB,EAAA;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC3C,IAAI,CAAC,YAAY,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;QAEtC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClE;IAEQ,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB;QACF;QAEA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY;AAC5C,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC;AAE5C,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;IAC1B;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACpB,IAAI,CAAC,kBAAkB,EAAE;IAC3B;8GAzFW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,SAAA,EAHzB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC,8IC5B/E,mKAIA,EAAA,MAAA,EAAA,CAAA,63DAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FD2Ba,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,aAAA,EAEf,iBAAiB,CAAC,IAAI,aAC1B,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAA,yBAA2B,EAAE,CAAC,EAAA,QAAA,EAAA,mKAAA,EAAA,MAAA,EAAA,CAAA,63DAAA,CAAA,EAAA;+FAI7B,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AE7B3D;;;AAGG;MASU,sBAAsB,CAAA;AARnC,IAAA,WAAA,GAAA;QASE,IAAA,CAAA,MAAM,GAAG,SAAS,CAA6B,QAAQ;mFAAC;AACzD,IAAA;8GAFY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,SAAA,EAHtB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC,4ICZ5E,uBACA,EAAA,MAAA,EAAA,CAAA,qIAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDca,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,aAAA,EAEZ,iBAAiB,CAAC,IAAI,aAE1B,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAA,sBAAwB,EAAE,CAAC,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qIAAA,CAAA,EAAA;oEAI3B,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEb5C,cAAc,CAAA;AAD3B,IAAA,WAAA,GAAA;QAEE,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,EAAE;0FAAC;QAC1B,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,EAAE;oGAAC;AACrC,IAAA;8GAHY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAd,cAAc,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;AC8BD,IAAI,oBAAoB,GAAG,KAAK;AAEhC;;;AAGG;AA2BG,MAAO,2BAA4B,SAAQ,OAAO,EAAC,yBAAiC,GAAE,eAAe,CAAC,CAAA;AA1B5G,IAAA,WAAA,GAAA;;AA2BE;;;AAGG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK;mGAAU;AAE7B;;;AAGG;QACH,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,CAAC;wFAAC;AAEL,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAC/B,IAAA,CAAA,SAAS,GAAG,YAAY,CAAC,sBAAsB;sFAAC;QAChD,IAAA,CAAA,OAAO,GAAG,YAAY,CAAC,yBAAyB;oFAAC;QAEjD,IAAA,CAAA,OAAO,GAAG,MAAM,CAAe,IAAI;oFAAC;QAC7C,IAAA,CAAA,iBAAiB,GAAkB,IAAI;QACvC,IAAA,CAAA,gBAAgB,GAAG,KAAK;QACxB,IAAA,CAAA,KAAK,GAAG,IAAI;QACZ,IAAA,CAAA,kBAAkB,GAAyC,IAAI;QAC/D,IAAA,CAAA,eAAe,GAA4B,IAAI;AAEvD,QAAA,IAAA,CAAA,KAAK,GAAG,eAAe,CAAC,MAAK;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC7B,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,gBAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,EAAE;AACnC,oBAAA,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBACvC;AACF,YAAA,CAAC,CAAC;AACF,YAAA,KAAK,IAAI,CAAC,UAAU,EAAE;AACxB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,MAAK;AACzB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,KAAK;gBAAE;AACZ,YAAA,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,wBAAwB,CAAC;QAC7F,CAAC;yFAAC;QAgHe,IAAA,CAAA,YAAY,GAAG,CAAC,MAAe,EAAE,SAAkB,EAAE,MAAc,KAAU;AAC5F,YAAA,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;gBAAE;YAClF,IAAI,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC;AAEgB,QAAA,IAAA,CAAA,iBAAiB,GAAG,CACnC,KAA+C,EAC/C,QAAkD,KAC1C;AACR,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ;gBAAE;AAE7B,YAAA,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE;gBACtB,IAAI,CAAC,gBAAgB,EAAE;YACzB;AAAO,iBAAA,IAAI,CAAC,KAAK,IAAI,QAAQ,EAAE;gBAC7B,IAAI,CAAC,eAAe,EAAE;YACxB;AAEA,YAAA,IAAI,CAAC,KAAK;gBAAE;YACZ,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;AACrC,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,CAAE,MAAM,CAAC,OAAO,CAAY,IAAI,EAAE,CAAC;AACxE,YAAA,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,GAAG,CAAE,MAAM,CAAC,YAAY,CAAY,IAAI,EAAE,CAAC;AACzF,QAAA,CAAC;AA8DgB,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,KAAa,KAAU;YAC1D,IAAI,KAAK,EAAE;AACT,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAC3B,gBAAA,IAAI,EAAE,MAAM,YAAY,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gCAAgC,CAAC;oBAAE;YACzF;YACA,qBAAqB,CAAC,MAAK;gBACzB,IAAI,CAAC,YAAY,EAAE;gBACnB,qBAAqB,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAClD,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;AAkDF,IAAA;AA7QC,IAAA,KAAK;AAUL,IAAA,YAAY;AAMZ;;;;AAIG;IACM,KAAK,GAAA;AACZ,QAAA,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE;IACzB;AAEA;;;;AAIG;IACM,IAAI,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE;IACxB;AAEA;;;;AAIG;IACM,QAAQ,GAAA;AACf,QAAA,OAAO,KAAK,CAAC,QAAQ,EAAE;IACzB;AAEA;;;AAGG;AACI,IAAA,iBAAiB,CAAC,KAAa,EAAA;AACpC,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;IACjC;;AAGmB,IAAA,oBAAoB,CAAC,KAAa,EAAA;AACnD,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;IACjC;AAEQ,IAAA,MAAM,UAAU,GAAA;AACtB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;QAEzC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,aAAa;AAC/D,QAAA,IAAI,CAAC,aAAa;YAAE;AAEpB,QAAA,MAAM,WAAW,GAAG,MAAM,OAAO,OAAO,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE;AACjB,QAAA,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO;QACrC,kBAAkB,CAAC,SAAS,CAAC;QAE7B,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,cAAc,CAAC,EAAE,OAAO;QACnD,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE;QACjB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,aAAa;AAE/D,QAAA,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,aAAa,EAAE;AACzC,YAAA,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE,IAAI,EAAE;AAChB,gBAAA,OAAO,EAAE;AACP,sBAAE;AACE,wBAAA,SAAS,EAAE,cAAc;AACzB,wBAAA,QAAQ,EAAE;4BACR,IAAI,EAAE,MAAK;AACT,gCAAA,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;4BACtB,CAAC;4BACD,IAAI,EAAE,MAAK;AACT,gCAAA,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;4BACtB,CAAC;AACD,4BAAA,KAAK,EAAE,CAAC,KAAa,KAAI;gCACvB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gCAClD,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC;4BACvC,CAAC;AACD,4BAAA,UAAU,EAAE,CAAC,KAAa,KAAI;gCAC5B,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gCAC5D,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,IAAI,KAAK,CAAC;4BAC5C,CAAC;AACF,yBAAA;AACF;AACH,sBAAE,KAAK;AACT,gBAAA,OAAO,EAAE;AACP,oBAAA,KAAK,EAAE,GAAG;AACV,oBAAA,QAAQ,EAAE,GAAG;AACb,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA;AACF,aAAA;AACD,YAAA,KAAK,EAAE,MAAM;AACd,SAAA,CAAC;QAEF,KAAK,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC;QAC1C,KAAK,CAAC,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC;AAElD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5E,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAE5E,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;YAC7B,WAAW,CAAC,WAAW,EAAE;YACzB,WAAW,CAAC,WAAW,EAAE;YACzB,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC;YAC3C,KAAK,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACrD,YAAA,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE;AAClC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;YAC3B,cAAc,EAAE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC;AACrE,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;IACtC;IA0BQ,cAAc,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,EAAE;AACnC,YAAA,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACvC;AAEA,QAAA,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,MAAK;AACxC,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE;YAC5B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;gBAAE;AAE9C,YAAA,IAAI,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE;AAC1B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACtB;YACF;YAEA,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG;AACrC,YAAA,MAAM,SAAS,GAAG,IAAI,yBAAyB,CAAC,KAAK,EAAE;AACrD,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,sBAAsB,EAAE,IAAI;AAC7B,aAAA,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACvC,CAAC,EAAE,GAAG,CAAC;IACT;AAEQ,IAAA,WAAW,CAAC,IAAmB,EAAA;AACrC,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,iBAAiB;YAAE;AACrC,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;IAC9B;AAEQ,IAAA,mBAAmB,CAAC,KAAgC,EAAA;AAC1D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE;AAC5B,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC;AACjC,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,iBAAiB;YAAE;AAErC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC7B,QAAA,IAAI;YACF,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC;YAC1B;iBAAO;AACL,gBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACrD,gBAAA,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;YACjC;QACF;gBAAU;AACR,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;QAC/B;IACF;IAEQ,YAAY,CAAC,SAAsB,EAAE,cAAuC,EAAA;QAClF,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAc,aAAa,CAAC;QACnE,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,gBAAgB,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1E,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACzF;QACA,cAAc,EAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC;IAClE;AAaA;;;;AAIG;IACK,YAAY,GAAA;AAClB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE;QAC5B,MAAM,OAAO,GAAG,KAAK,EAAE,SAAS,CAAC,aAAa,CAAc,aAAa,CAAC;AAC1E,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE;QAEnE,MAAM,GAAG,GAAG,CAAC;QACb,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,qBAAqB,EAAE;AAC7D,QAAA,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE;YACzE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,CAAA,EAAA,CAAI;QAC5E;AAEA,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAC/C,QAAA,IAAI,IAAI,GAAG,OAAO,CAAC,UAAU;AAC7B,QAAA,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS;QAE3B,IAAI,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,GAAG,GAAG,EAAE;YAC3C,IAAI,IAAI,aAAa,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI;QACjD;aAAO,IAAI,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,GAAG,GAAG,EAAE;AACpD,YAAA,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,GAAG,GAAG,CAAC;QACrD;QAEA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;AACjF,QAAA,IAAI,cAAc,GAAG,CAAC,EAAE;YACtB,GAAG,IAAI,cAAc;QACvB;AACA,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,GAAG,cAAc;QAC/C,IAAI,UAAU,GAAG,aAAa,CAAC,GAAG,GAAG,GAAG,EAAE;YACxC,GAAG,IAAI,aAAa,CAAC,GAAG,GAAG,GAAG,GAAG,UAAU;QAC7C;QAEA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,IAAI;QAChC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,GAAG,IAAI;IAChC;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE;AAC5B,QAAA,IAAI,CAAC,KAAK;YAAE;QACZ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClC,KAAK,CAAC,OAAO,EAAE;QACjB;aAAO;YACL,KAAK,CAAC,MAAM,EAAE;QAChB;IACF;8GAtSW,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sCAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,SAAA,EAZ3B;YACT,cAAc;AACd,YAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,2BAA2B,EAAE;AAClE,YAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,2BAA2B,EAAE;AAC3E,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,2BAA2B,EAAE;AAC1E,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,2BAA2B,CAAC;AAC1D,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAkByC,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACxB,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjFnE,gWAWA,EAAA,MAAA,EAAA,CAAA,swnCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDqDa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBA1BvC,SAAS;+BACE,sBAAsB,EAAA,eAAA,EAGf,uBAAuB,CAAC,MAAM,UACvC,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,WACxC,CAAC,gBAAgB,CAAC,EAAA,aAAA,EACZ,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,wCAAwC,EAAE,oBAAoB;AAC9D,wBAAA,aAAa,EAAE,cAAc;AAC7B,wBAAA,oBAAoB,EAAE,UAAU;AAChC,wBAAA,qBAAqB,EAAE,uBAAuB;qBAC/C,EAAA,SAAA,EACU;wBACT,cAAc;AACd,wBAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,6BAA6B,EAAE;AAClE,wBAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,6BAA6B,EAAE;AAC3E,wBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,6BAA6B,EAAE;AAC1E,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,iCAAiC,CAAC;AAC1D,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,gWAAA,EAAA,MAAA,EAAA,CAAA,swnCAAA,CAAA,EAAA;AAkByC,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,sBAAsB,yFACxB,yBAAyB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AAwRnE,SAAS,aAAa,CAAC,KAAgC,EAAA;IACrD,IAAI,KAAK,IAAI,IAAI;AAAE,QAAA,OAAO,IAAI;AAC9B,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;IAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,aAAa,IAAI,OAAO,KAAK,SAAS;AAAE,QAAA,OAAO,IAAI;AAC/E,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,kBAAkB,CAAC,SAAgD,EAAA;AAC1E,IAAA,IAAI,oBAAoB;QAAE;IAE1B,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,CAAiB;IAC1D,MAAM,IAAI,GAAG,CAAC,IAAY,KAAK,CAAA,gCAAA,EAAmC,IAAI,CAAA,YAAA,CAAc;IAEpF,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;IAChC,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;IACvC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;IAChC,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAClC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;IACtC,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;IACvC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9B,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7B,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAE5B,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAA2B;IAC5D,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;IACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;AACtC,IAAA,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;IAEpB,MAAM,SAAS,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAA2B;IACtE,SAAS,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;IAClC,SAAS,CAAC,KAAK,CAAC;AACd,QAAA,yKAAyK;AAC3K,IAAA,KAAK,CAAC,WAAW,CAAC,GAAG,SAAS;IAE9B,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAA2B;IAC9D,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;IAC9B,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;IACtC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;IACxC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;AACpC,IAAA,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK;IAEtB,oBAAoB,GAAG,IAAI;AAC7B;;AEnZA;;;AAGG;MASU,2BAA2B,CAAA;8GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,SAAA,EAF3B,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC,0BCbjF,6HAGA,EAAA,CAAA,CAAA;;2FDYa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBARvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EAGvB,EAAE,EAAA,SAAA,EAEA,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAA,2BAA6B,EAAE,CAAC,EAAA,QAAA,EAAA,6HAAA,EAAA;;;AERjF;;;AAGG;MAUU,wBAAwB,CAAA;AATrC,IAAA,WAAA,GAAA;AAUY,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAClD,IAAA;8GAFY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,SAAA,EAFxB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChB9E,8nBAaA,4CDCY,kCAAkC,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAIjC,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBATpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,iBAGd,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,CAAC,kCAAkC,CAAC,EAAA,SAAA,EAElC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAA,wBAA0B,EAAE,CAAC,EAAA,QAAA,EAAA,8nBAAA,EAAA;;;AEb9E;;;AAGG;MAQU,2BAA2B,CAAA;8GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,SAAA,EAF3B,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC,0BCZjF,2wCA8BA,EAAA,CAAA,CAAA;;2FDhBa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EAExB,EAAE,EAAA,SAAA,EAEA,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAA,2BAA6B,EAAE,CAAC,EAAA,QAAA,EAAA,2wCAAA,EAAA;;;AETjF;;;AAGG;MASU,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,SAAA,EAFzB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC,0BCb/E,4NAIA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDWa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBARrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,iBAEf,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,EAAE,EAAA,SAAA,EAEA,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAA,yBAA2B,EAAE,CAAC,EAAA,QAAA,EAAA,4NAAA,EAAA;;;AEV/E;;;AAGG;MAUU,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,SAAA,EAFxB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC,0BCd9E,sWAKA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDWa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBATpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,iBAGd,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,EAAE,EAAA,SAAA,EAEA,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAA,wBAA0B,EAAE,CAAC,EAAA,QAAA,EAAA,sWAAA,EAAA;;;AEX9E;;;AAGG;MASU,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,SAAA,EAFtB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC,0BCb5E,gaAKA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDUa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,iBAEZ,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,EAAE,EAAA,SAAA,EAEA,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAA,sBAAwB,EAAE,CAAC,EAAA,QAAA,EAAA,gaAAA,EAAA;;;AEK5E,MAAM,SAAS,GAAG;IAChB,2BAA2B;IAC3B,sBAAsB;IACtB,2BAA2B;IAC3B,wBAAwB;IACxB,2BAA2B;IAC3B,yBAAyB;IACzB,wBAAwB;IACxB,sBAAsB;IACtB,yBAAyB;CAC1B;AAED,MAAM,OAAO,GAAG;IACd,cAAc;IACd,iBAAiB;IACjB,iBAAiB;IACjB,WAAW;IACX,oBAAoB;IACpB,eAAe;IACf,eAAe;CAChB;MAOY,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAd1B,cAAc;YACd,iBAAiB;YACjB,iBAAiB;YACjB,WAAW;YACX,oBAAoB;YACpB,eAAe;AACf,YAAA,eAAe,EAlBf,2BAA2B;YAC3B,sBAAsB;YACtB,2BAA2B;YAC3B,wBAAwB;YACxB,2BAA2B;YAC3B,yBAAyB;YACzB,wBAAwB;YACxB,sBAAsB;AACtB,YAAA,yBAAyB,aARzB,2BAA2B;YAC3B,sBAAsB;YACtB,2BAA2B;YAC3B,wBAAwB;YACxB,2BAA2B;YAC3B,yBAAyB;YACzB,wBAAwB;YACxB,sBAAsB;YACtB,yBAAyB,CAAA,EAAA,CAAA,CAAA;+GAkBd,eAAe,EAAA,OAAA,EAAA,CAJb,OAAO,EAnBpB,wBAAwB,CAAA,EAAA,CAAA,CAAA;;2FAuBb,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC;AACnC,oBAAA,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC;AACvB,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA;;;AC5CD;;AAEG;;"}
|
|
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.clampPicker());\n }\n\n /**\n * Quill anchors picker menus to the control. Shift or flip them so they stay\n * inside the viewport on narrow layouts.\n */\n private clampPicker(): void {\n const options = this.overlayState?.options;\n const picker = this.overlayState?.picker;\n if (!options || !picker || !picker.classList.contains('ql-expanded')) return;\n\n this.clearPickerOffset(options);\n\n const pad = 8;\n const viewportWidth = document.documentElement.clientWidth;\n const viewportHeight = window.innerHeight;\n\n let rect = options.getBoundingClientRect();\n if (rect.width > viewportWidth - pad * 2) {\n this.renderer.setStyle(options, 'max-width', `${Math.max(0, viewportWidth - pad * 2)}px`);\n rect = options.getBoundingClientRect();\n }\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 rect = options.getBoundingClientRect();\n const pickerRect = picker.getBoundingClientRect();\n const roomAbove = pickerRect.top;\n const roomBelow = viewportHeight - pickerRect.bottom;\n\n if (rect.bottom > viewportHeight - pad && roomAbove > roomBelow) {\n this.renderer.setStyle(options, 'top', 'auto');\n this.renderer.setStyle(options, 'bottom', '100%');\n this.renderer.setStyle(options, 'margin-top', '0');\n } else if (rect.top < pad && roomBelow > roomAbove) {\n this.renderer.setStyle(options, 'bottom', 'auto');\n this.renderer.setStyle(options, 'top', '100%');\n this.renderer.setStyle(options, 'margin-bottom', '0');\n }\n }\n\n private clearPickerOffset(options: HTMLElement | null): void {\n if (!options) return;\n this.renderer.removeStyle(options, 'left');\n this.renderer.removeStyle(options, 'right');\n this.renderer.removeStyle(options, 'top');\n this.renderer.removeStyle(options, 'bottom');\n this.renderer.removeStyle(options, 'max-width');\n this.renderer.removeStyle(options, 'margin-top');\n this.renderer.removeStyle(options, 'margin-bottom');\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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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acorex/components",
|
|
3
|
-
"version": "22.3.
|
|
3
|
+
"version": "22.3.23",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@acorex/core": "22.3.
|
|
6
|
-
"@acorex/cdk": "22.3.
|
|
5
|
+
"@acorex/core": "22.3.23",
|
|
6
|
+
"@acorex/cdk": "22.3.23",
|
|
7
7
|
"@angular/aria": ">=22.1.0",
|
|
8
8
|
"polytype": ">=0.17.0",
|
|
9
9
|
"hammerjs": ">=2.0.8",
|
|
@@ -2,13 +2,6 @@ import * as polytype from 'polytype';
|
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { ElementRef } from '@angular/core';
|
|
4
4
|
import { MXInputBaseValueComponent, MXLookComponent } from '@acorex/cdk/common';
|
|
5
|
-
import * as i1 from '@acorex/components/button';
|
|
6
|
-
import * as i2 from '@acorex/components/decorators';
|
|
7
|
-
import * as i3 from '@acorex/components/select-box';
|
|
8
|
-
import * as i4 from '@angular/forms';
|
|
9
|
-
import * as i5 from '@acorex/components/color-palette';
|
|
10
|
-
import * as i6 from '@acorex/components/popover';
|
|
11
|
-
import * as i7 from '@acorex/components/text-box';
|
|
12
5
|
|
|
13
6
|
declare const AXWysiwygContainerComponent_base: polytype.Polytype.ClusteredConstructor<[{
|
|
14
7
|
new (): MXInputBaseValueComponent<string>;
|
|
@@ -54,12 +47,6 @@ declare class AXWysiwygContainerComponent extends AXWysiwygContainerComponent_ba
|
|
|
54
47
|
* @returns void - No return value. The component loses focus.
|
|
55
48
|
*/
|
|
56
49
|
blur(): void;
|
|
57
|
-
/**
|
|
58
|
-
* Checks if the component is focused or has any focused element.
|
|
59
|
-
*
|
|
60
|
-
* @returns boolean - True if the component has focus.
|
|
61
|
-
*/
|
|
62
|
-
hasFocus(): boolean;
|
|
63
50
|
/**
|
|
64
51
|
* Replaces the editor document. External value updates go through the form binding;
|
|
65
52
|
* this method does not emit a user change.
|
|
@@ -87,8 +74,9 @@ declare class AXWysiwygContainerComponent extends AXWysiwygContainerComponent_ba
|
|
|
87
74
|
}
|
|
88
75
|
|
|
89
76
|
/**
|
|
77
|
+
* Toolbar for the WYSIWYG editor.
|
|
78
|
+
* Formatting controls belong in `ax-prefix`. Actions such as submit belong in `ax-suffix`.
|
|
90
79
|
* @category Components
|
|
91
|
-
* A component for viewing WYSIWYG content.
|
|
92
80
|
*/
|
|
93
81
|
declare class AXWysiwygToolbarComponent {
|
|
94
82
|
toolbar: i0.Signal<ElementRef<HTMLDivElement>>;
|
|
@@ -99,18 +87,27 @@ declare class AXWysiwygToolbarComponent {
|
|
|
99
87
|
private readonly zIndexService;
|
|
100
88
|
private observer;
|
|
101
89
|
private overlayState;
|
|
90
|
+
private unlistenClick;
|
|
91
|
+
private clampFrame;
|
|
102
92
|
constructor();
|
|
103
93
|
private setupPickerOverlay;
|
|
104
94
|
private syncPickerOverlay;
|
|
105
95
|
private openPickerOverlay;
|
|
106
96
|
private closePickerOverlay;
|
|
97
|
+
private queueClamp;
|
|
98
|
+
/**
|
|
99
|
+
* Quill anchors picker menus to the control. Shift or flip them so they stay
|
|
100
|
+
* inside the viewport on narrow layouts.
|
|
101
|
+
*/
|
|
102
|
+
private clampPicker;
|
|
103
|
+
private clearPickerOffset;
|
|
107
104
|
private teardownPickerOverlay;
|
|
108
105
|
static ɵfac: i0.ɵɵFactoryDeclaration<AXWysiwygToolbarComponent, never>;
|
|
109
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<AXWysiwygToolbarComponent, "ax-wysiwyg-toolbar", never, {}, {}, never, ["ax-prefix", "ax-suffix"], true, never>;
|
|
106
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXWysiwygToolbarComponent, "ax-wysiwyg-toolbar", never, {}, {}, never, ["ax-prefix", "*", "ax-suffix"], true, never>;
|
|
110
107
|
}
|
|
111
108
|
|
|
112
109
|
/**
|
|
113
|
-
*
|
|
110
|
+
* Alignment controls for the WYSIWYG toolbar.
|
|
114
111
|
* @category Components
|
|
115
112
|
*/
|
|
116
113
|
declare class AXWysiwygAlignmentComponent {
|
|
@@ -126,17 +123,17 @@ declare class WysiwygService {
|
|
|
126
123
|
}
|
|
127
124
|
|
|
128
125
|
/**
|
|
129
|
-
*
|
|
126
|
+
* Text and highlight color controls for the WYSIWYG toolbar.
|
|
130
127
|
* @category Components
|
|
131
128
|
*/
|
|
132
129
|
declare class AXWysiwygColorsComponent {
|
|
133
|
-
protected wysiwygService: WysiwygService;
|
|
130
|
+
protected readonly wysiwygService: WysiwygService;
|
|
134
131
|
static ɵfac: i0.ɵɵFactoryDeclaration<AXWysiwygColorsComponent, never>;
|
|
135
132
|
static ɵcmp: i0.ɵɵComponentDeclaration<AXWysiwygColorsComponent, "ax-wysiwyg-colors", never, {}, {}, never, never, true, never>;
|
|
136
133
|
}
|
|
137
134
|
|
|
138
135
|
/**
|
|
139
|
-
*
|
|
136
|
+
* Font style, size, and heading controls for the WYSIWYG toolbar.
|
|
140
137
|
* @category Components
|
|
141
138
|
*/
|
|
142
139
|
declare class AXWysiwygFontStyleComponent {
|
|
@@ -145,7 +142,7 @@ declare class AXWysiwygFontStyleComponent {
|
|
|
145
142
|
}
|
|
146
143
|
|
|
147
144
|
/**
|
|
148
|
-
*
|
|
145
|
+
* Undo and redo controls for the WYSIWYG toolbar.
|
|
149
146
|
* @category Components
|
|
150
147
|
*/
|
|
151
148
|
declare class AXWysiwygHistoryComponent {
|
|
@@ -154,7 +151,7 @@ declare class AXWysiwygHistoryComponent {
|
|
|
154
151
|
}
|
|
155
152
|
|
|
156
153
|
/**
|
|
157
|
-
*
|
|
154
|
+
* Image, video, and link controls for the WYSIWYG toolbar.
|
|
158
155
|
* @category Components
|
|
159
156
|
*/
|
|
160
157
|
declare class AXWysiwygInsertComponent {
|
|
@@ -163,7 +160,7 @@ declare class AXWysiwygInsertComponent {
|
|
|
163
160
|
}
|
|
164
161
|
|
|
165
162
|
/**
|
|
166
|
-
*
|
|
163
|
+
* List and text-direction controls for the WYSIWYG toolbar.
|
|
167
164
|
* @category Components
|
|
168
165
|
*/
|
|
169
166
|
declare class AXWysiwygListComponent {
|
|
@@ -172,8 +169,8 @@ declare class AXWysiwygListComponent {
|
|
|
172
169
|
}
|
|
173
170
|
|
|
174
171
|
/**
|
|
172
|
+
* Editing surface for the WYSIWYG editor.
|
|
175
173
|
* @category Components
|
|
176
|
-
* A component for viewing WYSIWYG content.
|
|
177
174
|
*/
|
|
178
175
|
declare class AXWysiwygViewComponent {
|
|
179
176
|
editor: i0.Signal<ElementRef<HTMLDivElement>>;
|
|
@@ -183,7 +180,7 @@ declare class AXWysiwygViewComponent {
|
|
|
183
180
|
|
|
184
181
|
declare class AXWysiwygModule {
|
|
185
182
|
static ɵfac: i0.ɵɵFactoryDeclaration<AXWysiwygModule, never>;
|
|
186
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<AXWysiwygModule, never, [typeof
|
|
183
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AXWysiwygModule, never, [typeof AXWysiwygContainerComponent, typeof AXWysiwygViewComponent, typeof AXWysiwygAlignmentComponent, typeof AXWysiwygColorsComponent, typeof AXWysiwygFontStyleComponent, typeof AXWysiwygHistoryComponent, typeof AXWysiwygInsertComponent, typeof AXWysiwygListComponent, typeof AXWysiwygToolbarComponent], [typeof AXWysiwygContainerComponent, typeof AXWysiwygViewComponent, typeof AXWysiwygAlignmentComponent, typeof AXWysiwygColorsComponent, typeof AXWysiwygFontStyleComponent, typeof AXWysiwygHistoryComponent, typeof AXWysiwygInsertComponent, typeof AXWysiwygListComponent, typeof AXWysiwygToolbarComponent]>;
|
|
187
184
|
static ɵinj: i0.ɵɵInjectorDeclaration<AXWysiwygModule>;
|
|
188
185
|
}
|
|
189
186
|
|