{"version":3,"file":"geometricpanda-ng-storyblok-components-richtext.mjs","sources":["../../../../projects/geometricpanda/ng-storyblok/components/richtext/rich-text.directive.ts","../../../../projects/geometricpanda/ng-storyblok/components/richtext/geometricpanda-ng-storyblok-components-richtext.ts"],"sourcesContent":["import { Directive, effect, ElementRef, inject, input, Renderer2 } from '@angular/core';\nimport { ISbLinkedDocument, ISbLinkedUrlRichText } from '@geometricpanda/ng-storyblok';\nimport { NG_STORYBLOK_SLUG_REWRITE } from '@geometricpanda/ng-storyblok/tokens';\nimport type { ISbRichtext } from 'storyblok-js-client';\n\nconst enableResolveLinksErr = `ngStoryblok Rich Text Directive:\nUnable to create link. Please enable ngStoryblok with \"withResolveLinks('story')\"`;\n\ninterface DocumentNode {\n    type: string;\n    content?: DocumentNode[];\n    attrs?: Record<string, string>;\n    marks?: MarkNode[];\n    text?: string;\n}\n\nexport interface MarkNode {\n    type: string;\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    attrs?: any;\n}\n\nenum NodeType {\n    CODE_BLOCK = 'code_block',\n    HARD_BREAK = 'hard_break',\n    PARAGRAPH = 'paragraph',\n    HORIZONTAL_RULE = 'horizontal_rule',\n    HEADING = 'heading',\n    IMAGE = 'image',\n    ORDERED_LIST = 'ordered_list',\n    BULLET_LIST = 'bullet_list',\n    LIST_ITEM = 'list_item',\n    QUOTE = 'blockquote',\n    EMOJI = 'emoji',\n    TEXT = 'text',\n    BLOK = 'blok',\n}\n\nenum MarkType {\n    BOLD = 'bold',\n    ITALIC = 'italic',\n    STRIKE = 'strike',\n    LINK = 'link',\n    ANCHOR = 'anchor',\n    SUPERSCRIPT = 'superscript',\n    SUBSCRIPT = 'subscript',\n    CODE = 'code',\n    HIGHLIGHT = 'highlight',\n    TEXT_STYLE = 'textStyle',\n    UNDERLINE = 'underline',\n}\n\n@Directive({\n    selector: '[storyblokRichText]',\n    standalone: true,\n})\nexport class RichTextRendererDirective {\n    el = inject(ElementRef);\n    renderer = inject(Renderer2);\n    slugToUrl = inject(NG_STORYBLOK_SLUG_REWRITE, { optional: true })?.toRichtextUrl;\n\n    storyblokRichText = input.required<ISbRichtext>();\n\n    onChange = effect(() => {\n        const doc = this.storyblokRichText();\n        this.el.nativeElement.innerHTML = '';\n\n        if (!doc.content) {\n            return;\n        }\n\n        doc.content\n            .map((node) => this.renderNode(node))\n            .forEach((node) => this.renderer.appendChild(this.el.nativeElement, node));\n    });\n\n    private renderNode(node: DocumentNode): HTMLElement | Text | null {\n        if (node.type === NodeType.TEXT && node.text) {\n            const text = this.renderer.createText(node.text);\n            return node.marks ? this.applyMarks(text, node.marks) : text;\n        }\n\n        if (node.type === NodeType.BLOK) {\n            console.warn(new Error(`Rendering of bloks is not currently supported`));\n            return null;\n        }\n\n        const element = this.createElement(node);\n\n        if (!node.content) {\n            return element;\n        }\n\n        node.content\n            .map((child) => this.renderNode(child))\n            .forEach((child) => child && this.renderer.appendChild(element, child));\n\n        return element;\n    }\n\n    private createElement(node: DocumentNode): HTMLElement | null {\n        switch (node.type) {\n            case NodeType.PARAGRAPH:\n                return this.createHtmlElement('p', node);\n            case NodeType.HEADING:\n                return this.createHtmlElement(`h${node.attrs!['level']}`, node);\n            case NodeType.IMAGE:\n                return this.createHtmlElement('img', node);\n            case NodeType.ORDERED_LIST:\n                return this.createHtmlElement('ol', node);\n            case NodeType.BULLET_LIST:\n                return this.createHtmlElement('ul', node);\n            case NodeType.LIST_ITEM:\n                return this.createHtmlElement('li', node);\n            case NodeType.HORIZONTAL_RULE:\n                return this.createHtmlElement('hr', node);\n            case NodeType.QUOTE:\n                return this.createHtmlElement('blockquote', node);\n            case NodeType.EMOJI:\n                return this.createEmojiElement(node);\n            case NodeType.HARD_BREAK:\n                return this.renderer.createElement('br');\n            case NodeType.CODE_BLOCK:\n                return this.createHtmlElement('pre', node);\n            default:\n                console.warn(new Error(`Unhandled node type: ${node.type}`));\n                return null;\n        }\n    }\n\n    private createEmojiElement(node: DocumentNode): HTMLElement | null {\n        const { emoji, fallbackImage, name } = node.attrs!;\n\n        if (emoji) {\n            const element = this.renderer.createElement('span');\n            this.renderer.setAttribute(element, 'data-type', 'emoji');\n            this.renderer.setAttribute(element, 'data-name', name);\n            element.innerHTML = emoji;\n            return element;\n        }\n\n        if (!fallbackImage) {\n            const element = this.renderer.createElement('span');\n            this.renderer.setAttribute(element, 'data-type', 'emoji');\n            this.renderer.setAttribute(element, 'data-name', name);\n            element.innerHTML = name;\n            return element;\n        }\n\n        const element = this.renderer.createElement('img');\n        this.renderer.setAttribute(element, 'data-type', 'emoji');\n        this.renderer.setAttribute(element, 'data-name', name);\n        this.renderer.setAttribute(element, 'src', fallbackImage);\n        this.renderer.setAttribute(element, 'alt', name);\n        this.renderer.setAttribute(element, 'align', 'absmiddle');\n        this.renderer.setAttribute(element, 'loading', 'lazy');\n        this.renderer.setAttribute(element, 'draggable', 'false');\n        return element;\n    }\n\n    private createHtmlElement(tag: string, node: DocumentNode): HTMLElement {\n        const element = this.renderer.createElement(tag);\n\n        if (node.attrs) {\n            Object.entries(node.attrs).forEach(([key, value]) => this.renderer.setAttribute(element, key, value));\n        }\n\n        return element;\n    }\n\n    private applyMarks(element: HTMLElement, marks: MarkNode[]): HTMLElement {\n        let wrappedElement = element;\n        marks.forEach((mark) => {\n            switch (mark.type) {\n                case MarkType.UNDERLINE:\n                    wrappedElement = this.wrapWithMark(wrappedElement, 'u');\n                    break;\n                case MarkType.BOLD:\n                    wrappedElement = this.wrapWithMark(wrappedElement, 'strong');\n                    break;\n                case MarkType.ITALIC:\n                    wrappedElement = this.wrapWithMark(wrappedElement, 'em');\n                    break;\n                case MarkType.STRIKE:\n                    wrappedElement = this.wrapWithMark(wrappedElement, 'del');\n                    break;\n                case MarkType.SUBSCRIPT:\n                    wrappedElement = this.wrapWithMark(wrappedElement, 'sub');\n                    break;\n                case MarkType.SUPERSCRIPT:\n                    wrappedElement = this.wrapWithMark(wrappedElement, 'sup');\n                    break;\n                case MarkType.CODE:\n                    wrappedElement = this.wrapWithMark(wrappedElement, 'code');\n                    break;\n                case MarkType.HIGHLIGHT:\n                    wrappedElement = this.wrapWithMark(wrappedElement, 'span', {\n                        style: `background-color: ${mark.attrs.color};`,\n                    });\n                    break;\n                case MarkType.TEXT_STYLE:\n                    wrappedElement = this.wrapWithMark(wrappedElement, 'span', {\n                        style: `color: ${mark.attrs.color};`,\n                    });\n                    break;\n                case MarkType.LINK:\n                    wrappedElement = this.createLink(wrappedElement, mark.attrs);\n                    break;\n                case MarkType.ANCHOR:\n                    wrappedElement = this.wrapWithMark(wrappedElement, 'span', mark.attrs);\n                    break;\n                default:\n                    console.warn(`Unhandled mark type: ${mark.type}`, mark);\n                    break;\n            }\n        });\n        return wrappedElement;\n    }\n\n    private createLink(element: HTMLElement, attrs: ISbLinkedUrlRichText | ISbLinkedDocument): HTMLElement {\n        if (attrs['linktype'] === 'story') {\n            if (attrs['story']) {\n                const slug = attrs['story'].full_slug;\n                const anchor = attrs.anchor;\n                const href = this.slugToUrl ? this.slugToUrl(slug) : slug;\n                const target = [href, anchor].filter(Boolean).join('#');\n\n                return this.wrapWithMark(element, 'a', { href: target, 'data-internal-link': '' });\n            }\n\n            console.error(new Error(enableResolveLinksErr));\n        }\n\n        return this.wrapWithMark(element, 'a', {\n            href: (<ISbLinkedUrlRichText>attrs).href,\n            target: attrs.target,\n        });\n    }\n\n    private wrapWithMark(\n        element: HTMLElement,\n        tagName: string,\n        attrs: Record<string, string | undefined> = {},\n    ): HTMLElement {\n        const markElement = this.renderer.createElement(tagName);\n        Object.entries(attrs).forEach(([key, value]) => value && this.renderer.setAttribute(markElement, key, value));\n        this.renderer.appendChild(markElement, element);\n        return markElement;\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}