ngx-contentful-rich-text
Version:
Angular renderer for the Contentful rich text field type
58 lines • 9.87 kB
JavaScript
import { ChangeDetectionStrategy, Component } from '@angular/core';
import { BLOCKS, INLINES } from '@contentful/rich-text-types';
import { NodeRenderer } from '../classes/node-renderer.class';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
import * as i2 from "../ngx-contentful-rich-text.component";
export const CHILDREN = '<ngx-contentful-rich-text [nodes]="node.content"></ngx-contentful-rich-text>';
const DEFAULT_INLINE = '<span>type: {{ node.nodeType }} id: {{ node.data.target.sys.id }}</span>';
export class DefaultNodeRendererComponent extends NodeRenderer {
constructor() {
super(...arguments);
this.BLOCKS = BLOCKS;
this.INLINES = INLINES;
}
}
DefaultNodeRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DefaultNodeRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
DefaultNodeRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: DefaultNodeRendererComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "\n <ng-container [ngSwitch]=\"node.nodeType\">\n <ng-container *ngSwitchCase=\"BLOCKS.DOCUMENT\"><ngx-contentful-rich-text [nodes]=\"node.content\"></ngx-contentful-rich-text></ng-container>\n <div *ngSwitchCase=\"BLOCKS.EMBEDDED_ENTRY\"><ngx-contentful-rich-text [nodes]=\"node.content\"></ngx-contentful-rich-text></div>\n <h1 *ngSwitchCase=\"BLOCKS.HEADING_1\"><ngx-contentful-rich-text [nodes]=\"node.content\"></ngx-contentful-rich-text></h1>\n <h2 *ngSwitchCase=\"BLOCKS.HEADING_2\"><ngx-contentful-rich-text [nodes]=\"node.content\"></ngx-contentful-rich-text></h2>\n <h3 *ngSwitchCase=\"BLOCKS.HEADING_3\"><ngx-contentful-rich-text [nodes]=\"node.content\"></ngx-contentful-rich-text></h3>\n <h4 *ngSwitchCase=\"BLOCKS.HEADING_4\"><ngx-contentful-rich-text [nodes]=\"node.content\"></ngx-contentful-rich-text></h4>\n <h5 *ngSwitchCase=\"BLOCKS.HEADING_5\"><ngx-contentful-rich-text [nodes]=\"node.content\"></ngx-contentful-rich-text></h5>\n <h6 *ngSwitchCase=\"BLOCKS.HEADING_6\"><ngx-contentful-rich-text [nodes]=\"node.content\"></ngx-contentful-rich-text></h6>\n <hr *ngSwitchCase=\"BLOCKS.HR\" />\n <li *ngSwitchCase=\"BLOCKS.LIST_ITEM\"><ngx-contentful-rich-text [nodes]=\"node.content\"></ngx-contentful-rich-text></li>\n <ol *ngSwitchCase=\"BLOCKS.OL_LIST\">\n <ngx-contentful-rich-text [nodes]=\"node.content\"></ngx-contentful-rich-text>\n </ol>\n <p *ngSwitchCase=\"BLOCKS.PARAGRAPH\"><ngx-contentful-rich-text [nodes]=\"node.content\"></ngx-contentful-rich-text></p>\n <blockquote *ngSwitchCase=\"BLOCKS.QUOTE\"><ngx-contentful-rich-text [nodes]=\"node.content\"></ngx-contentful-rich-text></blockquote>\n <ul *ngSwitchCase=\"BLOCKS.UL_LIST\">\n <ngx-contentful-rich-text [nodes]=\"node.content\"></ngx-contentful-rich-text>\n </ul>\n <ng-container *ngSwitchCase=\"INLINES.ASSET_HYPERLINK\">\n <span>type: {{ node.nodeType }} id: {{ node.data.target.sys.id }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"INLINES.EMBEDDED_ENTRY\">\n <span>type: {{ node.nodeType }} id: {{ node.data.target.sys.id }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"INLINES.ENTRY_HYPERLINK\">\n <span>type: {{ node.nodeType }} id: {{ node.data.target.sys.id }}</span>\n </ng-container>\n <a *ngSwitchCase=\"INLINES.HYPERLINK\" [href]=\"node.data.uri\">\n <ngx-contentful-rich-text [nodes]=\"node.content\"></ngx-contentful-rich-text>\n </a>\n </ng-container>\n ", isInline: true, dependencies: [{ kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.NgxContentfulRichTextComponent, selector: "ngx-contentful-rich-text", inputs: ["document", "nodes", "nodeRenderers", "markRenderers"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DefaultNodeRendererComponent, decorators: [{
type: Component,
args: [{
template: `
<ng-container [ngSwitch]="node.nodeType">
<ng-container *ngSwitchCase="BLOCKS.DOCUMENT">${CHILDREN}</ng-container>
<div *ngSwitchCase="BLOCKS.EMBEDDED_ENTRY">${CHILDREN}</div>
<h1 *ngSwitchCase="BLOCKS.HEADING_1">${CHILDREN}</h1>
<h2 *ngSwitchCase="BLOCKS.HEADING_2">${CHILDREN}</h2>
<h3 *ngSwitchCase="BLOCKS.HEADING_3">${CHILDREN}</h3>
<h4 *ngSwitchCase="BLOCKS.HEADING_4">${CHILDREN}</h4>
<h5 *ngSwitchCase="BLOCKS.HEADING_5">${CHILDREN}</h5>
<h6 *ngSwitchCase="BLOCKS.HEADING_6">${CHILDREN}</h6>
<hr *ngSwitchCase="BLOCKS.HR" />
<li *ngSwitchCase="BLOCKS.LIST_ITEM">${CHILDREN}</li>
<ol *ngSwitchCase="BLOCKS.OL_LIST">
${CHILDREN}
</ol>
<p *ngSwitchCase="BLOCKS.PARAGRAPH">${CHILDREN}</p>
<blockquote *ngSwitchCase="BLOCKS.QUOTE">${CHILDREN}</blockquote>
<ul *ngSwitchCase="BLOCKS.UL_LIST">
${CHILDREN}
</ul>
<ng-container *ngSwitchCase="INLINES.ASSET_HYPERLINK">
${DEFAULT_INLINE}
</ng-container>
<ng-container *ngSwitchCase="INLINES.EMBEDDED_ENTRY">
${DEFAULT_INLINE}
</ng-container>
<ng-container *ngSwitchCase="INLINES.ENTRY_HYPERLINK">
${DEFAULT_INLINE}
</ng-container>
<a *ngSwitchCase="INLINES.HYPERLINK" [href]="node.data.uri">
${CHILDREN}
</a>
</ng-container>
`,
changeDetection: ChangeDetectionStrategy.OnPush,
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1ub2RlLXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb250ZW50ZnVsLXJpY2gtdGV4dC9zcmMvbGliL2NvbXBvbmVudHMvZGVmYXVsdC1ub2RlLXJlbmRlcmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7O0FBRTlELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FDbkIsOEVBQThFLENBQUM7QUFFakYsTUFBTSxjQUFjLEdBQ2xCLDBFQUEwRSxDQUFDO0FBdUM3RSxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsWUFBWTtJQXJDOUQ7O1FBc0NFLFdBQU0sR0FBa0IsTUFBTSxDQUFDO1FBQy9CLFlBQU8sR0FBbUIsT0FBTyxDQUFDO0tBQ25DOzt5SEFIWSw0QkFBNEI7NkdBQTVCLDRCQUE0QjsyRkFBNUIsNEJBQTRCO2tCQXJDeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUU7O3NEQUUwQyxRQUFRO21EQUNYLFFBQVE7NkNBQ2QsUUFBUTs2Q0FDUixRQUFROzZDQUNSLFFBQVE7NkNBQ1IsUUFBUTs2Q0FDUixRQUFROzZDQUNSLFFBQVE7OzZDQUVSLFFBQVE7O1VBRTNDLFFBQVE7OzRDQUUwQixRQUFRO2lEQUNILFFBQVE7O1VBRS9DLFFBQVE7OztVQUdSLGNBQWM7OztVQUdkLGNBQWM7OztVQUdkLGNBQWM7OztVQUdkLFFBQVE7OztHQUdmO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJMT0NLUywgSU5MSU5FUyB9IGZyb20gJ0Bjb250ZW50ZnVsL3JpY2gtdGV4dC10eXBlcyc7XG5cbmltcG9ydCB7IE5vZGVSZW5kZXJlciB9IGZyb20gJy4uL2NsYXNzZXMvbm9kZS1yZW5kZXJlci5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBDSElMRFJFTiA9XG4gICc8bmd4LWNvbnRlbnRmdWwtcmljaC10ZXh0IFtub2Rlc109XCJub2RlLmNvbnRlbnRcIj48L25neC1jb250ZW50ZnVsLXJpY2gtdGV4dD4nO1xuXG5jb25zdCBERUZBVUxUX0lOTElORSA9XG4gICc8c3Bhbj50eXBlOiB7eyBub2RlLm5vZGVUeXBlIH19IGlkOiB7eyBub2RlLmRhdGEudGFyZ2V0LnN5cy5pZCB9fTwvc3Bhbj4nO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJub2RlLm5vZGVUeXBlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJCTE9DS1MuRE9DVU1FTlRcIj4ke0NISUxEUkVOfTwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLkVNQkVEREVEX0VOVFJZXCI+JHtDSElMRFJFTn08L2Rpdj5cbiAgICAgIDxoMSAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLkhFQURJTkdfMVwiPiR7Q0hJTERSRU59PC9oMT5cbiAgICAgIDxoMiAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLkhFQURJTkdfMlwiPiR7Q0hJTERSRU59PC9oMj5cbiAgICAgIDxoMyAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLkhFQURJTkdfM1wiPiR7Q0hJTERSRU59PC9oMz5cbiAgICAgIDxoNCAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLkhFQURJTkdfNFwiPiR7Q0hJTERSRU59PC9oND5cbiAgICAgIDxoNSAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLkhFQURJTkdfNVwiPiR7Q0hJTERSRU59PC9oNT5cbiAgICAgIDxoNiAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLkhFQURJTkdfNlwiPiR7Q0hJTERSRU59PC9oNj5cbiAgICAgIDxociAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLkhSXCIgLz5cbiAgICAgIDxsaSAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLkxJU1RfSVRFTVwiPiR7Q0hJTERSRU59PC9saT5cbiAgICAgIDxvbCAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLk9MX0xJU1RcIj5cbiAgICAgICAgJHtDSElMRFJFTn1cbiAgICAgIDwvb2w+XG4gICAgICA8cCAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLlBBUkFHUkFQSFwiPiR7Q0hJTERSRU59PC9wPlxuICAgICAgPGJsb2NrcXVvdGUgKm5nU3dpdGNoQ2FzZT1cIkJMT0NLUy5RVU9URVwiPiR7Q0hJTERSRU59PC9ibG9ja3F1b3RlPlxuICAgICAgPHVsICpuZ1N3aXRjaENhc2U9XCJCTE9DS1MuVUxfTElTVFwiPlxuICAgICAgICAke0NISUxEUkVOfVxuICAgICAgPC91bD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIklOTElORVMuQVNTRVRfSFlQRVJMSU5LXCI+XG4gICAgICAgICR7REVGQVVMVF9JTkxJTkV9XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIklOTElORVMuRU1CRURERURfRU5UUllcIj5cbiAgICAgICAgJHtERUZBVUxUX0lOTElORX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiSU5MSU5FUy5FTlRSWV9IWVBFUkxJTktcIj5cbiAgICAgICAgJHtERUZBVUxUX0lOTElORX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGEgKm5nU3dpdGNoQ2FzZT1cIklOTElORVMuSFlQRVJMSU5LXCIgW2hyZWZdPVwibm9kZS5kYXRhLnVyaVwiPlxuICAgICAgICAke0NISUxEUkVOfVxuICAgICAgPC9hPlxuICAgIDwvbmctY29udGFpbmVyPlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRGVmYXVsdE5vZGVSZW5kZXJlckNvbXBvbmVudCBleHRlbmRzIE5vZGVSZW5kZXJlciB7XG4gIEJMT0NLUzogdHlwZW9mIEJMT0NLUyA9IEJMT0NLUztcbiAgSU5MSU5FUzogdHlwZW9mIElOTElORVMgPSBJTkxJTkVTO1xufVxuIl19