ngx-tiptap-editor
Version:
[](https://github.com/HuiiBuh/ngx-tiptap-editor/actions/workflows/publish.yml) [ {
super();
this.eventService = eventService;
this.tiptapExtensionService = tiptapExtensionService;
this.displayLimit = true;
this.displayCharacter = true;
this.displayWordCount = true;
this.worldString = 'worlds';
this.characterString = 'characters';
}
ngOnInit() {
this.eventService.update$.pipe(takeUntil(this.destroy$), delay(100)).subscribe(() => {
this.updateCharacterCountHtml();
});
}
onEditorReady(editor) {
this.characterCountExtension = this.tiptapExtensionService.getExtension('characterCount');
this.updateCharacterCountHtml();
}
updateCharacterCountHtml() {
if (!this.editor)
return;
const characters = this.editor.storage.characterCount.characters();
const words = this.editor.storage.characterCount.words();
if (this.characterElement) {
let characterString = `${characters}`;
if (this.displayLimit && this.characterCountExtension && this.characterCountExtension.options.limit) {
characterString += `/${this.characterCountExtension.options.limit}`;
}
characterString += ` ${this.characterString}`;
this.characterElement.nativeElement.innerText = characterString;
}
if (this.wordCountElement) {
this.wordCountElement.nativeElement.innerText = `${words} ${this.worldString}`;
}
}
}
DisplayCharacterCountComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DisplayCharacterCountComponent, deps: [{ token: i1.TiptapEventService }, { token: i2.TiptapExtensionService }], target: i0.ɵɵFactoryTarget.Component });
DisplayCharacterCountComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: DisplayCharacterCountComponent, selector: "tip-character-count-display", inputs: { displayLimit: "displayLimit", displayCharacter: "displayCharacter", displayWordCount: "displayWordCount", worldString: "worldString", characterString: "characterString" }, providers: [{ provide: BaseControl, useExisting: forwardRef(() => DisplayCharacterCountComponent) }], viewQueries: [{ propertyName: "characterElement", first: true, predicate: ["character"], descendants: true }, { propertyName: "wordCountElement", first: true, predicate: ["worldCount"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
<span *ngIf="displayCharacter" #character></span><br/>
<span *ngIf="displayWordCount" #worldCount></span>
`, isInline: true, styles: [":host-context{color:var(--tip-light-text-color)}\n"], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DisplayCharacterCountComponent, decorators: [{
type: Component,
args: [{
selector: 'tip-character-count-display',
styles: [`
:host-context {
color: var(--tip-light-text-color)
}
`],
template: `
<span *ngIf="displayCharacter" #character></span><br/>
<span *ngIf="displayWordCount" #worldCount></span>
`,
changeDetection: ChangeDetectionStrategy.OnPush,
providers: [{ provide: BaseControl, useExisting: forwardRef(() => DisplayCharacterCountComponent) }],
}]
}], ctorParameters: function () { return [{ type: i1.TiptapEventService }, { type: i2.TiptapExtensionService }]; }, propDecorators: { displayLimit: [{
type: Input
}], displayCharacter: [{
type: Input
}], displayWordCount: [{
type: Input
}], worldString: [{
type: Input
}], characterString: [{
type: Input
}], characterElement: [{
type: ViewChild,
args: ['character']
}], wordCountElement: [{
type: ViewChild,
args: ['worldCount']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS1jaGFyYWN0ZXItY291bnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRpcHRhcC1lZGl0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2NvbnRyb2xzL2Rpc3BsYXktY2hhcmFjdGVyLWNvdW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLFVBQVUsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXJILE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQWdCbEUsTUFBTSxPQUFPLDhCQUErQixTQUFRLG1CQUFtQjtJQVdyRSxZQUNZLFlBQWdDLEVBQ2xDLHNCQUE4QztRQUV0RCxLQUFLLEVBQUUsQ0FBQztRQUhFLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUNsQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBWnhDLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIsZ0JBQVcsR0FBRyxRQUFRLENBQUM7UUFDdkIsb0JBQWUsR0FBRyxZQUFZLENBQUM7SUFXL0MsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xGLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGFBQWEsQ0FBQyxNQUFjO1FBQ2pDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUEwQixDQUFDO1FBQ25ILElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBRWxDLENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUN6QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3pELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksZUFBZSxHQUFHLEdBQUcsVUFBVSxFQUFFLENBQUM7WUFDdEMsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtnQkFDbkcsZUFBZSxJQUFJLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNyRTtZQUNELGVBQWUsSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUM7U0FDakU7UUFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDaEY7SUFDSCxDQUFDOzsySEE3Q1UsOEJBQThCOytHQUE5Qiw4QkFBOEIsNE9BRjlCLENBQUMsRUFBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsOEJBQThCLENBQUMsRUFBQyxDQUFDLGlRQUx4Rjs7O0dBR1Q7MkZBSVUsOEJBQThCO2tCQWQxQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLE1BQU0sRUFBRSxDQUFDOzs7O0dBSVIsQ0FBQztvQkFDRixRQUFRLEVBQUU7OztHQUdUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxTQUFTLEVBQUUsQ0FBQyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsK0JBQStCLENBQUMsRUFBQyxDQUFDO2lCQUNuRzs4SUFFaUIsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFFMEIsZ0JBQWdCO3NCQUEvQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1csZ0JBQWdCO3NCQUFoRCxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVkaXRvciwgRXh0ZW5zaW9uIH0gZnJvbSAnQHRpcHRhcC9jb3JlJztcbmltcG9ydCB7IENoYXJhY3RlckNvdW50T3B0aW9ucywgQ2hhcmFjdGVyQ291bnRTdG9yYWdlIH0gZnJvbSAnQHRpcHRhcC9leHRlbnNpb24tY2hhcmFjdGVyLWNvdW50JztcbmltcG9ydCB7IENoYXJhY3RlckNvdW50IH0gZnJvbSAnQHRpcHRhcC9leHRlbnNpb24tY2hhcmFjdGVyLWNvdW50L3NyYy9jaGFyYWN0ZXItY291bnQnO1xuaW1wb3J0IHsgZGVsYXksIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRpcHRhcEV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpcHRhcC1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFRpcHRhcEV4dGVuc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aXB0YXAtZXh0ZW5zaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZUNvbnRyb2wsIEV4dGVuZGVkQmFzZUNvbnRyb2wgfSBmcm9tICcuL2Jhc2UtY29udHJvbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RpcC1jaGFyYWN0ZXItY291bnQtZGlzcGxheScsXG4gIHN0eWxlczogW2BcbiAgICA6aG9zdC1jb250ZXh0IHtcbiAgICAgIGNvbG9yOiB2YXIoLS10aXAtbGlnaHQtdGV4dC1jb2xvcilcbiAgICB9XG4gIGBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzcGFuICpuZ0lmPVwiZGlzcGxheUNoYXJhY3RlclwiICNjaGFyYWN0ZXI+PC9zcGFuPjxici8+XG4gICAgPHNwYW4gKm5nSWY9XCJkaXNwbGF5V29yZENvdW50XCIgI3dvcmxkQ291bnQ+PC9zcGFuPlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbe3Byb3ZpZGU6IEJhc2VDb250cm9sLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEaXNwbGF5Q2hhcmFjdGVyQ291bnRDb21wb25lbnQpfV0sXG59KVxuZXhwb3J0IGNsYXNzIERpc3BsYXlDaGFyYWN0ZXJDb3VudENvbXBvbmVudCBleHRlbmRzIEV4dGVuZGVkQmFzZUNvbnRyb2wgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwdWJsaWMgZGlzcGxheUxpbWl0ID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGRpc3BsYXlDaGFyYWN0ZXIgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzcGxheVdvcmRDb3VudCA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyB3b3JsZFN0cmluZyA9ICd3b3JsZHMnO1xuICBASW5wdXQoKSBwdWJsaWMgY2hhcmFjdGVyU3RyaW5nID0gJ2NoYXJhY3RlcnMnO1xuXG4gIEBWaWV3Q2hpbGQoJ2NoYXJhY3RlcicpIHByaXZhdGUgY2hhcmFjdGVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ3dvcmxkQ291bnQnKSBwcml2YXRlIHdvcmRDb3VudEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNoYXJhY3RlckNvdW50RXh0ZW5zaW9uOiBFeHRlbnNpb248Q2hhcmFjdGVyQ291bnRPcHRpb25zLCBDaGFyYWN0ZXJDb3VudFN0b3JhZ2U+IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBldmVudFNlcnZpY2U6IFRpcHRhcEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHRpcHRhcEV4dGVuc2lvblNlcnZpY2U6IFRpcHRhcEV4dGVuc2lvblNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50U2VydmljZS51cGRhdGUkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWxheSgxMDApKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVDaGFyYWN0ZXJDb3VudEh0bWwoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXRvclJlYWR5KGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgdGhpcy5jaGFyYWN0ZXJDb3VudEV4dGVuc2lvbiA9IHRoaXMudGlwdGFwRXh0ZW5zaW9uU2VydmljZS5nZXRFeHRlbnNpb24oJ2NoYXJhY3RlckNvdW50JykgYXMgdHlwZW9mIENoYXJhY3RlckNvdW50O1xuICAgIHRoaXMudXBkYXRlQ2hhcmFjdGVyQ291bnRIdG1sKCk7XG5cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ2hhcmFjdGVyQ291bnRIdG1sKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5lZGl0b3IpIHJldHVybjtcbiAgICBjb25zdCBjaGFyYWN0ZXJzID0gdGhpcy5lZGl0b3Iuc3RvcmFnZS5jaGFyYWN0ZXJDb3VudC5jaGFyYWN0ZXJzKCk7XG4gICAgY29uc3Qgd29yZHMgPSB0aGlzLmVkaXRvci5zdG9yYWdlLmNoYXJhY3RlckNvdW50LndvcmRzKCk7XG4gICAgaWYgKHRoaXMuY2hhcmFjdGVyRWxlbWVudCkge1xuICAgICAgbGV0IGNoYXJhY3RlclN0cmluZyA9IGAke2NoYXJhY3RlcnN9YDtcbiAgICAgIGlmICh0aGlzLmRpc3BsYXlMaW1pdCAmJiB0aGlzLmNoYXJhY3RlckNvdW50RXh0ZW5zaW9uICYmIHRoaXMuY2hhcmFjdGVyQ291bnRFeHRlbnNpb24ub3B0aW9ucy5saW1pdCkge1xuICAgICAgICBjaGFyYWN0ZXJTdHJpbmcgKz0gYC8ke3RoaXMuY2hhcmFjdGVyQ291bnRFeHRlbnNpb24ub3B0aW9ucy5saW1pdH1gO1xuICAgICAgfVxuICAgICAgY2hhcmFjdGVyU3RyaW5nICs9IGAgJHt0aGlzLmNoYXJhY3RlclN0cmluZ31gO1xuICAgICAgdGhpcy5jaGFyYWN0ZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0ID0gY2hhcmFjdGVyU3RyaW5nO1xuICAgIH1cbiAgICBpZiAodGhpcy53b3JkQ291bnRFbGVtZW50KSB7XG4gICAgICB0aGlzLndvcmRDb3VudEVsZW1lbnQubmF0aXZlRWxlbWVudC5pbm5lclRleHQgPSBgJHt3b3Jkc30gJHt0aGlzLndvcmxkU3RyaW5nfWA7XG4gICAgfVxuICB9XG59XG4iXX0=