ngx-contentful-rich-text
Version:
Angular renderer for the Contentful rich text field type
42 lines • 5.07 kB
JavaScript
import { Directive, Input, ViewContainerRef, } from '@angular/core';
import { TextValueComponent } from '../components/text-value.component';
import { ComponentRendererService } from '../services/component-renderer.service';
import { RendererProviderService } from '../services/renderer-provider.service';
export class MarkRendererHostDirective {
constructor(viewContainerRef, componentRenderer, rendererProvider) {
this.viewContainerRef = viewContainerRef;
this.componentRenderer = componentRenderer;
this.rendererProvider = rendererProvider;
}
ngOnInit() {
let component;
if (isNaN(this.node.markIndex)) {
// Create new object because node object might not be extensible
this.node = Object.assign(Object.assign({}, this.node), { markIndex: 0 });
}
else {
this.node.markIndex += 1;
}
if (this.node.marks.length > this.node.markIndex) {
component = this.rendererProvider.getMarkRenderer(this.node);
}
else {
component = TextValueComponent;
}
this.componentRenderer.render(this.viewContainerRef, component, this.node);
}
}
MarkRendererHostDirective.decorators = [
{ type: Directive, args: [{
selector: '[ngxMarkRendererHost]',
},] }
];
MarkRendererHostDirective.ctorParameters = () => [
{ type: ViewContainerRef },
{ type: ComponentRendererService },
{ type: RendererProviderService }
];
MarkRendererHostDirective.propDecorators = {
node: [{ type: Input }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay1yZW5kZXJlci1ob3N0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb250ZW50ZnVsLXJpY2gtdGV4dC9zcmMvbGliL2RpcmVjdGl2ZXMvbWFyay1yZW5kZXJlci1ob3N0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFHTCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFLaEYsTUFBTSxPQUFPLHlCQUF5QjtJQUdwQyxZQUNVLGdCQUFrQyxFQUNsQyxpQkFBMkMsRUFDM0MsZ0JBQXlDO1FBRnpDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUMzQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO0lBQ2hELENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxTQUFrRCxDQUFDO1FBQ3ZELElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDOUIsZ0VBQWdFO1lBQ2hFLElBQUksQ0FBQyxJQUFJLG1DQUNKLElBQUksQ0FBQyxJQUFJLEtBQ1osU0FBUyxFQUFFLENBQUMsR0FDYixDQUFDO1NBQ0g7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQztTQUMxQjtRQUNELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hELFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5RDthQUFNO1lBQ0wsU0FBUyxHQUFHLGtCQUFrQixDQUFDO1NBQ2hDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RSxDQUFDOzs7WUE3QkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx1QkFBdUI7YUFDbEM7OztZQVZDLGdCQUFnQjtZQUtULHdCQUF3QjtZQUN4Qix1QkFBdUI7OzttQkFNN0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVHlwZSxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1hcmtSZW5kZXJlciwgVGV4dCB9IGZyb20gJy4uL2NsYXNzZXMvbWFyay1yZW5kZXJlci5jbGFzcyc7XG5pbXBvcnQgeyBUZXh0VmFsdWVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL3RleHQtdmFsdWUuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudFJlbmRlcmVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbXBvbmVudC1yZW5kZXJlci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlbmRlcmVyUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcmVuZGVyZXItcHJvdmlkZXIuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ3hNYXJrUmVuZGVyZXJIb3N0XScsXG59KVxuZXhwb3J0IGNsYXNzIE1hcmtSZW5kZXJlckhvc3REaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBub2RlOiBUZXh0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIGNvbXBvbmVudFJlbmRlcmVyOiBDb21wb25lbnRSZW5kZXJlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZW5kZXJlclByb3ZpZGVyOiBSZW5kZXJlclByb3ZpZGVyU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgbGV0IGNvbXBvbmVudDogVHlwZTxNYXJrUmVuZGVyZXIgfCBUZXh0VmFsdWVDb21wb25lbnQ+O1xuICAgIGlmIChpc05hTih0aGlzLm5vZGUubWFya0luZGV4KSkge1xuICAgICAgLy8gQ3JlYXRlIG5ldyBvYmplY3QgYmVjYXVzZSBub2RlIG9iamVjdCBtaWdodCBub3QgYmUgZXh0ZW5zaWJsZVxuICAgICAgdGhpcy5ub2RlID0ge1xuICAgICAgICAuLi50aGlzLm5vZGUsXG4gICAgICAgIG1hcmtJbmRleDogMCxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm9kZS5tYXJrSW5kZXggKz0gMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubm9kZS5tYXJrcy5sZW5ndGggPiB0aGlzLm5vZGUubWFya0luZGV4KSB7XG4gICAgICBjb21wb25lbnQgPSB0aGlzLnJlbmRlcmVyUHJvdmlkZXIuZ2V0TWFya1JlbmRlcmVyKHRoaXMubm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBvbmVudCA9IFRleHRWYWx1ZUNvbXBvbmVudDtcbiAgICB9XG4gICAgdGhpcy5jb21wb25lbnRSZW5kZXJlci5yZW5kZXIodGhpcy52aWV3Q29udGFpbmVyUmVmLCBjb21wb25lbnQsIHRoaXMubm9kZSk7XG4gIH1cbn1cbiJdfQ==