{"version":3,"file":"taiga-ui-editor-components-editor.mjs","sources":["../../../projects/editor/components/editor/dropdown/dropdown-toolbar.directive.ts","../../../projects/editor/components/editor/portal/editor-portal.service.ts","../../../projects/editor/components/editor/editor.providers.ts","../../../projects/editor/components/editor/editor.component.ts","../../../projects/editor/components/editor/editor.component.html","../../../projects/editor/components/editor/portal/editor-portal.directive.ts","../../../projects/editor/components/editor/portal/editor-portal-host.component.ts","../../../projects/editor/components/editor/taiga-ui-editor-components-editor.ts"],"sourcesContent":["import {\n    Directive,\n    ElementRef,\n    inject,\n    Input,\n    type OnDestroy,\n    ViewContainerRef,\n} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {\n    EMPTY_CLIENT_RECT,\n    TUI_RANGE,\n    TUI_TRUE_HANDLER,\n    type TuiBooleanHandler,\n    tuiIsElement,\n    tuiIsString,\n    tuiIsTextNode,\n} from '@taiga-ui/cdk';\nimport {\n    TUI_SELECTION_STREAM,\n    tuiAsDriver,\n    tuiAsRectAccessor,\n    TuiDriver,\n    tuiGetWordRange,\n    type TuiRectAccessor,\n} from '@taiga-ui/core';\nimport {TUI_EDITOR_PM_SELECTED_NODE} from '@taiga-ui/editor/common';\nimport {BehaviorSubject, combineLatest, map} from 'rxjs';\n\ninterface ServerSideGlobal extends NodeJS.Global {\n    document: Document | undefined;\n}\n\n@Directive({\n    standalone: true,\n    selector: '[tuiToolbarDropdown]',\n    providers: [\n        tuiAsDriver(TuiEditorDropdownToolbar),\n        tuiAsRectAccessor(TuiEditorDropdownToolbar),\n    ],\n})\nexport class TuiEditorDropdownToolbar\n    extends TuiDriver\n    implements TuiRectAccessor, OnDestroy\n{\n    private previousTagPosition: DOMRect | null = null;\n    private range = inject(TUI_RANGE);\n\n    private readonly doc: Document | null =\n        inject<ServerSideGlobal | undefined>(WA_WINDOW)?.document ?? null;\n\n    private readonly selection$ = inject(TUI_SELECTION_STREAM);\n    private readonly el = inject(ElementRef<HTMLElement>);\n    private readonly vcr = inject(ViewContainerRef);\n\n    private readonly handler$ = new BehaviorSubject<TuiBooleanHandler<Range>>(\n        TUI_TRUE_HANDLER,\n    );\n\n    private readonly stream$ = combineLatest([\n        this.handler$,\n        this.selection$.pipe(map(() => this.getRange())),\n    ]).pipe(\n        map(([handler, range]) => {\n            const contained =\n                this.el.nativeElement.contains(range.commonAncestorContainer) ||\n                range.commonAncestorContainer.parentElement?.closest('tui-dropdown');\n\n            this.range =\n                (contained && tuiIsTextNode(range.commonAncestorContainer)) ||\n                range.commonAncestorContainer.nodeName === 'P'\n                    ? range\n                    : this.range;\n\n            return contained && handler(this.range);\n        }),\n    );\n\n    private readonly ghost?: HTMLElement;\n\n    @Input('tuiToolbarDropdownPosition')\n    public position: 'selection' | 'tag' | 'word' = 'selection';\n\n    public readonly type = 'dropdown';\n\n    constructor() {\n        super((subscriber) => this.stream$.subscribe(subscriber));\n    }\n\n    @Input()\n    public set tuiToolbarDropdown(visible: TuiBooleanHandler<Range> | string) {\n        if (!tuiIsString(visible)) {\n            this.handler$.next(visible);\n        }\n    }\n\n    public getClientRect(): ClientRect {\n        switch (this.position) {\n            case 'tag': {\n                const {commonAncestorContainer} = this.range;\n                const element = tuiIsElement(commonAncestorContainer)\n                    ? commonAncestorContainer\n                    : commonAncestorContainer.parentNode;\n\n                if (element?.parentElement?.closest('tui-dropdown')) {\n                    return this.previousTagPosition ?? EMPTY_CLIENT_RECT;\n                }\n\n                this.previousTagPosition =\n                    element && tuiIsElement(element)\n                        ? this.doc\n                              ?.querySelector(`.${TUI_EDITOR_PM_SELECTED_NODE}`)\n                              ?.getBoundingClientRect() || element.getBoundingClientRect()\n                        : EMPTY_CLIENT_RECT;\n\n                return this.previousTagPosition;\n            }\n            case 'word':\n                return tuiGetWordRange(this.range).getBoundingClientRect();\n            default: {\n                const rect = this.range.getBoundingClientRect();\n\n                if (\n                    rect.x === 0 &&\n                    rect.y === 0 &&\n                    rect.width === 0 &&\n                    rect.height === 0\n                ) {\n                    return (\n                        this.el.nativeElement.querySelector('p') ?? this.el.nativeElement\n                    ).getBoundingClientRect();\n                }\n\n                return rect;\n            }\n        }\n    }\n\n    public ngOnDestroy(): void {\n        if (this.ghost) {\n            this.vcr.element.nativeElement.removeChild(this.ghost);\n        }\n    }\n\n    private getRange(): Range {\n        const selection = this.doc?.getSelection();\n        const range = selection?.rangeCount ? selection.getRangeAt(0) : this.range;\n\n        return range.cloneRange();\n    }\n}\n","import {Injectable} from '@angular/core';\nimport {TuiPortalService} from '@taiga-ui/cdk';\n\n@Injectable()\nexport class TuiEditorPortalService extends TuiPortalService {}\n","import {Renderer2} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {\n    INITIALIZATION_TIPTAP_CONTAINER,\n    LAZY_EDITOR_EXTENSIONS,\n    LAZY_TIPTAP_EDITOR,\n    TIPTAP_EDITOR,\n    TUI_EDITOR_EXTENSIONS,\n    TUI_EDITOR_OPTIONS,\n    type TuiEditorOptions,\n} from '@taiga-ui/editor/common';\nimport {TuiTiptapEditorService} from '@taiga-ui/editor/directives/tiptap-editor';\nimport {type Editor, type Extension, type Mark, type Node} from '@tiptap/core';\nimport {\n    combineLatest,\n    map,\n    type Observable,\n    ReplaySubject,\n    shareReplay,\n    take,\n} from 'rxjs';\n\nimport {TuiEditorPortalService} from './portal/editor-portal.service';\n\ninterface ServerSideGlobal extends NodeJS.Global {\n    document: Document | undefined;\n}\n\ndeclare const globalThis: ServerSideGlobal;\n\nexport const TUI_EDITOR_PROVIDERS = [\n    {\n        provide: LAZY_EDITOR_EXTENSIONS,\n        deps: [TUI_EDITOR_EXTENSIONS],\n        useFactory: (\n            extensions: Array<Promise<Extension>>,\n        ): Observable<ReadonlyArray<Extension | Mark | Node>> => {\n            const extensions$ = new ReplaySubject<ReadonlyArray<Extension | Mark | Node>>(\n                1,\n            );\n\n            Promise.all(extensions.flat())\n                .then((extensions) => {\n                    const extensionsWithoutDuplicates = extensions.reduceRight(\n                        (acc, item) => {\n                            if (!acc.seen.has(item.name)) {\n                                acc.seen.add(item.name);\n                                acc.result.unshift(item);\n                            }\n\n                            return acc;\n                        },\n                        {seen: new Set<string>(), result: [] as typeof extensions},\n                    ).result;\n\n                    extensions$.next(extensionsWithoutDuplicates);\n                })\n                .catch(() => extensions$.next([]));\n\n            return extensions$;\n        },\n    },\n    {\n        provide: INITIALIZATION_TIPTAP_CONTAINER,\n        deps: [Renderer2],\n        useFactory: (renderer: Renderer2): HTMLElement => renderer.createElement('div'),\n    },\n    {\n        provide: TIPTAP_EDITOR,\n        deps: [\n            INITIALIZATION_TIPTAP_CONTAINER,\n            LAZY_EDITOR_EXTENSIONS,\n            LAZY_TIPTAP_EDITOR,\n            WA_WINDOW,\n            TUI_EDITOR_OPTIONS,\n        ],\n\n        useFactory: (\n            element: HTMLElement,\n            extensions: Observable<Array<Extension | Mark | Node>>,\n            editor: Observable<typeof Editor>,\n            winRef: Window,\n            options: TuiEditorOptions,\n        ): Observable<Editor | null> =>\n            combineLatest([editor, extensions]).pipe(\n                take(1),\n                map(([Editor, extensions]) => {\n                    try {\n                        if (!globalThis.document) {\n                            globalThis.document = winRef.document;\n                        }\n\n                        return new Editor({\n                            ...options,\n                            element,\n                            extensions,\n                        });\n                    } catch {\n                        return null;\n                    }\n                }),\n                shareReplay({bufferSize: 1, refCount: true}),\n            ),\n    },\n    TuiTiptapEditorService,\n    TuiEditorPortalService,\n];\n","import {NgIf, NgTemplateOutlet} from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    computed,\n    ContentChild,\n    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    inject,\n    Input,\n    NgZone,\n    type OnDestroy,\n    Output,\n    signal,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed, toSignal} from '@angular/core/rxjs-interop';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {\n    TUI_FALSE_HANDLER,\n    TUI_TRUE_HANDLER,\n    tuiAutoFocusOptionsProvider,\n    type TuiBooleanHandler,\n    TuiControl,\n    tuiInjectElement,\n    type TuiValueTransformer,\n    tuiWatch,\n    tuiZonefree,\n} from '@taiga-ui/cdk';\nimport {\n    TUI_ANIMATIONS_DEFAULT_DURATION,\n    TUI_APPEARANCE_OPTIONS,\n    TuiAppearance,\n    tuiAppearanceFocus,\n    tuiAppearanceMode,\n    tuiAppearanceState,\n    TuiDropdown,\n    TuiDropdownDirective,\n    TuiDropdownOpen,\n    TuiScrollbar,\n    tuiScrollbarOptionsProvider,\n    TuiTextfieldDropdownDirective,\n} from '@taiga-ui/core';\nimport {\n    type AbstractTuiEditor,\n    TIPTAP_EDITOR,\n    TUI_EDITOR_OPTIONS,\n    TUI_EDITOR_RESIZE_EVENT,\n    TUI_EDITOR_VALUE_TRANSFORMER,\n    type TuiEditorAttachedFile,\n} from '@taiga-ui/editor/common';\nimport {TuiEditLink} from '@taiga-ui/editor/components/edit-link';\nimport {TuiEditorSocket} from '@taiga-ui/editor/components/editor-socket';\nimport {TuiToolbar} from '@taiga-ui/editor/components/toolbar';\nimport {TuiToolbarHost} from '@taiga-ui/editor/components/toolbar-host';\nimport {\n    TuiTiptapEditor,\n    TuiTiptapEditorService,\n} from '@taiga-ui/editor/directives/tiptap-editor';\nimport {\n    tuiGetSelectionState,\n    tuiIsSafeLinkRange,\n    type TuiSelectionState,\n} from '@taiga-ui/editor/utils';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {delay, fromEvent, map, merge, throttleTime} from 'rxjs';\n\nimport {TuiEditorDropdownToolbar} from './dropdown/dropdown-toolbar.directive';\nimport {TUI_EDITOR_PROVIDERS} from './editor.providers';\n\ninterface ServerSideGlobal extends NodeJS.Global {\n    document: Document | undefined;\n}\n\n@Component({\n    standalone: true,\n    selector: 'tui-editor',\n    imports: [\n        NgIf,\n        NgTemplateOutlet,\n        PolymorpheusOutlet,\n        TuiDropdown,\n        TuiEditLink,\n        TuiEditorDropdownToolbar,\n        TuiEditorSocket,\n        TuiScrollbar,\n        TuiTiptapEditor,\n        TuiToolbar,\n        TuiToolbarHost,\n    ],\n    templateUrl: './editor.component.html',\n    styleUrls: ['./editor.component.less'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        TuiDropdownDirective,\n        TUI_EDITOR_PROVIDERS,\n        {\n            provide: TUI_APPEARANCE_OPTIONS,\n            useValue: {appearance: 'textfield'},\n        },\n        tuiScrollbarOptionsProvider({mode: 'hover'}),\n        tuiAutoFocusOptionsProvider({\n            delay: TUI_ANIMATIONS_DEFAULT_DURATION,\n            query: '[contenteditable].ProseMirror, input:not([type=file]), textarea, select',\n        }),\n    ],\n    hostDirectives: [\n        {\n            directive: TuiAppearance,\n            inputs: ['tuiAppearance: appearance'],\n        },\n        {\n            directive: TuiDropdownOpen,\n            inputs: ['tuiDropdownOpen'],\n            outputs: ['tuiDropdownOpenChange'],\n        },\n    ],\n    host: {\n        ngSkipHydration: 'true',\n        class: 't-wrapper',\n        '(tuiActiveZoneChange)': 'onActiveZone($event)',\n        '(click)': 'focus($event)',\n    },\n})\nexport class TuiEditor extends TuiControl<string> implements OnDestroy {\n    @ViewChild(TuiTiptapEditor, {read: ElementRef})\n    private readonly el?: ElementRef<HTMLElement>;\n\n    @ViewChild(forwardRef(() => TuiDropdownDirective))\n    private readonly ownDropdown?: TuiDropdownDirective;\n\n    private readonly contentProcessor = inject<\n        TuiValueTransformer<string | null, string | null>\n    >(TUI_EDITOR_VALUE_TRANSFORMER, {optional: true});\n\n    private readonly doc: Document | null =\n        inject<ServerSideGlobal | undefined>(WA_WINDOW)?.document ?? null;\n\n    private readonly zone = inject(NgZone);\n    private readonly destroy$ = inject(DestroyRef);\n\n    @ContentChild(TuiTextfieldDropdownDirective, {read: TemplateRef})\n    protected dropdownContent?: TemplateRef<unknown>;\n\n    protected readonly tuiDropdown = inject(TuiDropdownOpen, {optional: true});\n    protected readonly options = inject(TUI_EDITOR_OPTIONS);\n    protected readonly editorLoaded = signal(false);\n    protected readonly editorLoaded$ = inject(TIPTAP_EDITOR);\n    protected readonly cd = inject(ChangeDetectorRef);\n\n    protected readonly $ = this.editorLoaded$\n        .pipe(delay(0), takeUntilDestroyed())\n        .subscribe(() => {\n            this.hasMentionPlugin = !!this.editorService\n                .getOriginTiptapEditor()\n                ?.extensionManager.extensions.find(\n                    (extension) => extension.name === 'mention',\n                );\n\n            const processed =\n                this.contentProcessor?.fromControlValue(this.control.value) ??\n                this.control.value ??\n                '';\n\n            this.editorService.setValue(processed, {clearsHistory: true});\n            this.editorLoaded.set(true);\n            this.cd.detectChanges();\n\n            // patch after rendered contenteditable element\n            this.patchContentEditableElement();\n\n            // listen resize events after any DOM changes\n            this.listenResizeEvents();\n\n            // TODO: migrate to signal later\n            this.loaded.emit(this.editorLoaded());\n        });\n\n    /**\n     * @deprecated use placeholder\n     */\n    @Input()\n    public exampleText = this.options.exampleText;\n\n    @Input()\n    public placeholder = this.options.placeholder;\n\n    @Input()\n    public toolbar?: TemplateRef<unknown> | null = null;\n\n    @Input()\n    public floatingToolbar = this.options.floatingToolbar;\n\n    @Input()\n    public tools = this.options.tools;\n\n    @Output()\n    public readonly fileAttached = new EventEmitter<Array<TuiEditorAttachedFile<any>>>();\n\n    @Output()\n    public readonly focusIn = new EventEmitter<void>();\n\n    @Output()\n    public readonly focusOut = new EventEmitter<void>();\n\n    @Output()\n    public readonly loaded = new EventEmitter<boolean>();\n\n    public hasMentionPlugin = false;\n    public readonly hovered = toSignal(\n        merge(\n            fromEvent(tuiInjectElement(), 'mouseenter').pipe(map(TUI_TRUE_HANDLER)),\n            fromEvent(tuiInjectElement(), 'mouseleave').pipe(map(TUI_FALSE_HANDLER)),\n        ).pipe(tuiWatch(this.cdr)),\n    );\n\n    public readonly focused = tuiAppearanceFocus(false);\n    public readonly m = tuiAppearanceMode(this.mode);\n    public readonly s = tuiAppearanceState(\n        computed(() => {\n            if (this.disabled()) {\n                return 'disabled';\n            }\n\n            return this.hovered() ? 'hover' : null;\n        }),\n    );\n\n    public readonly rootEl = tuiInjectElement();\n    public readonly editorService = inject(TuiTiptapEditorService);\n\n    @Input('readOnly')\n    public set readOnlyMode(value: boolean) {\n        this.readOnly.set(value);\n    }\n\n    public get editor(): AbstractTuiEditor | null {\n        return this.editorService.getOriginTiptapEditor() ? this.editorService : null;\n    }\n\n    public get nativeFocusableElement(): HTMLDivElement | null {\n        return (\n            this.el?.nativeElement.querySelector('[contenteditable].ProseMirror') || null\n        );\n    }\n\n    public get selectionState(): TuiSelectionState {\n        return tuiGetSelectionState(this.editor);\n    }\n\n    public get mentionSuggestions(): string {\n        const before = this.selectionState.before;\n\n        return before.startsWith('@') && before.length > 1\n            ? before.replace('@', '') || ''\n            : '';\n    }\n\n    public get isMentionMode(): boolean {\n        return this.hasMentionPlugin && this.selectionState.before.startsWith('@');\n    }\n\n    public get isLinkSelected(): boolean {\n        const focusElement = this.doc?.getSelection()?.focusNode;\n        const parentFocusElement = focusElement?.parentNode;\n\n        return (\n            parentFocusElement?.nodeName.toLowerCase() === 'a' ||\n            parentFocusElement?.parentNode?.nodeName.toLowerCase() === 'a' ||\n            focusElement?.nodeName.toLowerCase() === 'a' ||\n            !!focusElement?.parentElement?.closest('a') ||\n            !!focusElement?.parentElement?.closest('[tuiEditorRootEditLink]') ||\n            !!focusElement?.parentElement?.closest('tui-dropdown')\n        );\n    }\n\n    public override writeValue(value: string | null): void {\n        const processed = this.contentProcessor?.fromControlValue(value) ?? value ?? '';\n\n        super.writeValue(processed);\n\n        if (this.editorLoaded()) {\n            this.editorService.setValue(processed);\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.editor?.destroy();\n    }\n\n    protected get dropdownSelectionHandler(): TuiBooleanHandler<Range> {\n        if (!this.focused() || this.readOnly()) {\n            return TUI_FALSE_HANDLER;\n        }\n\n        return this.floatingToolbar\n            ? (range) =>\n                  (this.value().trim() !== '' && !this.editor?.state?.selection.empty) ||\n                  this.openDropdownWhen(range)\n            : this.openDropdownWhen;\n    }\n\n    protected get hasPlaceholder(): boolean {\n        return (\n            !!(this.placeholder || this.exampleText) && !this.value() && !this.readOnly()\n        );\n    }\n\n    protected onModelChange(value: string | null): void {\n        if (value === '' && !this.editorLoaded()) {\n            return;\n        }\n\n        const processed = this.contentProcessor?.toControlValue(value) ?? value ?? '';\n\n        if (processed !== this.control.value) {\n            this.onChange(processed);\n        }\n    }\n\n    protected onActiveZone(focused: boolean): void {\n        this.focused.set(focused);\n\n        if (focused) {\n            this.focusIn.emit();\n        } else {\n            this.focusOut.emit();\n        }\n    }\n\n    protected addAnchor(anchor: string): void {\n        this.editor?.setAnchor(anchor);\n    }\n\n    protected removeAnchor(): void {\n        this.editor?.removeAnchor();\n    }\n\n    protected closeDropdown(): void {\n        this.ownDropdown?.toggle(false);\n    }\n\n    protected addLink(link: string): void {\n        this.editor?.selectClosest();\n        this.editor?.setLink(link);\n    }\n\n    protected removeLink(): void {\n        this.editor?.unsetLink();\n    }\n\n    protected focus(event: KeyboardEvent | MouseEvent): void {\n        const isSafeArea =\n            this.nativeFocusableElement?.contains(event.target as Node | null) ||\n            Array.from(this.rootEl.querySelectorAll('tui-toolbar-host')).some((toolbar) =>\n                toolbar.contains(event.target as Node | null),\n            );\n\n        if (isSafeArea) {\n            return;\n        }\n\n        event.preventDefault();\n        this.nativeFocusableElement?.focus();\n    }\n\n    private get focusNode(): Node | null {\n        return this.doc?.getSelection()?.focusNode ?? null;\n    }\n\n    private readonly openDropdownWhen = (range: Range): boolean =>\n        this.currentFocusedNodeIsTextAnchor(range) ||\n        this.isMentionMode ||\n        Boolean(this.tuiDropdown?.tuiDropdownOpen);\n\n    /**\n     * @description:\n     * The commonAncestorContainer not always relevant node element in Range,\n     * so the focusNode is used for the correct behaviour from the selection,\n     * which is the actual element at the moment\n     */\n    private currentFocusedNodeIsTextAnchor(range: Range): boolean {\n        return (\n            this.focusNode?.nodeName === 'A' ||\n            !!this.focusNode?.parentElement?.closest('a') ||\n            !!this.focusNode?.parentElement?.closest('[tuiEditorRootEditLink]') ||\n            (!!range.startContainer.parentElement?.closest('a') &&\n                tuiIsSafeLinkRange(range))\n        );\n    }\n\n    private patchContentEditableElement(): void {\n        this.nativeFocusableElement?.setAttribute('translate', this.options.translate);\n        this.nativeFocusableElement?.setAttribute(\n            'spellcheck',\n            String(this.options.spellcheck),\n        );\n    }\n\n    private listenResizeEvents(): void {\n        if (!this.el?.nativeElement) {\n            return;\n        }\n\n        fromEvent(this.el.nativeElement, TUI_EDITOR_RESIZE_EVENT)\n            .pipe(\n                throttleTime(0),\n                tuiZonefree(this.zone),\n                takeUntilDestroyed(this.destroy$),\n            )\n            .subscribe(() =>\n                this.editorService.valueChange$.next(this.editorService.html),\n            );\n    }\n}\n","<ng-template #toolbarTpl>\n    <tui-toolbar-host\n        *ngIf=\"editorLoaded()\"\n        [disabled]=\"!interactive()\"\n    >\n        <ng-container *polymorpheusOutlet=\"toolbar ?? defaultToolbar as text; context: {$implicit: editor}\">\n            {{ text }}\n        </ng-container>\n    </tui-toolbar-host>\n\n    <ng-template #defaultToolbar>\n        <tui-toolbar\n            [tools]=\"tools\"\n            (fileAttached)=\"fileAttached.emit($event)\"\n        >\n            <ng-content select=\"tools\" />\n        </tui-toolbar>\n    </ng-template>\n</ng-template>\n\n<ng-container *polymorpheusOutlet=\"!floatingToolbar ? toolbarTpl : null as text\">\n    {{ text }}\n</ng-container>\n<div\n    tuiEditorLabel\n    (mousedown)=\"focus($event)\"\n>\n    <ng-content />\n    <div\n        *ngIf=\"hasPlaceholder\"\n        tuiEditorPlaceholder\n    >\n        {{ placeholder || exampleText }}\n    </div>\n</div>\n\n<tui-scrollbar\n    tuiEditorScrollbar\n    (keydown)=\"focus($event)\"\n    (mousedown)=\"focus($event)\"\n>\n    <ng-container [ngTemplateOutlet]=\"editorTpl\" />\n</tui-scrollbar>\n\n<tui-editor-socket />\n\n<ng-template #editorTpl>\n    <div\n        tuiDropdownDirection=\"bottom\"\n        tuiDropdownLimitWidth=\"auto\"\n        tuiTiptapEditor\n        class=\"tui-editor-socket\"\n        [attr.data-contenteditable]=\"interactive()\"\n        [editable]=\"interactive()\"\n        [tuiDropdown]=\"dropdown\"\n        [tuiToolbarDropdown]=\"dropdownSelectionHandler\"\n        [tuiToolbarDropdownPosition]=\"floatingToolbar ? 'selection' : 'tag'\"\n        (valueChange)=\"onModelChange($event)\"\n    ></div>\n</ng-template>\n\n<ng-template #dropdown>\n    <ng-container *polymorpheusOutlet=\"floatingToolbar ? toolbarTpl : null as text\">\n        {{ text }}\n    </ng-container>\n\n    <tui-edit-link\n        *ngIf=\"isLinkSelected\"\n        #link\n        tuiEditorRootEditLink\n        (addLink)=\"link.anchorMode ? addAnchor($event) : addLink($event); closeDropdown()\"\n        (removeLink)=\"link.anchorMode ? removeAnchor() : removeLink(); closeDropdown()\"\n    />\n\n    <!-- TODO: drop mention in v5 -->\n    <ng-container *ngIf=\"isMentionMode\">\n        <ng-content select=\"mention\" />\n    </ng-container>\n\n    <ng-container *polymorpheusOutlet=\"tuiDropdown?.tuiDropdownOpen ? dropdownContent : null as text\">\n        {{ text }}\n    </ng-container>\n</ng-template>\n","import {Directive, ElementRef, inject} from '@angular/core';\nimport {tuiAsViewport, TuiDropdownService, TuiRectAccessor} from '@taiga-ui/core';\n\nimport {TuiEditorPortalService} from './editor-portal.service';\n\n@Directive({\n    standalone: true,\n    selector: '[tuiEditorPortal]',\n    providers: [\n        {provide: TuiDropdownService, useExisting: TuiEditorPortalService},\n        tuiAsViewport(TuiEditorPortal),\n    ],\n})\nexport class TuiEditorPortal extends TuiRectAccessor {\n    private readonly el: HTMLElement = inject(ElementRef).nativeElement;\n\n    public readonly type = 'viewport';\n\n    public getClientRect(): ClientRect {\n        return this.el.getBoundingClientRect();\n    }\n}\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {TuiPortals, TuiPortalService} from '@taiga-ui/cdk';\nimport {TuiDropdownService} from '@taiga-ui/core';\n\n@Component({\n    standalone: true,\n    selector: 'tui-editor-portal-host',\n    template: `\n        <ng-container #viewContainer />\n    `,\n    styleUrls: ['./editor-portal-host.style.less'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {provide: TuiPortalService, useExisting: TuiDropdownService},\n        {\n            provide: TuiPortals,\n            useExisting: TuiEditorPortalHost,\n        },\n    ],\n})\nexport class TuiEditorPortalHost extends TuiPortals {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}