{"version":3,"file":"plait-angular-text.mjs","sources":["../../../packages/angular-text/src/plugins/link/link.component.ts","../../../packages/angular-text/src/plugins/mark-hotkey/with-mark-hotkey.ts","../../../packages/angular-text/src/plugins/paragraph/paragraph.component.ts","../../../packages/angular-text/src/plugins/with-inline-move.ts","../../../packages/angular-text/src/plugins/with-text.ts","../../../packages/angular-text/src/text-node/text.component.ts","../../../packages/angular-text/src/plugins/link/with-link-insert.ts","../../../packages/angular-text/src/text/text.component.ts","../../../packages/angular-text/src/text/text.component.html","../../../packages/angular-text/src/public-api.ts","../../../packages/angular-text/src/plait-angular-text.ts"],"sourcesContent":["import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\nimport { LinkElement } from '@plait/common';\nimport { BaseElementComponent } from 'slate-angular';\n\n@Component({\n    selector: 'a[plaitLink]',\n    template: `\n        <span contenteditable=\"false\" class=\"link-break-char\">{{ inlineChromiumBugfix }}</span>\n        <span #outletParent></span>\n        <span contenteditable=\"false\" class=\"link-break-char\">{{ inlineChromiumBugfix }}</span>\n    `,\n    host: {\n        '[attr.href]': 'element.url',\n        target: '_blank',\n        class: 'plait-link-node'\n    },\n    standalone: true\n})\nexport class PlaitLinkNodeComponent extends BaseElementComponent<LinkElement> implements OnInit {\n    // Put this at the start and end of an inline component to work around this Chromium bug:\n    // https://bugs.chromium.org/p/chromium/issues/detail?id=1249405\n    inlineChromiumBugfix = String.fromCodePoint(160);\n\n    @ViewChild('outletParent', { read: ElementRef, static: true })\n    outletParent!: ElementRef;\n\n    getOutletParent = () => {\n        return this.outletParent.nativeElement;\n    };\n\n    ngOnInit() {\n        super.ngOnInit();\n    }\n}\n","import { AngularEditor } from 'slate-angular';\nimport { MarkEditor, markShortcuts, withMark } from '@plait/text-plugins';\n\nexport const withMarkHotkey = <T extends AngularEditor & MarkEditor>(editor: T): T => {\n    const e = editor;\n\n    const { onKeydown } = e;\n\n    e.onKeydown = (event: KeyboardEvent) => {\n        markShortcuts(editor, event);\n        onKeydown(event);\n    };\n\n    return withMark(e);\n};\n","import { Component, ChangeDetectionStrategy, OnInit } from '@angular/core';\nimport { ParagraphElement } from '@plait/common';\nimport { BaseElementComponent } from 'slate-angular';\n\n@Component({\n    selector: 'div[plaitTextParagraphElement]',\n    template: ``,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    host: {\n        class: 'plait-text-paragraph'\n    }\n})\nexport class ParagraphElementComponent extends BaseElementComponent<ParagraphElement> implements OnInit {\n    ngOnInit(): void {\n        super.ngOnInit();\n        this.applyAlign();\n    }\n\n    onContextChange(): void {\n        super.onContextChange();\n        if (this.initialized) {\n            this.applyAlign();\n        }\n    }\n\n    applyAlign() {\n        if (this.element.align) {\n            if (this.nativeElement.style.textAlign !== this.element.align) {\n                this.nativeElement.style.textAlign = this.element.align;\n            }\n        } else if (this.nativeElement.style.textAlign) {\n            this.nativeElement.style.removeProperty('text-align');\n        }\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { Editor, Element, Transforms, Range, Path } from 'slate';\nimport { AngularEditor, hotkeys } from 'slate-angular';\n\nexport const withInlineMove = <T extends AngularEditor>(editor: T): T => {\n    const { onKeydown } = editor;\n\n    editor.onKeydown = (event: KeyboardEvent) => {\n        const { selection } = editor;\n        if (!selection || !selection.anchor || !selection.focus) {\n            onKeydown(event);\n            return;\n        }\n        const isMoveBackward = hotkeys.isMoveBackward(event);\n        const isMoveForward = hotkeys.isMoveForward(event);\n        const isCollapsed = selection && Range.isCollapsed(selection);\n        const isInlineNode = isInline(editor);\n        if (isCollapsed && isMoveForward) {\n            let isInlineCodeBefore = false;\n            if (!isInlineNode) {\n                try {\n                    const { path } = Editor.after(editor, selection)!;\n                    if (path) {\n                        isInlineCodeBefore = isInline(editor, path);\n                    }\n                } catch (error) {}\n            }\n            if (isInlineNode || isInlineCodeBefore) {\n                event.preventDefault();\n                Transforms.move(editor, { unit: 'offset' });\n                return;\n            }\n        }\n        if (isCollapsed && isMoveBackward) {\n            let isInlineCodeAfter = false;\n            if (!isInlineNode) {\n                try {\n                    const { path } = Editor.before(editor, selection)!;\n                    isInlineCodeAfter = isInline(editor, path);\n                } catch (error) {}\n            }\n            if (isInlineNode || isInlineCodeAfter) {\n                event.preventDefault();\n                Transforms.move(editor, { unit: 'offset', reverse: true });\n                return;\n            }\n        }\n        onKeydown(event);\n    };\n\n    return editor;\n};\n\nexport const isInline = (editor: Editor, path?: Path): boolean => {\n    const [inlineNode] = Editor.nodes(editor, {\n        at: path ? path : editor.selection?.anchor.path,\n        match: n => Element.isElement(n) && Editor.isInline(editor, n) && !Editor.isVoid(editor, n)\n    });\n    return !!inlineNode;\n};\n","import { CLIPBOARD_FORMAT_KEY } from '@plait/text-plugins';\nimport { AngularEditor } from 'slate-angular';\nimport { PlaitTextEditor } from './text.editor';\n\nexport const withText = <T extends AngularEditor>(editor: T) => {\n    const e = editor as T & PlaitTextEditor;\n    const { insertData } = e;\n\n    e.insertBreak = () => {\n        editor.insertText('\\n');\n    };\n\n    e.insertData = (data: DataTransfer) => {\n        let text = data.getData('text/plain');\n        let plaitData = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);\n        if (!plaitData && text) {\n            if (text.endsWith('\\n')) {\n                text = text.substring(0, text.length - 1);\n            }\n            text = text.trim().replace(/\\t+/g, ' ');\n            e.insertText(text);\n            return;\n        }\n        insertData(data);\n    };\n\n    return e;\n};\n","import { ChangeDetectorRef, Component, ElementRef, Renderer2 } from '@angular/core';\nimport { CustomText } from '@plait/common';\nimport { MarkTypes } from '@plait/text-plugins';\nimport { BaseTextComponent } from 'slate-angular';\n\n@Component({\n    selector: 'span[plaitText]',\n    template: ``,\n    host: {\n        'data-slate-node': 'text'\n    },\n    standalone: true\n})\nexport class PlaitTextNodeComponent extends BaseTextComponent<CustomText> {\n    constructor(public renderer2: Renderer2) {\n        super();\n    }\n\n    excludes = ['color', 'font-size', 'text'];\n    attributes: string[] = [];\n\n    applyTextMark() {\n        this.attributes.forEach(attr => {\n            this.renderer2.removeAttribute(this.elementRef.nativeElement, attr);\n        });\n        this.attributes = [];\n        for (const key in this.text) {\n            if (Object.prototype.hasOwnProperty.call(this.text, key) && !this.excludes.includes(key)) {\n                const attr = `the-${key}`;\n                this.renderer2.setAttribute(this.elementRef.nativeElement, attr, 'true');\n                this.attributes.push(attr);\n            }\n        }\n\n        const fontSize = this.text[MarkTypes.fontSize];\n        if (fontSize) {\n            this.renderer2.setAttribute(this.elementRef.nativeElement, `plait-${MarkTypes.fontSize}`, fontSize);\n        } else {\n            this.renderer2.removeAttribute(this.elementRef.nativeElement, `plait-${MarkTypes.fontSize}`);\n        }\n\n        if (this.text[MarkTypes.color]) {\n            this.renderer2.setStyle(this.elementRef.nativeElement, 'color', this.text[MarkTypes.color]);\n        } else {\n            this.renderer2.removeStyle(this.elementRef.nativeElement, 'color');\n        }\n    }\n\n    onContextChange() {\n        super.onContextChange();\n        this.applyTextMark();\n    }\n}\n","import { Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { LinkEditor, getTextFromClipboard, isUrl, withLink } from '@plait/text-plugins';\n\nexport const withPasteLink = <T extends AngularEditor>(editor: T): T => {\n    const { insertData } = editor;\n    editor.insertData = data => {\n        const text = getTextFromClipboard(data);\n        if (typeof text === 'string' && text && isUrl(text)) {\n            LinkEditor.wrapLink(editor, text, text);\n            Transforms.move(editor, { distance: 1, unit: 'offset' });\n        } else {\n            insertData(data);\n        }\n    };\n\n    return withLink(editor);\n};\n","import {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    HostBinding,\n    Input,\n    OnChanges,\n    OnInit,\n    Renderer2,\n    SimpleChanges,\n    ViewChild\n} from '@angular/core';\nimport { isKeyHotkey } from 'is-hotkey';\nimport { Editor, Element, Text, Transforms, createEditor } from 'slate';\nimport { SlateEditable, withAngular } from 'slate-angular';\nimport { withHistory } from 'slate-history';\nimport { PlaitLinkNodeComponent } from '../plugins/link/link.component';\nimport { withMarkHotkey } from '../plugins/mark-hotkey/with-mark-hotkey';\nimport { ParagraphElementComponent } from '../plugins/paragraph/paragraph.component';\nimport { withInlineMove } from '../plugins/with-inline-move';\nimport { withText } from '../plugins/with-text';\nimport { PlaitTextNodeComponent } from '../text-node/text.component';\nimport { FormsModule } from '@angular/forms';\nimport { LinkElement, TextChangeData, TextPlugin } from '@plait/common';\nimport { CLIPBOARD_FORMAT_KEY, MarkTypes } from '@plait/text-plugins';\nimport { withPasteLink } from '../plugins/link/with-link-insert';\nimport { CommonModule } from '@angular/common';\nimport { PlaitBoard } from '@plait/core';\n\n@Component({\n    selector: 'plait-text',\n    templateUrl: './text.component.html',\n    imports: [SlateEditable, FormsModule, CommonModule]\n})\nexport class PlaitTextComponent implements OnInit, AfterViewInit, OnChanges {\n    @HostBinding('class') hostClass = 'plait-text-container';\n\n    children: Element[] = [];\n\n    @Input() textPlugins?: TextPlugin[];\n\n    @Input() set text(text: Element) {\n        this.children = [text];\n        this.cdr.markForCheck();\n    }\n\n    @Input() readonly = true;\n\n    @ViewChild('slateEditable')\n    slateEditable!: SlateEditable;\n\n    @Input()\n    onChange!: (data: TextChangeData) => void;\n\n    @Input()\n    afterInit?: (editor: Editor) => void;\n\n    @Input()\n    onComposition!: (event: CompositionEvent) => void;\n\n    @Input()\n    board!: PlaitBoard;\n\n    editor = withInlineMove(withPasteLink(withMarkHotkey(withText(withHistory(withAngular(createEditor(), CLIPBOARD_FORMAT_KEY))))));\n\n    nativeElement() {\n        return this.elementRef.nativeElement;\n    }\n\n    constructor(public renderer2: Renderer2, private cdr: ChangeDetectorRef, public elementRef: ElementRef<HTMLElement>) {}\n\n    valueChange() {\n        this.onChange({ newText: this.editor.children[0] as Element, operations: this.editor.operations });\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {}\n\n    ngOnInit(): void {\n        if (this.textPlugins) {\n            this.textPlugins.forEach(plugin => {\n                plugin(this.editor);\n            });\n        }\n        this.editor.board = this.board;\n    }\n\n    ngAfterViewInit(): void {\n        this.afterInit && this.afterInit(this.editor);\n    }\n\n    renderElement = (element: Element) => {\n        const render = this.editor.renderElement;\n        if (render && render(element)) {\n            return render(element);\n        }\n\n        if ((element as LinkElement).type === 'link') {\n            return PlaitLinkNodeComponent;\n        }\n\n        return ParagraphElementComponent;\n    };\n\n    renderText: any = (text: Text): PlaitTextNodeComponent | null => {\n        for (const key in MarkTypes) {\n            if ((text as any)[(MarkTypes as any)[key]]) {\n                return PlaitTextNodeComponent as any;\n            }\n        }\n        return null;\n    };\n\n    compositionStart = (event: CompositionEvent) => {\n        this.onComposition(event);\n    };\n\n    compositionUpdate = (event: CompositionEvent) => {\n        this.onComposition(event);\n    };\n\n    compositionEnd = (event: CompositionEvent) => {\n        this.onComposition(event);\n    };\n\n    onKeydown = (event: KeyboardEvent) => {\n        if (isKeyHotkey('mod+a', event)) {\n            Transforms.select(this.editor, [0]);\n            event.preventDefault();\n        }\n        this.editor.onKeydown(event);\n    };\n\n    scrollSelectionIntoView = () => {\n        // prevent auto scroll\n    };\n}\n","<slate-editable\n    #slateEditable\n    [editor]=\"editor\"\n    [readonly]=\"readonly\"\n    [(ngModel)]=\"children\"\n    (ngModelChange)=\"valueChange()\"\n    [keydown]=\"onKeydown\"\n    [renderElement]=\"renderElement\"\n    [compositionStart]=\"compositionStart\"\n    [compositionUpdate]=\"compositionUpdate\"\n    [compositionEnd]=\"compositionEnd\"\n    [renderText]=\"renderText\"\n    [ngClass]=\"{'editing': !readonly}\"\n    [scrollSelectionIntoView]=\"scrollSelectionIntoView\"\n></slate-editable>\n","/*\n * Public API Surface of richtext\n */\nexport * from './text/text.component';\nexport * from './plugins/text.editor';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}