{"version":3,"file":"taiga-ui-editor-components-edit-link.mjs","sources":["../../../projects/editor/components/edit-link/pipes/filter-anchors.pipe.ts","../../../projects/editor/components/edit-link/pipes/short-url.pipe.ts","../../../projects/editor/components/edit-link/utils/edit-link-parse-url.ts","../../../projects/editor/components/edit-link/edit-link.component.ts","../../../projects/editor/components/edit-link/edit-link.template.html","../../../projects/editor/components/edit-link/taiga-ui-editor-components-edit-link.ts"],"sourcesContent":["import {Pipe, type PipeTransform} from '@angular/core';\n\n@Pipe({\n    standalone: true,\n    name: 'tuiFilterAnchors',\n})\nexport class TuiFilterAnchorsPipe implements PipeTransform {\n    public transform(anchors: string[], prefix: string, currentUrl: string): string[] {\n        return prefix === '#'\n            ? anchors.filter((anchor) => anchor !== currentUrl)\n            : anchors;\n    }\n}\n","import {Pipe, type PipeTransform} from '@angular/core';\n\nconst MAX_LENGTH = 60;\nconst START = MAX_LENGTH - 20;\nconst END = MAX_LENGTH - START - 10;\n\n@Pipe({\n    standalone: true,\n    name: 'tuiShortUrl',\n})\nexport class TuiShortUrlPipe implements PipeTransform {\n    public transform(url: string): string {\n        return url.length < MAX_LENGTH\n            ? url\n            : `${url.slice(0, Math.max(0, START))}...${url.slice(url.length - END)}`;\n    }\n}\n","// TODO: fix lint\n/* eslint-disable regexp/no-dupe-characters-character-class,regexp/no-unused-capturing-group,regexp/no-super-linear-backtracking,regexp/no-useless-escape,regexp/prefer-w,regexp/strict */\nimport {\n    TUI_EDITOR_LINK_HASH_PREFIX,\n    TUI_EDITOR_LINK_OSI_PROTOCOL_DIVIDER,\n    TUI_EDITOR_LINK_SIMPLE_PROTOCOL_DIVIDER,\n} from '@taiga-ui/editor/common';\n\ninterface TuiEditLinkParsed {\n    path: string;\n    prefix: string;\n}\n\nfunction splitOsiProtocol(rawUrl = ''): Array<string | undefined> {\n    const [url = '', queryParams = ''] = rawUrl.split(/\\?/);\n    const protocolPosition = url.indexOf(TUI_EDITOR_LINK_OSI_PROTOCOL_DIVIDER);\n    const [prefix, path] =\n        protocolPosition > -1\n            ? [\n                  url.slice(\n                      0,\n                      protocolPosition + TUI_EDITOR_LINK_OSI_PROTOCOL_DIVIDER.length,\n                  ),\n                  url.slice(\n                      protocolPosition + TUI_EDITOR_LINK_OSI_PROTOCOL_DIVIDER.length,\n                      url.length,\n                  ),\n              ]\n            : ['', url];\n\n    const pathWithQueries = path + (queryParams.length ? `?${queryParams}` : '');\n    const result = [prefix, pathWithQueries].filter(Boolean);\n\n    return path.includes('://') && result.length > 1\n        ? splitOsiProtocol(pathWithQueries)\n        : result;\n}\n\nfunction splitSimpleProtocol(rawUrl = ''): Array<string | undefined> {\n    const [url = '', queryParams = ''] = rawUrl.split(/\\?/);\n    const [prefix, path] = url.split(/:/).slice(-2).filter(Boolean);\n    const hardUrl = // https://domain.com/path:some:schema:data:test\n        (url.includes('/') && url.lastIndexOf(':') > url.indexOf('/')) ||\n        (url.includes('?') && url.lastIndexOf(':') > url.indexOf('?'));\n\n    return !hardUrl && prefix && path && !isValidUrl(url)\n        ? [`${prefix}:`, path + (queryParams.length ? `?${queryParams}` : '')]\n        : [];\n}\n\nexport function tuiEditLinkParseUrl(url = ''): TuiEditLinkParsed {\n    if (url.startsWith(TUI_EDITOR_LINK_HASH_PREFIX)) {\n        return {prefix: TUI_EDITOR_LINK_HASH_PREFIX, path: url.slice(1)};\n    }\n\n    const [prefix = '', path = ''] = url.includes(TUI_EDITOR_LINK_OSI_PROTOCOL_DIVIDER)\n        ? splitOsiProtocol(url)\n        : splitSimpleProtocol(url);\n\n    if (path.includes(TUI_EDITOR_LINK_SIMPLE_PROTOCOL_DIVIDER)) {\n        const [protocol, otherPart] = splitSimpleProtocol(path);\n\n        if (protocol && otherPart) {\n            return {prefix: protocol, path: otherPart};\n        }\n    }\n\n    if (url.startsWith('/') && !url.startsWith('//')) {\n        return {prefix: url.slice(0, 1), path: url.slice(1)};\n    }\n\n    if (url.startsWith('./')) {\n        return {prefix: url.slice(0, 2), path: url.slice(2)};\n    }\n\n    return {prefix, path: prefix === '' ? url : path};\n}\n\n/**\n * @internal\n */\nfunction isValidUrl(url: string): boolean {\n    return new RegExp(\n        String.raw`^([a-zA-Z]+:\\/\\/)?` + // protocol\n            String.raw`((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|localhost|` + // domain name\n            String.raw`((\\d{1,3}\\.){3}\\d{1,3}))` + // OR IP (v4) address\n            String.raw`(\\:\\d+)?(\\/[-a-z\\d%_.~+\\:]*)*` + // port and path\n            String.raw`(\\?[)(;&a-z\\d%_.~+=-]*)?` + // query string\n            String.raw`(\\#[-a-z\\d_]*)?$`, // fragment locator\n        'i',\n    ).test(url);\n}\n","import {AsyncPipe, NgForOf, NgIf} from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    inject,\n    Input,\n    type OnInit,\n    Output,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {\n    TUI_IS_IOS,\n    TuiAutoFocus,\n    tuiAutoFocusOptionsProvider,\n    tuiIsElement,\n} from '@taiga-ui/cdk';\nimport {TuiButton, TuiLink, TuiScrollbar} from '@taiga-ui/core';\nimport {\n    type AbstractTuiEditor,\n    TUI_EDITOR_LINK_HASH_PREFIX,\n    TUI_EDITOR_LINK_HTTPS_PREFIX,\n    TUI_EDITOR_LINK_TEXTS,\n    TUI_EDITOR_OPTIONS,\n    type TuiEditorLinkPrefix,\n    type TuiEditorLinkProtocol,\n} from '@taiga-ui/editor/common';\nimport {TuiTiptapEditorService} from '@taiga-ui/editor/directives/tiptap-editor';\nimport {TuiInputInline} from '@taiga-ui/kit';\n\nimport {TuiFilterAnchorsPipe} from './pipes/filter-anchors.pipe';\nimport {TuiShortUrlPipe} from './pipes/short-url.pipe';\nimport {tuiEditLinkParseUrl} from './utils/edit-link-parse-url';\n\ninterface ServerSideGlobal extends NodeJS.Global {\n    document: Document | undefined;\n}\n\n@Component({\n    standalone: true,\n    selector: 'tui-edit-link',\n    imports: [\n        AsyncPipe,\n        FormsModule,\n        NgForOf,\n        NgIf,\n        TuiAutoFocus,\n        TuiButton,\n        TuiFilterAnchorsPipe,\n        TuiInputInline,\n        TuiLink,\n        TuiScrollbar,\n        TuiShortUrlPipe,\n    ],\n    templateUrl: './edit-link.template.html',\n    styleUrls: ['./edit-link.style.less'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        /**\n         * Safari has a different behavior for autofocus,\n         * which causes focus to be lost at the moment of delay\n         * https://github.com/taiga-family/editor/issues/1717\n         */\n        {\n            provide: TUI_IS_IOS,\n            useValue: true,\n        },\n        tuiAutoFocusOptionsProvider({\n            delay: 0,\n            preventScroll: true,\n        }),\n    ],\n    host: {\n        '(document:selectionchange)': 'onSelectionChange()',\n        '(mousedown.capture)': 'onMouseDown($event)',\n    },\n})\nexport class TuiEditLink implements OnInit {\n    private readonly injectionEditor = inject(TuiTiptapEditorService, {optional: true});\n    private readonly doc: Document | null =\n        inject<ServerSideGlobal | undefined>(WA_WINDOW)?.document ?? null;\n\n    private isOnlyAnchorMode: boolean = this.detectAnchorMode();\n    protected readonly options = inject(TUI_EDITOR_OPTIONS);\n    protected url: string = this.getHrefOrAnchorId();\n    protected edit = !this.url;\n    protected prefix: TuiEditorLinkPrefix | undefined = this.makeDefaultPrefix();\n    protected anchorIds = this.getAllAnchorsIds();\n    protected readonly texts$ = inject(TUI_EDITOR_LINK_TEXTS);\n\n    @Input('editor')\n    public inputEditor: AbstractTuiEditor | null = null;\n\n    @Input()\n    public link?: string;\n\n    @Input()\n    public explicitOnlyLinkEdit = false;\n\n    @Output()\n    public readonly addLink = new EventEmitter<string>();\n\n    @Output()\n    public readonly removeLink = new EventEmitter<void>();\n\n    @Input()\n    public set anchorMode(mode: boolean) {\n        this.isOnlyAnchorMode = mode;\n        this.prefix = mode ? TUI_EDITOR_LINK_HASH_PREFIX : this.makeDefaultPrefix();\n    }\n\n    public get anchorMode(): boolean {\n        return this.isOnlyAnchorMode;\n    }\n\n    public ngOnInit(): void {\n        if (this.explicitOnlyLinkEdit) {\n            this.url = this.link ? this.removePrefix(this.link) : '';\n            this.edit = true;\n        }\n    }\n\n    protected get editor(): AbstractTuiEditor | null {\n        return this.injectionEditor ?? this.inputEditor;\n    }\n\n    protected get defaultProtocol(): TuiEditorLinkProtocol {\n        return this.options.linkOptions?.protocol ?? TUI_EDITOR_LINK_HTTPS_PREFIX;\n    }\n\n    protected get prefixIsHashMode(): boolean {\n        return this.prefix === TUI_EDITOR_LINK_HASH_PREFIX;\n    }\n\n    protected get hasUrl(): boolean {\n        return !!this.url;\n    }\n\n    protected get href(): string {\n        return `${this.prefix}${this.url}`;\n    }\n\n    protected get showAnchorsList(): boolean {\n        return (\n            !this.explicitOnlyLinkEdit &&\n            !this.anchorMode &&\n            this.edit &&\n            this.anchorIds.length > 0\n        );\n    }\n\n    protected onSelectionChange(): void {\n        if (this.isViewMode) {\n            this.url = this.getHrefOrAnchorId();\n            this.anchorMode = this.detectAnchorMode();\n        }\n    }\n\n    protected onMouseDown(event: MouseEvent): void {\n        if (tuiIsElement(event.target) && !event.target.matches('a, button, input')) {\n            event.preventDefault();\n        }\n    }\n\n    protected setAnchor(anchor: string): void {\n        this.url = anchor;\n        this.changePrefix(true);\n        this.addLink.emit(this.href);\n    }\n\n    protected changePrefix(useHash: boolean): void {\n        this.prefix = useHash ? TUI_EDITOR_LINK_HASH_PREFIX : this.defaultProtocol;\n    }\n\n    protected onSave(): void {\n        if (this.url) {\n            this.addLink.emit(this.href);\n        } else {\n            this.removeLink.emit();\n        }\n    }\n\n    protected onBackspace(): void {\n        if (!this.url) {\n            this.prefix = this.isOnlyAnchorMode\n                ? TUI_EDITOR_LINK_HASH_PREFIX\n                : this.defaultProtocol;\n        }\n    }\n\n    protected onEdit(): void {\n        this.edit = true;\n    }\n\n    protected onRemove(): void {\n        this.removeLink.emit();\n    }\n\n    protected onChange(url: string): void {\n        this.url = this.removePrefix(url);\n    }\n\n    protected onBlur(url: string): void {\n        if (this.explicitOnlyLinkEdit) {\n            return;\n        }\n\n        const range = this.editor?.getSelectionSnapshot();\n\n        if (range && !url && !this.url) {\n            this.editor?.setTextSelection({from: range.anchor, to: range.head});\n\n            if (this.anchorMode) {\n                this.editor?.removeAnchor();\n            } else {\n                this.editor?.toggleLink('');\n            }\n        }\n    }\n\n    protected onClear(): void {\n        this.url = '';\n    }\n\n    private get isViewMode(): boolean {\n        return !this.edit;\n    }\n\n    private makeDefaultPrefix(): TuiEditorLinkPrefix {\n        const a = this.getAnchorElement();\n        const defaultPrefix =\n            (tuiEditLinkParseUrl(a?.getAttribute('href') ?? '').prefix as\n                | TuiEditorLinkPrefix\n                | '') || this.defaultProtocol;\n\n        if (a) {\n            if (this.isOnlyAnchorMode) {\n                return TUI_EDITOR_LINK_HASH_PREFIX;\n            }\n\n            return (!a.getAttribute('href') && a.getAttribute('id')) ||\n                a.getAttribute('href')?.startsWith(TUI_EDITOR_LINK_HASH_PREFIX)\n                ? TUI_EDITOR_LINK_HASH_PREFIX\n                : defaultPrefix;\n        }\n\n        return defaultPrefix;\n    }\n\n    private detectAnchorMode(): boolean {\n        const a = this.getAnchorElement();\n\n        return (\n            !a?.href &&\n            (!!a?.getAttribute('id') || a?.getAttribute('data-type') === 'jump-anchor')\n        );\n    }\n\n    private getFocusedParentElement(): HTMLElement | null {\n        return this.doc?.getSelection()?.focusNode?.parentElement || null;\n    }\n\n    private getAnchorElement(): HTMLAnchorElement | null {\n        const focusable = this.getFocusedParentElement();\n\n        return (\n            focusable?.closest('a') ??\n            focusable?.querySelector('img')?.closest('a') ??\n            null\n        );\n    }\n\n    private getHrefOrAnchorId(): string {\n        const a = this.getAnchorElement();\n\n        return a\n            ? this.removePrefix(a.getAttribute('href') ?? a.getAttribute('id') ?? '')\n            : this.url;\n    }\n\n    private removePrefix(url: string): string {\n        const fullPath =\n            url.startsWith(TUI_EDITOR_LINK_HASH_PREFIX) ||\n            this.prefix === TUI_EDITOR_LINK_HASH_PREFIX ||\n            url.startsWith('/') ||\n            url.startsWith('./') ||\n            url.startsWith('http') ||\n            url.startsWith('://')\n                ? url\n                : `${this.prefix ?? ''}${url}`;\n\n        const {prefix, path} = tuiEditLinkParseUrl(fullPath);\n        const expectAnchorMode =\n            this.isOnlyAnchorMode ||\n            prefix === TUI_EDITOR_LINK_HASH_PREFIX ||\n            (prefix === '' && this.prefix === TUI_EDITOR_LINK_HASH_PREFIX);\n\n        if (expectAnchorMode) {\n            this.prefix = TUI_EDITOR_LINK_HASH_PREFIX;\n        } else if (prefix === '') {\n            this.prefix = this.defaultProtocol;\n        } else {\n            this.prefix = prefix as TuiEditorLinkPrefix;\n        }\n\n        return path;\n    }\n\n    private getAllAnchorsIds(): string[] {\n        const nodes: Element[] = Array.from(\n            this.editor\n                ?.getOriginTiptapEditor()\n                ?.view.dom.querySelectorAll('[data-type=\"jump-anchor\"]') ?? [],\n        );\n\n        return Array.from(nodes)\n            .map((node) => node.getAttribute('id') ?? '')\n            .filter(Boolean);\n    }\n}\n","<div class=\"t-edit-link\">\n    <ng-container *ngIf=\"edit; else view\">\n        <label class=\"t-label\">\n            <div class=\"t-label-properties\">\n                <ng-container *ngIf=\"anchorMode; else fullOptions\">Edit anchor</ng-container>\n                <ng-template #fullOptions>\n                    <span *ngIf=\"prefixIsHashMode; else urlTitle\">Link to anchor</span>\n                    <ng-template #urlTitle>\n                        <span>URL</span>\n                    </ng-template>\n                </ng-template>\n            </div>\n            <div class=\"t-url\">\n                <div class=\"t-prefix\">{{ prefix }}</div>\n                <tui-input-inline\n                    class=\"t-input\"\n                    [class.t-input_filled]=\"hasUrl\"\n                    (input)=\"onChange($any($event.target)?.value)\"\n                    (keydown.backspace)=\"onBackspace()\"\n                    (keydown.prevent.enter)=\"onSave()\"\n                >\n                    <ng-container *ngIf=\"texts$ | async as text\">\n                        {{ prefixIsHashMode ? text.anchorExample : text.urlExample }}\n                    </ng-container>\n                    <input\n                        tuiAutoFocus\n                        [(ngModel)]=\"url\"\n                        (blur)=\"onBlur(url)\"\n                    />\n                </tui-input-inline>\n            </div>\n        </label>\n        <button\n            appearance=\"icon\"\n            size=\"s\"\n            title=\"Clear\"\n            tuiIconButton\n            type=\"button\"\n            class=\"t-button\"\n            [iconStart]=\"options.icons.popupLinkRemove\"\n            (mousedown.prevent)=\"onClear()\"\n        ></button>\n        <button\n            appearance=\"icon\"\n            size=\"s\"\n            title=\"Save\"\n            tuiIconButton\n            type=\"button\"\n            class=\"t-button\"\n            [iconStart]=\"options.icons.popupLinkSave\"\n            (mousedown)=\"onSave()\"\n        ></button>\n    </ng-container>\n    <ng-template #view>\n        <a\n            target=\"_blank\"\n            tuiLink\n            class=\"t-link\"\n            [href]=\"href\"\n            [iconStart]=\"prefixIsHashMode ? options.icons.hash : options.icons.externalLink\"\n        >\n            {{ url | tuiShortUrl }}\n        </a>\n        <button\n            appearance=\"icon\"\n            size=\"s\"\n            title=\"Change link\"\n            tuiIconButton\n            type=\"button\"\n            class=\"t-button t-edit-button\"\n            [iconStart]=\"options.icons.popupPreviewLinkEdit\"\n            (click)=\"onEdit()\"\n        ></button>\n        <button\n            appearance=\"icon\"\n            automation-id=\"toolbar__popup-link-clear-button\"\n            size=\"s\"\n            title=\"Remove link\"\n            tuiIconButton\n            type=\"button\"\n            class=\"t-button\"\n            [iconStart]=\"options.icons.popupPreviewLinkClear\"\n            (click)=\"onRemove()\"\n        ></button>\n    </ng-template>\n</div>\n\n<ng-container *ngIf=\"showAnchorsList\">\n    <hr class=\"t-hr\" />\n    <tui-scrollbar>\n        <div class=\"t-anchor-list\">\n            <button\n                *ngFor=\"let id of anchorIds | tuiFilterAnchors: prefix ?? '' : url\"\n                type=\"button\"\n                class=\"t-anchor\"\n                (mousedown)=\"setAnchor(id)\"\n            >\n                #{{ id }}\n            </button>\n        </div>\n    </tui-scrollbar>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}