UNPKG

ngx-contentful-rich-text

Version:

Angular renderer for the Contentful rich text field type

1 lines 23 kB
{"version":3,"file":"ngx-contentful-rich-text.mjs","sources":["../../../projects/ngx-contentful-rich-text/src/lib/services/renderer-provider.service.ts","../../../projects/ngx-contentful-rich-text/src/lib/classes/renderer-host.class.ts","../../../projects/ngx-contentful-rich-text/src/lib/components/text-value.component.ts","../../../projects/ngx-contentful-rich-text/src/lib/directives/mark-renderer-host.directive.ts","../../../projects/ngx-contentful-rich-text/src/lib/directives/node-renderer-host.directive.ts","../../../projects/ngx-contentful-rich-text/src/lib/ngx-contentful-rich-text.component.ts","../../../projects/ngx-contentful-rich-text/src/lib/classes/mark-renderer.class.ts","../../../projects/ngx-contentful-rich-text/src/lib/components/default-mark-renderer.component.ts","../../../projects/ngx-contentful-rich-text/src/lib/classes/node-renderer.class.ts","../../../projects/ngx-contentful-rich-text/src/lib/components/default-node-renderer.component.ts","../../../projects/ngx-contentful-rich-text/src/lib/ngx-contentful-rich-text.module.ts","../../../projects/ngx-contentful-rich-text/src/public-api.ts","../../../projects/ngx-contentful-rich-text/src/ngx-contentful-rich-text.ts"],"sourcesContent":["import { Injectable, Type } from '@angular/core';\nimport { Block, Inline } from '@contentful/rich-text-types';\n\nimport { MarkRenderer, Text } from '../classes/mark-renderer.class';\nimport { NodeRenderer } from '../classes/node-renderer.class';\n\nexport type NodeRendererFunction = (node: Block | Inline) => Type<NodeRenderer>;\nexport type NodeRendererResolver = Type<NodeRenderer> | NodeRendererFunction;\n\nexport type MarkRendererFunction = (node: Text) => Type<MarkRenderer>;\nexport type MarkRendererResolver = Type<MarkRenderer> | MarkRendererFunction;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RendererProviderService {\n private nodeRenderers: Record<string, NodeRendererResolver> = {};\n private markRenderers: Record<string, MarkRendererResolver> = {};\n\n async getMarkRenderer(node: Text): Promise<Type<MarkRenderer>> {\n const mark = node.marks[node.markIndex];\n const resolver = this.markRenderers[mark.type];\n let renderer: Type<MarkRenderer>;\n try {\n renderer = (resolver as MarkRendererFunction)(node);\n } catch (error) {\n renderer = resolver as Type<MarkRenderer>;\n }\n if (!renderer) {\n const { DefaultMarkRendererComponent } = await import(\n '../components/default-mark-renderer.component'\n );\n renderer = DefaultMarkRendererComponent;\n }\n return renderer;\n }\n\n async getNodeRenderer(node: Block | Inline): Promise<Type<NodeRenderer>> {\n const resolver = this.nodeRenderers[node.nodeType];\n let renderer: Type<NodeRenderer>;\n try {\n renderer = (resolver as NodeRendererFunction)(node);\n } catch (error) {\n renderer = resolver as Type<NodeRenderer>;\n }\n if (!renderer) {\n const { DefaultNodeRendererComponent } = await import(\n '../components/default-node-renderer.component'\n );\n renderer = DefaultNodeRendererComponent;\n }\n return renderer;\n }\n\n setNodeRenderers(customRenderers: Record<string, NodeRendererResolver>) {\n this.nodeRenderers = Object.assign(this.nodeRenderers, customRenderers);\n }\n\n setMarkRenderers(customRenderers: Record<string, MarkRendererResolver>) {\n this.markRenderers = Object.assign(this.markRenderers, customRenderers);\n }\n}\n","import { ViewContainerRef, Type } from '@angular/core';\nimport { Block, Inline, Text } from '@contentful/rich-text-types';\nimport { MarkRenderer } from '../classes/mark-renderer.class';\nimport { NodeRenderer } from '../classes/node-renderer.class';\nimport { TextValueComponent } from '../components/text-value.component';\n\nexport abstract class RendererHost {\n render(\n viewContainerRef: ViewContainerRef,\n component: Type<NodeRenderer | MarkRenderer | TextValueComponent>,\n node: Block | Inline | Text\n ): void {\n viewContainerRef.clear();\n const componentRef = viewContainerRef.createComponent(component);\n componentRef.instance.node = node;\n componentRef.changeDetectorRef.detectChanges();\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { Text } from '@contentful/rich-text-types';\n\n@Component({\n template: '{{ node.value }}',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextValueComponent {\n @Input() node: Text;\n}\n","import {\n Directive,\n Input,\n OnInit,\n Type,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { MarkRenderer, Text } from '../classes/mark-renderer.class';\nimport { RendererHost } from '../classes/renderer-host.class';\nimport { TextValueComponent } from '../components/text-value.component';\nimport { RendererProviderService } from '../services/renderer-provider.service';\n\n@Directive({\n selector: '[ngxMarkRendererHost]',\n})\nexport class MarkRendererHostDirective extends RendererHost implements OnInit {\n @Input() node: Text;\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private rendererProvider: RendererProviderService\n ) {\n super();\n }\n\n ngOnInit() {\n const render = (component: Type<MarkRenderer | TextValueComponent>) =>\n this.render(this.viewContainerRef, component, this.node);\n\n if (isNaN(this.node.markIndex)) {\n // Create new object because node object might not be extensible\n this.node = {\n ...this.node,\n markIndex: 0,\n };\n } else {\n this.node.markIndex += 1;\n }\n if (this.node.marks.length > this.node.markIndex) {\n this.rendererProvider.getMarkRenderer(this.node).then(render);\n } else {\n render(TextValueComponent);\n }\n }\n}\n","import { Directive, Input, OnInit, ViewContainerRef } from '@angular/core';\nimport { Block, Inline } from '@contentful/rich-text-types';\nimport { RendererHost } from '../classes/renderer-host.class';\n\nimport { RendererProviderService } from '../services/renderer-provider.service';\n\n@Directive({\n selector: '[ngxNodeRendererHost]',\n})\nexport class NodeRendererHostDirective extends RendererHost implements OnInit {\n @Input() node: Block | Inline;\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private rendererProvider: RendererProviderService\n ) {\n super();\n }\n\n ngOnInit() {\n this.rendererProvider\n .getNodeRenderer(this.node)\n .then((component) =>\n this.render(this.viewContainerRef, component, this.node)\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { Block, Document, Inline, Text } from '@contentful/rich-text-types';\n\nimport {\n MarkRendererResolver,\n NodeRendererResolver,\n RendererProviderService,\n} from './services/renderer-provider.service';\n\n@Component({\n selector: 'ngx-contentful-rich-text',\n template: `\n <ng-container *ngIf=\"nodes?.length\">\n <ng-container *ngFor=\"let node of nodes\">\n <ng-container\n *ngIf=\"node.nodeType !== 'text'; else textNode\"\n ngxNodeRendererHost\n [node]=\"node\"\n >\n </ng-container>\n <ng-template #textNode>\n <ng-container ngxMarkRendererHost [node]=\"node\"></ng-container>\n </ng-template>\n </ng-container>\n </ng-container>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgxContentfulRichTextComponent implements OnInit, OnChanges {\n /** Document to render */\n @Input() document: Document;\n\n /** Nodes to render */\n @Input() nodes: Array<Block | Inline | Text>;\n\n /** Custom renderers for block and inline nodes */\n @Input() nodeRenderers: Record<string, NodeRendererResolver>;\n\n /** Custom renderers for marks */\n @Input() markRenderers: Record<string, MarkRendererResolver>;\n\n constructor(private rendererProvider: RendererProviderService) {}\n\n ngOnInit(): void {\n this.rendererProvider.setNodeRenderers(this.nodeRenderers);\n this.rendererProvider.setMarkRenderers(this.markRenderers);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.document?.currentValue) {\n this.nodes = [changes.document.currentValue];\n }\n }\n}\n","import { Text as IText } from '@contentful/rich-text-types';\n\nexport interface Text extends IText {\n markIndex: number;\n}\nexport abstract class MarkRenderer {\n node: Text;\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { MARKS } from '@contentful/rich-text-types';\n\nimport { MarkRenderer } from '../classes/mark-renderer.class';\n\nexport const TEXT = `<ng-container ngxMarkRendererHost [node]=\"node\"></ng-container>`;\n\n@Component({\n template: `\n <ng-container [ngSwitch]=\"node.marks[node.markIndex].type\">\n <b *ngSwitchCase=\"MARKS.BOLD\">${TEXT}</b>\n <code *ngSwitchCase=\"MARKS.CODE\">${TEXT}</code>\n <i *ngSwitchCase=\"MARKS.ITALIC\">${TEXT}</i>\n <u *ngSwitchCase=\"MARKS.UNDERLINE\">${TEXT}</u>\n </ng-container>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DefaultMarkRendererComponent extends MarkRenderer {\n MARKS: typeof MARKS = MARKS;\n}\n","import { Block, Inline } from '@contentful/rich-text-types';\n\nexport abstract class NodeRenderer {\n node: Block | Inline;\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { BLOCKS, INLINES } from '@contentful/rich-text-types';\n\nimport { NodeRenderer } from '../classes/node-renderer.class';\n\nexport const CHILDREN =\n '<ngx-contentful-rich-text [nodes]=\"node.content\"></ngx-contentful-rich-text>';\n\nconst DEFAULT_INLINE =\n '<span>type: {{ node.nodeType }} id: {{ node.data.target.sys.id }}</span>';\n\n@Component({\n template: `\n <ng-container [ngSwitch]=\"node.nodeType\">\n <ng-container *ngSwitchCase=\"BLOCKS.DOCUMENT\">${CHILDREN}</ng-container>\n <div *ngSwitchCase=\"BLOCKS.EMBEDDED_ENTRY\">${CHILDREN}</div>\n <h1 *ngSwitchCase=\"BLOCKS.HEADING_1\">${CHILDREN}</h1>\n <h2 *ngSwitchCase=\"BLOCKS.HEADING_2\">${CHILDREN}</h2>\n <h3 *ngSwitchCase=\"BLOCKS.HEADING_3\">${CHILDREN}</h3>\n <h4 *ngSwitchCase=\"BLOCKS.HEADING_4\">${CHILDREN}</h4>\n <h5 *ngSwitchCase=\"BLOCKS.HEADING_5\">${CHILDREN}</h5>\n <h6 *ngSwitchCase=\"BLOCKS.HEADING_6\">${CHILDREN}</h6>\n <hr *ngSwitchCase=\"BLOCKS.HR\" />\n <li *ngSwitchCase=\"BLOCKS.LIST_ITEM\">${CHILDREN}</li>\n <ol *ngSwitchCase=\"BLOCKS.OL_LIST\">\n ${CHILDREN}\n </ol>\n <p *ngSwitchCase=\"BLOCKS.PARAGRAPH\">${CHILDREN}</p>\n <blockquote *ngSwitchCase=\"BLOCKS.QUOTE\">${CHILDREN}</blockquote>\n <ul *ngSwitchCase=\"BLOCKS.UL_LIST\">\n ${CHILDREN}\n </ul>\n <ng-container *ngSwitchCase=\"INLINES.ASSET_HYPERLINK\">\n ${DEFAULT_INLINE}\n </ng-container>\n <ng-container *ngSwitchCase=\"INLINES.EMBEDDED_ENTRY\">\n ${DEFAULT_INLINE}\n </ng-container>\n <ng-container *ngSwitchCase=\"INLINES.ENTRY_HYPERLINK\">\n ${DEFAULT_INLINE}\n </ng-container>\n <a *ngSwitchCase=\"INLINES.HYPERLINK\" [href]=\"node.data.uri\">\n ${CHILDREN}\n </a>\n </ng-container>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DefaultNodeRendererComponent extends NodeRenderer {\n BLOCKS: typeof BLOCKS = BLOCKS;\n INLINES: typeof INLINES = INLINES;\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DefaultMarkRendererComponent } from './components/default-mark-renderer.component';\nimport { DefaultNodeRendererComponent } from './components/default-node-renderer.component';\nimport { TextValueComponent } from './components/text-value.component';\nimport { MarkRendererHostDirective } from './directives/mark-renderer-host.directive';\nimport { NodeRendererHostDirective } from './directives/node-renderer-host.directive';\nimport { NgxContentfulRichTextComponent } from './ngx-contentful-rich-text.component';\n\n@NgModule({\n declarations: [\n DefaultMarkRendererComponent,\n DefaultNodeRendererComponent,\n MarkRendererHostDirective,\n NgxContentfulRichTextComponent,\n NodeRendererHostDirective,\n TextValueComponent,\n ],\n imports: [CommonModule],\n exports: [MarkRendererHostDirective, NgxContentfulRichTextComponent],\n})\nexport class NgxContentfulRichTextModule {}\n","/*\n * Public API Surface of ngx-contentful-rich-text\n */\n\nexport * from './lib/ngx-contentful-rich-text.component';\nexport * from './lib/ngx-contentful-rich-text.module';\nexport * from './lib/directives/mark-renderer-host.directive';\n\nexport { MarkRenderer } from './lib/classes/mark-renderer.class';\nexport * from './lib/classes/node-renderer.class';\n\nexport * from './lib/components/default-mark-renderer.component';\nexport * from './lib/components/default-node-renderer.component';\n\nexport * from './lib/services/renderer-provider.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.RendererProviderService","i2","i3.MarkRendererHostDirective","i4.NodeRendererHostDirective","i2.MarkRendererHostDirective","i2.NgxContentfulRichTextComponent"],"mappings":"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"}