{"version":3,"file":"ckeditor-ckeditor5-angular.mjs","sources":["../../src/ckeditor/utils/get-license-key.ts","../../src/ckeditor/plugins/angular-integration-usage-data.plugin.ts","../../src/ckeditor/plugins/append-all-integration-plugins-to-config.ts","../../src/ckeditor/utils/normalize-class-list.ts","../../src/ckeditor/utils/normalize-editor-element-definition.ts","../../src/ckeditor/editor-element.component.ts","../../src/ckeditor/ckeditor.component.ts","../../src/ckeditor/ckeditor.module.ts","../../src/ckeditor/index.ts","../../src/ckeditor/ckeditor-ckeditor5-angular.ts"],"sourcesContent":["/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\nexport function getLicenseKey(): string {\n\tif ( typeof window !== 'undefined' && window.CKEDITOR_GLOBAL_LICENSE_KEY ) {\n\t\treturn window.CKEDITOR_GLOBAL_LICENSE_KEY;\n\t}\n\n\treturn 'GPL';\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\nimport { VERSION } from '@angular/core';\nimport { createIntegrationUsageDataPlugin } from '@ckeditor/ckeditor5-integrations-common';\n\n/**\n * This part of the code is not executed in open-source implementations using a GPL key.\n * It only runs when a specific license key is provided. If you are uncertain whether\n * this applies to your installation, please contact our support team.\n */\nexport const AngularIntegrationUsageDataPlugin = createIntegrationUsageDataPlugin(\n\t'angular',\n\t{\n\t\tversion: /* replace-version:start */ '13.0.0' /* replace-version:end */,\n\t\tframeworkVersion: VERSION.full\n\t}\n);\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\nimport { appendExtraPluginsToEditorConfig, isCKEditorFreeLicense } from '@ckeditor/ckeditor5-integrations-common';\nimport type { EditorConfig, PluginConstructor } from 'ckeditor5';\n\nimport { AngularIntegrationUsageDataPlugin } from './angular-integration-usage-data.plugin';\n\n/**\n * Appends all integration plugins to the editor configuration.\n *\n * @param editorConfig The editor configuration.\n * @returns The editor configuration with all integration plugins appended.\n */\nexport function appendAllIntegrationPluginsToConfig( editorConfig: EditorConfig ): EditorConfig {\n\tconst extraPlugins: Array<PluginConstructor> = [];\n\n\tif ( !isCKEditorFreeLicense( editorConfig.licenseKey ) ) {\n\t\t/**\n\t\t * This part of the code is not executed in open-source implementations using a GPL key.\n\t\t * It only runs when a specific license key is provided. If you are uncertain whether\n\t\t * this applies to your installation, please contact our support team.\n\t\t */\n\t\textraPlugins.push( AngularIntegrationUsageDataPlugin );\n\t}\n\n\treturn appendExtraPluginsToEditorConfig( editorConfig, extraPlugins );\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\nexport function normalizeClassList( classes: null | undefined | string | Array<string> ): Array<string> {\n\tif ( typeof classes === 'string' ) {\n\t\treturn classes.split( ' ' ).filter( Boolean );\n\t}\n\n\treturn classes ?? [];\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Normalizes an editor element definition into a structured object.\n *\n * @param definition The definition to normalize.\n * @returns A strictly typed object definition containing at least the element name.\n */\nexport function normalizeEditorElementDefinition( definition: EditorElementDefinition ): EditorElementObjectDefinition {\n\tif ( typeof HTMLElement !== 'undefined' && definition instanceof HTMLElement ) {\n\t\tthrow new Error(\n\t\t\t'An HTMLElement cannot be used as an editor element definition. ' +\n\t\t\t'Please pass a string or an object definition.'\n\t\t);\n\t}\n\n\tif ( typeof definition === 'string' ) {\n\t\treturn {\n\t\t\tname: definition\n\t\t};\n\t}\n\n\treturn definition as EditorElementObjectDefinition;\n}\n\n/**\n * Defines an editor element. It can be a tag name string or a detailed configuration object.\n */\nexport type EditorElementDefinition = string | EditorElementObjectDefinition;\n\n/**\n * An object-based definition for an editor element, allowing customization\n * of classes, styles, and HTML attributes.\n */\nexport type EditorElementObjectDefinition = {\n\n\t/**\n     * The DOM tag name to use.\n     */\n\tname: string;\n\n\t/**\n     * Class name or array of class names to apply to the editable element. Each name can be provided as a string.\n     */\n\tclasses?: string | Array<string>;\n\n\t/**\n     * Inline styles to apply to the editable element as a record of style properties.\n     */\n\tstyles?: Record<string, string>;\n\n\t/**\n     * Additional DOM attributes to apply to the editable element.\n     */\n\tattributes?: Record<string, string>;\n};\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\nimport {\n\tComponent,\n\tChangeDetectionStrategy,\n\tElementRef,\n\tinject,\n\tRenderer2,\n\tinput,\n\teffect\n} from '@angular/core';\n\nimport { normalizeClassList } from './utils/normalize-class-list';\nimport {\n\ttype EditorElementDefinition,\n\ttype EditorElementObjectDefinition,\n\tnormalizeEditorElementDefinition\n} from './utils/normalize-editor-element-definition';\n\n/*\n  A component that dynamically renders an HTML element based on an editor element definition.\n*/\n@Component( {\n\tselector: 'ckeditor-editor-element',\n\ttemplate: '',\n\tstandalone: true,\n\tchangeDetection: ChangeDetectionStrategy.OnPush\n} )\nexport class EditorElementComponent {\n\tprivate readonly _hostRef = inject( ElementRef ) as ElementRef<HTMLElement>;\n\n\tprivate readonly _renderer = inject( Renderer2 );\n\n\tpublic readonly definition = input<EditorElementDefinition | null>( null );\n\n\tpublic get element(): HTMLElement | null {\n\t\treturn this._element;\n\t}\n\n\tprivate _element: HTMLElement | null = null;\n\n\tconstructor() {\n\t\teffect( onCleanup => {\n\t\t\tconst currentDefinition = this.definition();\n\n\t\t\tconst normalized = normalizeEditorElementDefinition( currentDefinition ?? 'div' );\n\t\t\tconst el: HTMLElement = this._renderer.createElement( normalized.name );\n\n\t\t\tthis._applyDefinition( el, normalized );\n\t\t\tthis._renderer.appendChild( this._hostRef.nativeElement, el );\n\t\t\tthis._element = el;\n\n\t\t\tonCleanup( () => {\n\t\t\t\t/* istanbul ignore else -- @preserve */\n\t\t\t\tif ( this._element ) {\n\t\t\t\t\tthis._renderer.removeChild( this._hostRef.nativeElement, this._element );\n\t\t\t\t\tthis._element = null;\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\tprivate _applyDefinition( el: HTMLElement, def: EditorElementObjectDefinition ): void {\n\t\tconst classes = normalizeClassList( def.classes ?? [] );\n\n\t\tfor ( const className of classes ) {\n\t\t\tthis._renderer.addClass( el, className );\n\t\t}\n\n\t\tif ( def.styles ) {\n\t\t\tfor ( const [ property, value ] of Object.entries( def.styles ) ) {\n\t\t\t\tel.style.setProperty( property, value );\n\t\t\t}\n\t\t}\n\n\t\tif ( def.attributes ) {\n\t\t\tfor ( const [ name, value ] of Object.entries( def.attributes ) ) {\n\t\t\t\tthis._renderer.setAttribute( el, name, value );\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\nimport {\n\tComponent,\n\tEventEmitter,\n\tforwardRef,\n\tInject,\n\tInput,\n\tNgZone,\n\tOutput,\n\tViewChild,\n\ttype AfterViewInit,\n\ttype OnChanges,\n\ttype OnDestroy,\n\ttype SimpleChanges\n} from '@angular/core';\n\nimport { first } from 'rxjs/operators';\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\n\nimport type {\n\tEditor,\n\tEditorConfig,\n\tEditorErrorCallback,\n\tGetEventInfo,\n\tModelDocumentChangeEvent,\n\tViewDocumentBlurEvent,\n\tViewDocumentFocusEvent\n} from 'ckeditor5';\n\nimport {\n\tassignElementToEditorConfig,\n\tassignInitialDataToEditorConfig,\n\tcompareInstalledCKBaseVersion,\n\tgetInstalledCKBaseFeatures,\n\tuid,\n\ttype EditorRelaxedConfig,\n\ttype EditorRelaxedConstructor\n} from '@ckeditor/ckeditor5-integrations-common';\n\nimport { getLicenseKey } from './utils/get-license-key';\nimport { appendAllIntegrationPluginsToConfig } from './plugins/append-all-integration-plugins-to-config';\n\nimport type { EditorElementComponent } from './editor-element.component';\nimport type { EditorElementDefinition } from './utils/normalize-editor-element-definition';\n\nconst ANGULAR_INTEGRATION_READ_ONLY_LOCK_ID = 'Lock from Angular integration (@ckeditor/ckeditor5-angular)';\n\nexport interface BlurEvent<TEditor extends Editor = Editor> {\n\tevent: GetEventInfo<ViewDocumentBlurEvent>;\n\teditor: TEditor;\n}\n\nexport interface FocusEvent<TEditor extends Editor = Editor> {\n\tevent: GetEventInfo<ViewDocumentFocusEvent>;\n\teditor: TEditor;\n}\n\nexport interface ChangeEvent<TEditor extends Editor = Editor> {\n\tevent: GetEventInfo<ModelDocumentChangeEvent>;\n\teditor: TEditor;\n}\n\n@Component( {\n\tselector: 'ckeditor',\n\ttemplate: '<ckeditor-editor-element [definition]=\"elementDefinition\" #editorEl />',\n\t// Integration with @angular/forms.\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef( () => CKEditorComponent ),\n\t\t\tmulti: true\n\t\t}\n\t],\n\tstandalone: false\n} )\nexport class CKEditorComponent<TEditor extends Editor = Editor> implements AfterViewInit, OnDestroy, OnChanges, ControlValueAccessor {\n\t/**\n\t * The constructor of the editor to be used for the instance of the component.\n\t * It can be e.g. the `ClassicEditorBuild`, `InlineEditorBuild` or some custom editor.\n\t */\n\t@Input( { required: true } ) public editor!: EditorRelaxedConstructor<TEditor> & {\n\n\t\t/**\n\t\t * Declared here because the component reaches for it instead of importing `onEditorError()`.\n\t\t * Every editor class has it — it is a static on `Editor`.\n\t\t */\n\t\tonEditorError: ( callback: EditorErrorCallback ) => () => void;\n\t};\n\n\t/**\n\t * The configuration of the editor.\n\t * See https://ckeditor.com/docs/ckeditor5/latest/api/module_core_editor_editorconfig-EditorConfig.html\n\t * to learn more.\n\t */\n\t@Input() public config: EditorConfig = {\n\t\tlicenseKey: getLicenseKey()\n\t};\n\n\t/**\n\t * The initial data of the editor. Useful when not using the ngModel.\n\t * See https://angular.io/api/forms/NgModel to learn more.\n\t */\n\t@Input() public data = '';\n\n\t/**\n\t * Tag name of the editor component.\n\t *\n\t * The default tag is 'div'.\n\t *\n\t * @deprecated Use `config.root.element` (or `config.roots.main.element`) instead.\n\t */\n\t@Input() public tagName = 'div';\n\n\t/**\n\t * Allows disabling the two-way data binding mechanism. Disabling it can boost performance for large documents.\n\t *\n\t * When a component is connected using the [(ngModel)] or [formControl] directives, and this value is set to true, then none of the data\n\t * will ever be synchronized.\n\t *\n\t * An integrator must call `editor.data.get()` manually once the application needs the editor's data.\n\t * An editor instance can be received in the `ready()` callback.\n\t */\n\t@Input() public disableTwoWayDataBinding = false;\n\n\t/**\n\t * When set `true`, the editor becomes read-only.\n\t * See https://ckeditor.com/docs/ckeditor5/latest/api/module_core_editor_editor-Editor.html#member-isReadOnly\n\t * to learn more.\n\t */\n\t@Input() public set disabled( isDisabled: boolean ) {\n\t\tthis.setDisabledState( isDisabled );\n\t}\n\n\tpublic get disabled(): boolean {\n\t\tif ( this.editorInstance ) {\n\t\t\treturn this.editorInstance.isReadOnly;\n\t\t}\n\n\t\treturn this.initiallyDisabled;\n\t}\n\n\t/**\n\t * Fires when the editor is ready. It corresponds with the `editor#ready`\n\t * https://ckeditor.com/docs/ckeditor5/latest/api/module_core_editor_editor-Editor.html#event-ready\n\t * event.\n\t */\n\t@Output() public ready = new EventEmitter<TEditor>();\n\n\t/**\n\t * Fires when the content of the editor has changed. It corresponds with the `editor.model.document#change`\n\t * https://ckeditor.com/docs/ckeditor5/latest/api/module_engine_model_document-Document.html#event-change\n\t * event.\n\t */\n\t@Output() public change = new EventEmitter<ChangeEvent<TEditor>>();\n\n\t/**\n\t * Fires when the editing view of the editor is blurred. It corresponds with the `editor.editing.view.document#blur`\n\t * https://ckeditor.com/docs/ckeditor5/latest/api/module_engine_view_document-Document.html#event-event:blur\n\t * event.\n\t */\n\t@Output() public blur = new EventEmitter<BlurEvent<TEditor>>();\n\n\t/**\n\t * Fires when the editing view of the editor is focused. It corresponds with the `editor.editing.view.document#focus`\n\t * https://ckeditor.com/docs/ckeditor5/latest/api/module_engine_view_document-Document.html#event-event:focus\n\t * event.\n\t */\n\t@Output() public focus = new EventEmitter<FocusEvent<TEditor>>();\n\n\t/**\n\t * Fires when the editor component crashes.\n\t */\n\t@Output() public error = new EventEmitter<unknown>();\n\n\t/**\n\t * Reference to the child component responsible for creating and managing\n\t * the DOM element that the editor attaches to.\n\t */\n\t@ViewChild( 'editorEl', { static: true } )\n\tprivate editorElementComponent!: EditorElementComponent;\n\n\t/**\n\t * Returns the element definition derived from the current editor constructor\n\t * and config. Used by the template to pass the correct definition down to\n\t * editor element component.\n\t */\n\tprotected get elementDefinition(): EditorElementDefinition {\n\t\treturn getEditorElementDefinition( this.editor, this.config, this.tagName );\n\t}\n\n\t/**\n\t * The instance of the editor created by this component.\n\t */\n\tpublic get editorInstance(): TEditor | null {\n\t\treturn this.currentEditor ?? null;\n\t}\n\n\t/**\n\t * The editor created by this component. Nothing wraps it any more, so the component holds it directly.\n\t */\n\tprivate currentEditor?: TEditor;\n\n\t/**\n\t * Unregisters the error reporting callback when the editor goes away.\n\t */\n\tprivate offEditorError?: () => void;\n\n\t/**\n\t * The pending creation, so that destroying the component can wait for it instead of walking away from\n\t * an editor that does not exist yet.\n\t */\n\tprivate creating?: Promise<void>;\n\n\t/**\n\t * Whether the component is already on its way out. Creation checks it, because it can finish after.\n\t */\n\tprivate isDestroyed = false;\n\n\t/**\n\t * If the component is read–only before the editor instance is created, it remembers that state,\n\t * so the editor can become read–only once it is ready.\n\t */\n\tprivate initiallyDisabled = false;\n\n\t/**\n\t * An instance of https://angular.io/api/core/NgZone to allow the interaction with the editor\n\t * withing the Angular event loop.\n\t */\n\tprivate ngZone: NgZone;\n\n\t/**\n\t * A callback executed when the content of the editor changes. Part of the\n\t * `ControlValueAccessor` (https://angular.io/api/forms/ControlValueAccessor) interface.\n\t *\n\t * Note: Unset unless the component uses the `ngModel`.\n\t */\n\tprivate cvaOnChange?: ( data: string ) => void;\n\n\t/**\n\t * A callback executed when the editor has been blurred. Part of the\n\t * `ControlValueAccessor` (https://angular.io/api/forms/ControlValueAccessor) interface.\n\t *\n\t * Note: Unset unless the component uses the `ngModel`.\n\t */\n\tprivate cvaOnTouched?: () => void;\n\n\t/**\n\t * A lock flag preventing from calling the `cvaOnChange()` during setting editor data.\n\t */\n\tprivate isEditorSettingData = false;\n\n\t/**\n\t * The unique ID of the editor instance.\n\t */\n\tprivate id = uid();\n\n\tpublic getId(): string {\n\t\treturn this.id;\n\t}\n\n\tpublic constructor( @Inject( NgZone ) ngZone: NgZone ) {\n\t\tthis.ngZone = ngZone;\n\n\t\tassertMinimumSupportedVersion();\n\t}\n\n\t// Implementing the OnChanges interface. Whenever the `data` property is changed, update the editor content.\n\tpublic ngOnChanges( changes: SimpleChanges ): void {\n\t\tif ( Object.prototype.hasOwnProperty.call( changes, 'data' ) && changes.data && !changes.data.isFirstChange() ) {\n\t\t\tthis.writeValue( changes.data.currentValue );\n\t\t}\n\t}\n\n\t// Implementing the AfterViewInit interface.\n\tpublic ngAfterViewInit(): void {\n\t\tthis.initializeEditor();\n\t}\n\n\t// Implementing the OnDestroy interface.\n\tpublic async ngOnDestroy(): Promise<void> {\n\t\tawait this.destroyEditor();\n\t}\n\n\tprivate async destroyEditor(): Promise<void> {\n\t\tthis.isDestroyed = true;\n\n\t\t// The editor may still be starting. Without this, the component would find nothing to destroy and\n\t\t// the creation would then register a page-level error callback that nothing would ever remove.\n\t\t//\n\t\t// Whatever it settles as: if something after `create()` threw, the editor still exists and still\n\t\t// has to be taken down, so the rejection must not stop the teardown below.\n\t\tawait this.creating?.catch( () => {} );\n\n\t\tthis.offEditorError?.();\n\t\tthis.offEditorError = undefined;\n\n\t\tconst editor = this.currentEditor;\n\n\t\t// Let go of it either way: the component is on its way out, so `editorInstance` must stop naming\n\t\t// an editor, destroyed or not.\n\t\tthis.currentEditor = undefined;\n\n\t\t// Destroy it only if it is still alive. An integrator who owns the context destroys it themselves,\n\t\t// and `Context#destroy()` takes its editors with it — so by the time this runs, this editor may be\n\t\t// down already. The watchdog used to give this for nothing, by clearing its own reference.\n\t\tif ( editor && editor.state !== 'destroyed' ) {\n\t\t\tawait editor.destroy();\n\t\t}\n\t}\n\n\t// Implementing the ControlValueAccessor interface (only when binding to ngModel).\n\tpublic writeValue( value: string | null ): void {\n\t\t// This method is called with the `null` value when the form resets.\n\t\t// A component's responsibility is to restore to the initial state.\n\t\tif ( value === null ) {\n\t\t\tvalue = '';\n\t\t}\n\n\t\t// If already initialized.\n\t\tif ( this.editorInstance ) {\n\t\t\t// The lock mechanism prevents from calling `cvaOnChange()` during changing\n\t\t\t// the editor state. See #139\n\t\t\tthis.isEditorSettingData = true;\n\t\t\tthis.editorInstance.data.set( value );\n\t\t\tthis.isEditorSettingData = false;\n\t\t}\n\t\t// If not, wait for it to be ready; store the data.\n\t\telse {\n\t\t\t// If the editor element is already available, then update its content.\n\t\t\tthis.data = value;\n\n\t\t\t// If not, then wait until it is ready\n\t\t\t// and change data only for the first `ready` event.\n\t\t\tthis.ready\n\t\t\t\t.pipe( first() )\n\t\t\t\t.subscribe( editor => {\n\t\t\t\t\teditor.data.set( this.data );\n\t\t\t\t} );\n\t\t}\n\t}\n\n\t// Implementing the ControlValueAccessor interface (only when binding to ngModel).\n\tpublic registerOnChange( callback: ( data: string ) => void ): void {\n\t\tthis.cvaOnChange = callback;\n\t}\n\n\t// Implementing the ControlValueAccessor interface (only when binding to ngModel).\n\tpublic registerOnTouched( callback: () => void ): void {\n\t\tthis.cvaOnTouched = callback;\n\t}\n\n\t// Implementing the ControlValueAccessor interface (only when binding to ngModel).\n\tpublic setDisabledState( isDisabled: boolean ): void {\n\t\t// If already initialized.\n\t\tif ( this.editorInstance ) {\n\t\t\tif ( isDisabled ) {\n\t\t\t\tthis.editorInstance.enableReadOnlyMode( ANGULAR_INTEGRATION_READ_ONLY_LOCK_ID );\n\t\t\t} else {\n\t\t\t\tthis.editorInstance.disableReadOnlyMode( ANGULAR_INTEGRATION_READ_ONLY_LOCK_ID );\n\t\t\t}\n\t\t}\n\n\t\t// Store the state anyway to use it once the editor is created.\n\t\tthis.initiallyDisabled = isDisabled;\n\t}\n\n\t/**\n\t * Creates the editor instance, sets the initial editor data, then integrates\n\t * the editor with the Angular component. This method does not use the `editor.data.set()`\n\t * because of the issue in the collaboration mode (#6).\n\t */\n\tprivate initializeEditor() {\n\t\tconst Editor = this.editor;\n\n\t\tconst supports = getInstalledCKBaseFeatures();\n\t\tconst element = this.editorElementComponent.element!;\n\n\t\tconst emitError = ( e?: unknown ) => {\n\t\t\t// Do not run change detection by re-entering the Angular zone if the `error`\n\t\t\t// emitter doesn't have any subscribers.\n\t\t\t// Subscribers are pushed onto the list whenever `error` is listened inside the template:\n\t\t\t// `<ckeditor (error)=\"onError(...)\"></ckeditor>`.\n\t\t\tif ( hasObservers( this.error ) ) {\n\t\t\t\tthis.ngZone.run( () => this.error.emit( e ) );\n\t\t\t} else {\n\t\t\t\t// Print error to the console when there are no subscribers to the `error` event.\n\t\t\t\tconsole.error( e );\n\t\t\t}\n\t\t};\n\n\t\t// Note: must be called outside of the Angular zone too because creating an editor sets up\n\t\t// listeners on the window within a microtask.\n\t\tthis.creating = this.ngZone.runOutsideAngular( async () => {\n\t\t\tlet editor: TEditor;\n\n\t\t\ttry {\n\t\t\t\tconst config = this.getConfig();\n\n\t\t\t\teditor = await (\n\t\t\t\t\tsupports.elementConfigAttachment ?\n\t\t\t\t\t\tEditor.create( assignElementToEditorConfig( Editor, element, config ) ) :\n\t\t\t\t\t\tEditor.create( element, config )\n\t\t\t\t);\n\t\t\t} catch ( e ) {\n\t\t\t\temitError( e );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// The component can be destroyed while the editor is being created. Nothing below should run\n\t\t\t// then, and the editor nobody asked for any more has to go.\n\t\t\tif ( this.isDestroyed ) {\n\t\t\t\tawait editor.destroy();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.currentEditor = editor;\n\n\t\t\t// Held above before anything else runs, so that a throw below still leaves an editor the\n\t\t\t// component knows about and destroys.\n\t\t\tif ( this.initiallyDisabled ) {\n\t\t\t\teditor.enableReadOnlyMode( ANGULAR_INTEGRATION_READ_ONLY_LOCK_ID );\n\t\t\t}\n\n\t\t\t// Errors that escape a running editor. An editor that failed to start is reported by the\n\t\t\t// rejected `create()` above instead, because reporting only covers a running one.\n\t\t\t//\n\t\t\t// Off the editor class rather than imported: importing a value from CKEditor loads the npm\n\t\t\t// build, and an application that meant to load it from a CDN is then refused.\n\t\t\tthis.offEditorError = Editor.onEditorError( ( { error, source } ) => {\n\t\t\t\t// One registration serves the whole page, so every component hears about every editor.\n\t\t\t\t// This is what keeps an error with the component whose editor it came from.\n\t\t\t\t//\n\t\t\t\t// An error attributed to a `Context` rather than to an editor is therefore not emitted\n\t\t\t\t// here. An integrator sharing a context and wanting those has to register their own\n\t\t\t\t// callback with `Editor.onEditorError()`.\n\t\t\t\tif ( source === editor ) {\n\t\t\t\t\temitError( error );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.ngZone.run( () => {\n\t\t\t\tthis.ready.emit( editor );\n\t\t\t} );\n\n\t\t\tthis.setUpEditorEvents( editor );\n\t\t} );\n\t}\n\n\tprivate getConfig() {\n\t\tconst config = assignInitialDataToEditorConfig( this.config, this.data );\n\n\t\treturn appendAllIntegrationPluginsToConfig( config );\n\t}\n\n\t/**\n\t * Integrates the editor with the component by attaching related event listeners.\n\t */\n\tprivate setUpEditorEvents( editor: TEditor ): void {\n\t\tconst modelDocument = editor.model.document;\n\t\tconst viewDocument = editor.editing.view.document;\n\n\t\t// `.on()` comes from the `Emitter` mixin that `ModelDocument`/`ViewDocument` extend via an\n\t\t// anonymous constructor type. Angular's ivy partial-compilation type-checker (ng-packagr)\n\t\t// fails to resolve members inherited that way, unlike a plain `tsc` run, so the cast below\n\t\t// works around the false-positive `TS2339` it reports.\n\t\t( modelDocument as any ).on( 'change:data', ( evt: GetEventInfo<ModelDocumentChangeEvent> ) => {\n\t\t\tthis.ngZone.run( () => {\n\t\t\t\tif ( this.disableTwoWayDataBinding ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( this.cvaOnChange && !this.isEditorSettingData ) {\n\t\t\t\t\tconst data = editor.data.get();\n\n\t\t\t\t\tthis.cvaOnChange( data );\n\t\t\t\t}\n\n\t\t\t\tthis.change.emit( { event: evt, editor } );\n\t\t\t} );\n\t\t} );\n\n\t\t( viewDocument as any ).on( 'focus', ( evt: GetEventInfo<ViewDocumentFocusEvent> ) => {\n\t\t\tthis.ngZone.run( () => {\n\t\t\t\tthis.focus.emit( { event: evt, editor } );\n\t\t\t} );\n\t\t} );\n\n\t\t( viewDocument as any ).on( 'blur', ( evt: GetEventInfo<ViewDocumentBlurEvent> ) => {\n\t\t\tthis.ngZone.run( () => {\n\t\t\t\tif ( this.cvaOnTouched ) {\n\t\t\t\t\tthis.cvaOnTouched();\n\t\t\t\t}\n\n\t\t\t\tthis.blur.emit( { event: evt, editor } );\n\t\t\t} );\n\t\t} );\n\t}\n}\n\nfunction hasObservers<T>( emitter: EventEmitter<T> ): boolean {\n\t// Cast to `any` because `observed` property is available in RxJS >= 7.2.0.\n\t// Fallback to checking `observers` list if this property is not defined.\n\treturn ( emitter as any ).observed || emitter.observers.length > 0;\n}\n\n/**\n * Checks if currently installed version of the editor is supported by the integration.\n */\nfunction assertMinimumSupportedVersion(): void {\n\tswitch ( compareInstalledCKBaseVersion( '49.0.0' ) ) {\n\t\tcase null:\n\t\t\tconsole.warn( 'Cannot find the \"CKEDITOR_VERSION\" in the \"window\" scope.' );\n\t\t\tbreak;\n\n\t\tcase -1:\n\t\t\tconsole.warn( 'The <CKEditor> component requires using CKEditor 5 in version 49+ or nightly build.' );\n\t\t\tbreak;\n\t}\n}\n\n/**\n * Get definition of the element used to create editor.\n */\nfunction getEditorElementDefinition(\n\teditor: EditorRelaxedConstructor,\n\tconfig: EditorRelaxedConfig,\n\tdefaultTag: string\n): EditorElementDefinition {\n\t// Classic editor hides the element rendered by the integration, so it makes no sense to use a custom tag here.\n\tif ( !editor.editorName || editor.editorName === 'ClassicEditor' ) {\n\t\treturn defaultTag;\n\t}\n\n\treturn config.roots?.main?.element ?? config.root?.element ?? defaultTag;\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { CKEditorComponent } from './ckeditor.component';\nimport { EditorElementComponent } from './editor-element.component';\n\n@NgModule( {\n\timports: [\n\t\tFormsModule,\n\t\tCommonModule,\n\t\tEditorElementComponent\n\t],\n\tdeclarations: [ CKEditorComponent ],\n\texports: [ CKEditorComponent ]\n} )\nexport class CKEditorModule {}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\nexport * from './ckeditor.component';\nexport * from './ckeditor.module';\n\nexport {\n\tloadCKEditorCloud,\n\ttype CKEditorCloudResult,\n\ttype CKEditorCloudConfig\n} from '@ckeditor/ckeditor5-integrations-common';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.EditorElementComponent"],"mappings":";;;;;;;;AAAA;;;AAGG;SAEa,aAAa,GAAA;IAC5B,IAAK,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,2BAA2B,EAAG;QAC1E,OAAO,MAAM,CAAC,2BAA2B;IAC1C;AAEA,IAAA,OAAO,KAAK;AACb;;ACXA;;;AAGG;AAKH;;;;AAIG;AACI,MAAM,iCAAiC,GAAG,gCAAgC,CAChF,SAAS,EACT;AACC,IAAA,OAAO,8BAA8B,QAAQ;IAC7C,gBAAgB,EAAE,OAAO,CAAC;AAC1B,CAAA,CACD;;ACnBD;;;AAGG;AAOH;;;;;AAKG;AACG,SAAU,mCAAmC,CAAE,YAA0B,EAAA;IAC9E,MAAM,YAAY,GAA6B,EAAE;IAEjD,IAAK,CAAC,qBAAqB,CAAE,YAAY,CAAC,UAAU,CAAE,EAAG;AACxD;;;;AAIG;AACH,QAAA,YAAY,CAAC,IAAI,CAAE,iCAAiC,CAAE;IACvD;AAEA,IAAA,OAAO,gCAAgC,CAAE,YAAY,EAAE,YAAY,CAAE;AACtE;;AC7BA;;;AAGG;AAEG,SAAU,kBAAkB,CAAE,OAAkD,EAAA;AACrF,IAAA,IAAK,OAAO,OAAO,KAAK,QAAQ,EAAG;QAClC,OAAO,OAAO,CAAC,KAAK,CAAE,GAAG,CAAE,CAAC,MAAM,CAAE,OAAO,CAAE;IAC9C;IAEA,OAAO,OAAO,IAAI,EAAE;AACrB;;ACXA;;;AAGG;AAEH;;;;;AAKG;AACG,SAAU,gCAAgC,CAAE,UAAmC,EAAA;IACpF,IAAK,OAAO,WAAW,KAAK,WAAW,IAAI,UAAU,YAAY,WAAW,EAAG;QAC9E,MAAM,IAAI,KAAK,CACd,iEAAiE;AACjE,YAAA,+CAA+C,CAC/C;IACF;AAEA,IAAA,IAAK,OAAO,UAAU,KAAK,QAAQ,EAAG;QACrC,OAAO;AACN,YAAA,IAAI,EAAE;SACN;IACF;AAEA,IAAA,OAAO,UAA2C;AACnD;;AC1BA;;;AAGG;AAmBH;;AAEE;MAOW,sBAAsB,CAAA;AACjB,IAAA,QAAQ,GAAG,MAAM,CAAE,UAAU,CAA6B;AAE1D,IAAA,SAAS,GAAG,MAAM,CAAE,SAAS,CAAE;AAEhC,IAAA,UAAU,GAAG,KAAK,CAAkC,IAAI,iFAAE;AAE1E,IAAA,IAAW,OAAO,GAAA;QACjB,OAAO,IAAI,CAAC,QAAQ;IACrB;IAEQ,QAAQ,GAAuB,IAAI;AAE3C,IAAA,WAAA,GAAA;QACC,MAAM,CAAE,SAAS,IAAG;AACnB,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,EAAE;YAE3C,MAAM,UAAU,GAAG,gCAAgC,CAAE,iBAAiB,IAAI,KAAK,CAAE;AACjF,YAAA,MAAM,EAAE,GAAgB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAE,UAAU,CAAC,IAAI,CAAE;AAEvE,YAAA,IAAI,CAAC,gBAAgB,CAAE,EAAE,EAAE,UAAU,CAAE;AACvC,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAE;AAC7D,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;YAElB,SAAS,CAAE,MAAK;;AAEf,gBAAA,IAAK,IAAI,CAAC,QAAQ,EAAG;AACpB,oBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAE;AACxE,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;gBACrB;AACD,YAAA,CAAC,CAAE;AACJ,QAAA,CAAC,CAAE;IACJ;IAEQ,gBAAgB,CAAE,EAAe,EAAE,GAAkC,EAAA;QAC5E,MAAM,OAAO,GAAG,kBAAkB,CAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAE;AAEvD,QAAA,KAAM,MAAM,SAAS,IAAI,OAAO,EAAG;YAClC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAE,EAAE,EAAE,SAAS,CAAE;QACzC;AAEA,QAAA,IAAK,GAAG,CAAC,MAAM,EAAG;AACjB,YAAA,KAAM,MAAM,CAAE,QAAQ,EAAE,KAAK,CAAE,IAAI,MAAM,CAAC,OAAO,CAAE,GAAG,CAAC,MAAM,CAAE,EAAG;gBACjE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAE,QAAQ,EAAE,KAAK,CAAE;YACxC;QACD;AAEA,QAAA,IAAK,GAAG,CAAC,UAAU,EAAG;AACrB,YAAA,KAAM,MAAM,CAAE,IAAI,EAAE,KAAK,CAAE,IAAI,MAAM,CAAC,OAAO,CAAE,GAAG,CAAC,UAAU,CAAE,EAAG;gBACjE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAE;YAC/C;QACD;IACD;wGApDY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,sOAJxB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAIA,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AAAE,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC;AACzC,iBAAA;;;AC9BD;;;AAGG;AA8CH,MAAM,qCAAqC,GAAG,6DAA6D;MA8B9F,iBAAiB,CAAA;AAC7B;;;AAGG;AACiC,IAAA,MAAM;AAS1C;;;;AAIG;AACa,IAAA,MAAM,GAAiB;QACtC,UAAU,EAAE,aAAa;KACzB;AAED;;;AAGG;IACa,IAAI,GAAG,EAAE;AAEzB;;;;;;AAMG;IACa,OAAO,GAAG,KAAK;AAE/B;;;;;;;;AAQG;IACa,wBAAwB,GAAG,KAAK;AAEhD;;;;AAIG;IACH,IAAoB,QAAQ,CAAE,UAAmB,EAAA;AAChD,QAAA,IAAI,CAAC,gBAAgB,CAAE,UAAU,CAAE;IACpC;AAEA,IAAA,IAAW,QAAQ,GAAA;AAClB,QAAA,IAAK,IAAI,CAAC,cAAc,EAAG;AAC1B,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU;QACtC;QAEA,OAAO,IAAI,CAAC,iBAAiB;IAC9B;AAEA;;;;AAIG;AACc,IAAA,KAAK,GAAG,IAAI,YAAY,EAAW;AAEpD;;;;AAIG;AACc,IAAA,MAAM,GAAG,IAAI,YAAY,EAAwB;AAElE;;;;AAIG;AACc,IAAA,IAAI,GAAG,IAAI,YAAY,EAAsB;AAE9D;;;;AAIG;AACc,IAAA,KAAK,GAAG,IAAI,YAAY,EAAuB;AAEhE;;AAEG;AACc,IAAA,KAAK,GAAG,IAAI,YAAY,EAAW;AAEpD;;;AAGG;AAEK,IAAA,sBAAsB;AAE9B;;;;AAIG;AACH,IAAA,IAAc,iBAAiB,GAAA;AAC9B,QAAA,OAAO,0BAA0B,CAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAE;IAC5E;AAEA;;AAEG;AACH,IAAA,IAAW,cAAc,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI;IAClC;AAEA;;AAEG;AACK,IAAA,aAAa;AAErB;;AAEG;AACK,IAAA,cAAc;AAEtB;;;AAGG;AACK,IAAA,QAAQ;AAEhB;;AAEG;IACK,WAAW,GAAG,KAAK;AAE3B;;;AAGG;IACK,iBAAiB,GAAG,KAAK;AAEjC;;;AAGG;AACK,IAAA,MAAM;AAEd;;;;;AAKG;AACK,IAAA,WAAW;AAEnB;;;;;AAKG;AACK,IAAA,YAAY;AAEpB;;AAEG;IACK,mBAAmB,GAAG,KAAK;AAEnC;;AAEG;IACK,EAAE,GAAG,GAAG,EAAE;IAEX,KAAK,GAAA;QACX,OAAO,IAAI,CAAC,EAAE;IACf;AAEA,IAAA,WAAA,CAAsC,MAAc,EAAA;AACnD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AAEpB,QAAA,6BAA6B,EAAE;IAChC;;AAGO,IAAA,WAAW,CAAE,OAAsB,EAAA;QACzC,IAAK,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAE,OAAO,EAAE,MAAM,CAAE,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAG;YAC/G,IAAI,CAAC,UAAU,CAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAE;QAC7C;IACD;;IAGO,eAAe,GAAA;QACrB,IAAI,CAAC,gBAAgB,EAAE;IACxB;;AAGO,IAAA,MAAM,WAAW,GAAA;AACvB,QAAA,MAAM,IAAI,CAAC,aAAa,EAAE;IAC3B;AAEQ,IAAA,MAAM,aAAa,GAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;;;;;QAOvB,MAAM,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAE,MAAK,EAAE,CAAC,CAAE;AAEtC,QAAA,IAAI,CAAC,cAAc,IAAI;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AAE/B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa;;;AAIjC,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS;;;;QAK9B,IAAK,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,EAAG;AAC7C,YAAA,MAAM,MAAM,CAAC,OAAO,EAAE;QACvB;IACD;;AAGO,IAAA,UAAU,CAAE,KAAoB,EAAA;;;AAGtC,QAAA,IAAK,KAAK,KAAK,IAAI,EAAG;YACrB,KAAK,GAAG,EAAE;QACX;;AAGA,QAAA,IAAK,IAAI,CAAC,cAAc,EAAG;;;AAG1B,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;YAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAE,KAAK,CAAE;AACrC,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;QACjC;;aAEK;;AAEJ,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK;;;AAIjB,YAAA,IAAI,CAAC;iBACH,IAAI,CAAE,KAAK,EAAE;iBACb,SAAS,CAAE,MAAM,IAAG;gBACpB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,IAAI,CAAE;AAC7B,YAAA,CAAC,CAAE;QACL;IACD;;AAGO,IAAA,gBAAgB,CAAE,QAAkC,EAAA;AAC1D,QAAA,IAAI,CAAC,WAAW,GAAG,QAAQ;IAC5B;;AAGO,IAAA,iBAAiB,CAAE,QAAoB,EAAA;AAC7C,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;IAC7B;;AAGO,IAAA,gBAAgB,CAAE,UAAmB,EAAA;;AAE3C,QAAA,IAAK,IAAI,CAAC,cAAc,EAAG;YAC1B,IAAK,UAAU,EAAG;AACjB,gBAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAE,qCAAqC,CAAE;YAChF;iBAAO;AACN,gBAAA,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAE,qCAAqC,CAAE;YACjF;QACD;;AAGA,QAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU;IACpC;AAEA;;;;AAIG;IACK,gBAAgB,GAAA;AACvB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAE1B,QAAA,MAAM,QAAQ,GAAG,0BAA0B,EAAE;AAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAQ;AAEpD,QAAA,MAAM,SAAS,GAAG,CAAE,CAAW,KAAK;;;;;AAKnC,YAAA,IAAK,YAAY,CAAE,IAAI,CAAC,KAAK,CAAE,EAAG;AACjC,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC,CAAE,CAAE;YAC9C;iBAAO;;AAEN,gBAAA,OAAO,CAAC,KAAK,CAAE,CAAC,CAAE;YACnB;AACD,QAAA,CAAC;;;QAID,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAE,YAAW;AACzD,YAAA,IAAI,MAAe;AAEnB,YAAA,IAAI;AACH,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AAE/B,gBAAA,MAAM,GAAG,OACR,QAAQ,CAAC,uBAAuB;AAC/B,oBAAA,MAAM,CAAC,MAAM,CAAE,2BAA2B,CAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAE,CAAE;oBACvE,MAAM,CAAC,MAAM,CAAE,OAAO,EAAE,MAAM,CAAE,CACjC;YACF;YAAE,OAAQ,CAAC,EAAG;gBACb,SAAS,CAAE,CAAC,CAAE;gBAEd;YACD;;;AAIA,YAAA,IAAK,IAAI,CAAC,WAAW,EAAG;AACvB,gBAAA,MAAM,MAAM,CAAC,OAAO,EAAE;gBAEtB;YACD;AAEA,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM;;;AAI3B,YAAA,IAAK,IAAI,CAAC,iBAAiB,EAAG;AAC7B,gBAAA,MAAM,CAAC,kBAAkB,CAAE,qCAAqC,CAAE;YACnE;;;;;;AAOA,YAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,CAAE,CAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;;;;;;;AAOnE,gBAAA,IAAK,MAAM,KAAK,MAAM,EAAG;oBACxB,SAAS,CAAE,KAAK,CAAE;gBACnB;AACD,YAAA,CAAC,CAAE;AAEH,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,MAAK;AACrB,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAE,MAAM,CAAE;AAC1B,YAAA,CAAC,CAAE;AAEH,YAAA,IAAI,CAAC,iBAAiB,CAAE,MAAM,CAAE;AACjC,QAAA,CAAC,CAAE;IACJ;IAEQ,SAAS,GAAA;AAChB,QAAA,MAAM,MAAM,GAAG,+BAA+B,CAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAE;AAExE,QAAA,OAAO,mCAAmC,CAAE,MAAM,CAAE;IACrD;AAEA;;AAEG;AACK,IAAA,iBAAiB,CAAE,MAAe,EAAA;AACzC,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ;QAC3C,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ;;;;;QAM/C,aAAsB,CAAC,EAAE,CAAE,aAAa,EAAE,CAAE,GAA2C,KAAK;AAC7F,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,MAAK;AACrB,gBAAA,IAAK,IAAI,CAAC,wBAAwB,EAAG;oBACpC;gBACD;gBAEA,IAAK,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAG;oBACpD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;AAE9B,oBAAA,IAAI,CAAC,WAAW,CAAE,IAAI,CAAE;gBACzB;AAEA,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAE;AAC3C,YAAA,CAAC,CAAE;AACJ,QAAA,CAAC,CAAE;QAED,YAAqB,CAAC,EAAE,CAAE,OAAO,EAAE,CAAE,GAAyC,KAAK;AACpF,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,MAAK;AACrB,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAE;AAC1C,YAAA,CAAC,CAAE;AACJ,QAAA,CAAC,CAAE;QAED,YAAqB,CAAC,EAAE,CAAE,MAAM,EAAE,CAAE,GAAwC,KAAK;AAClF,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,MAAK;AACrB,gBAAA,IAAK,IAAI,CAAC,YAAY,EAAG;oBACxB,IAAI,CAAC,YAAY,EAAE;gBACpB;AAEA,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAE;AACzC,YAAA,CAAC,CAAE;AACJ,QAAA,CAAC,CAAE;IACJ;AAvaY,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBAyLA,MAAM,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAzLvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EATlB;AACV,YAAA;AACC,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAE,MAAM,iBAAiB,CAAE;AAClD,gBAAA,KAAK,EAAE;AACP;AACD,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARS,wEAAwE,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,sBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAWtE,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,SAAS;AAAE,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,wEAAwE;;AAElF,oBAAA,SAAS,EAAE;AACV,wBAAA;AACC,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAE,uBAAuB,CAAE;AAClD,4BAAA,KAAK,EAAE;AACP;AACD,qBAAA;AACD,oBAAA,UAAU,EAAE;AACZ,iBAAA;;0BA0LqB,MAAM;2BAAE,MAAM;;sBApLlC,KAAK;uBAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAczB;;sBAQA;;sBASA;;sBAWA;;sBAOA;;sBAiBA;;sBAOA;;sBAOA;;sBAOA;;sBAKA;;sBAMA,SAAS;AAAE,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;AAmUzC,SAAS,YAAY,CAAK,OAAwB,EAAA;;;IAGjD,OAAS,OAAgB,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;AACnE;AAEA;;AAEG;AACH,SAAS,6BAA6B,GAAA;AACrC,IAAA,QAAS,6BAA6B,CAAE,QAAQ,CAAE;AACjD,QAAA,KAAK,IAAI;AACR,YAAA,OAAO,CAAC,IAAI,CAAE,2DAA2D,CAAE;YAC3E;AAED,QAAA,KAAK,CAAC,CAAC;AACN,YAAA,OAAO,CAAC,IAAI,CAAE,qFAAqF,CAAE;YACrG;;AAEH;AAEA;;AAEG;AACH,SAAS,0BAA0B,CAClC,MAAgC,EAChC,MAA2B,EAC3B,UAAkB,EAAA;;IAGlB,IAAK,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,KAAK,eAAe,EAAG;AAClE,QAAA,OAAO,UAAU;IAClB;AAEA,IAAA,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,UAAU;AACzE;;AC5hBA;;;AAGG;MAiBU,cAAc,CAAA;wGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAd,cAAc,EAAA,YAAA,EAAA,CAHV,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAJhC,WAAW;YACX,YAAY;AACZ,YAAA,sBAAsB,aAGZ,iBAAiB,CAAA,EAAA,CAAA;AAEhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAPzB,WAAW;YACX,YAAY,CAAA,EAAA,CAAA;;4FAMD,cAAc,EAAA,UAAA,EAAA,CAAA;kBAT1B,QAAQ;AAAE,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,OAAO,EAAE;wBACR,WAAW;wBACX,YAAY;wBACZ;AACA,qBAAA;oBACD,YAAY,EAAE,CAAE,iBAAiB,CAAE;oBACnC,OAAO,EAAE,CAAE,iBAAiB;AAC5B,iBAAA;;;ACnBD;;;AAGG;;ACHH;;AAEG;;;;"}