@ckeditor/ckeditor5-word-count 38.0.1 → 38.1.0
Sign up to get free protection for your applications and to get access to all the features.
- package/build/word-count.js +1 -1
- package/package.json +2 -26
- package/src/wordcount.d.ts +2 -1
- package/src/wordcount.js +18 -8
package/build/word-count.js
CHANGED
@@ -2,4 +2,4 @@
|
|
2
2
|
/*!
|
3
3
|
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
4
4
|
* For licensing, see LICENSE.md.
|
5
|
-
*/(()=>{var t={
|
5
|
+
*/(()=>{var t={704:(t,e,r)=>{t.exports=r(79)("./src/core.js")},273:(t,e,r)=>{t.exports=r(79)("./src/ui.js")},209:(t,e,r)=>{t.exports=r(79)("./src/utils.js")},79:t=>{"use strict";t.exports=CKEditor5.dll}},e={};function r(o){var n=e[o];if(void 0!==n)return n.exports;var i=e[o]={exports:{}};return t[o](i,i.exports,r),i.exports}r.d=(t,e)=>{for(var o in e)r.o(e,o)&&!r.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var o={};(()=>{"use strict";r.r(o),r.d(o,{WordCount:()=>z});var t=r(704),e=r(273),n=r(209);function i(t){if(t.is("$text")||t.is("$textProxy"))return t.data;const e=t;let r="",o=null;for(const t of e.getChildren()){const e=i(t);o&&o.is("element")&&(r+="\n"),r+=e,o=t}return r}const s=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)};const c="object"==typeof global&&global&&global.Object===Object&&global;var a="object"==typeof self&&self&&self.Object===Object&&self;const u=c||a||Function("return this")();const d=function(){return u.Date.now()};var l=/\s/;const f=function(t){for(var e=t.length;e--&&l.test(t.charAt(e)););return e};var h=/^\s+/;const p=function(t){return t?t.slice(0,f(t)+1).replace(h,""):t};const g=u.Symbol;var v=Object.prototype,b=v.hasOwnProperty,w=v.toString,y=g?g.toStringTag:void 0;const _=function(t){var e=b.call(t,y),r=t[y];try{t[y]=void 0;var o=!0}catch(t){}var n=w.call(t);return o&&(e?t[y]=r:delete t[y]),n};var m=Object.prototype.toString;const j=function(t){return m.call(t)};var x=g?g.toStringTag:void 0;const O=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":x&&x in Object(t)?_(t):j(t)};const T=function(t){return null!=t&&"object"==typeof t};const C=function(t){return"symbol"==typeof t||T(t)&&"[object Symbol]"==O(t)};var S=/^[-+]0x[0-9a-f]+$/i,E=/^0b[01]+$/i,N=/^0o[0-7]+$/i,W=parseInt;const P=function(t){if("number"==typeof t)return t;if(C(t))return NaN;if(s(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=s(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=p(t);var r=E.test(t);return r||N.test(t)?W(t.slice(2),r?2:8):S.test(t)?NaN:+t};var R=Math.max,V=Math.min;const L=function(t,e,r){var o,n,i,c,a,u,l=0,f=!1,h=!1,p=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function g(e){var r=o,i=n;return o=n=void 0,l=e,c=t.apply(i,r)}function v(t){var r=t-u;return void 0===u||r>=e||r<0||h&&t-l>=i}function b(){var t=d();if(v(t))return w(t);a=setTimeout(b,function(t){var r=e-(t-u);return h?V(r,i-(t-l)):r}(t))}function w(t){return a=void 0,p&&o?g(t):(o=n=void 0,c)}function y(){var t=d(),r=v(t);if(o=arguments,n=this,u=t,r){if(void 0===a)return function(t){return l=t,a=setTimeout(b,e),f?g(t):c}(u);if(h)return clearTimeout(a),a=setTimeout(b,e),g(u)}return void 0===a&&(a=setTimeout(b,e)),c}return e=P(e)||0,s(r)&&(f=!!r.leading,i=(h="maxWait"in r)?R(P(r.maxWait)||0,e):i,p="trailing"in r?!!r.trailing:p),y.cancel=function(){void 0!==a&&clearTimeout(a),l=0,o=u=n=a=void 0},y.flush=function(){return void 0===a?c:w(d())},y};const A=function(t,e,r){var o=!0,n=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return s(r)&&(o="leading"in r?!!r.leading:o,n="trailing"in r?!!r.trailing:n),L(t,e,{leading:o,maxWait:e,trailing:n})};const M=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);var I=Function.prototype,K=Object.prototype,$=I.toString,k=K.hasOwnProperty,U=$.call(Object);const D=function(t){if(!T(t)||"[object Object]"!=O(t))return!1;var e=M(t);if(null===e)return!0;var r=k.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&$.call(r)==U};const F=function(t){return T(t)&&1===t.nodeType&&!D(t)};class z extends t.Plugin{constructor(t){super(t),this.set("characters",0),this.set("words",0),Object.defineProperties(this,{characters:{get(){return this.characters=this._getCharacters(this._getText())}},words:{get(){return this.words=this._getWords(this._getText())}}}),this.set("_wordsLabel",void 0),this.set("_charactersLabel",void 0),this._config=t.config.get("wordCount")||{},this._outputView=void 0,this._wordsMatchRegExp=n.env.features.isRegExpUnicodePropertySupported?new RegExp("([\\p{L}\\p{N}]+\\S?)+","gu"):/([a-zA-Z0-9À-ž]+\S?)+/gu}static get pluginName(){return"WordCount"}init(){this.editor.model.document.on("change:data",A(this._refreshStats.bind(this),250)),"function"==typeof this._config.onUpdate&&this.on("update",((t,e)=>{this._config.onUpdate(e)})),F(this._config.container)&&this._config.container.appendChild(this.wordCountContainer)}destroy(){this._outputView&&(this._outputView.element.remove(),this._outputView.destroy()),super.destroy()}get wordCountContainer(){const t=this.editor,r=t.t,o=t.config.get("wordCount.displayWords"),n=t.config.get("wordCount.displayCharacters"),i=e.Template.bind(this,this),s=[];return this._outputView||(this._outputView=new e.View,(o||void 0===o)&&(this.bind("_wordsLabel").to(this,"words",(t=>r("Words: %0",t))),s.push({tag:"div",children:[{text:[i.to("_wordsLabel")]}],attributes:{class:"ck-word-count__words"}})),(n||void 0===n)&&(this.bind("_charactersLabel").to(this,"characters",(t=>r("Characters: %0",t))),s.push({tag:"div",children:[{text:[i.to("_charactersLabel")]}],attributes:{class:"ck-word-count__characters"}})),this._outputView.setTemplate({tag:"div",attributes:{class:["ck","ck-word-count"]},children:s}),this._outputView.render()),this._outputView.element}_getText(){let t="";for(const e of this.editor.model.document.getRootNames())""!==t&&(t+="\n"),t+=i(this.editor.model.document.getRoot(e));return t}_getCharacters(t){return t.replace(/\n/g,"").length}_getWords(t){return(t.match(this._wordsMatchRegExp)||[]).length}_refreshStats(){const t=this._getText(),e=this.words=this._getWords(t),r=this.characters=this._getCharacters(t);this.fire("update",{words:e,characters:r})}}})(),(window.CKEditor5=window.CKEditor5||{}).wordCount=o})();
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@ckeditor/ckeditor5-word-count",
|
3
|
-
"version": "38.0
|
3
|
+
"version": "38.1.0",
|
4
4
|
"description": "Word and character count feature for CKEditor 5.",
|
5
5
|
"keywords": [
|
6
6
|
"ckeditor",
|
@@ -13,26 +13,7 @@
|
|
13
13
|
"main": "src/index.js",
|
14
14
|
"dependencies": {
|
15
15
|
"lodash-es": "^4.17.15",
|
16
|
-
"ckeditor5": "
|
17
|
-
},
|
18
|
-
"devDependencies": {
|
19
|
-
"@ckeditor/ckeditor5-basic-styles": "^38.0.1",
|
20
|
-
"@ckeditor/ckeditor5-block-quote": "^38.0.1",
|
21
|
-
"@ckeditor/ckeditor5-core": "^38.0.1",
|
22
|
-
"@ckeditor/ckeditor5-dev-utils": "^37.0.0",
|
23
|
-
"@ckeditor/ckeditor5-editor-classic": "^38.0.1",
|
24
|
-
"@ckeditor/ckeditor5-engine": "^38.0.1",
|
25
|
-
"@ckeditor/ckeditor5-enter": "^38.0.1",
|
26
|
-
"@ckeditor/ckeditor5-image": "^38.0.1",
|
27
|
-
"@ckeditor/ckeditor5-link": "^38.0.1",
|
28
|
-
"@ckeditor/ckeditor5-list": "^38.0.1",
|
29
|
-
"@ckeditor/ckeditor5-paragraph": "^38.0.1",
|
30
|
-
"@ckeditor/ckeditor5-table": "^38.0.1",
|
31
|
-
"@ckeditor/ckeditor5-theme-lark": "^38.0.1",
|
32
|
-
"@ckeditor/ckeditor5-utils": "^38.0.1",
|
33
|
-
"typescript": "^4.8.4",
|
34
|
-
"webpack": "^5.58.1",
|
35
|
-
"webpack-cli": "^4.9.0"
|
16
|
+
"ckeditor5": "38.1.0"
|
36
17
|
},
|
37
18
|
"engines": {
|
38
19
|
"node": ">=16.0.0",
|
@@ -56,10 +37,5 @@
|
|
56
37
|
"ckeditor5-metadata.json",
|
57
38
|
"CHANGELOG.md"
|
58
39
|
],
|
59
|
-
"scripts": {
|
60
|
-
"dll:build": "webpack",
|
61
|
-
"build": "tsc -p ./tsconfig.json",
|
62
|
-
"postversion": "npm run build"
|
63
|
-
},
|
64
40
|
"types": "src/index.d.ts"
|
65
41
|
}
|
package/src/wordcount.d.ts
CHANGED
@@ -83,7 +83,7 @@ export default class WordCount extends Plugin {
|
|
83
83
|
/**
|
84
84
|
* @inheritDoc
|
85
85
|
*/
|
86
|
-
static get pluginName():
|
86
|
+
static get pluginName(): "WordCount";
|
87
87
|
/**
|
88
88
|
* @inheritDoc
|
89
89
|
*/
|
@@ -104,6 +104,7 @@ export default class WordCount extends Plugin {
|
|
104
104
|
* ```
|
105
105
|
*/
|
106
106
|
get wordCountContainer(): HTMLElement;
|
107
|
+
private _getText;
|
107
108
|
/**
|
108
109
|
* Determines the number of characters in the current editor's model.
|
109
110
|
*/
|
package/src/wordcount.js
CHANGED
@@ -51,12 +51,12 @@ export default class WordCount extends Plugin {
|
|
51
51
|
Object.defineProperties(this, {
|
52
52
|
characters: {
|
53
53
|
get() {
|
54
|
-
return (this.characters = this._getCharacters());
|
54
|
+
return (this.characters = this._getCharacters(this._getText()));
|
55
55
|
}
|
56
56
|
},
|
57
57
|
words: {
|
58
58
|
get() {
|
59
|
-
return (this.words = this._getWords());
|
59
|
+
return (this.words = this._getWords(this._getText()));
|
60
60
|
}
|
61
61
|
}
|
62
62
|
});
|
@@ -169,18 +169,27 @@ export default class WordCount extends Plugin {
|
|
169
169
|
}
|
170
170
|
return this._outputView.element;
|
171
171
|
}
|
172
|
+
_getText() {
|
173
|
+
let txt = '';
|
174
|
+
for (const rootName of this.editor.model.document.getRootNames()) {
|
175
|
+
if (txt !== '') {
|
176
|
+
// Add a delimiter, so words from each root are treated independently.
|
177
|
+
txt += '\n';
|
178
|
+
}
|
179
|
+
txt += modelElementToPlainText(this.editor.model.document.getRoot(rootName));
|
180
|
+
}
|
181
|
+
return txt;
|
182
|
+
}
|
172
183
|
/**
|
173
184
|
* Determines the number of characters in the current editor's model.
|
174
185
|
*/
|
175
|
-
_getCharacters() {
|
176
|
-
const txt = modelElementToPlainText(this.editor.model.document.getRoot());
|
186
|
+
_getCharacters(txt) {
|
177
187
|
return txt.replace(/\n/g, '').length;
|
178
188
|
}
|
179
189
|
/**
|
180
190
|
* Determines the number of words in the current editor's model.
|
181
191
|
*/
|
182
|
-
_getWords() {
|
183
|
-
const txt = modelElementToPlainText(this.editor.model.document.getRoot());
|
192
|
+
_getWords(txt) {
|
184
193
|
const detectedWords = txt.match(this._wordsMatchRegExp) || [];
|
185
194
|
return detectedWords.length;
|
186
195
|
}
|
@@ -191,8 +200,9 @@ export default class WordCount extends Plugin {
|
|
191
200
|
* @fires update
|
192
201
|
*/
|
193
202
|
_refreshStats() {
|
194
|
-
const
|
195
|
-
const
|
203
|
+
const txt = this._getText();
|
204
|
+
const words = this.words = this._getWords(txt);
|
205
|
+
const characters = this.characters = this._getCharacters(txt);
|
196
206
|
this.fire('update', {
|
197
207
|
words,
|
198
208
|
characters
|