UNPKG

@ckeditor/ckeditor5-angular

Version:

Official Angular component for CKEditor 5 – the best browser-based rich text editor.

1 lines 35.2 kB
{"version":3,"file":"ckeditor-ckeditor5-angular.mjs","sources":["../../src/ckeditor/plugins/angular-integration-usage-data.plugin.ts","../../src/ckeditor/plugins/append-all-integration-plugins-to-config.ts","../../src/ckeditor/disabled-editor-watchdog.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\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 */ '11.0.1' /* 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\nimport type {\n\tEditor,\n\tEditorConfig,\n\tEditorWatchdogCreatorFunction,\n\tWatchdogConfig\n} from 'ckeditor5';\n\n/**\n * A dummy watchdog class is used when the watchdog is disabled.\n *\n * It provides a compatible API but does not perform any monitoring or restarting.\n */\nexport class DisabledEditorWatchdog<TEditor extends Editor = Editor> {\n\t/**\n\t * The editor instance.\n\t */\n\tpublic editor: TEditor | null = null;\n\n\t/**\n\t * The creator function.\n\t */\n\tprivate _creator?: EditorWatchdogCreatorFunction<TEditor>;\n\n\t/**\n\t * The destructor function.\n\t */\n\tprivate _destructor?: ( editor: TEditor ) => Promise<void>;\n\n\t// eslint-disable-next-line @typescript-eslint/no-useless-constructor\n\tconstructor(\n\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t_editorConstructor: {\n\t\t\tcreate( sourceElementOrData: HTMLElement | string, config?: EditorConfig ): Promise<TEditor>;\n\t\t},\n\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t_config?: WatchdogConfig\n\t) {}\n\n\t/**\n\t * Sets the creator function.\n\t */\n\tpublic setCreator( creator: EditorWatchdogCreatorFunction<TEditor> ): void {\n\t\tthis._creator = creator;\n\t}\n\n\t/**\n\t * Sets the destructor function.\n\t */\n\tpublic setDestructor( destructor: ( editor: TEditor ) => Promise<void> ): void {\n\t\tthis._destructor = destructor;\n\t}\n\n\t/**\n\t * A dummy implementation of the `on` method.\n\t */\n\t/* istanbul ignore next */\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tpublic on( _event: string, _callback: ( ...args: Array<any> ) => void ): void {\n\t}\n\n\t/**\n\t * Creates the editor instance.\n\t */\n\tpublic async create( elementOrData: HTMLElement | string, config?: EditorConfig ): Promise<void> {\n\t\tthis.editor = await this._creator!( elementOrData, config || /* istanbul ignore next */ ( {} as any ) );\n\t}\n\n\t/**\n\t * Destroys the editor instance.\n\t */\n\tpublic async destroy(): Promise<void> {\n\t\tif ( this.editor ) {\n\t\t\tawait this._destructor!( this.editor );\n\t\t\tthis.editor = null;\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\tElementRef,\n\tEventEmitter,\n\tforwardRef,\n\tInject,\n\tInput,\n\tNgZone,\n\tOutput,\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 } from '@angular/forms';\n\nimport type {\n\tContextWatchdog,\n\tEditorWatchdog,\n\tWatchdogConfig,\n\tEditor,\n\tEditorConfig,\n\tGetEventInfo,\n\tModelDocumentChangeEvent,\n\tEditorWatchdogCreatorFunction,\n\tViewDocumentBlurEvent,\n\tViewDocumentFocusEvent\n} from 'ckeditor5';\nimport type { ControlValueAccessor } from '@angular/forms';\n\nimport { uid } from '@ckeditor/ckeditor5-integrations-common';\nimport { appendAllIntegrationPluginsToConfig } from './plugins/append-all-integration-plugins-to-config';\nimport { DisabledEditorWatchdog } from './disabled-editor-watchdog';\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: '<ng-template></ng-template>',\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 reference to the DOM element created by the component.\n\t */\n\tprivate elementRef!: ElementRef<HTMLElement>;\n\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() public editor?: {\n\t\tcreate( sourceElementOrData: HTMLElement | string, config?: EditorConfig ): Promise<TEditor>;\n\t\tEditorWatchdog: typeof EditorWatchdog;\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: 'GPL'\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@Input() public tagName = 'div';\n\n\t/**\n\t * The context watchdog.\n\t */\n\t@Input() public watchdog?: ContextWatchdog;\n\n\t/**\n\t * Config for the EditorWatchdog.\n\t */\n\t@Input() public editorWatchdogConfig?: WatchdogConfig;\n\n\t/**\n\t * When set to `true`, the editor watchdog is disabled, and a fake watchdog is used.\n\t */\n\t@Input() public disableWatchdog = false;\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 * The instance of the editor created by this component.\n\t */\n\tpublic get editorInstance(): TEditor | null {\n\t\tlet editorWatchdog = this.editorWatchdog;\n\n\t\tif ( this.watchdog && !this.disableWatchdog ) {\n\t\t\teditorWatchdog = getEditorFromWatchdogOrNull( this.watchdog, this.id );\n\t\t}\n\n\t\tif ( editorWatchdog ) {\n\t\t\treturn editorWatchdog.editor;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * The editor watchdog. It is created when the context watchdog is not passed to the component.\n\t * It keeps the editor running.\n\t */\n\tprivate editorWatchdog?: EditorWatchdog<TEditor> | DisabledEditorWatchdog<TEditor>;\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 * Reference to the source element used by the editor.\n\t */\n\tprivate editorElement?: HTMLElement;\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 * Listener bound to the watchdog `itemError` event.\n\t */\n\tprivate watchdogItemErrorListener?: ( evt: unknown, { itemId }: { itemId: string } ) => void;\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( ElementRef ) elementRef: ElementRef, @Inject( NgZone ) ngZone: NgZone ) {\n\t\tthis.ngZone = ngZone;\n\t\tthis.elementRef = elementRef;\n\n\t\tthis.checkVersion();\n\t}\n\n\tprivate checkVersion() {\n\t\t// To avoid issues with the community typings and CKEditor 5, let's treat window as any. See #342.\n\t\tconst { CKEDITOR_VERSION } = ( window as any );\n\n\t\tif ( !CKEDITOR_VERSION ) {\n\t\t\treturn console.warn( 'Cannot find the \"CKEDITOR_VERSION\" in the \"window\" scope.' );\n\t\t}\n\n\t\tconst [ major ] = CKEDITOR_VERSION.split( '.' ).map( Number );\n\n\t\tif ( major >= 42 || CKEDITOR_VERSION.startsWith( '0.0.0' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconsole.warn( 'The <CKEditor> component requires using CKEditor 5 in version 42+ or nightly build.' );\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\n\t\tif ( Object.prototype.hasOwnProperty.call( changes, 'disableWatchdog' ) && !changes.disableWatchdog.isFirstChange() ) {\n\t\t\tthis.destroyEditor().then( () => {\n\t\t\t\tthis.attachToWatchdog();\n\t\t\t} );\n\t\t}\n\t}\n\n\t// Implementing the AfterViewInit interface.\n\tpublic ngAfterViewInit(): void {\n\t\tthis.attachToWatchdog();\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\tif ( this.watchdog && getEditorFromWatchdogOrNull( this.watchdog, this.id ) ) {\n\t\t\tawait this.watchdog.remove( this.id );\n\n\t\t\tif ( this.watchdogItemErrorListener ) {\n\t\t\t\tthis.watchdog.off( 'itemError', this.watchdogItemErrorListener );\n\t\t\t}\n\t\t} else if ( this.editorWatchdog && this.editorWatchdog.editor ) {\n\t\t\tawait this.editorWatchdog.destroy();\n\n\t\t\tthis.editorWatchdog = undefined;\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 attachToWatchdog() {\n\t\tconst creator: EditorWatchdogCreatorFunction<TEditor> = ( ( elementOrData, config ) => {\n\t\t\treturn this.ngZone.runOutsideAngular( async () => {\n\t\t\t\tthis.elementRef.nativeElement.appendChild( elementOrData as HTMLElement );\n\n\t\t\t\tconst editor = await this.editor!.create( elementOrData as HTMLElement, config );\n\n\t\t\t\tif ( this.initiallyDisabled ) {\n\t\t\t\t\teditor.enableReadOnlyMode( ANGULAR_INTEGRATION_READ_ONLY_LOCK_ID );\n\t\t\t\t}\n\n\t\t\t\tthis.ngZone.run( () => {\n\t\t\t\t\tthis.ready.emit( editor );\n\t\t\t\t} );\n\n\t\t\t\tthis.setUpEditorEvents( editor );\n\n\t\t\t\treturn editor;\n\t\t\t} );\n\t\t} );\n\n\t\tconst destructor = async ( editor: Editor ) => {\n\t\t\tawait editor.destroy();\n\n\t\t\tthis.elementRef.nativeElement.removeChild( this.editorElement! );\n\t\t};\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\t\tconst element = document.createElement( this.tagName );\n\t\tconst config = this.getConfig();\n\n\t\tthis.editorElement = element;\n\n\t\t// Based on the presence of the watchdog decide how to initialize the editor.\n\t\tif ( this.watchdog && !this.disableWatchdog ) {\n\t\t\t// When the context watchdog is passed add the new item to it based on the passed configuration.\n\t\t\tthis.watchdog.add( {\n\t\t\t\tid: this.id,\n\t\t\t\ttype: 'editor',\n\t\t\t\tcreator,\n\t\t\t\tdestructor,\n\t\t\t\tsourceElementOrData: element,\n\t\t\t\tconfig\n\t\t\t} ).catch( e => {\n\t\t\t\temitError( e );\n\t\t\t} );\n\n\t\t\tthis.watchdogItemErrorListener = ( _, { itemId } ) => {\n\t\t\t\tif ( itemId === this.id ) {\n\t\t\t\t\temitError();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.watchdog.on( 'itemError', this.watchdogItemErrorListener );\n\t\t} else {\n\t\t\t// In the other case create the watchdog by hand to keep the editor running.\n\t\t\tconst WatchdogClass = this.disableWatchdog ? DisabledEditorWatchdog : this.editor!.EditorWatchdog;\n\n\t\t\tconst editorWatchdog = new WatchdogClass(\n\t\t\t\tthis.editor!,\n\t\t\t\tthis.editorWatchdogConfig\n\t\t\t);\n\n\t\t\teditorWatchdog.setCreator( creator );\n\t\t\teditorWatchdog.setDestructor( destructor );\n\n\t\t\tif ( !this.disableWatchdog ) {\n\t\t\t\teditorWatchdog.on( 'error', emitError );\n\t\t\t}\n\n\t\t\tthis.editorWatchdog = editorWatchdog;\n\t\t\tthis.ngZone.runOutsideAngular( () => {\n\t\t\t\t// Note: must be called outside of the Angular zone too because `create` is calling\n\t\t\t\t// `_startErrorHandling` within a microtask, which sets up `error` listener on the window.\n\t\t\t\teditorWatchdog.create( element, config ).catch( e => {\n\t\t\t\t\temitError( e );\n\t\t\t\t} );\n\t\t\t} );\n\t\t}\n\t}\n\n\tprivate getConfig() {\n\t\tif ( this.data && this.config.initialData ) {\n\t\t\tthrow new Error( 'Editor data should be provided either using `config.initialData` or `data` properties.' );\n\t\t}\n\n\t\tconst config = { ...this.config };\n\n\t\t// Merge two possible ways of providing data into the `config.initialData` field.\n\t\tconst initialData = this.config.initialData || this.data;\n\n\t\tif ( initialData ) {\n\t\t\t// Define the `config.initialData` only when the initial content is specified.\n\t\t\tconfig.initialData = initialData;\n\t\t}\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\tmodelDocument.on<ModelDocumentChangeEvent>( 'change:data', evt => {\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\tviewDocument.on<ViewDocumentFocusEvent>( 'focus', evt => {\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\tviewDocument.on<ViewDocumentBlurEvent>( 'blur', evt => {\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 * Temporarily use the `_watchdogs` internal map as the `getItem()` method throws\n * an error when the item is not registered yet.\n *\n * See https://github.com/ckeditor/ckeditor5-angular/issues/177\n */\nfunction getEditorFromWatchdogOrNull( watchdog: EditorWatchdog | ContextWatchdog, id: string ) {\n\treturn ( watchdog as any )._watchdogs.get( id );\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';\n\n@NgModule( {\n\timports: [ FormsModule, CommonModule ],\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":[],"mappings":"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"}