UNPKG

jodit

Version:

Jodit is awesome and usefully wysiwyg editor with filebrowser

75 lines (64 loc) 2.19 kB
/*! * Jodit Editor (https://xdsoft.net/jodit/) * Licensed under GNU General Public License version 2 or later or a commercial license or MIT; * For GPL see LICENSE-GPL.txt in the project root for license information. * For MIT see LICENSE-MIT.txt in the project root for license information. * For commercial licenses see https://xdsoft.net/jodit/commercial/ * Copyright (c) 2013-2019 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ import { Config } from '../Config'; import { INVISIBLE_SPACE_REG_EXP, SPACE_REG_EXP } from '../constants'; import { throttle } from '../modules/helpers/async'; import { Plugin } from '../modules/Plugin'; import { Dom } from '../modules/Dom'; declare module '../Config' { interface Config { showCharsCounter: boolean; showWordsCounter: boolean; } } Config.prototype.showCharsCounter = true; Config.prototype.showWordsCounter = true; /** * Show stat data - words and chars count */ export class stat extends Plugin { private charCounter: HTMLElement | null; private wordCounter: HTMLElement | null; private calc = throttle(() => { const text: string = this.jodit.getEditorText(); if (this.jodit.options.showCharsCounter && this.charCounter) { this.charCounter.innerText = this.jodit.i18n( 'Chars: %d', text.replace(SPACE_REG_EXP, '').length ); } if (this.jodit.options.showWordsCounter && this.wordCounter) { this.wordCounter.innerText = this.jodit.i18n( 'Words: %d', text .replace(INVISIBLE_SPACE_REG_EXP, '') .split(SPACE_REG_EXP) .filter((e: string) => e.length).length ); } }, this.jodit.defaultTimeout); public afterInit() { if (this.jodit.options.showCharsCounter) { this.charCounter = this.jodit.create.span(); this.jodit.statusbar.append(this.charCounter, true); } if (this.jodit.options.showWordsCounter) { this.wordCounter = this.jodit.create.span(); this.jodit.statusbar.append(this.wordCounter, true); } this.jodit.events.on('change', this.calc); this.calc(); } public beforeDestruct(): void { Dom.safeRemove(this.charCounter); Dom.safeRemove(this.wordCounter); this.charCounter = null; this.wordCounter = null; } }