{"version":3,"file":"smart-webcomponents-angular-editor.mjs","sources":["../../editor/src/smart.element.ts","../../editor/src/smart.editor.ts","../../editor/src/smart.editor.module.ts","../../editor/src/smart-webcomponents-angular-editor.ts"],"sourcesContent":["\ndeclare global {\n    interface Window {\n        Smart: any;\n}\n}\n\n\nimport { Directive, ElementRef, Input, Output, EventEmitter } from '@angular/core';\nimport { ElementRenderMode } from './../index';\n\n@Directive()\nexport class BaseElement {\n    constructor(ref: ElementRef) {\n        const that = this;\n        this.nativeElement = ref.nativeElement as any;\n\n        that.nativeElement.onAttached = () => {\n            that.onAttach.emit(that.nativeElement);\n        }\n\n        that.nativeElement.onDetached = () => {\n            that.onDetach.emit(that.nativeElement);\n        }\n    }\n\n    @Output() onCreate: EventEmitter<any> = new EventEmitter();\n    @Output() onReady: EventEmitter<any> = new EventEmitter();\n    @Output() onAttach: EventEmitter<any> = new EventEmitter();\n    @Output() onDetach: EventEmitter<any> = new EventEmitter();\n\n    public nativeElement: any;\n\n    public addEventListener(type: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions = false): void {\n        this.nativeElement.addEventListener(type, listener, options);\n\t}\n\n\tpublic removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions = false): void {\n\t\tthis.nativeElement.removeEventListener(type, listener, options);\n\t}\n\n\tpublic dispatchEvent(event: Event): boolean {\n\t\treturn this.nativeElement.dispatchEvent(event);\n\t}\n\n\tpublic blur(): void {\n\t\tthis.nativeElement.blur();\n\t}\n\n\tpublic click(): void {\n\t\tthis.nativeElement.click();\n\t}\n\n\tpublic focus(options?: FocusOptions): void {\n\t\tthis.nativeElement.focus(options);\n\t}\n\n/** @description Sets or gets the license.  */\n\t@Input()\n\tget license(): string {\n\t\treturn this.nativeElement ? this.nativeElement.license : undefined;\n\t}\n\tset license(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.license = value : undefined;\n\t}\n\t\n/** @description Sets or gets the language. Used in conjunction with the property messages.  */\n\t@Input()\n\tget locale(): string {\n\t\treturn this.nativeElement ? this.nativeElement.locale : undefined;\n\t}\n\tset locale(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.locale = value : undefined;\n\t}\n\n\t/** @description Callback used to customize the format of the messages that are returned from the Localization Module. */\n\t@Input()\n\tget localizeFormatFunction(): any {\n\t\treturn this.nativeElement ? this.nativeElement.localizeFormatFunction : undefined;\n\t}\n\tset localizeFormatFunction(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.localizeFormatFunction = value : undefined;\n\t}\n\n\t/** @description Sets or gets an object specifying strings used in the widget that can be localized. Used in conjunction with the property locale.  */\n\t@Input()\n\tget messages(): any {\n\t\treturn this.nativeElement ? this.nativeElement.messages : undefined;\n\t}\n\tset messages(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.messages = value : undefined;\n\t}\n\n\t/** @description Sets or gets the value indicating whether the element is aligned to support locales using right-to-left fonts. */\n\t@Input()\n\tget rightToLeft(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.rightToLeft : undefined;\n\t}\n\tset rightToLeft(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.rightToLeft = value : undefined;\n\t}\n\n\t/** @description Determines the theme. Theme defines the look of the element */\n\t@Input()\n\tget theme(): string {\n\t\treturn this.nativeElement ? this.nativeElement.theme : undefined;\n\t}\n\tset theme(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.theme = value : undefined;\n\t}\n}\n\nlet Smart: any;\nif (typeof window !== \"undefined\") {\n\tSmart = window.Smart;\n}\nexport { Smart };\n\n","import { Editor } from './../index';\nimport { Animation, EditorContentFilteringAttributeFilterMode, EditorContentFilteringTagFilterMode, EditorContentFilteringStyleAttributeFilterMode, EditorContextMenu, EditMode, EditorImageFormat, PasteFormat, ToolbarMode, ToolbarViewMode, EditorAi, EditorContentFiltering, EditorDataExport, EditorIframeSettings, ToolbarItem, ToolbarItemEditor, ElementRenderMode} from './../index';\nimport { Component, Directive, AfterViewInit, ElementRef, Input, OnInit, OnChanges, OnDestroy, SimpleChanges, Output, EventEmitter } from '@angular/core';\nimport { BaseElement, Smart } from './smart.element';\nexport { Animation, EditorContentFilteringAttributeFilterMode, EditorContentFilteringTagFilterMode, EditorContentFilteringStyleAttributeFilterMode, EditorContextMenu, EditMode, EditorImageFormat, PasteFormat, ToolbarMode, ToolbarViewMode, EditorAi, EditorContentFiltering, EditorDataExport, EditorIframeSettings, ToolbarItem, ToolbarItemEditor, ElementRenderMode} from './../index';\nexport { Smart } from './smart.element';\nexport { Editor } from './../index';\n\n\n@Directive({\n\texportAs: 'smart-editor',\tselector: 'smart-editor, [smart-editor]'\n})\n\nexport class EditorComponent extends BaseElement implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n\tconstructor(ref: ElementRef<Editor>) {\n\t\tsuper(ref);\n\t\tthis.nativeElement = ref.nativeElement as Editor;\n\t}\n\n\tprivate eventHandlers: any[] = [];\n\n\tpublic declare nativeElement: Editor;\n\t/** @description Creates the component on demand.\n\t * @param properties An optional object of properties, which will be added to the template binded ones.\n\t */\n\tpublic createComponent(properties = {}): any {\n    \tthis.nativeElement = <Editor>document.createElement('smart-editor');\n\t\tfor (let propertyName in properties) { \n \t\t\tthis.nativeElement[propertyName] = properties[propertyName];\n\t\t}\n\t\treturn this.nativeElement;\n\t}\n\t/** @description An object that defines configuration settings for integrating AI capabilities within the grid, including options for enabling AI features, specifying AI service endpoints, adjusting model parameters, and customizing AI-driven functionality in the grid interface. */\n\t@Input()\n\tget ai(): EditorAi {\n\t\treturn this.nativeElement ? this.nativeElement.ai : undefined;\n\t}\n\tset ai(value: EditorAi) {\n\t\tthis.nativeElement ? this.nativeElement.ai = value : undefined;\n\t}\n\n\t/** @description Specifies or retrieves the current animation mode. When set to 'none', all animations are disabled. For other values, animations are enabled according to the selected mode. */\n\t@Input()\n\tget animation(): Animation | string {\n\t\treturn this.nativeElement ? this.nativeElement.animation : undefined;\n\t}\n\tset animation(value: Animation | string) {\n\t\tthis.nativeElement ? this.nativeElement.animation = value : undefined;\n\t}\n\n\t/** @description Automatically formats your text in real-time as you type, converting your input into structured elements such as bullet points, checkboxes, headings, and code blocks. This feature streamlines note-taking and writing by instantly applying consistent formatting without requiring manual markup or additional steps. */\n\t@Input()\n\tget autoFormatting(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.autoFormatting : undefined;\n\t}\n\tset autoFormatting(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.autoFormatting = value : undefined;\n\t}\n\n\t/** @description Automatically restores the editor's most recently saved state from the browser's local storage when the element is initialized. To retrieve the correct saved state, you must specify a unique id that matches the one used during the saving process. Without this id, the editor cannot identify or load the previously stored state. */\n\t@Input()\n\tget autoLoad(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.autoLoad : undefined;\n\t}\n\tset autoLoad(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.autoLoad = value : undefined;\n\t}\n\n\t/** @description Automatically saves the editor's current content at regular intervals specified by the autoSaveInterval property, but only while the editor element is focused. To enable automatic saving, you must assign a unique id to the editor element; this id is used to store and retrieve the editor's saved state. */\n\t@Input()\n\tget autoSave(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.autoSave : undefined;\n\t}\n\tset autoSave(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.autoSave = value : undefined;\n\t}\n\n\t/** @description Specifies the time interval, in milliseconds, at which the Editor automatically saves its state when the autoSave property is enabled. This property controls how frequently the Editor performs auto-save operations. */\n\t@Input()\n\tget autoSaveInterval(): number {\n\t\treturn this.nativeElement ? this.nativeElement.autoSaveInterval : undefined;\n\t}\n\tset autoSaveInterval(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.autoSaveInterval = value : undefined;\n\t}\n\n\t/** @description A customizable formatting function for the character counter display in the Editor. This function receives two parameters:- chars: The current number of characters entered by the user in the Editor.- maxCharCount: The maximum allowed number of characters for the Editor input.The function should return a formatted string that represents the character count status, which will be shown in the Editor’s UI (for example, \"25 / 100 characters\"). This allows developers to define custom formats for how the character count is displayed to users. */\n\t@Input()\n\tget charCountFormatFunction(): any {\n\t\treturn this.nativeElement ? this.nativeElement.charCountFormatFunction : undefined;\n\t}\n\tset charCountFormatFunction(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.charCountFormatFunction = value : undefined;\n\t}\n\n\t/** @description Controls whether files are automatically uploaded immediately after the user selects them. When enabled, the upload process begins as soon as files are chosen. When disabled, file upload must be triggered manually. This property can be used to either retrieve the current auto-upload setting or update it. */\n\t@Input()\n\tget autoUpload(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.autoUpload : undefined;\n\t}\n\tset autoUpload(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.autoUpload = value : undefined;\n\t}\n\n\t/** @description Specifies the configuration for content filtering, allowing you to define which types of content are allowed or blocked according to the selected criteria or rules. */\n\t@Input()\n\tget contentFiltering(): EditorContentFiltering {\n\t\treturn this.nativeElement ? this.nativeElement.contentFiltering : undefined;\n\t}\n\tset contentFiltering(value: EditorContentFiltering) {\n\t\tthis.nativeElement ? this.nativeElement.contentFiltering = value : undefined;\n\t}\n\n\t/** @description Defines the CSS file(s) or styles to be applied to the content area within the Editor, allowing you to customize the appearance and formatting of the editor’s content. */\n\t@Input()\n\tget content_css(): string {\n\t\treturn this.nativeElement ? this.nativeElement.content_css : undefined;\n\t}\n\tset content_css(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.content_css = value : undefined;\n\t}\n\n\t/** @description Specifies the items and structure of the context menu that appears when a user right-clicks within the Editor's content area. This setting allows you to customize which menu options are available based on the user's actions, providing tailored functionality and quick access to relevant commands. */\n\t@Input()\n\tget contextMenu(): EditorContextMenu | string {\n\t\treturn this.nativeElement ? this.nativeElement.contextMenu : undefined;\n\t}\n\tset contextMenu(value: EditorContextMenu | string) {\n\t\tthis.nativeElement ? this.nativeElement.contextMenu = value : undefined;\n\t}\n\n\t/** @description Enhances the Editor’s context menu by allowing you to customize its default items. This property accepts several formats:- 'Array of Items:'    You can provide an array where each item is either:    - A 'string' representing the value/action for the menu item.    - An 'object' in the format '{ label: string, value: string }', where:    - 'label' is the text displayed in the menu.    - 'value' is the action or identifier associated with that menu item.- 'Function:'    You can also pass a function that dynamically generates the array of menu items. The function receives the following parameters:    - 'target' ('HTMLElement'): The DOM element where the context menu is triggered.    - 'type' ('string'): The type or context of the menu (e.g., \"table\", \"image\", \"link\", or other relevant context types).    - 'defaultItems' ('string[]'): The default set of menu item identifiers for that context.    The function should return an array of menu items (as described above), which will be rendered in place of the default menu.'Example function signature:''''javascriptfunction (target: HTMLElement, type: string, defaultItems: string[]) {  return defaultItems;}'''This flexible property enables you to tailor the context menu based on the user's selection, the specific element targeted, or the context of the interaction, helping create a more intuitive and relevant editing experience. */\n\t@Input()\n\tget contextMenuDataSource(): string[] | { label: string, value: 'string' }[] | Function | null {\n\t\treturn this.nativeElement ? this.nativeElement.contextMenuDataSource : undefined;\n\t}\n\tset contextMenuDataSource(value: string[] | { label: string, value: 'string' }[] | Function | null) {\n\t\tthis.nativeElement ? this.nativeElement.contextMenuDataSource = value : undefined;\n\t}\n\n\t/** @description Configures the available options for exporting data from the Editor, such as file formats (CSV, JSON, XML), export settings, and customization preferences. These settings determine how users can save or export content from the Editor. */\n\t@Input()\n\tget dataExport(): EditorDataExport {\n\t\treturn this.nativeElement ? this.nativeElement.dataExport : undefined;\n\t}\n\tset dataExport(value: EditorDataExport) {\n\t\tthis.nativeElement ? this.nativeElement.dataExport = value : undefined;\n\t}\n\n\t/** @description Controls whether the Editor component is active or inactive. When enabled, users can interact with and make changes within the Editor; when disabled, all editing functionalities are restricted or unavailable. */\n\t@Input()\n\tget disabled(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disabled : undefined;\n\t}\n\tset disabled(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disabled = value : undefined;\n\t}\n\n\t/** @description Prevents users from modifying or editing content within the Editor, making all content read-only. */\n\t@Input()\n\tget disableEditing(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disableEditing : undefined;\n\t}\n\tset disableEditing(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disableEditing = value : undefined;\n\t}\n\n\t/** @description Prevents the Quick Search Bar from appearing or being accessible to users, effectively disabling its functionality across the application. */\n\t@Input()\n\tget disableSearchBar(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disableSearchBar : undefined;\n\t}\n\tset disableSearchBar(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disableSearchBar = value : undefined;\n\t}\n\n\t/** @description Specifies the editing mode for the Editor component. By default, the Editor operates in standard HTML mode, allowing users to input and edit HTML content directly. In this mode, pressing Enter inserts line breaks or new paragraphs according to standard HTML behavior. When set to 'blockHtml', the Editor creates new DIV elements each time the user presses Enter, promoting a block-based editing experience. This mode also provides built-in commands tailored for structured data entry and manipulation.If set to 'markdown', the Editor functions as a dedicated Markdown editor. User input is interpreted as Markdown syntax, and the Editor automatically parses and converts the Markdown content into HTML for real-time preview. This enables a seamless writing and formatting workflow for users who prefer Markdown.Possible values:- 'html' (default): Accepts and parses HTML input.- 'blockHtml': Uses DIV tags for new blocks and offers additional commands for data input.- 'markdown': Enables Markdown syntax input with live HTML preview. */\n\t@Input()\n\tget editMode(): EditMode | string {\n\t\treturn this.nativeElement ? this.nativeElement.editMode : undefined;\n\t}\n\tset editMode(value: EditMode | string) {\n\t\tthis.nativeElement ? this.nativeElement.editMode = value : undefined;\n\t}\n\n\t/** @description Specifies whether the output from the getHTML method and the Source Code view should be HTML-encoded. When enabled, special characters in the code (such as , and &) are converted to their HTML entity equivalents, ensuring correct display and preventing unintended HTML rendering. When disabled, the values are returned as raw HTML without encoding. */\n\t@Input()\n\tget enableHtmlEncode(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.enableHtmlEncode : undefined;\n\t}\n\tset enableHtmlEncode(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.enableHtmlEncode = value : undefined;\n\t}\n\n\t/** @description Specifies whether pressing the Tab key inside the Editor will insert a tab character at the cursor position, or instead move focus to the next focusable element (default behavior). When enabled, Tab inserts a tab character; when disabled, Tab shifts focus as usual. */\n\t@Input()\n\tget enableTabKey(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.enableTabKey : undefined;\n\t}\n\tset enableTabKey(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.enableTabKey = value : undefined;\n\t}\n\n\t/** @description Specifies the duration (in milliseconds) between consecutive result updates when using the \"Find and Replace\" and \"Search Bar\" features. Adjusting this interval can affect how quickly search results are refreshed and displayed to the user during searches. */\n\t@Input()\n\tget findAndReplaceTimeout(): number {\n\t\treturn this.nativeElement ? this.nativeElement.findAndReplaceTimeout : undefined;\n\t}\n\tset findAndReplaceTimeout(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.findAndReplaceTimeout = value : undefined;\n\t}\n\n\t/** @description Specifies whether the Toolbar is visible or hidden. When set to true, the Toolbar will be hidden; when set to false, the Toolbar will be displayed. */\n\t@Input()\n\tget hideToolbar(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.hideToolbar : undefined;\n\t}\n\tset hideToolbar(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.hideToolbar = value : undefined;\n\t}\n\n\t/** @description Specifies whether the Inline Toolbar is visible. If set to true, the toolbar will be hidden; if false, the toolbar will be displayed. */\n\t@Input()\n\tget hideInlineToolbar(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.hideInlineToolbar : undefined;\n\t}\n\tset hideInlineToolbar(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.hideInlineToolbar = value : undefined;\n\t}\n\n\t/** @description Specifies the file format for images or videos uploaded from local storage. By default, uploaded files are encoded and stored as base64 strings. This setting allows you to define or change the storage format as needed. */\n\t@Input()\n\tget imageFormat(): EditorImageFormat | string {\n\t\treturn this.nativeElement ? this.nativeElement.imageFormat : undefined;\n\t}\n\tset imageFormat(value: EditorImageFormat | string) {\n\t\tthis.nativeElement ? this.nativeElement.imageFormat = value : undefined;\n\t}\n\n\t/** @description Automatically detects and sets the appropriate width for images pasted from the clipboard, ensuring consistent image display and optimal fit within the layout. */\n\t@Input()\n\tget imagePasteWidth(): number {\n\t\treturn this.nativeElement ? this.nativeElement.imagePasteWidth : undefined;\n\t}\n\tset imagePasteWidth(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.imagePasteWidth = value : undefined;\n\t}\n\n\t/** @description Automatically detects and sets the appropriate height for an image when it is pasted from the clipboard, ensuring correct aspect ratio and consistent display within the application. */\n\t@Input()\n\tget imagePasteHeight(): number {\n\t\treturn this.nativeElement ? this.nativeElement.imagePasteHeight : undefined;\n\t}\n\tset imagePasteHeight(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.imagePasteHeight = value : undefined;\n\t}\n\n\t/** @description Sets the content of the Editor using an HTML string. This method enables you to programmatically insert both plain text and HTML elements, including tags, formatting, and embedded media, directly into the Editor. Existing content will be replaced by the provided HTML. Use this to dynamically update the Editor's contents with custom HTML markup. */\n\t@Input()\n\tget innerHTML(): string {\n\t\treturn this.nativeElement ? this.nativeElement.innerHTML : undefined;\n\t}\n\tset innerHTML(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.innerHTML = value : undefined;\n\t}\n\n\t/** @description Specifies the horizontal (x) and vertical (y) offset values used to adjust the position of the Inline Toolbar relative to its default placement on the page. This allows for precise positioning by shifting the toolbar along the x and y axes. */\n\t@Input()\n\tget inlineToolbarOffset(): number[] {\n\t\treturn this.nativeElement ? this.nativeElement.inlineToolbarOffset : undefined;\n\t}\n\tset inlineToolbarOffset(value: number[]) {\n\t\tthis.nativeElement ? this.nativeElement.inlineToolbarOffset = value : undefined;\n\t}\n\n\t/** @description Specifies the iframe configuration for the Editor. When enabled, the Editor's content is rendered within an isolated iframe, ensuring separation from the main DOM and preventing style or script conflicts. This option enhances content security and encapsulation. Additionally, it provides a mechanism to inject external resources (such as stylesheets or scripts) directly into the iframe environment if required. */\n\t@Input()\n\tget iframeSettings(): EditorIframeSettings {\n\t\treturn this.nativeElement ? this.nativeElement.iframeSettings : undefined;\n\t}\n\tset iframeSettings(value: EditorIframeSettings) {\n\t\tthis.nativeElement ? this.nativeElement.iframeSettings = value : undefined;\n\t}\n\n\t/** @description Gets or sets the unlockKey, a unique value required to activate or unlock the product’s features. Use this property to provide the unlock key when authorizing access, or retrieve the current unlock key associated with the product. */\n\t@Input()\n\tget unlockKey(): string {\n\t\treturn this.nativeElement ? this.nativeElement.unlockKey : undefined;\n\t}\n\tset unlockKey(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.unlockKey = value : undefined;\n\t}\n\n\t/** @description Specifies the current language code used for localization, such as \"en\" for English or \"fr\" for French. This property works together with the messages property to display the appropriate localized messages based on the selected language. Use it to get or set the active language for your application's interface. */\n\t@Input()\n\tget locale(): string {\n\t\treturn this.nativeElement ? this.nativeElement.locale : undefined;\n\t}\n\tset locale(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.locale = value : undefined;\n\t}\n\n\t/** @description Specifies the maximum number of characters that can be entered within the Editor. Once this limit is reached, users will be unable to input additional characters. */\n\t@Input()\n\tget maxCharCount(): number {\n\t\treturn this.nativeElement ? this.nativeElement.maxCharCount : undefined;\n\t}\n\tset maxCharCount(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.maxCharCount = value : undefined;\n\t}\n\n\t/** @description Defines or retrieves an object containing all user-visible strings (such as labels, tooltips, and messages) used by the widget for display purposes and localization. This property works together with the language setting to enable customization and translation of the widget’s interface into different languages. The object allows developers to provide localized string values, ensuring the widget content is appropriately translated for end users. */\n\t@Input()\n\tget messages(): any {\n\t\treturn this.nativeElement ? this.nativeElement.messages : undefined;\n\t}\n\tset messages(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.messages = value : undefined;\n\t}\n\n\t/** @description Assigns the specified element to the property †a†, designating it as the form control responsible for submitting the Editor's value. This allows the Editor’s content to be included in form submissions, ensuring its data is sent when the form is submitted. */\n\t@Input()\n\tget name(): string | null {\n\t\treturn this.nativeElement ? this.nativeElement.name : undefined;\n\t}\n\tset name(value: string | null) {\n\t\tthis.nativeElement ? this.nativeElement.name = value : undefined;\n\t}\n\n\t/** @description Specifies the format (such as plain text, HTML, or Markdown) in which content will be inserted into the Editor when a user pastes data, ensuring consistent formatting and correct rendering within the editing environment. */\n\t@Input()\n\tget pasteFormat(): PasteFormat | string {\n\t\treturn this.nativeElement ? this.nativeElement.pasteFormat : undefined;\n\t}\n\tset pasteFormat(value: PasteFormat | string) {\n\t\tthis.nativeElement ? this.nativeElement.pasteFormat = value : undefined;\n\t}\n\n\t/** @description Specifies the placeholder text or element displayed within the Editor when it is empty, guiding users on what to enter or indicating the expected content. */\n\t@Input()\n\tget placeholder(): string {\n\t\treturn this.nativeElement ? this.nativeElement.placeholder : undefined;\n\t}\n\tset placeholder(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.placeholder = value : undefined;\n\t}\n\n\t/** @description Specifies whether activating the clearFormat toolbar action should also remove any inline CSS styles (such as style attributes) applied to the currently selected node. When enabled, this option ensures that in addition to removing formatting tags (like &lt;b&gt;, &lt;i&gt;, etc.), all custom inline styles will be cleared from the selected content. */\n\t@Input()\n\tget removeStylesOnClearFormat(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.removeStylesOnClearFormat : undefined;\n\t}\n\tset removeStylesOnClearFormat(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.removeStylesOnClearFormat = value : undefined;\n\t}\n\n\t/** @description Specifies whether the Editor's content is required. If this option is enabled and the Editor is left empty, a notification will be displayed indicating that the content cannot be empty and must be provided before proceeding. */\n\t@Input()\n\tget required(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.required : undefined;\n\t}\n\tset required(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.required = value : undefined;\n\t}\n\n\t/** @description Sets or retrieves a value that specifies whether the element's text direction and alignment are configured for right-to-left (RTL) languages, such as Arabic or Hebrew. This property ensures that the element displays its content in a manner appropriate for RTL locale support. */\n\t@Input()\n\tget rightToLeft(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.rightToLeft : undefined;\n\t}\n\tset rightToLeft(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.rightToLeft = value : undefined;\n\t}\n\n\t/** @description Indicates whether the value is sanitized to protect against Cross-Site Scripting (XSS) attacks. When enabled, any potentially malicious scripts, inline event handlers, or other XSS vulnerabilities are automatically removed from the HTML content entered in the Editor, ensuring only safe and clean HTML is allowed. */\n\t@Input()\n\tget sanitized(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.sanitized : undefined;\n\t}\n\tset sanitized(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.sanitized = value : undefined;\n\t}\n\n\t/** @description Controls the visibility of the character counter. When enabled, the counter appears in the bottom right corner of the input field. If a maxCharCount value is set, the counter changes color to visually warn the user as they approach the character limit:- When the content length reaches 70% or more of the maximum, the counter displays a warning color.- At 90% or more of the maximum, the counter switches to a more prominent warning color, indicating that the limit is nearly reached.- Once the character count reaches the maximum limit, further text input is prevented. */\n\t@Input()\n\tget showCharCount(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.showCharCount : undefined;\n\t}\n\tset showCharCount(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.showCharCount = value : undefined;\n\t}\n\n\t/** @description Specifies if the editor enables spell checking, allowing the identification and highlighting of spelling errors within the text. If set to true, the editor will actively check and mark misspelled words as the user types. If set to false, spell checking functionality will be disabled. */\n\t@Input()\n\tget spellCheck(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.spellCheck : undefined;\n\t}\n\tset spellCheck(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.spellCheck = value : undefined;\n\t}\n\n\t/** @description Specifies the time interval, in milliseconds, at which the Source Code and Preview panels are automatically refreshed when Split Mode is active. Adjusting this value controls how frequently the panels update to reflect changes in real-time while Split Mode is enabled. */\n\t@Input()\n\tget splitModeRefreshTimeout(): number {\n\t\treturn this.nativeElement ? this.nativeElement.splitModeRefreshTimeout : undefined;\n\t}\n\tset splitModeRefreshTimeout(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.splitModeRefreshTimeout = value : undefined;\n\t}\n\n\t/** @description Defines the list of editor users for the application. Expects an array of user objects, each requiring the following properties:  - ''id'': A unique identifier for the user (string or number).  - ''name'': The display name of the user (string).  Each user object may also include the following optional properties:  - ''color'': A string specifying the user's color (e.g., HEX or CSS color value) for UI highlighting.  - ''image'': A string containing the URL of the user's avatar or profile image. */\n\t@Input()\n\tget users(): any[] {\n\t\treturn this.nativeElement ? this.nativeElement.users : undefined;\n\t}\n\tset users(value: any[]) {\n\t\tthis.nativeElement ? this.nativeElement.users = value : undefined;\n\t}\n\n\t/** @description Activates the editor pages functionality, allowing users to create, edit, and manage custom pages directly within the editor interface. */\n\t@Input()\n\tget enablePages(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.enablePages : undefined;\n\t}\n\tset enablePages(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.enablePages = value : undefined;\n\t}\n\n\t/** @description Defines the editor pages by accepting an array of objects, where each object must include a 'label' property (a string representing the title or name of the page) and an 'innerHTML' property (a string containing the HTML content to be displayed on that page). */\n\t@Input()\n\tget pages(): any[] {\n\t\treturn this.nativeElement ? this.nativeElement.pages : undefined;\n\t}\n\tset pages(value: any[]) {\n\t\tthis.nativeElement ? this.nativeElement.pages = value : undefined;\n\t}\n\n\t/** @description Specifies the URL endpoint used for file uploads. This property directly maps to the 'action' attribute of the upload form, determining where the uploaded data is sent on the server. For example, you can set the 'uploadUrl' property to the path of a server-side script such as a PHP file (e.g., \"upload.php\") that processes and handles incoming file uploads. Setting this property ensures that files selected by the user are transmitted to the specified server location when the upload form is submitted. */\n\t@Input()\n\tget uploadUrl(): string {\n\t\treturn this.nativeElement ? this.nativeElement.uploadUrl : undefined;\n\t}\n\tset uploadUrl(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.uploadUrl = value : undefined;\n\t}\n\n\t/** @description Defines or retrieves the URL used for the remove operation. This property corresponds to the form's action attribute and specifies the server endpoint that will handle item removal requests. For example, setting the removeUrl property to the path of a PHP file enables the server-side script to process and execute the removal action when triggered. */\n\t@Input()\n\tget removeUrl(): string {\n\t\treturn this.nativeElement ? this.nativeElement.removeUrl : undefined;\n\t}\n\tset removeUrl(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.removeUrl = value : undefined;\n\t}\n\n\t/** @description Specifies the theme to be applied to the element. The selected theme controls the overall visual appearance, including colors, fonts, and styles, ensuring a consistent look and feel throughout the element. */\n\t@Input()\n\tget theme(): string {\n\t\treturn this.nativeElement ? this.nativeElement.theme : undefined;\n\t}\n\tset theme(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.theme = value : undefined;\n\t}\n\n\t/** @description 'Provides the configuration for the Toolbar items in the editor.'  The value can be either an array of strings—where each string specifies the name of a default toolbar item—or an array of objects for more advanced configuration and customization.  - 'String Values:'    Each string refers to a toolbar item by its name. Names are case-insensitive.- 'Object Values:'    An object can define a custom toolbar item, or modify/add settings to an existing one.      - The object must include a 'name' property (case-insensitive) to refer to a default toolbar item’s functionality.    - If 'name' is set to \"custom\", you can define a fully custom toolbar item.    - If the 'name' attribute is missing or invalid, the entry is treated as a separator rather than a toolbar item.'Supported Default Toolbar Items'  Below is a list of default toolbar items supported by the editor, along with their descriptions and types:  - 'SourceCode': Toggles between the HTML source/preview panel and the input panel. *Type: Toggle button*- 'SplitMode': Splits the editor view to show both input and preview panels. *Type: Toggle button*- 'FullScreen': Expands the editor to fill the viewport, overlaying the page content. *Type: Toggle button*- 'Alignment': Controls the alignment (left, center, right, justify) of the selected content. *Type: Dropdown*- 'FontName': Sets the font family of the selected content. *Type: Dropdown*- 'FontSize': Sets the font size of the selected content. *Type: Dropdown*- 'Formats': Changes the format/style of the current selection (e.g., paragraph, heading). *Type: Dropdown*- 'TableRows': Insert or remove table rows in the selected table. *Type: Dropdown*- 'TableColumns': Insert or remove table columns in the selected table. *Type: Dropdown*- 'TableVAlign': Sets vertical alignment of a selected table cell. *Type: Dropdown*- 'TableStyle': Applies additional styling to the selected table. *Type: Dropdown*- 'BackgroundColor': Changes the background color of the current selection. *Type: Color input*- 'FontColor': Changes the font color of the current selection. *Type: Color input*- 'Bold': Toggles bold for the selected text. *Type: Button*- 'Italic': Toggles italic for the selected text. *Type: Button*- 'Underline': Toggles underline for the selected text. *Type: Button*- 'Strikethrough': Toggles strikethrough for the selected text. *Type: Button*- 'Delete': Deletes the current selection. *Type: Button*- 'Undo': Reverts the last operation. *Type: Button*- 'Redo': Redoes the previously undone operation. *Type: Button*- 'Indent': Increases the indentation of the current selection. *Type: Button*- 'Outdent': Decreases the indentation of the current selection. *Type: Button*- 'OpenLink': Opens the hyperlink of the current selection. *Type: Button*- 'EditLink', 'CreateLink', 'Hyperlink': Creates, edits, or triggers a dialog for hyperlink management. *Type: Button*- 'RemoveLink': Removes a hyperlink from the selected text. *Type: Button*- 'Cut': Cuts the selected content. *Type: Button*- 'Copy': Copies the selected content. *Type: Button*- 'Paste': Pastes from the clipboard.      - *Type: Button*      - *Type: Dropdown* (when the \"advanced\" property is set to true)- 'Image': Opens a dialog to insert or edit an image. *Type: Button*- 'Video': Opens a dialog to insert or edit a video. *Type: Button*- 'LowerCase': Converts current selection to lowercase letters. *Type: Button*- 'UpperCase': Converts current selection to uppercase letters. *Type: Button*- 'Print': Opens the browser's print preview window. *Type: Button*- 'Caption': Inserts or removes a caption in the selected table. *Type: Button*- 'ClearFormat': Removes all formatting from the current selection. *Type: Button*- 'Table': Opens a dialog to insert a new table. *Type: Button*- 'TableHeader': Adds or removes a header row in the selected table. *Type: Button*- 'OrderedList': Inserts or removes an ordered (numbered) list. *Type: Button*- 'UnorderedList': Inserts or removes a bulleted list. *Type: Button*- 'Subscript': Formats the selected text as subscript. *Type: Button*- 'Superscript': Formats the selected text as superscript. *Type: Button*- 'FindAndReplace': Opens a dialog to find and replace text in the editor. *Type: Button*'Note:' Separators between toolbar items can be added by using an object without a valid 'name' property.---'inlineToolbarItems'  - This property is applicable only for the following toolbar items: 'table', 'image', and 'hyperlink'.- Accepts the same value types and structure as 'toolbarItems'.- The specified items will be displayed in an inline floating toolbar when any of these elements is selected in the editor.---'Summary of Usage Examples:''''json[  \"Bold\",  \"Italic\",  { \"name\": \"FontSize\", \"options\": [\"Small\", \"Medium\", \"Large\"] },  {},  { \"name\": \"custom\", \"label\": \"Custom Action\", \"icon\": \"...\" }]'''- The above would provide bold and italic buttons, a dropdown with custom font size options, a separator, and a custom toolbar item.---This configuration enables full customization of the editor’s toolbar to suit different user requirements, offering both default and extendable options. */\n\t@Input()\n\tget toolbarItems(): ToolbarItem[] {\n\t\treturn this.nativeElement ? this.nativeElement.toolbarItems : undefined;\n\t}\n\tset toolbarItems(value: ToolbarItem[]) {\n\t\tthis.nativeElement ? this.nativeElement.toolbarItems = value : undefined;\n\t}\n\n\t/** @description Specifies the display style of the Editor’s main toolbar. You can choose between \"Ribbon\" mode, which presents the toolbar as a horizontal panel with grouped command icons similar to modern office applications, or \"Menu\" mode, which organizes commands in drop-down menus for a more compact, traditional interface. This setting controls how users interact with the Editor’s primary tools and functions. */\n\t@Input()\n\tget toolbarMode(): ToolbarMode | string {\n\t\treturn this.nativeElement ? this.nativeElement.toolbarMode : undefined;\n\t}\n\tset toolbarMode(value: ToolbarMode | string) {\n\t\tthis.nativeElement ? this.nativeElement.toolbarMode = value : undefined;\n\t}\n\n\t/** @description Enables customization of the SingleLineRibbon's appearance by allowing you to modify the arrangement and selection of group items, as well as reorder the groups themselves. This provides flexibility in tailoring the ribbon layout to better suit your application's specific needs. */\n\t@Input()\n\tget toolbarRibbonConfig(): { name: string, groups: { name: string, items: string[] }[] }[] {\n\t\treturn this.nativeElement ? this.nativeElement.toolbarRibbonConfig : undefined;\n\t}\n\tset toolbarRibbonConfig(value: { name: string, groups: { name: string, items: string[] }[] }[]) {\n\t\tthis.nativeElement ? this.nativeElement.toolbarRibbonConfig = value : undefined;\n\t}\n\n\t/** @description Specifies the format (such as plain text, HTML, or Markdown) that will be applied to content when it is pasted into the Editor. This setting controls how the pasted data is interpreted and ensures that it is correctly displayed within the Editor environment. */\n\t@Input()\n\tget toolbarViewMode(): ToolbarViewMode | string {\n\t\treturn this.nativeElement ? this.nativeElement.toolbarViewMode : undefined;\n\t}\n\tset toolbarViewMode(value: ToolbarViewMode | string) {\n\t\tthis.nativeElement ? this.nativeElement.toolbarViewMode = value : undefined;\n\t}\n\n\t/** @description Fixes the Toolbar to the top of the browser window, ensuring it remains visible at all times, even as the user scrolls through the page content. */\n\t@Input()\n\tget toolbarSticky(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.toolbarSticky : undefined;\n\t}\n\tset toolbarSticky(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.toolbarSticky = value : undefined;\n\t}\n\n\t/** @description If set to true, this property prevents the element from receiving keyboard or programmatic focus, making it impossible for users to interact with it using the keyboard or assistive technologies. */\n\t@Input()\n\tget unfocusable(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.unfocusable : undefined;\n\t}\n\tset unfocusable(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.unfocusable = value : undefined;\n\t}\n\n\t/** @description Provides methods to retrieve or update the current content within the Editor. Use this property to access the existing value or assign a new value to the Editor programmatically. */\n\t@Input()\n\tget value(): string {\n\t\treturn this.nativeElement ? this.nativeElement.value : undefined;\n\t}\n\tset value(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.value = value : undefined;\n\t}\n\n\t/** @description A customizable function that allows you to fully modify the appearance and behavior of the Editor dialog used for inserting or editing tables, images, videos, and hyperlinks. The function receives two arguments:- 'target': The dialog element instance that is about to be displayed, representing the specific editor dialog (e.g., Table, Image, Video, or Hyperlink dialog) being opened.- 'item': The toolbar item object that triggered the opening of the dialog, allowing you to access information about the source of the dialog request or customize its settings based on the initiating toolbar action.Use this function to tailor the dialog's UI elements, default values, event handlers, or any other properties, providing a flexible way to match the dialog experience to your application's needs. */\n\t@Input()\n\tget windowCustomizationFunction(): any {\n\t\treturn this.nativeElement ? this.nativeElement.windowCustomizationFunction : undefined;\n\t}\n\tset windowCustomizationFunction(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.windowCustomizationFunction = value : undefined;\n\t}\n\n\t/** @description This event is triggered when an element loses focus (blur event) and its content has been modified since it last received focus.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\toldValue, \tvalue)\n\t*   oldValue - The old value before the change.\n\t*   value - The new value after the change.\n\t*/\n\t@Output() onChange: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered immediately after the user modifies the content through direct input, such as typing, pasting, or deleting text. It serves as a notification that the content has changed specifically due to user interaction, allowing you to respond to updates made by the user in real time.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\toldValue, \tvalue)\n\t*   oldValue - The old value before the input change.\n\t*   value - The new value after the input change.\n\t*/\n\t@Output() onChanging: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is fired immediately before a Toolbar action begins execution, allowing developers to intervene or modify behavior as needed. By invoking event.preventDefault() within the event handler, you can cancel the pending Toolbar action, preventing it from proceeding. This provides an opportunity to implement custom validation, confirmation prompts, or other pre-action logic before the Toolbar action is carried out.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tname)\n\t*   name - The name of the action.\n\t*/\n\t@Output() onActionStart: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered after a Toolbar action has been completed. It signifies that all processes related to the action, such as updating the UI or executing related logic, have finished. Use this event to perform any follow-up tasks when a Toolbar action concludes.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tname)\n\t*   name - The name of the action.\n\t*/\n\t@Output() onActionEnd: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when a user selects and clicks on an item within the context menu. It allows you to execute custom logic in response to specific context menu actions, providing access to details about which menu item was clicked and the relevant context of the interaction.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\toriginalEvent, \tvalue)\n\t*   originalEvent - The original click event.\n\t*   value - The value of the item.\n\t*/\n\t@Output() onContextMenuItemClick: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever the user opens the context menu, typically by right-clicking or using a designated keyboard shortcut on an element. It allows developers to execute custom logic or modify the context menu's content before it is displayed to the user.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget, \towner)\n\t*   target - The toolbar that is the target of the operation.\n\t*   owner - The tooltip target (the owner of the tooltip).\n\t*/\n\t@Output() onContextMenuOpen: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered immediately before the context menu appears, typically as a result of a user right-clicking or performing a similar gesture. At this point, you have the opportunity to customize or modify the context menu, or to prevent the menu from opening entirely by calling event.preventDefault() within the event handler.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget)\n\t*   target - The toolbar that is the target of the operation.\n\t*/\n\t@Output() onContextMenuOpening: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever the Context Menu is closed, either by user action (such as clicking outside the menu, selecting a menu item, or pressing the Escape key) or programmatically through the relevant API. Handlers for this event can be used to perform clean-up tasks or update the user interface in response to the Context Menu being dismissed.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget, \towner)\n\t*   target - The toolbar that is the target of the operation.\n\t*   owner - The tooltip target (the owner of the tooltip).\n\t*/\n\t@Output() onContextMenuClose: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is fired just before the Context Menu begins to close. By calling event.preventDefault() within the event handler, you can cancel the closing action, allowing you to override or delay the default behavior based on custom logic.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget)\n\t*   target - The toolbar that is the target of the operation.\n\t*/\n\t@Output() onContextMenuClosing: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when a user initiates the resizing of an image, table, or video element. It indicates that the resizing operation has begun, allowing you to implement custom behaviors or UI updates in response to the start of a resize action.\n\t*  @param event. The custom event. \t*/\n\t@Output() onResizeStart: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when the user has completed resizing an image, table, or video element. It fires after the resizing action ends, allowing you to perform actions such as saving the new dimensions or updating the layout in response to the change.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget)\n\t*   target - The element that is resized (image/table or video).\n\t*/\n\t@Output() onResizeEnd: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever the inline Toolbar becomes visible to the user, such as when a user selects text or performs an action that causes the Toolbar to appear within the interface. Use this event to run custom logic or adjust UI elements in response to the Toolbar opening.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget, \towner)\n\t*   target - The toolbar that is the target of the operation.\n\t*   owner - The tooltip target (the owner of the tooltip).\n\t*/\n\t@Output() onInlineToolbarOpen: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is fired just before the inline Toolbar begins to open. Developers can intercept this event and prevent the Toolbar from opening by invoking event.preventDefault() within the event handler. This allows for conditional control over the Toolbar's visibility based on custom application logic.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget)\n\t*   target - The toolbar that is the target of the operation.\n\t*/\n\t@Output() onInlineToolbarOpening: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever the inline toolbar is closed, either by user interaction (such as clicking outside the toolbar, pressing Esc, or selecting a toolbar option) or programmatically via code. It provides an opportunity to perform cleanup, update UI elements, or execute additional logic in response to the toolbar being dismissed.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget, \towner)\n\t*   target - The toolbar that is the target of the operation.\n\t*   owner - The tooltip target (the owner of the tooltip).\n\t*/\n\t@Output() onInlineToolbarClose: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered immediately before the inline toolbar begins to close, allowing you to perform actions or cleanup tasks in response to the toolbar's closure.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget)\n\t*   target - The toolbar that is the target of the operation. The closing operation can be canceled by calling event.preventDefault() in the event handler function.\n\t*/\n\t@Output() onInlineToolbarClosing: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered each time the Drop Down Toolbar becomes visible to the user, such as when it is expanded or opened. You can use this event to execute custom logic whenever the toolbar is displayed, for example, to load dynamic content or adjust UI elements within the toolbar.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget, \towner)\n\t*   target - The toolbar that is the target of the operation.\n\t*   owner - The tooltip target (the owner of the tooltip).\n\t*/\n\t@Output() onDropDownToolbarOpen: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered just before the Drop Down Toolbar begins to open. Within the event handler, you can call event.preventDefault() to cancel the opening operation, allowing you to customize or prevent the display of the toolbar based on specific conditions. This provides an opportunity to implement custom logic before the toolbar becomes visible to the user.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget)\n\t*   target - The toolbar that is the target of the operation.\n\t*/\n\t@Output() onDropDownToolbarOpening: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever the Drop Down Toolbar is closed, either by user interaction (such as clicking outside the toolbar or selecting an option) or programmatically via the application's code. Use this event to perform actions or update the user interface in response to the toolbar being dismissed.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget, \towner)\n\t*   target - The toolbar that is the target of the operation.\n\t*   owner - The tooltip target (the owner of the tooltip).\n\t*/\n\t@Output() onDropDownToolbarClose: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is fired when the Drop Down Toolbar begins its closing process. Within the event handler, you can prevent the toolbar from closing by invoking event.preventDefault(). This provides an opportunity to execute custom logic, such as confirming the action with the user or validating conditions before allowing the toolbar to close.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget)\n\t*   target - The toolbar that is the target of the operation.\n\t*/\n\t@Output() onDropDownToolbarClosing: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when the Dialog Window is successfully opened and becomes visible to the user.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget, \titem)\n\t*   target - The window that is the target of the operation.\n\t*   item - The toolbar item is the target of the operation.\n\t*/\n\t@Output() onDialogOpen: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is fired immediately before the Dialog Window begins to open, giving developers an opportunity to perform actions or modify options prior to rendering. You can cancel the default behavior and prevent the Dialog Window from opening by calling event.preventDefault() within the event handler.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget, \titem)\n\t*   target - The window that is the target of the operation.\n\t*   item - The toolbar item that is the target of the operation.\n\t*/\n\t@Output() onDialogOpening: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever the Dialog Window is closed by the user, either through clicking the close button, pressing the escape key, or programmatically via code. It allows developers to execute custom actions or clean up resources after the dialog has been dismissed.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget, \titem)\n\t*   target - The window that is the target of the operation.\n\t*   item - The toolbar item that is the target of the operation.\n\t*/\n\t@Output() onDialogClose: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is fired immediately before the Dialog Window begins to close. It provides an opportunity to execute custom logic or perform validation before the dialog is dismissed. The closure of the dialog can be canceled by calling event.preventDefault() within the event handler.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget, \titem)\n\t*   target - The window that is the target of the operation.\n\t*   item - The toolbar item that is the target of the operation.\n\t*/\n\t@Output() onDialogClosing: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when an image or video file has been uploaded successfully to the server. It indicates the completion of the upload process without errors, allowing you to perform additional actions such as displaying a success message or updating the user interface.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget, \titem, \tfilename, \ttype, \tsize, \tindex, \tstatus, \tserverResponse)\n\t*   target - The file upload element that is the target of the operation.\n\t*   item - The toolbar item that is the target of the operation.\n\t*   filename - The name of the uploaded file.\n\t*   type - The type of the uploaded file.\n\t*   size - The size of the uploaded file.\n\t*   index - The index of the uploaded file.\n\t*   status - The status of the uploaded file. Whether there was an error or success.\n\t*   serverResponse - The response of the remote server.\n\t*/\n\t@Output() onImageUploadSuccess: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when an attempt to upload an image or video fails, indicating that the file was not successfully transferred to the server due to an error or interruption during the upload process.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttarget, \titem, \tfilename, \ttype, \tsize, \tindex, \tstatus, \tserverResponse)\n\t*   target - The file upload element that is the target of the operation.\n\t*   item - The toolbar item that is the target of the operation.\n\t*   filename - The name of the canceled file.\n\t*   type - The type of the canceled file.\n\t*   size - The size of the canceled file.\n\t*   index - The index of the canceled file.\n\t*   status - The status of the uploaded file. Whether there was an error or success.\n\t*   serverResponse - The response of the remote server.\n\t*/\n\t@Output() onImageUploadFailed: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever a user clicks on an item within the Toolbar. It provides relevant information about the clicked item, allowing you to execute custom logic or actions in response to the user's interaction with the Toolbar.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\toriginalEvent, \tvalue)\n\t*   originalEvent - The original click event.\n\t*   value - The name of the toolbar item that was clicked.\n\t*/\n\t@Output() onToobarItemClick: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever a user closes a message, such as dismissing a notification or alert. It allows you to execute custom logic in response to the message being removed from the user interface.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tinstance)\n\t*   instance - The toast item that is the target of the operation.\n\t*/\n\t@Output() onMessageClose: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever a user opens or views a message, indicating that the message content has become visible or active in the user interface. It can be used to track message engagement, update message status, or initiate follow-up actions when a message is accessed.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tinstance)\n\t*   instance - The toast item that is the target of the operation.\n\t*/\n\t@Output() onMessageOpen: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description Integrates a custom item into the editor’s toolbar. **Example Usage:**```jseditor.addToolbarItem({    name: 'customButton2',         // Unique identifier for the toolbar item    width: 100,                    // Width of the toolbar item in pixels    template: 'Button2' // Custom HTML template defining the toolbar item's appearance and content});```**Description:**  This method allows you to add a new, customizable button or element to the editor’s toolbar. You specify a unique name, the width, and provide an HTML template for the item’s content. This enables the creation of tailored toolbar controls to enhance your editor’s functionality according to your application’s needs. \n\t* @param {any} itemName. The toolbar item to be added\n\t*/\n    public addToolbarItem(itemName: any): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.addToolbarItem(itemName);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.addToolbarItem(itemName);\n            });\n        }\n    }\n\n\t/** @description Applies a blur effect to the content area of the Editor, visually obscuring text and elements to reduce readability while maintaining overall layout and structure. This feature is useful for masking sensitive information or creating a focus effect within the Editor interface. \n\t*/\n    public blur(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.blur();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.blur();\n            });\n        }\n    }\n\n\t/** @description Removes all text and formatting from the Editor, resetting its content to an empty state. \n\t*/\n    public clearContent(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.clearContent();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.clearContent();\n            });\n        }\n    }\n\n\t/** @description Collapse the toolbar when the toolbarViewMode property is set to 'toggle'. This ensures that the toolbar is hidden or shown based on the toggle state, allowing for a dynamic and responsive user interface. \n\t*/\n    public collapseToolbar(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.collapseToolbar();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.collapseToolbar();\n            });\n        }\n    }\n\n\t/** @description Prevents user interaction with the specified Toolbar item, making it inactive and visually indicating that it is disabled. The item remains visible but cannot be clicked or selected until re-enabled. \n\t* @param {string} itemName. The name of the toolbar item to disable.\n\t*/\n    public disableToolbarItem(itemName: string): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.disableToolbarItem(itemName);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.disableToolbarItem(itemName);\n            });\n        }\n    }\n\n\t/** @description Expands the Toolbar only when the toolbarViewMode property is set to 'toggle'. When this mode is active, the Toolbar will automatically display its full set of options and controls as specified. If toolbarViewMode is set to another value, this expansion behavior will not occur. \n\t*/\n    public expandToolbar(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.expandToolbar();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.expandToolbar();\n            });\n        }\n    }\n\n\t/** @description Restores the functionality of a Toolbar item that was previously disabled, allowing users to click or interact with it again. This action visually updates the item to indicate it is active and accessible within the Toolbar interface. \n\t* @param {string} itemName. The name of the toolbar item to enable.\n\t*/\n    public enableToolbarItem(itemName: string): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.enableToolbarItem(itemName);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.enableToolbarItem(itemName);\n            });\n        }\n    }\n\n\t/** @description Enhances the clarity, consistency, and completeness of the description:---Executes a command using the native execCommand method to modify the contents or formatting of the editor. This method returns true if the command executes successfully or false otherwise. You can use this function to apply a wide range of editing and formatting commands to the currently selected content, or at the current cursor position.Supported commands include:      bold: Toggles bold formatting on the selected text.    Example: editor.executeCommand('bold');        italic: Toggles italic formatting on the selected text.    Example: editor.executeCommand('italic');        underline: Toggles underline formatting on the selected text.    Example: editor.executeCommand('underline');        strikeThrough: Toggles strikethrough formatting on the selected text.    Example: editor.executeCommand('strikeThrough');        superscript: Sets the selected text as superscript.    Example: editor.executeCommand('superscript');        subscript: Sets the selected text as subscript.    Example: editor.executeCommand('subscript');        uppercase: Converts the selected text to uppercase.    Example: editor.executeCommand('uppercase');        lowercase: Converts the selected text to lowercase.    Example: editor.executeCommand('lowercase');        foreColor: Changes the font color of the selected text.    Example: editor.executeCommand('foreColor', '#000000');        fontName: Changes the font family of the selected text.    Example: editor.executeCommand('fontName', 'Arial');        fontSize: Changes the font size of the selected text.    Example: editor.executeCommand('fontSize', '15px');        hiliteColor: Changes the background color (highlight) of the selected text.    Example: editor.executeCommand('hiliteColor', '#FFFF00');        justifyCenter: Aligns the selected content to the center.    Example: editor.executeCommand('justifyCenter');        justifyFull: Justifies the selected content.    Example: editor.executeCommand('justifyFull');        justifyLeft: Aligns the selected content to the left.    Example: editor.executeCommand('justifyLeft');        justifyRight: Aligns the selected content to the right.    Example: editor.executeCommand('justifyRight');        undo: Undoes the last editing operation.    Example: editor.executeCommand('undo');        redo: Redoes the previously undone operation.    Example: editor.executeCommand('redo');        createLink: Inserts a hyperlink at the current selection. Accepts an object with text, url, and title properties.    Example: editor.executeCommand('createLink', { text: 'Link', url: 'https://example.com', title: 'Example Link' });        indent: Increases the indent level of the selected content.    Example: editor.executeCommand('indent');        outdent: Decreases the indent level of the selected content.    Example: editor.executeCommand('outdent');        insertHTML: Inserts an HTML string at the current cursor position.    Example: editor.executeCommand('insertHTML', '&lt;p&gt;Text&lt;/p&gt;');        insertOrderedList: Inserts an ordered (numbered) list.    Example: editor.executeCommand('insertOrderedList');        insertUnorderedList: Inserts an unordered (bulleted) list.    Example: editor.executeCommand('insertUnorderedList');        removeFormat: Removes all formatting from the selected text.    Example: editor.executeCommand('removeFormat');        insertText: Inserts plain text at the current cursor position.    Example: editor.executeCommand('insertText', 'Some text to insert');        insertImage: Inserts an image at the current cursor position. Accepts an object with a url property.    Example: editor.executeCommand('insertImage', { url: 'https://www.example.com/image.jpg' });  Note: Some commands may not be fully supported in all browsers due to the deprecated status of execCommand. Always test your implementation for compatibility with your target browsers. \n\t* @param {string} commandName. The name of the command to execute.\n\t* @param {string | number} value?. The value for the command. Some commands require a value to be passed, others do not.\n\t* @returns {boolean}\n  */\n\tpublic async executeCommand(commandName, value?): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.executeCommand(commandName, value);\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic executeCommandSync(commandName, value?): boolean {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.executeCommand(commandName, value);\n        }\n        return null;\n    }\n\n\t/** @description Sets the input focus to the Editor component, enabling users to interact with and edit its content directly (e.g., by typing or using keyboard shortcuts). This action ensures that keyboard events and commands are directed to the Editor. \n\t*/\n    public focus(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.focus();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.focus();\n            });\n        }\n    }\n\n\t/** @description Returns the total number of characters currently present within the Editor's content, including spaces and special characters. \n\t* @returns {number}\n  */\n\tpublic async getCharCount(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getCharCount();\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getCharCountSync(): number {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getCharCount();\n        }\n        return null;\n    }\n\n\t/** @description Returns the current selection range within the editor. By default, this method returns an object of type Range, which represents the start and end positions of the selection as DOM nodes and offsets. However, if the editMode property is set to 'markdown', the method instead returns a plain object containing the numerical start and end indexes of the selection within the raw text content. This allows for consistent selection handling in both WYSIWYG and markdown editing modes. \n\t* @returns {any}\n  */\n\tpublic async getSelectionRange(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getSelectionRange();\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getSelectionRangeSync(): any {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getSelectionRange();\n        }\n        return null;\n    }\n\n\t/** @description Returns the current content of the Editor as an HTML string. If editMode is set to 'markdown', the raw Markdown input is automatically parsed and converted to HTML before being returned. In all modes, the result is a well-formed HTML representation of the Editor's content, suitable for rendering in web pages or for further processing. \n\t* @returns {string}\n  */\n\tpublic async getHTML(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getHTML();\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getHTMLSync(): string {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getHTML();\n        }\n        return null;\n    }\n\n\t/** @description Returns the current contents of the Editor component as a plain text string, excluding any formatting or markup. This allows you to retrieve only the raw textual data entered by the user. \n\t* @returns {string}\n  */\n\tpublic async getText(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getText();\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getTextSync(): string {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getText();\n        }\n        return null;\n    }\n\n\t/** @description Conceals a specified message when an identifier is provided; if no identifier is given, all messages will be hidden. \n\t* @param {HTMLElement | string | number} item?. Hides a specific message. The argument can be a DOM reference to a specific item, it's index or it's id. If the argument is not provided then all messages will be closed.\n\t*/\n    public hideMessage(item?: HTMLElement | string | number): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.hideMessage(item);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.hideMessage(item);\n            });\n        }\n    }\n\n\t/** @description Conceals or removes the most recently displayed message from view on the user interface, ensuring it is no longer visible to the user. \n\t*/\n    public hideLastMessage(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.hideLastMessage();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.hideLastMessage();\n            });\n        }\n    }\n\n\t/** @description Inserts a new custom Toolbar item into the editor.  For example, you can add a button with the following code:```javascripteditor.insertToolbarItem({  name: 'customButton2',                    // Unique identifier for the toolbar item  width: 100,                               // Specifies the width of the toolbar item in pixels  template: 'Button2' // The HTML template that defines the toolbar item's appearance and functionality});```This method allows you to extend the editor’s toolbar by specifying a unique name for the item, its display width, and a custom HTML template, such as a button or other UI component. This makes it easy to add interactive or specialized controls directly to your editor's toolbar. \n\t* @param {any} itemName. The toolbar item to be added\n\t* @param {number} index. The toolbar item's index\n\t*/\n    public insertToolbarItem(itemName: any, index: number): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.insertToolbarItem(itemName, index);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.insertToolbarItem(itemName, index);\n            });\n        }\n    }\n\n\t/** @description Displays a customizable message within the Editor interface, allowing users to present important information, instructions, or notifications directly inside the editing environment. \n\t* @param {string} message. The text message to be displayed.\n\t* @param {any} settings?. Additional settings that can be applied to the Toast element that handles the messages. This parameter should contain only valid Toast properties and values.\n\t* @returns {HTMLElement | undefined}\n  */\n\tpublic async showMessage(message, settings?): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.showMessage(message, settings);\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic showMessageSync(message, settings?): HTMLElement | undefined {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.showMessage(message, settings);\n        }\n        return null;\n    }\n\n\t/** @description Highlights and selects all text currently displayed within the Editor's content area, allowing users to easily copy, cut, or replace the selected text. \n\t*/\n    public selectAll(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.selectAll();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.selectAll();\n            });\n        }\n    }\n\n\t/** @description Enhancement:\"Selects a specified range of text within the Editor based on provided start and end indexes. This method locates the DOM nodes containing the targeted text and creates selection ranges accordingly. Note that only Firefox currently supports selecting multiple, non-contiguous ranges; in other browsers, only the first corresponding node or range will be selected. If the editor is operating in 'html' editMode, the entire content is treated as a single node. As a result, the desired text range will be reliably selected across all browsers in this mode.\" \n\t* @param {number} startIndex. The start index to select from.\n\t* @param {number} endIndex. The end index to select to.\n\t*/\n    public selectRange(startIndex: number, endIndex: number): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.selectRange(startIndex, endIndex);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.selectRange(startIndex, endIndex);\n            });\n        }\n    }\n\n\t/** @description Removes all previously saved states associated with the current Editor's ID from the local storage. This ensures that any stored data related to this specific Editor instance is deleted, allowing for a fresh start or preventing data conflicts. \n\t*/\n    public clearState(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.clearState();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.clearState();\n            });\n        }\n    }\n\n\t/** @description Persists the Editor’s current state to the browser’s local storage, allowing users to restore their work in future sessions. Note: An id property must be assigned to the Editor instance to uniquely identify and manage its saved data. \n\t*/\n    public saveState(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.saveState();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.saveState();\n            });\n        }\n    }\n\n\t/** @description Restores the most recently saved state of the Editor from the browser’s local storage. To identify and retrieve the correct data, an id property must be assigned to the Editor instance. If no saved state exists for the specified id, the Editor will load with its default settings. \n\t*/\n    public loadState(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.loadState();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.loadState();\n            });\n        }\n    }\n\n\t/** @description Enables Split Mode in the Editor. When Split Mode is active, both the HTML/Markdown editing panel and the Source Code/Preview panel are displayed side by side, allowing users to simultaneously view and edit the content along with its rendered output or source code. This mode enhances workflow by providing real-time feedback and easier navigation between editing and previewing. \n\t* @param {boolean} value?. Determines whether to enter or leave split mode. By default the argument is not passed and the mode is toggled.\n\t*/\n    public splitMode(value?: boolean): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.splitMode(value);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.splitMode(value);\n            });\n        }\n    }\n\n\t/** @description Switches the Editor between Source Code and Preview modes. When activated, this mode displays the HTML view panel, allowing users to directly edit or review the underlying HTML code. \n\t* @param {boolean} value?. Determines whether to enter or leave split mode. By default the argument is not passed and the mode is toggled.\n\t*/\n    public previewMode(value?: boolean): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.previewMode(value);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.previewMode(value);\n            });\n        }\n    }\n\n\t/** @description Removes a specified item from the Toolbar by its index.  For example, editor.removeToolbarItem(0) will remove the first item in the Toolbar.  Use this method to dynamically update the Toolbar based on user interaction or application state. \n\t* @param {number} index. The toolbar item's index\n\t*/\n    public removeToolbarItem(index: number): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.removeToolbarItem(index);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.removeToolbarItem(index);\n            });\n        }\n    }\n\n\t/** @description Enables Full Screen Mode for the Editor. When activated, the Editor expands to cover the entire viewport, overlaying all other page content and providing a distraction-free editing environment. \n\t* @param {boolean} value?. Determines whether to enter or leave split mode. By default the argument is not passed and the mode is toggled.\n\t*/\n    public fullScreenMode(value?: boolean): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.fullScreenMode(value);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.fullScreenMode(value);\n            });\n        }\n    }\n\n\t/** @description Exports the content of the Editor in your chosen format. Currently supported export formats include HTML, Markdown, and PDF. This allows you to save or share your work in the format that best suits your needs. \n\t* @param {string} dataFormat. The expected file format.\n\t* @param {any} callback?. A callback that is executed before the data is exported. Allows to modify the output.\n\t*/\n    public exportData(dataFormat: string, callback?: any): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.exportData(dataFormat, callback);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.exportData(dataFormat, callback);\n            });\n        }\n    }\n\n\t/** @description Allows users to import the contents of a file directly into the Editor. Currently, only plain text (.txt) and HTML (.html) file formats are supported. Upon import, the file’s contents will be automatically loaded and displayed within the Editor for further editing or review. \n\t* @param {any} source. The url to the file or an object that defines settings for the Ajax request like url, timeput, etc. Object format: { url: string, type: string, data: object, timeout: number }\n\t* @param {any} settings?. Additional settings for the ajax request. Such as loadError function, contentType, etc. Format: { contentType: string, beforeSend: Function, loadError: Function, beforeLoadComplete: Function  }\n\t*/\n    public importData(source: any, settings?: any): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.importData(source, settings);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.importData(source, settings);\n            });\n        }\n    }\n\n\t/** @description Opens the browser’s Print Preview dialog, allowing users to view and print the current content displayed within the Editor. This feature provides a formatted preview of the Editor's contents as they will appear on the printed page before finalizing the print command. \n\t*/\n    public print(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.print();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.print();\n            });\n        }\n    }\n\n\t/** @description Enables the modification of settings for a specified toolbar item. This method returns true if the update is applied successfully, indicating the toolbar item's settings were changed as requested. If the update fails, the method returns false. \n\t* @param {string | number} name. The name of the toolbar item or it's index inside the <b>toolbarItems</b> array.\n\t* @param {any} settings. A settings object for the toolbar item. It should have the same definition as when defining a custom toolbar item. You can read more about it in the dedicated topic for the Editor Toolbar on the website.\n\t* @returns {boolean | undefined}\n  */\n\tpublic async updateToolbarItem(name, settings): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.updateToolbarItem(name, settings);\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic updateToolbarItemSync(name, settings): boolean | undefined {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.updateToolbarItem(name, settings);\n        }\n        return null;\n    }\n\n\t/** @description Sets the locale of a component. \n\t* @param {string} locale. The locale abbreviation. For example: 'de'.\n\t* @param {any} messages?. Object containing the locale messages.\n\t*/\n    public setLocale(locale: string, messages?: any): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.setLocale(locale, messages);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.setLocale(locale, messages);\n            });\n        }\n    }\n\n\n\tget isRendered(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.isRendered : false;\n\t}\n\n\tngOnInit() {\n\t}\n\n    ngAfterViewInit() {\n      const that = this;\n\n      that.onCreate.emit(that.nativeElement);\n\n\t\tif (Smart) Smart.Render();\n\n\t\tthis.nativeElement.classList.add('smart-angular');\n\n\t\tif (this.nativeElement.whenRendered) this.nativeElement.whenRendered(() => { that.onReady.emit(that.nativeElement); });\n\t\tthis.listen();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.unlisten();\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (this.nativeElement && this.nativeElement.isRendered) {\n\t\t\tfor (const propName in changes) {\n\t\t\t\tif (changes.hasOwnProperty(propName)) {\n\t\t\t\t\tthis.nativeElement[propName] = changes[propName].currentValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @description Add event listeners. */\n\tprivate listen(): void {\n        const that = this;\n\t\tthat.eventHandlers['changeHandler'] = (event: CustomEvent) => { that.onChange.emit(event); }\n\t\tthat.nativeElement.addEventListener('change', that.eventHandlers['changeHandler']);\n\n\t\tthat.eventHandlers['changingHandler'] = (event: CustomEvent) => { that.onChanging.emit(event); }\n\t\tthat.nativeElement.addEventListener('changing', that.eventHandlers['changingHandler']);\n\n\t\tthat.eventHandlers['actionStartHandler'] = (event: CustomEvent) => { that.onActionStart.emit(event); }\n\t\tthat.nativeElement.addEventListener('actionStart', that.eventHandlers['actionStartHandler']);\n\n\t\tthat.eventHandlers['actionEndHandler'] = (event: CustomEvent) => { that.onActionEnd.emit(event); }\n\t\tthat.nativeElement.addEventListener('actionEnd', that.eventHandlers['actionEndHandler']);\n\n\t\tthat.eventHandlers['contextMenuItemClickHandler'] = (event: CustomEvent) => { that.onContextMenuItemClick.emit(event); }\n\t\tthat.nativeElement.addEventListener('contextMenuItemClick', that.eventHandlers['contextMenuItemClickHandler']);\n\n\t\tthat.eventHandlers['contextMenuOpenHandler'] = (event: CustomEvent) => { that.onContextMenuOpen.emit(event); }\n\t\tthat.nativeElement.addEventListener('contextMenuOpen', that.eventHandlers['contextMenuOpenHandler']);\n\n\t\tthat.eventHandlers['contextMenuOpeningHandler'] = (event: CustomEvent) => { that.onContextMenuOpening.emit(event); }\n\t\tthat.nativeElement.addEventListener('contextMenuOpening', that.eventHandlers['contextMenuOpeningHandler']);\n\n\t\tthat.eventHandlers['contextMenuCloseHandler'] = (event: CustomEvent) => { that.onContextMenuClose.emit(event); }\n\t\tthat.nativeElement.addEventListener('contextMenuClose', that.eventHandlers['contextMenuCloseHandler']);\n\n\t\tthat.eventHandlers['contextMenuClosingHandler'] = (event: CustomEvent) => { that.onContextMenuClosing.emit(event); }\n\t\tthat.nativeElement.addEventListener('contextMenuClosing', that.eventHandlers['contextMenuClosingHandler']);\n\n\t\tthat.eventHandlers['resizeStartHandler'] = (event: CustomEvent) => { that.onResizeStart.emit(event); }\n\t\tthat.nativeElement.addEventListener('resizeStart', that.eventHandlers['resizeStartHandler']);\n\n\t\tthat.eventHandlers['resizeEndHandler'] = (event: CustomEvent) => { that.onResizeEnd.emit(event); }\n\t\tthat.nativeElement.addEventListener('resizeEnd', that.eventHandlers['resizeEndHandler']);\n\n\t\tthat.eventHandlers['inlineToolbarOpenHandler'] = (event: CustomEvent) => { that.onInlineToolbarOpen.emit(event); }\n\t\tthat.nativeElement.addEventListener('inlineToolbarOpen', that.eventHandlers['inlineToolbarOpenHandler']);\n\n\t\tthat.eventHandlers['inlineToolbarOpeningHandler'] = (event: CustomEvent) => { that.onInlineToolbarOpening.emit(event); }\n\t\tthat.nativeElement.addEventListener('inlineToolbarOpening', that.eventHandlers['inlineToolbarOpeningHandler']);\n\n\t\tthat.eventHandlers['inlineToolbarCloseHandler'] = (event: CustomEvent) => { that.onInlineToolbarClose.emit(event); }\n\t\tthat.nativeElement.addEventListener('inlineToolbarClose', that.eventHandlers['inlineToolbarCloseHandler']);\n\n\t\tthat.eventHandlers['inlineToolbarClosingHandler'] = (event: CustomEvent) => { that.onInlineToolbarClosing.emit(event); }\n\t\tthat.nativeElement.addEventListener('inlineToolbarClosing', that.eventHandlers['inlineToolbarClosingHandler']);\n\n\t\tthat.eventHandlers['dropDownToolbarOpenHandler'] = (event: CustomEvent) => { that.onDropDownToolbarOpen.emit(event); }\n\t\tthat.nativeElement.addEventListener('dropDownToolbarOpen', that.eventHandlers['dropDownToolbarOpenHandler']);\n\n\t\tthat.eventHandlers['dropDownToolbarOpeningHandler'] = (event: CustomEvent) => { that.onDropDownToolbarOpening.emit(event); }\n\t\tthat.nativeElement.addEventListener('dropDownToolbarOpening', that.eventHandlers['dropDownToolbarOpeningHandler']);\n\n\t\tthat.eventHandlers['dropDownToolbarCloseHandler'] = (event: CustomEvent) => { that.onDropDownToolbarClose.emit(event); }\n\t\tthat.nativeElement.addEventListener('dropDownToolbarClose', that.eventHandlers['dropDownToolbarCloseHandler']);\n\n\t\tthat.eventHandlers['dropDownToolbarClosingHandler'] = (event: CustomEvent) => { that.onDropDownToolbarClosing.emit(event); }\n\t\tthat.nativeElement.addEventListener('dropDownToolbarClosing', that.eventHandlers['dropDownToolbarClosingHandler']);\n\n\t\tthat.eventHandlers['dialogOpenHandler'] = (event: CustomEvent) => { that.onDialogOpen.emit(event); }\n\t\tthat.nativeElement.addEventListener('dialogOpen', that.eventHandlers['dialogOpenHandler']);\n\n\t\tthat.eventHandlers['dialogOpeningHandler'] = (event: CustomEvent) => { that.onDialogOpening.emit(event); }\n\t\tthat.nativeElement.addEventListener('dialogOpening', that.eventHandlers['dialogOpeningHandler']);\n\n\t\tthat.eventHandlers['dialogCloseHandler'] = (event: CustomEvent) => { that.onDialogClose.emit(event); }\n\t\tthat.nativeElement.addEventListener('dialogClose', that.eventHandlers['dialogCloseHandler']);\n\n\t\tthat.eventHandlers['dialogClosingHandler'] = (event: CustomEvent) => { that.onDialogClosing.emit(event); }\n\t\tthat.nativeElement.addEventListener('dialogClosing', that.eventHandlers['dialogClosingHandler']);\n\n\t\tthat.eventHandlers['imageUploadSuccessHandler'] = (event: CustomEvent) => { that.onImageUploadSuccess.emit(event); }\n\t\tthat.nativeElement.addEventListener('imageUploadSuccess', that.eventHandlers['imageUploadSuccessHandler']);\n\n\t\tthat.eventHandlers['imageUploadFailedHandler'] = (event: CustomEvent) => { that.onImageUploadFailed.emit(event); }\n\t\tthat.nativeElement.addEventListener('imageUploadFailed', that.eventHandlers['imageUploadFailedHandler']);\n\n\t\tthat.eventHandlers['toobarItemClickHandler'] = (event: CustomEvent) => { that.onToobarItemClick.emit(event); }\n\t\tthat.nativeElement.addEventListener('toobarItemClick', that.eventHandlers['toobarItemClickHandler']);\n\n\t\tthat.eventHandlers['messageCloseHandler'] = (event: CustomEvent) => { that.onMessageClose.emit(event); }\n\t\tthat.nativeElement.addEventListener('messageClose', that.eventHandlers['messageCloseHandler']);\n\n\t\tthat.eventHandlers['messageOpenHandler'] = (event: CustomEvent) => { that.onMessageOpen.emit(event); }\n\t\tthat.nativeElement.addEventListener('messageOpen', that.eventHandlers['messageOpenHandler']);\n\n\t}\n\n\t/** @description Remove event listeners. */\n\tprivate unlisten(): void {\n        const that = this;\n\t\tif (that.eventHandlers['changeHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('change', that.eventHandlers['changeHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['changingHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('changing', that.eventHandlers['changingHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['actionStartHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('actionStart', that.eventHandlers['actionStartHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['actionEndHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('actionEnd', that.eventHandlers['actionEndHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['contextMenuItemClickHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('contextMenuItemClick', that.eventHandlers['contextMenuItemClickHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['contextMenuOpenHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('contextMenuOpen', that.eventHandlers['contextMenuOpenHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['contextMenuOpeningHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('contextMenuOpening', that.eventHandlers['contextMenuOpeningHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['contextMenuCloseHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('contextMenuClose', that.eventHandlers['contextMenuCloseHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['contextMenuClosingHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('contextMenuClosing', that.eventHandlers['contextMenuClosingHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['resizeStartHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('resizeStart', that.eventHandlers['resizeStartHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['resizeEndHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('resizeEnd', that.eventHandlers['resizeEndHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['inlineToolbarOpenHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('inlineToolbarOpen', that.eventHandlers['inlineToolbarOpenHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['inlineToolbarOpeningHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('inlineToolbarOpening', that.eventHandlers['inlineToolbarOpeningHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['inlineToolbarCloseHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('inlineToolbarClose', that.eventHandlers['inlineToolbarCloseHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['inlineToolbarClosingHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('inlineToolbarClosing', that.eventHandlers['inlineToolbarClosingHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['dropDownToolbarOpenHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('dropDownToolbarOpen', that.eventHandlers['dropDownToolbarOpenHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['dropDownToolbarOpeningHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('dropDownToolbarOpening', that.eventHandlers['dropDownToolbarOpeningHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['dropDownToolbarCloseHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('dropDownToolbarClose', that.eventHandlers['dropDownToolbarCloseHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['dropDownToolbarClosingHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('dropDownToolbarClosing', that.eventHandlers['dropDownToolbarClosingHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['dialogOpenHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('dialogOpen', that.eventHandlers['dialogOpenHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['dialogOpeningHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('dialogOpening', that.eventHandlers['dialogOpeningHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['dialogCloseHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('dialogClose', that.eventHandlers['dialogCloseHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['dialogClosingHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('dialogClosing', that.eventHandlers['dialogClosingHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['imageUploadSuccessHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('imageUploadSuccess', that.eventHandlers['imageUploadSuccessHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['imageUploadFailedHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('imageUploadFailed', that.eventHandlers['imageUploadFailedHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['toobarItemClickHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('toobarItemClick', that.eventHandlers['toobarItemClickHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['messageCloseHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('messageClose', that.eventHandlers['messageCloseHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['messageOpenHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('messageOpen', that.eventHandlers['messageOpenHandler']);\n\t\t}\n\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { EditorComponent } from './smart.editor';\nimport { CUSTOM_ELEMENTS_SCHEMA  } from '@angular/core';\n\n@NgModule({\n    declarations: [EditorComponent],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\texports: [EditorComponent]\n})\n\nexport class EditorModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}