{"version":3,"file":"taiga-ui-editor-directives-tiptap-editor.mjs","sources":["../../../projects/editor/directives/tiptap-editor/utils/is-empty-paragraph.ts","../../../projects/editor/directives/tiptap-editor/tiptap-editor.service.ts","../../../projects/editor/directives/tiptap-editor/tiptap-editor.directive.ts","../../../projects/editor/directives/tiptap-editor/taiga-ui-editor-directives-tiptap-editor.ts"],"sourcesContent":["import {type JSONContent} from '@tiptap/core';\n\nexport function tuiIsEmptyParagraph(json?: JSONContent[]): boolean {\n    return (\n        Array.isArray(json) &&\n        json.length === 1 &&\n        json[0]?.type === 'paragraph' &&\n        !json[0].hasOwnProperty('content')\n    );\n}\n","import {inject, Injectable} from '@angular/core';\nimport {tuiPx} from '@taiga-ui/cdk';\nimport {\n    AbstractTuiEditor,\n    EDITOR_BLANK_COLOR,\n    TIPTAP_EDITOR,\n    TUI_EDITOR_OPTIONS,\n    type TuiEditableIframe,\n    type TuiEditableImage,\n    type TuiEditorAttachedFile,\n    type TuiSelectionSnapshot,\n    type TuiSetValueOption,\n    type TuiYoutubeOptions,\n} from '@taiga-ui/editor/common';\nimport type * as TuiEditorTypes from '@taiga-ui/editor/common/types';\nimport {tuiGetMarkRange, tuiParseStyle} from '@taiga-ui/editor/utils';\nimport {type Editor, type Range} from '@tiptap/core';\nimport {type MarkType} from '@tiptap/pm/model';\nimport {EditorState} from '@tiptap/pm/state';\nimport {distinctUntilChanged, map, type Observable, startWith} from 'rxjs';\n\nimport {tuiIsEmptyParagraph} from './utils/is-empty-paragraph';\n\ntype Level = 1 | 2 | 3 | 4 | 5 | 6;\n\ntype Attrs = Record<string, unknown>;\n\n@Injectable()\nexport class TuiTiptapEditorService extends AbstractTuiEditor {\n    private readonly editorRef: Observable<Editor | null> = inject(TIPTAP_EDITOR);\n    private readonly options = inject(TUI_EDITOR_OPTIONS);\n    private firstInitContent = false;\n    protected selectionSnapshot: TuiSelectionSnapshot | null = null;\n    protected editor?: Editor;\n\n    constructor() {\n        super();\n\n        this.editorRef.subscribe((editor) => {\n            if (!editor) {\n                return;\n            }\n\n            this.editor = editor;\n\n            editor.on('transaction', () => {\n                const content = editor.getHTML();\n                const json = editor.getJSON().content;\n                const value: string = tuiIsEmptyParagraph(json) ? '' : content;\n\n                this.valueChange$.next(value);\n            });\n\n            editor.on('blur', () => this.triggerTransaction());\n        });\n    }\n\n    public get isFocused(): boolean {\n        return this.editor?.isFocused ?? false;\n    }\n\n    public get html(): string {\n        return this.editor?.getHTML() ?? '';\n    }\n\n    public get editable(): boolean {\n        return this.editor?.isEditable ?? false;\n    }\n\n    public set editable(editable: boolean) {\n        this.editor?.setEditable(editable, false);\n    }\n\n    public get state(): EditorState | null {\n        return this.editor?.state ?? null;\n    }\n\n    public getOriginTiptapEditor(): Editor | null {\n        return this.editor ?? null;\n    }\n\n    public undoDisabled(): boolean {\n        return !this.editor?.can().undo();\n    }\n\n    public redoDisabled(): boolean {\n        return !this.editor?.can().redo();\n    }\n\n    public getFontColor(): string {\n        return this.editor?.getAttributes('textStyle').fontColor || EDITOR_BLANK_COLOR;\n    }\n\n    public getFontSize(): number {\n        return parseInt(this.editor?.getAttributes('textStyle').fontSize, 10);\n    }\n\n    public setFontSize(size: number): void {\n        this.editor\n            ?.chain()\n            .setMark('textStyle', {fontSize: tuiPx(size)})\n            .run();\n    }\n\n    public getBackgroundColor(): string {\n        return this.editor?.getAttributes('textStyle').backgroundColor || 'transparent';\n    }\n\n    public getCellColor(): string {\n        return (\n            this.editor?.getAttributes('tableCell').background ||\n            this.editor?.getAttributes('tableHeader').background ||\n            ''\n        );\n    }\n\n    public getGroupColor(): string {\n        if (this.editor?.isActive('group')) {\n            const style = this.editor.getAttributes('group').style ?? '';\n            const styles = tuiParseStyle(style);\n\n            return styles['background-color'] ?? styles['background'] ?? '';\n        }\n\n        return '';\n    }\n\n    public onAlign(align: string): void {\n        this.editor?.chain().focus().setTextAlign(align).run();\n    }\n\n    public setImage(src: string): void {\n        this.editor\n            ?.chain()\n            .focus()\n            .command(({commands, state}) => {\n                const setImage = ((commands as any).setEditableImage ??\n                    commands.setImage) as\n                    | ((config: TuiEditableImage) => boolean)\n                    | undefined;\n\n                if (setImage) {\n                    const anchor = state.selection.anchor;\n\n                    setImage({src});\n                    commands.setTextSelection(anchor);\n\n                    return true;\n                }\n\n                return false;\n            })\n            .run();\n    }\n\n    public undo(): void {\n        this.editor?.chain().undo().run();\n    }\n\n    public redo(): void {\n        this.editor?.chain().redo().run();\n    }\n\n    public setHorizontalRule(): void {\n        this.editor?.chain().focus().setHorizontalRule().run();\n    }\n\n    public removeFormat(): void {\n        this.editor?.commands.unsetAllMarks();\n        this.editor?.commands.clearNodes();\n    }\n\n    public setFontColor(color: string): void {\n        this.editor?.chain().focus().setFontColor(color).run();\n    }\n\n    public setBackgroundColor(color: string): void {\n        this.editor?.chain().focus().setBackgroundColor(color).run();\n    }\n\n    public toggleUnderline(): void {\n        this.editor?.chain().focus().toggleUnderline().run();\n    }\n\n    public toggleStrike(): void {\n        this.editor?.chain().focus().toggleStrike().run();\n    }\n\n    public toggleOrderedList(): void {\n        this.editor?.chain().focus().toggleOrderedList().run();\n    }\n\n    public toggleUnorderedList(): void {\n        this.editor?.chain().focus().toggleBulletList().run();\n    }\n\n    public togglePre(): void {\n        this.editor?.chain().focus().toggleCodeBlock().run();\n    }\n\n    public toggleTaskList(): void {\n        this.editor?.chain().focus().toggleTaskList().run();\n    }\n\n    public sinkListItem(): void {\n        const type = this.editor?.isActive('taskList') ? 'taskItem' : 'listItem';\n\n        this.editor?.chain().focus().sinkListItem(type).run();\n    }\n\n    public liftListItem(): void {\n        const type = this.editor?.isActive('taskList') ? 'taskItem' : 'listItem';\n\n        this.editor?.chain().focus().liftListItem(type).run();\n    }\n\n    public isActive(attributes: Attrs): boolean;\n    public isActive(name: string, attributes?: Record<string, unknown>): boolean;\n    public isActive(name: Attrs | string, attributes?: Attrs): boolean {\n        return (\n            (typeof name === 'string'\n                ? this.editor?.isActive(name, attributes)\n                : this.editor?.isActive(name)) ?? false\n        );\n    }\n\n    public isActive$(attributes: Attrs): Observable<boolean>;\n    public isActive$(\n        name: string,\n        attributes?: Record<string, unknown>,\n    ): Observable<boolean>;\n    public isActive$(name: Attrs | string, attributes?: Attrs): Observable<boolean> {\n        return this.valueChange$.pipe(\n            startWith(null),\n            map(() =>\n                typeof name === 'string'\n                    ? this.isActive(name, attributes)\n                    : this.isActive(name),\n            ),\n            distinctUntilChanged(),\n        );\n    }\n\n    public toggleBold(): void {\n        this.editor?.chain().focus().toggleBold().run();\n    }\n\n    public toggleCode(): void {\n        this.editor?.chain().focus().toggleCode().run();\n    }\n\n    public toggleItalic(): void {\n        this.editor?.chain().focus().toggleItalic().run();\n    }\n\n    public toggleBlockquote(): void {\n        this.editor?.chain().focus().toggleBlockquote().run();\n    }\n\n    public toggleSubscript(): void {\n        this.editor?.chain().focus().toggleSubscript().run();\n    }\n\n    public toggleSuperscript(): void {\n        this.editor?.chain().focus().toggleSuperscript().run();\n    }\n\n    public toggleCodeBlock(): void {\n        this.editor?.chain().focus().toggleCodeBlock().run();\n    }\n\n    public insertTable(cols: number, rows: number): void {\n        this.editor?.chain().focus().insertTable({cols, rows}).run();\n    }\n\n    public addColumnAfter(): void {\n        this.editor?.chain().focus().addColumnAfter().run();\n    }\n\n    public addColumnBefore(): void {\n        this.editor?.chain().focus().addColumnBefore().run();\n    }\n\n    public addRowAfter(): void {\n        this.editor?.chain().focus().addRowAfter().run();\n    }\n\n    public addRowBefore(): void {\n        this.editor?.chain().focus().addRowBefore().run();\n    }\n\n    public deleteColumn(): void {\n        this.editor?.chain().focus().deleteColumn().run();\n    }\n\n    public deleteRow(): void {\n        this.editor?.chain().focus().deleteRow().run();\n    }\n\n    public mergeCells(): void {\n        this.editor?.chain().focus().mergeCells().run();\n    }\n\n    public splitCell(): void {\n        this.editor?.chain().focus().splitCell().run();\n    }\n\n    public canMergeCells(): boolean {\n        return this.editor?.can().mergeCells() ?? false;\n    }\n\n    public canSplitCells(): boolean {\n        return this.editor?.can().splitCell() ?? false;\n    }\n\n    public setHeading(level: Level): void {\n        this.editor?.chain().focus().setHeading({level}).run();\n    }\n\n    public setParagraph(options?: {fontSize: string}): void {\n        this.editor?.chain().focus().setParagraph().run();\n\n        if (options) {\n            this.editor?.chain().setMark('textStyle', options).run();\n        }\n    }\n\n    public setHardBreak(): void {\n        this.editor?.chain().setHardBreak().run();\n    }\n\n    public setTextSelection(value: Range | number): void {\n        this.editor?.commands.setTextSelection(value);\n    }\n\n    public toggleLink(href: string): void {\n        this.editor?.chain().focus().toggleLink({href}).run();\n    }\n\n    public setLink(href: string): void {\n        this.editor?.chain().focus().setLink({href}).run();\n    }\n\n    public unsetLink(): void {\n        this.editor?.chain().focus().unsetLink().run();\n    }\n\n    public focus(): void {\n        this.editor?.chain().focus().run();\n    }\n\n    public setValue(value: string, options: TuiSetValueOption = {}): void {\n        if (value === this.html || (value === '' && this.html === '<p></p>')) {\n            return;\n        }\n\n        this.editor?.commands.setContent(value, false, this.options.parseOptions);\n\n        if (options.clearsHistory || !this.firstInitContent) {\n            this.clearHistory();\n        }\n\n        this.firstInitContent = true;\n    }\n\n    public clearHistory(): void {\n        this.editor?.view.updateState(\n            EditorState.create({\n                schema: this.editor.state.schema,\n                doc: this.editor.state.doc,\n                selection: this.editor.state.selection,\n                storedMarks: this.editor.state.storedMarks,\n                plugins: this.editor.state.plugins,\n            }),\n        );\n\n        this.triggerTransaction();\n    }\n\n    public destroy(): void {\n        this.editor?.destroy();\n    }\n\n    public setCellColor(color: string): void {\n        this.editor?.chain().focus().setCellBackground(color).run();\n    }\n\n    public selectClosest(): void {\n        const pos = this.editor?.state.selection.anchor;\n        const range = tuiGetMarkRange(\n            this.editor?.state.tr.doc.resolve(pos ?? 0),\n            this.editor?.schema.marks.link,\n        );\n\n        if (range) {\n            this.editor?.chain().setTextSelection(range).run();\n        }\n    }\n\n    public enter(): void {\n        this.editor?.commands.enter();\n    }\n\n    public setDetails(): void {\n        this.editor?.commands.setDetails();\n    }\n\n    public unsetDetails(): void {\n        this.editor?.commands.unsetDetails();\n    }\n\n    /**\n     * @deprecated use {@link unsetDetails}\n     */\n    public removeDetails(): void {\n        this.editor?.commands.unsetDetails();\n    }\n\n    public setGroup(): void {\n        this.editor?.commands.setGroup();\n    }\n\n    public removeGroup(): void {\n        this.editor?.commands.removeGroup();\n    }\n\n    public setGroupHilite(color: string): void {\n        this.editor?.commands.setGroupHilite(color);\n    }\n\n    public setAnchor(anchor: string): void {\n        this.editor?.commands.setAnchor(anchor.replace('#', ''));\n    }\n\n    public removeAnchor(): void {\n        this.editor?.commands.removeAnchor();\n    }\n\n    public setFileLink(preview: TuiEditorAttachedFile): void {\n        this.editor?.commands.setFileLink(preview);\n    }\n\n    public setYoutubeVideo(options: TuiYoutubeOptions): void {\n        this.editor?.commands.setYoutubeVideo(options as any);\n    }\n\n    public setIframe(options: TuiEditableIframe): void {\n        this.editor?.commands.setIframe(options);\n    }\n\n    public removeEmptyTextStyle(): void {\n        this.editor?.commands.removeEmptyTextStyle();\n    }\n\n    public toggleMark(\n        typeOrName: MarkType | string,\n        attributes?: Record<string, any>,\n        options?: {extendEmptyMarkRange?: boolean},\n    ): void {\n        this.editor?.commands.toggleMark(typeOrName, attributes, options);\n    }\n\n    /**\n     * @deprecated use {@link html}\n     */\n    public getHTML(): string {\n        return this.getOriginTiptapEditor()?.getHTML() ?? '';\n    }\n\n    public takeSelectionSnapshot(): void {\n        this.selectionSnapshot = this.editor?.state.selection.toJSON() ?? null;\n    }\n\n    public getSelectionSnapshot(): TuiSelectionSnapshot | null {\n        return this.selectionSnapshot;\n    }\n\n    private triggerTransaction(): void {\n        this.editor?.view.dispatch(this.editor.state.tr);\n    }\n}\n\nexport type {TuiEditorTypes};\n","import {Directive, ElementRef, inject, Input, Output, Renderer2} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {INITIALIZATION_TIPTAP_CONTAINER, TIPTAP_EDITOR} from '@taiga-ui/editor/common';\nimport {distinctUntilChanged} from 'rxjs';\n\nimport {TuiTiptapEditorService} from './tiptap-editor.service';\n\n@Directive({\n    standalone: true,\n    selector: '[tuiTiptapEditor]',\n})\nexport class TuiTiptapEditor {\n    private canEdit = true;\n    private readonly el = inject(ElementRef);\n    private readonly renderer = inject(Renderer2);\n    private readonly editor = inject(TuiTiptapEditorService);\n    protected editorContainer = inject(INITIALIZATION_TIPTAP_CONTAINER);\n\n    protected readonly $ = inject(TIPTAP_EDITOR)\n        .pipe(takeUntilDestroyed())\n        .subscribe(() => {\n            this.renderer.appendChild(this.el.nativeElement, this.editorContainer);\n            this.editable = this.canEdit; // synchronized editable state after first render\n        });\n\n    @Output()\n    public readonly valueChange = this.editor.valueChange$.pipe(distinctUntilChanged());\n\n    /**\n     * @deprecated use valueChange instead\n     */\n    @Output()\n    public readonly stateChange = this.editor.stateChange$;\n\n    @Input()\n    public set value(value: string) {\n        this.editor.setValue(value);\n    }\n\n    @Input()\n    public set editable(editable: boolean) {\n        this.canEdit = editable;\n        this.editor.editable = editable;\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}