{"version":3,"file":"primeng-editor.mjs","sources":["../../src/editor/style/editorstyle.ts","../../src/editor/editor.ts","../../src/editor/primeng-editor.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style } from '@primeuix/styles/editor';\nimport { BaseStyle } from 'primeng/base';\n\nconst classes = {\n    root: ({ instance }) => [\n        'p-editor',\n        {\n            'p-invalid': instance.invalid()\n        }\n    ],\n    toolbar: 'p-editor-toolbar',\n    content: 'p-editor-content'\n};\n\n@Injectable()\nexport class EditorStyle extends BaseStyle {\n    name = 'editor';\n\n    style = style;\n\n    classes = classes;\n}\n\n/**\n *\n * Editor groups a collection of contents in tabs.\n *\n * [Live Demo](https://www.primeng.org/editor/)\n *\n * @module editorstyle\n *\n */\nexport enum EditorClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-editor',\n    /**\n     * Class name of the toolbar element\n     */\n    toolbar = 'p-editor-toolbar',\n    /**\n     * Class name of the content element\n     */\n    content = 'p-editor-content'\n}\n\nexport interface EditorStyle extends BaseStyle {}\n","import { isPlatformServer, NgTemplateOutlet } from '@angular/common';\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, contentChild, effect, forwardRef, inject, InjectionToken, input, NgModule, output, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { findSingle } from '@primeuix/utils';\nimport { Header, SharedModule } from 'primeng/api';\nimport { PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { BaseEditableHolder } from 'primeng/baseeditableholder';\nimport { Bind, BindModule } from 'primeng/bind';\nimport type { CSSProperties } from 'primeng/types/shared';\nimport { Nullable } from 'primeng/ts-helpers';\nimport { EditorBlurEvent, EditorChangeEvent, EditorFocusEvent, EditorInitEvent, EditorPassThrough, EditorSelectionChangeEvent, EditorTextChangeEvent } from 'primeng/types/editor';\nimport { EditorStyle } from './style/editorstyle';\n\nconst EDITOR_INSTANCE = new InjectionToken<Editor>('EDITOR_INSTANCE');\n\nexport const EDITOR_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Editor),\n    multi: true\n};\n/**\n * Editor groups a collection of contents in tabs.\n * @group Components\n * @deprecated Editor will be removed in a future release in favor of PrimeUI PRO Editor.\n */\n@Component({\n    selector: 'p-editor',\n    standalone: true,\n    imports: [NgTemplateOutlet, SharedModule, BindModule],\n    template: `\n        @if ($hasCustomToolbar()) {\n            <div [class]=\"cx('toolbar')\" [pBind]=\"ptm('toolbar')\">\n                <ng-content select=\"p-header\" />\n                <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n            </div>\n        } @else {\n            <div [class]=\"cx('toolbar')\" [pBind]=\"ptm('toolbar')\">\n                <span class=\"ql-formats\" [pBind]=\"ptm('formats')\">\n                    <select class=\"ql-header\" [pBind]=\"ptm('header')\">\n                        <option value=\"1\" [pBind]=\"ptm('option')\">Heading</option>\n                        <option value=\"2\" [pBind]=\"ptm('option')\">Subheading</option>\n                        <option selected [pBind]=\"ptm('option')\">Normal</option>\n                    </select>\n                    <select class=\"ql-font\" [pBind]=\"ptm('select')\">\n                        <option selected [pBind]=\"ptm('option')\">Sans Serif</option>\n                        <option value=\"serif\" [pBind]=\"ptm('option')\">Serif</option>\n                        <option value=\"monospace\" [pBind]=\"ptm('option')\">Monospace</option>\n                    </select>\n                </span>\n                <span class=\"ql-formats\" [pBind]=\"ptm('formats')\">\n                    <button class=\"ql-bold\" aria-label=\"Bold\" type=\"button\" [pBind]=\"ptm('bold')\"></button>\n                    <button class=\"ql-italic\" aria-label=\"Italic\" type=\"button\" [pBind]=\"ptm('italic')\"></button>\n                    <button class=\"ql-underline\" aria-label=\"Underline\" type=\"button\" [pBind]=\"ptm('underline')\"></button>\n                </span>\n                <span class=\"ql-formats\" [pBind]=\"ptm('formats')\">\n                    <select class=\"ql-color\" [pBind]=\"ptm('color')\"></select>\n                    <select class=\"ql-background\" [pBind]=\"ptm('background')\"></select>\n                </span>\n                <span class=\"ql-formats\" [pBind]=\"ptm('formats')\">\n                    <button class=\"ql-list\" value=\"ordered\" aria-label=\"Ordered List\" type=\"button\" [pBind]=\"ptm('list')\"></button>\n                    <button class=\"ql-list\" value=\"bullet\" aria-label=\"Unordered List\" type=\"button\" [pBind]=\"ptm('list')\"></button>\n                    <select class=\"ql-align\" [pBind]=\"ptm('select')\">\n                        <option selected [pBind]=\"ptm('option')\"></option>\n                        <option value=\"center\" [pBind]=\"ptm('option')\">center</option>\n                        <option value=\"right\" [pBind]=\"ptm('option')\">right</option>\n                        <option value=\"justify\" [pBind]=\"ptm('option')\">justify</option>\n                    </select>\n                </span>\n                <span class=\"ql-formats\" [pBind]=\"ptm('formats')\">\n                    <button class=\"ql-link\" aria-label=\"Insert Link\" type=\"button\" [pBind]=\"ptm('link')\"></button>\n                    <button class=\"ql-image\" aria-label=\"Insert Image\" type=\"button\" [pBind]=\"ptm('image')\"></button>\n                    <button class=\"ql-code-block\" aria-label=\"Insert Code Block\" type=\"button\" [pBind]=\"ptm('codeBlock')\"></button>\n                </span>\n                <span class=\"ql-formats\" [pBind]=\"ptm('formats')\">\n                    <button class=\"ql-clean\" aria-label=\"Remove Styles\" type=\"button\" [pBind]=\"ptm('clean')\"></button>\n                </span>\n            </div>\n        }\n        <div [class]=\"cx('content')\" [style]=\"style()\" [pBind]=\"ptm('content')\"></div>\n    `,\n    providers: [EDITOR_VALUE_ACCESSOR, EditorStyle, { provide: EDITOR_INSTANCE, useExisting: Editor }, { provide: PARENT_INSTANCE, useExisting: Editor }],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        '[class]': \"cn(cx('root'))\"\n    },\n    hostDirectives: [Bind]\n})\nexport class Editor extends BaseEditableHolder<EditorPassThrough> {\n    componentName = 'Editor';\n\n    $pcEditor: Editor | undefined = inject(EDITOR_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    onAfterViewChecked() {\n        this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n    }\n\n    /**\n     * Inline style of the container.\n     * @group Props\n     */\n    style = input<CSSProperties>();\n    /**\n     * Placeholder text to show when editor is empty.\n     * @group Props\n     */\n    placeholder = input<string>();\n    /**\n     * Whitelist of formats to display, see [here](https://quilljs.com/docs/formats/) for available options.\n     * @group Props\n     */\n    formats = input<string[]>();\n    /**\n     * Modules configuration of Editor, see [here](https://quilljs.com/docs/modules/) for available options.\n     * @group Props\n     */\n    modules = input<object>();\n    /**\n     * DOM Element or a CSS selector for a DOM Element, within which the editor's p elements (i.e. tooltips, etc.) should be confined. Currently, it only considers left and right boundaries.\n     * @group Props\n     */\n    bounds = input<HTMLElement | string>();\n    /**\n     * DOM Element or a CSS selector for a DOM Element, specifying which container has the scrollbars (i.e. overflow-y: auto), if is has been changed from the default ql-editor with custom CSS. Necessary to fix scroll jumping bugs when Quill is set to auto grow its height, and another ancestor container is responsible from the scrolling..\n     * @group Props\n     */\n    scrollingContainer = input<HTMLElement | string>();\n    /**\n     * Shortcut for debug. Note debug is a static method and will affect other instances of Quill editors on the page. Only warning and error messages are enabled by default.\n     * @group Props\n     */\n    debug = input<string>();\n    /**\n     * Whether to instantiate the editor to read-only mode.\n     * @group Props\n     */\n    readonly = input(false);\n\n    /**\n     * Callback to invoke when the quill modules are loaded.\n     * @param {EditorInitEvent} event - custom event.\n     * @group Emits\n     */\n    onEditorInit = output<EditorInitEvent>({ alias: 'onInit' });\n    /**\n     * Callback to invoke when text of editor changes.\n     * @param {EditorTextChangeEvent} event - custom event.\n     * @group Emits\n     */\n    onTextChange = output<EditorTextChangeEvent>();\n    /**\n     * Callback to invoke when selection of the text changes.\n     * @param {EditorSelectionChangeEvent} event - custom event.\n     * @group Emits\n     */\n    onSelectionChange = output<EditorSelectionChangeEvent>();\n    /**\n     * Callback to invoke when editor content changes (combines both text and selection changes).\n     * @param {EditorChangeEvent} event - custom event.\n     * @group Emits\n     */\n    onEditorChange = output<EditorChangeEvent>();\n    /**\n     * Callback to invoke when editor receives focus.\n     * @param {EditorFocusEvent} event - custom event.\n     * @group Emits\n     */\n    onFocus = output<EditorFocusEvent>();\n    /**\n     * Callback to invoke when editor loses focus.\n     * @param {EditorBlurEvent} event - custom event.\n     * @group Emits\n     */\n    onBlur = output<EditorBlurEvent>();\n\n    toolbar = contentChild(Header, { descendants: false });\n\n    /**\n     * Custom item template.\n     * @group Templates\n     */\n    headerTemplate = contentChild<TemplateRef<any>>('header', { descendants: false });\n\n    $hasCustomToolbar = computed(() => !!this.toolbar() || !!this.headerTemplate());\n\n    value: Nullable<string>;\n\n    delayedCommand: Function | null = null;\n\n    quill: any;\n\n    dynamicQuill: any;\n\n    private _destroyed = false;\n\n    private get isAttachedQuillEditorToDOM(): boolean | undefined {\n        return this.quillElements?.editorElement?.isConnected;\n    }\n\n    private quillElements!: { editorElement: HTMLElement; toolbarElement: HTMLElement };\n\n    private focusListener: (() => void) | null = null;\n\n    private blurListener: (() => void) | null = null;\n\n    _componentStyle = inject(EditorStyle);\n\n    constructor() {\n        super();\n\n        effect(() => {\n            const isReadonly = this.readonly();\n            if (this.quill) {\n                if (isReadonly) this.quill.disable();\n                else this.quill.enable();\n            }\n        });\n\n        /**\n         * Read or write the DOM once, when initializing non-Angular (Quill) library.\n         */\n        afterNextRender(() => {\n            this.initQuillElements();\n            this.initQuillEditor();\n        });\n    }\n\n    /**\n     * @override\n     *\n     * @see {@link BaseEditableHolder.writeControlValue}\n     * Writes the value to the control.\n     */\n    writeControlValue(value: any) {\n        if (this.quill && this.value === value) {\n            return;\n        }\n\n        this.value = value;\n\n        if (this.quill) {\n            if (value) {\n                const command = () => {\n                    this.quill.setContents(this.quill.clipboard.convert(this.dynamicQuill.version.startsWith('2') ? { html: this.value } : this.value));\n                };\n\n                if (this.isAttachedQuillEditorToDOM) {\n                    command();\n                } else {\n                    this.delayedCommand = command;\n                }\n            } else {\n                const command = () => {\n                    this.quill.setText('');\n                };\n\n                if (this.isAttachedQuillEditorToDOM) {\n                    command();\n                } else {\n                    this.delayedCommand = command;\n                }\n            }\n        }\n    }\n\n    getQuill() {\n        return this.quill;\n    }\n\n    private initQuillEditor() {\n        if (isPlatformServer(this.platformId)) {\n            return;\n        }\n\n        /**\n         * Importing Quill at top level, throws `document is undefined` error during when\n         * building for SSR, so this dynamically loads quill when it's in browser module.\n         */\n        if (!this.dynamicQuill) {\n            import('quill')\n                .then((quillModule: any) => {\n                    this.dynamicQuill = quillModule.default;\n                    this.createQuillEditor();\n                })\n                .catch((e) => console.error(e.message));\n        } else {\n            this.createQuillEditor();\n        }\n    }\n\n    private createQuillEditor() {\n        // The Quill module is imported asynchronously; if the component was destroyed before the\n        // import resolved, bail so we don't build Quill and emit (onEditorInit etc.) after destroy.\n        if (this._destroyed) return;\n        this.initQuillElements();\n\n        const { toolbarElement, editorElement } = this.quillElements;\n        let defaultModule = { toolbar: toolbarElement };\n        let modules = this.modules() ? { ...defaultModule, ...this.modules() } : defaultModule;\n        this.quill = new this.dynamicQuill(editorElement, {\n            modules: modules,\n            placeholder: this.placeholder(),\n            readOnly: this.readonly(),\n            theme: 'snow',\n            formats: this.formats(),\n            bounds: this.bounds(),\n            debug: this.debug(),\n            scrollingContainer: this.scrollingContainer()\n        });\n\n        const isQuill2 = this.dynamicQuill.version.startsWith('2');\n\n        if (this.value) {\n            this.quill.setContents(this.quill.clipboard.convert(isQuill2 ? { html: this.value } : this.value));\n        }\n\n        this.quill.on('text-change', (delta: any, oldContents: any, source: 'user' | 'api' | 'silent') => {\n            if (this._destroyed) return;\n            if (source === 'user') {\n                let html = isQuill2 ? this.quill.getSemanticHTML() : findSingle(editorElement, '.ql-editor')?.innerHTML;\n                let text = this.quill.getText().trim();\n                if (html === '<p><br></p>') {\n                    html = null;\n                }\n\n                this.onTextChange.emit({\n                    htmlValue: html,\n                    textValue: text,\n                    delta: delta,\n                    source: source\n                });\n\n                this.value = html;\n                this.onModelChange(html);\n                this.onModelTouched();\n            }\n        });\n\n        this.quill.on('selection-change', (range: any, oldRange: any, source: 'user' | 'api' | 'silent') => {\n            if (this._destroyed) return;\n            this.onSelectionChange.emit({\n                range: range,\n                oldRange: oldRange,\n                source: source\n            });\n        });\n\n        this.quill.on('editor-change', (eventName: 'text-change' | 'selection-change', ...args: any[]) => {\n            if (this._destroyed) return;\n            this.onEditorChange.emit({\n                eventName: eventName,\n                args: args\n            });\n        });\n\n        const editorEl = this.quill.root;\n\n        this.focusListener = () => {\n            this.onFocus.emit({\n                source: 'user'\n            });\n        };\n\n        this.blurListener = () => {\n            this.onBlur.emit({\n                source: 'user'\n            });\n        };\n\n        editorEl.addEventListener('focus', this.focusListener);\n        editorEl.addEventListener('blur', this.blurListener);\n\n        this.onEditorInit.emit({\n            editor: this.quill\n        });\n    }\n\n    onDestroy() {\n        this._destroyed = true;\n        if (this.quill && this.quill.root) {\n            const editorEl = this.quill.root;\n            if (this.focusListener) {\n                editorEl.removeEventListener('focus', this.focusListener);\n                this.focusListener = null;\n            }\n            if (this.blurListener) {\n                editorEl.removeEventListener('blur', this.blurListener);\n                this.blurListener = null;\n            }\n        }\n    }\n\n    private initQuillElements() {\n        if (!this.quillElements) {\n            this.quillElements = {\n                editorElement: findSingle(this.el.nativeElement, 'div[data-pc-section=\"content\"]'),\n                toolbarElement: findSingle(this.el.nativeElement, 'div[data-pc-section=\"toolbar\"]')\n            } as any;\n        }\n    }\n}\n\n@NgModule({\n    imports: [Editor, SharedModule],\n    exports: [Editor, SharedModule]\n})\nexport class EditorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}