ngx-contentful-rich-text
Version:
Angular renderer for the Contentful rich text field type
52 lines • 6.12 kB
JavaScript
import { ChangeDetectionStrategy, Component } from '@angular/core';
import { BLOCKS, INLINES } from '@contentful/rich-text-types';
import { NodeRenderer } from '../classes/node-renderer.class';
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.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1ub2RlLXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb250ZW50ZnVsLXJpY2gtdGV4dC9zcmMvbGliL2NvbXBvbmVudHMvZGVmYXVsdC1ub2RlLXJlbmRlcmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTlELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FDbkIsOEVBQThFLENBQUM7QUFFakYsTUFBTSxjQUFjLEdBQ2xCLDBFQUEwRSxDQUFDO0FBdUM3RSxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsWUFBWTtJQXJDOUQ7O1FBc0NFLFdBQU0sR0FBa0IsTUFBTSxDQUFDO1FBQy9CLFlBQU8sR0FBbUIsT0FBTyxDQUFDO0lBQ3BDLENBQUM7OztZQXhDQSxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFOztzREFFMEMsUUFBUTttREFDWCxRQUFROzZDQUNkLFFBQVE7NkNBQ1IsUUFBUTs2Q0FDUixRQUFROzZDQUNSLFFBQVE7NkNBQ1IsUUFBUTs2Q0FDUixRQUFROzs2Q0FFUixRQUFROztVQUUzQyxRQUFROzs0Q0FFMEIsUUFBUTtpREFDSCxRQUFROztVQUUvQyxRQUFROzs7VUFHUixjQUFjOzs7VUFHZCxjQUFjOzs7VUFHZCxjQUFjOzs7VUFHZCxRQUFROzs7R0FHZjtnQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJMT0NLUywgSU5MSU5FUyB9IGZyb20gJ0Bjb250ZW50ZnVsL3JpY2gtdGV4dC10eXBlcyc7XG5cbmltcG9ydCB7IE5vZGVSZW5kZXJlciB9IGZyb20gJy4uL2NsYXNzZXMvbm9kZS1yZW5kZXJlci5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBDSElMRFJFTiA9XG4gICc8bmd4LWNvbnRlbnRmdWwtcmljaC10ZXh0IFtub2Rlc109XCJub2RlLmNvbnRlbnRcIj48L25neC1jb250ZW50ZnVsLXJpY2gtdGV4dD4nO1xuXG5jb25zdCBERUZBVUxUX0lOTElORSA9XG4gICc8c3Bhbj50eXBlOiB7eyBub2RlLm5vZGVUeXBlIH19IGlkOiB7eyBub2RlLmRhdGEudGFyZ2V0LnN5cy5pZCB9fTwvc3Bhbj4nO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJub2RlLm5vZGVUeXBlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJCTE9DS1MuRE9DVU1FTlRcIj4ke0NISUxEUkVOfTwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLkVNQkVEREVEX0VOVFJZXCI+JHtDSElMRFJFTn08L2Rpdj5cbiAgICAgIDxoMSAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLkhFQURJTkdfMVwiPiR7Q0hJTERSRU59PC9oMT5cbiAgICAgIDxoMiAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLkhFQURJTkdfMlwiPiR7Q0hJTERSRU59PC9oMj5cbiAgICAgIDxoMyAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLkhFQURJTkdfM1wiPiR7Q0hJTERSRU59PC9oMz5cbiAgICAgIDxoNCAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLkhFQURJTkdfNFwiPiR7Q0hJTERSRU59PC9oND5cbiAgICAgIDxoNSAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLkhFQURJTkdfNVwiPiR7Q0hJTERSRU59PC9oNT5cbiAgICAgIDxoNiAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLkhFQURJTkdfNlwiPiR7Q0hJTERSRU59PC9oNj5cbiAgICAgIDxociAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLkhSXCIgLz5cbiAgICAgIDxsaSAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLkxJU1RfSVRFTVwiPiR7Q0hJTERSRU59PC9saT5cbiAgICAgIDxvbCAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLk9MX0xJU1RcIj5cbiAgICAgICAgJHtDSElMRFJFTn1cbiAgICAgIDwvb2w+XG4gICAgICA8cCAqbmdTd2l0Y2hDYXNlPVwiQkxPQ0tTLlBBUkFHUkFQSFwiPiR7Q0hJTERSRU59PC9wPlxuICAgICAgPGJsb2NrcXVvdGUgKm5nU3dpdGNoQ2FzZT1cIkJMT0NLUy5RVU9URVwiPiR7Q0hJTERSRU59PC9ibG9ja3F1b3RlPlxuICAgICAgPHVsICpuZ1N3aXRjaENhc2U9XCJCTE9DS1MuVUxfTElTVFwiPlxuICAgICAgICAke0NISUxEUkVOfVxuICAgICAgPC91bD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIklOTElORVMuQVNTRVRfSFlQRVJMSU5LXCI+XG4gICAgICAgICR7REVGQVVMVF9JTkxJTkV9XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIklOTElORVMuRU1CRURERURfRU5UUllcIj5cbiAgICAgICAgJHtERUZBVUxUX0lOTElORX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiSU5MSU5FUy5FTlRSWV9IWVBFUkxJTktcIj5cbiAgICAgICAgJHtERUZBVUxUX0lOTElORX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGEgKm5nU3dpdGNoQ2FzZT1cIklOTElORVMuSFlQRVJMSU5LXCIgW2hyZWZdPVwibm9kZS5kYXRhLnVyaVwiPlxuICAgICAgICAke0NISUxEUkVOfVxuICAgICAgPC9hPlxuICAgIDwvbmctY29udGFpbmVyPlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRGVmYXVsdE5vZGVSZW5kZXJlckNvbXBvbmVudCBleHRlbmRzIE5vZGVSZW5kZXJlciB7XG4gIEJMT0NLUzogdHlwZW9mIEJMT0NLUyA9IEJMT0NLUztcbiAgSU5MSU5FUzogdHlwZW9mIElOTElORVMgPSBJTkxJTkVTO1xufVxuIl19