UNPKG

ngx-contentful-rich-text

Version:

Angular renderer for the Contentful rich text field type

46 lines 6.21 kB
import { Injectable } from '@angular/core'; import { DefaultMarkRendererComponent } from '../components/default-mark-renderer.component'; import { DefaultNodeRendererComponent } from '../components/default-node-renderer.component'; import * as i0 from "@angular/core"; export class RendererProviderService { constructor() { this.nodeRenderers = {}; this.markRenderers = {}; } getMarkRenderer(node) { const mark = node.marks[node.markIndex]; const resolver = this.markRenderers[mark.type]; let renderer; try { renderer = resolver(node); } catch (error) { renderer = resolver; } return renderer || DefaultMarkRendererComponent; } getNodeRenderer(node) { const resolver = this.nodeRenderers[node.nodeType]; let renderer; try { renderer = resolver(node); } catch (error) { renderer = resolver; } return renderer || DefaultNodeRendererComponent; } setNodeRenderers(customRenderers) { this.nodeRenderers = Object.assign(this.nodeRenderers, customRenderers); } setMarkRenderers(customRenderers) { this.markRenderers = Object.assign(this.markRenderers, customRenderers); } } RendererProviderService.ɵprov = i0.ɵɵdefineInjectable({ factory: function RendererProviderService_Factory() { return new RendererProviderService(); }, token: RendererProviderService, providedIn: "root" }); RendererProviderService.decorators = [ { type: Injectable, args: [{ providedIn: 'root', },] } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXItcHJvdmlkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb250ZW50ZnVsLXJpY2gtdGV4dC9zcmMvbGliL3NlcnZpY2VzL3JlbmRlcmVyLXByb3ZpZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUtqRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM3RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7QUFXN0YsTUFBTSxPQUFPLHVCQUF1QjtJQUhwQztRQUlVLGtCQUFhLEdBQXlDLEVBQUUsQ0FBQztRQUN6RCxrQkFBYSxHQUF5QyxFQUFFLENBQUM7S0FnQ2xFO0lBOUJDLGVBQWUsQ0FBQyxJQUFVO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLElBQUksUUFBNEIsQ0FBQztRQUNqQyxJQUFJO1lBQ0YsUUFBUSxHQUFJLFFBQWlDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckQ7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLFFBQVEsR0FBRyxRQUE4QixDQUFDO1NBQzNDO1FBQ0QsT0FBTyxRQUFRLElBQUksNEJBQTRCLENBQUM7SUFDbEQsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFvQjtRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCxJQUFJLFFBQTRCLENBQUM7UUFDakMsSUFBSTtZQUNGLFFBQVEsR0FBSSxRQUFpQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JEO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxRQUFRLEdBQUcsUUFBOEIsQ0FBQztTQUMzQztRQUNELE9BQU8sUUFBUSxJQUFJLDRCQUE0QixDQUFDO0lBQ2xELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxlQUFxRDtRQUNwRSxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsZUFBcUQ7UUFDcEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDMUUsQ0FBQzs7OztZQXBDRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCbG9jaywgSW5saW5lIH0gZnJvbSAnQGNvbnRlbnRmdWwvcmljaC10ZXh0LXR5cGVzJztcblxuaW1wb3J0IHsgTWFya1JlbmRlcmVyLCBUZXh0IH0gZnJvbSAnLi4vY2xhc3Nlcy9tYXJrLXJlbmRlcmVyLmNsYXNzJztcbmltcG9ydCB7IE5vZGVSZW5kZXJlciB9IGZyb20gJy4uL2NsYXNzZXMvbm9kZS1yZW5kZXJlci5jbGFzcyc7XG5pbXBvcnQgeyBEZWZhdWx0TWFya1JlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9kZWZhdWx0LW1hcmstcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERlZmF1bHROb2RlUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2RlZmF1bHQtbm9kZS1yZW5kZXJlci5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBOb2RlUmVuZGVyZXJGdW5jdGlvbiA9IChub2RlOiBCbG9jayB8IElubGluZSkgPT4gVHlwZTxOb2RlUmVuZGVyZXI+O1xuZXhwb3J0IHR5cGUgTm9kZVJlbmRlcmVyUmVzb2x2ZXIgPSBUeXBlPE5vZGVSZW5kZXJlcj4gfCBOb2RlUmVuZGVyZXJGdW5jdGlvbjtcblxuZXhwb3J0IHR5cGUgTWFya1JlbmRlcmVyRnVuY3Rpb24gPSAobm9kZTogVGV4dCkgPT4gVHlwZTxNYXJrUmVuZGVyZXI+O1xuZXhwb3J0IHR5cGUgTWFya1JlbmRlcmVyUmVzb2x2ZXIgPSBUeXBlPE1hcmtSZW5kZXJlcj4gfCBNYXJrUmVuZGVyZXJGdW5jdGlvbjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFJlbmRlcmVyUHJvdmlkZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBub2RlUmVuZGVyZXJzOiBSZWNvcmQ8c3RyaW5nLCBOb2RlUmVuZGVyZXJSZXNvbHZlcj4gPSB7fTtcbiAgcHJpdmF0ZSBtYXJrUmVuZGVyZXJzOiBSZWNvcmQ8c3RyaW5nLCBNYXJrUmVuZGVyZXJSZXNvbHZlcj4gPSB7fTtcblxuICBnZXRNYXJrUmVuZGVyZXIobm9kZTogVGV4dCk6IFR5cGU8TWFya1JlbmRlcmVyPiB7XG4gICAgY29uc3QgbWFyayA9IG5vZGUubWFya3Nbbm9kZS5tYXJrSW5kZXhdO1xuICAgIGNvbnN0IHJlc29sdmVyID0gdGhpcy5tYXJrUmVuZGVyZXJzW21hcmsudHlwZV07XG4gICAgbGV0IHJlbmRlcmVyOiBUeXBlPE1hcmtSZW5kZXJlcj47XG4gICAgdHJ5IHtcbiAgICAgIHJlbmRlcmVyID0gKHJlc29sdmVyIGFzIE1hcmtSZW5kZXJlckZ1bmN0aW9uKShub2RlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmVuZGVyZXIgPSByZXNvbHZlciBhcyBUeXBlPE1hcmtSZW5kZXJlcj47XG4gICAgfVxuICAgIHJldHVybiByZW5kZXJlciB8fCBEZWZhdWx0TWFya1JlbmRlcmVyQ29tcG9uZW50O1xuICB9XG5cbiAgZ2V0Tm9kZVJlbmRlcmVyKG5vZGU6IEJsb2NrIHwgSW5saW5lKTogVHlwZTxOb2RlUmVuZGVyZXI+IHtcbiAgICBjb25zdCByZXNvbHZlciA9IHRoaXMubm9kZVJlbmRlcmVyc1tub2RlLm5vZGVUeXBlXTtcbiAgICBsZXQgcmVuZGVyZXI6IFR5cGU8Tm9kZVJlbmRlcmVyPjtcbiAgICB0cnkge1xuICAgICAgcmVuZGVyZXIgPSAocmVzb2x2ZXIgYXMgTm9kZVJlbmRlcmVyRnVuY3Rpb24pKG5vZGUpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZW5kZXJlciA9IHJlc29sdmVyIGFzIFR5cGU8Tm9kZVJlbmRlcmVyPjtcbiAgICB9XG4gICAgcmV0dXJuIHJlbmRlcmVyIHx8IERlZmF1bHROb2RlUmVuZGVyZXJDb21wb25lbnQ7XG4gIH1cblxuICBzZXROb2RlUmVuZGVyZXJzKGN1c3RvbVJlbmRlcmVyczogUmVjb3JkPHN0cmluZywgTm9kZVJlbmRlcmVyUmVzb2x2ZXI+KSB7XG4gICAgdGhpcy5ub2RlUmVuZGVyZXJzID0gT2JqZWN0LmFzc2lnbih0aGlzLm5vZGVSZW5kZXJlcnMsIGN1c3RvbVJlbmRlcmVycyk7XG4gIH1cblxuICBzZXRNYXJrUmVuZGVyZXJzKGN1c3RvbVJlbmRlcmVyczogUmVjb3JkPHN0cmluZywgTWFya1JlbmRlcmVyUmVzb2x2ZXI+KSB7XG4gICAgdGhpcy5tYXJrUmVuZGVyZXJzID0gT2JqZWN0LmFzc2lnbih0aGlzLm1hcmtSZW5kZXJlcnMsIGN1c3RvbVJlbmRlcmVycyk7XG4gIH1cbn1cbiJdfQ==