jodit 4.12.2 → 4.12.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/es2015/jodit.css +1 -1
  3. package/es2015/jodit.fat.min.js +4 -4
  4. package/es2015/jodit.js +69 -11
  5. package/es2015/jodit.min.js +3 -3
  6. package/es2015/plugins/debug/debug.css +1 -1
  7. package/es2015/plugins/debug/debug.js +1 -1
  8. package/es2015/plugins/debug/debug.min.js +1 -1
  9. package/es2015/plugins/speech-recognize/speech-recognize.css +1 -1
  10. package/es2015/plugins/speech-recognize/speech-recognize.js +50 -8
  11. package/es2015/plugins/speech-recognize/speech-recognize.min.js +2 -2
  12. package/es2018/jodit.fat.min.js +4 -4
  13. package/es2018/jodit.min.js +24 -24
  14. package/es2018/plugins/debug/debug.min.js +1 -1
  15. package/es2018/plugins/speech-recognize/speech-recognize.min.js +2 -2
  16. package/es2021/jodit.css +1 -1
  17. package/es2021/jodit.fat.min.js +4 -4
  18. package/es2021/jodit.js +69 -11
  19. package/es2021/jodit.min.js +3 -3
  20. package/es2021/plugins/debug/debug.css +1 -1
  21. package/es2021/plugins/debug/debug.js +1 -1
  22. package/es2021/plugins/debug/debug.min.js +1 -1
  23. package/es2021/plugins/speech-recognize/speech-recognize.css +1 -1
  24. package/es2021/plugins/speech-recognize/speech-recognize.js +50 -8
  25. package/es2021/plugins/speech-recognize/speech-recognize.min.js +2 -2
  26. package/es2021.en/jodit.css +1 -1
  27. package/es2021.en/jodit.fat.min.js +4 -4
  28. package/es2021.en/jodit.js +69 -11
  29. package/es2021.en/jodit.min.js +3 -3
  30. package/es2021.en/plugins/debug/debug.css +1 -1
  31. package/es2021.en/plugins/debug/debug.js +1 -1
  32. package/es2021.en/plugins/debug/debug.min.js +1 -1
  33. package/es2021.en/plugins/speech-recognize/speech-recognize.css +1 -1
  34. package/es2021.en/plugins/speech-recognize/speech-recognize.js +50 -8
  35. package/es2021.en/plugins/speech-recognize/speech-recognize.min.js +2 -2
  36. package/es5/jodit.css +2 -2
  37. package/es5/jodit.fat.min.js +2 -2
  38. package/es5/jodit.js +72 -11
  39. package/es5/jodit.min.css +2 -2
  40. package/es5/jodit.min.js +2 -2
  41. package/es5/plugins/debug/debug.css +1 -1
  42. package/es5/plugins/debug/debug.js +1 -1
  43. package/es5/plugins/debug/debug.min.js +1 -1
  44. package/es5/plugins/speech-recognize/speech-recognize.css +1 -1
  45. package/es5/plugins/speech-recognize/speech-recognize.js +51 -9
  46. package/es5/plugins/speech-recognize/speech-recognize.min.js +2 -2
  47. package/es5/polyfills.fat.min.js +1 -1
  48. package/es5/polyfills.js +1 -1
  49. package/es5/polyfills.min.js +1 -1
  50. package/esm/config.d.ts +48 -4
  51. package/esm/config.js +28 -3
  52. package/esm/core/constants.js +1 -1
  53. package/esm/core/ui/icon.d.ts +10 -0
  54. package/esm/core/ui/icon.js +17 -1
  55. package/esm/plugins/speech-recognize/config.js +4 -1
  56. package/esm/plugins/speech-recognize/helpers/recognize-manager.js +3 -2
  57. package/esm/plugins/speech-recognize/helpers/sound.d.ts +8 -1
  58. package/esm/plugins/speech-recognize/helpers/sound.js +45 -8
  59. package/package.json +1 -1
  60. package/types/config.d.ts +48 -4
  61. package/types/core/ui/icon.d.ts +10 -0
  62. package/types/plugins/speech-recognize/helpers/sound.d.ts +8 -1
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit - Jodit is an awesome and useful wysiwyg editor with filebrowser
3
3
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/jodit/)
4
- * Version: v4.12.2
4
+ * Version: v4.12.4
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit - Jodit is an awesome and useful wysiwyg editor with filebrowser
3
3
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/jodit/)
4
- * Version: v4.12.2
4
+ * Version: v4.12.4
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit - Jodit is an awesome and useful wysiwyg editor with filebrowser
3
3
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/jodit/)
4
- * Version: v4.12.2
4
+ * Version: v4.12.4
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit - Jodit is an awesome and useful wysiwyg editor with filebrowser
3
3
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/jodit/)
4
- * Version: v4.12.2
4
+ * Version: v4.12.4
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit - Jodit is an awesome and useful wysiwyg editor with filebrowser
3
3
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/jodit/)
4
- * Version: v4.12.2
4
+ * Version: v4.12.4
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -100,7 +100,10 @@ jodit_config__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.controls.speechRecogn
100
100
  api.on('result', (text)=>jodit.e.fire('speechRecognizeResult', text));
101
101
  api.on('progress', (text)=>jodit.e.fire('speechRecognizeProgressResult', text));
102
102
  api.on('error', (text)=>jodit.message.error(text));
103
- button.hookStatus('beforeDestruct', ()=>{
103
+ // Tie cleanup to the editor lifecycle (not the button): the manager
104
+ // must survive toolbar rebuilds and be released — together with its
105
+ // AudioContext — only when the editor itself is destroyed.
106
+ jodit.hookStatus('beforeDestruct', ()=>{
104
107
  (0,jodit_core_helpers_utils_data_bind__WEBPACK_IMPORTED_MODULE_3__.dataBind)(jodit, 'speech', null);
105
108
  api.destruct();
106
109
  });
@@ -252,6 +255,7 @@ class RecognizeManager extends jodit_core_event_emitter_eventify__WEBPACK_IMPORT
252
255
  }
253
256
  destruct() {
254
257
  this.stop();
258
+ (0,_sound__WEBPACK_IMPORTED_MODULE_4__.closeSound)(this);
255
259
  RecognizeManager._instances.delete(this);
256
260
  super.destruct();
257
261
  }
@@ -350,7 +354,7 @@ class RecognizeManager extends jodit_core_event_emitter_eventify__WEBPACK_IMPORT
350
354
  }
351
355
  _makeSound(frequency) {
352
356
  if (this.sound) {
353
- (0,_sound__WEBPACK_IMPORTED_MODULE_4__.sound)({
357
+ (0,_sound__WEBPACK_IMPORTED_MODULE_4__.sound)(this, {
354
358
  frequency
355
359
  });
356
360
  }
@@ -391,6 +395,7 @@ class RecognizeManager extends jodit_core_event_emitter_eventify__WEBPACK_IMPORT
391
395
 
392
396
  "use strict";
393
397
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
398
+ /* harmony export */ closeSound: function() { return /* binding */ closeSound; },
394
399
  /* harmony export */ sound: function() { return /* binding */ sound; }
395
400
  /* harmony export */ });
396
401
  /* harmony import */ var jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81937);
@@ -404,22 +409,59 @@ class RecognizeManager extends jodit_core_event_emitter_eventify__WEBPACK_IMPORT
404
409
  */
405
410
 
406
411
  /**
412
+ * One AudioContext per owner (e.g. a RecognizeManager). Previously a new context
413
+ * was created on every beep and never closed, so during continuous recognition
414
+ * they piled up — leaking until the browser's per-page limit was hit and the
415
+ * overlapping audio turned into a "roar". We now reuse a single context per
416
+ * owner and release it via {@link closeSound} when the owner is destroyed.
407
417
  * @internal
408
- */ function sound({ sec = 0.1, frequency = jodit_plugins_speech_recognize_constants__WEBPACK_IMPORTED_MODULE_1__.PII, gain = 0.1, type = 'sine' } = {}) {
409
- if (!jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.globalWindow || typeof jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.globalWindow.AudioContext === 'undefined' && typeof jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.globalWindow.webkitAudioContext === 'undefined') {
418
+ */ const contexts = new WeakMap();
419
+ function getContext(owner) {
420
+ if (!jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.globalWindow) {
421
+ return null;
422
+ }
423
+ const existing = contexts.get(owner);
424
+ if (existing && existing.state !== 'closed') {
425
+ return existing;
426
+ }
427
+ const Ctor = jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.globalWindow.AudioContext || jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.globalWindow.webkitAudioContext;
428
+ if (!Ctor) {
429
+ return null;
430
+ }
431
+ const context = new Ctor();
432
+ contexts.set(owner, context);
433
+ return context;
434
+ }
435
+ /**
436
+ * Play a short beep on the owner's (lazily created, reused) AudioContext.
437
+ * @internal
438
+ */ function sound(owner, { sec = 0.1, frequency = jodit_plugins_speech_recognize_constants__WEBPACK_IMPORTED_MODULE_1__.PII, gain = 0.1, type = 'sine' } = {}) {
439
+ const context = getContext(owner);
440
+ if (!context) {
410
441
  return;
411
442
  }
412
- // one context per document
413
- const context = new (jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.globalWindow.AudioContext || jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.globalWindow.webkitAudioContext)();
414
443
  const vol = context.createGain();
415
444
  const osc = context.createOscillator();
416
445
  osc.type = type;
417
446
  osc.frequency.value = frequency; // Hz
447
+ vol.gain.value = gain;
418
448
  osc.connect(vol);
419
449
  vol.connect(context.destination);
420
450
  osc.start(); // start the oscillator
421
451
  osc.stop(context.currentTime + sec);
422
- vol.gain.value = gain;
452
+ }
453
+ /**
454
+ * Close and forget the owner's AudioContext. Call this when the owner is
455
+ * destroyed so the context does not leak.
456
+ * @internal
457
+ */ function closeSound(owner) {
458
+ const context = contexts.get(owner);
459
+ if (context) {
460
+ contexts.delete(owner);
461
+ if (context.state !== 'closed') {
462
+ void context.close();
463
+ }
464
+ }
423
465
  }
424
466
 
425
467
 
@@ -1,8 +1,8 @@
1
1
  /*!
2
2
  * jodit - Jodit is an awesome and useful wysiwyg editor with filebrowser
3
3
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/jodit/)
4
- * Version: v4.12.2
4
+ * Version: v4.12.4
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
8
- !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var i in n)("object"==typeof exports?exports:e)[i]=n[i]}}(self,function(){return(self.webpackChunkjodit=self.webpackChunkjodit||[]).push([[882],{75143:function(e,t,n){"use strict";var i=n(22289),s=n(85932),o=n(7909),r=n(36400),u=n(29434),c=n(5266),l=n(97743),a=n(68097),p=n(22227),h=n.n(p);c.Config.prototype.speechRecognize={api:void 0!==l.SpeechRecognition?l.SpeechRecognition:null,sound:!0,continuous:!1,interimResults:!0,commands:{"newline|enter":"enter","delete|remove word|delete word":"backspaceWordButton",comma:"inserthtml::,",underline:"inserthtml::_",hyphen:"inserthtml::-",space:"inserthtml:: ",question:"inserthtml::?",dot:"inserthtml::.","quote|quotes|open quote":"inserthtml::'","header|header h1":"formatblock::h1","select all":"selectall"}},u.Icon.set("speech-recognize",h()),c.Config.prototype.controls.speechRecognize={isVisible(e){return!!e.o.speechRecognize.api},isActive(e,t){let n=(0,r.dataBind)(e,"speech");return!!(null==n?void 0:n.isEnabled)},isDisabled(e){return!e.o.speechRecognize.api},exec(e,t,{button:n,control:u}){let{api:c,lang:l,continuous:p,interimResults:h,sound:d}=e.o.speechRecognize;if(!c)return void e.alert("Speech recognize API unsupported in your browser");let m=(0,r.dataBind)(e,"speech");if(!m){var _;let t=new c;(m=new a.RecognizeManager(e.async,t)).lang=(0,s.isString)(l)?l:null!=(_=(0,o.attr)(e.od.documentElement,"lang"))?_:void 0,m.continuous=p,m.interimResults=h,m.sound=d,(0,r.dataBind)(e,"speech",m),m.on("pulse",e=>{n.setMod("pulse",e)}),m.on("result",t=>e.e.fire("speechRecognizeResult",t)),m.on("progress",t=>e.e.fire("speechRecognizeProgressResult",t)),m.on("error",t=>e.message.error(t)),n.hookStatus("beforeDestruct",()=>{(0,r.dataBind)(e,"speech",null),m.destruct()})}if(u.args){let e=u.args[0];if((0,i.isBoolean)(m[e])){m[e]=!m[e],m.isEnabled&&m.restart();return}}m.toggle(),m.isEnabled&&n.setMod("pulse",!0),n.state.activated=m.isEnabled},name:"speechRecognize",command:"toggleSpeechRecognize",tooltip:"Speech Recognize",list:{sound:"Sound",interimResults:"Interim Results"},childTemplate(e,t,n){var i;let s=(0,r.dataBind)(e,"speech"),o=null!=(i=null==s?void 0:s[t])?i:e.o.speechRecognize[t];return`<span class='jodit-speech-recognize__list-item'><input ${o?"checked":""} class='jodit-checkbox' type='checkbox'>&nbsp;${n}</span>`},mods:{stroke:!1}}},94092:function(e,t,n){"use strict";n.d(t,{PII:function(){return i},WARN:function(){return s}});let i=440,s=940},97743:function(e,t,n){"use strict";n.d(t,{SpeechRecognition:function(){return s}});var i=n(81937);let s=i.globalWindow?i.globalWindow.SpeechRecognition||i.globalWindow.webkitSpeechRecognition:void 0},8962:function(e,t,n){"use strict";function i(e,t){let[n,i]=t.split("::");e.execCommand(n,null,i)}n.d(t,{execSpellCommand:function(){return i}})},68097:function(e,t,n){"use strict";n.d(t,{RecognizeManager:function(){return l}});var i=n(25045),s=n(31635),o=n(84839),r=n(60216),u=n(32560),c=n(94092);class l extends r.Eventify{set lang(e){this._lang=e,this._api.lang=e}get lang(){return this._lang}set continuous(e){this._continuous=e,this._api.continuous=e}get continuous(){return this._continuous}set interimResults(e){this._interimResults=e,this._api.interimResults=e}get interimResults(){return this._interimResults}destruct(){this.stop(),l._instances.delete(this),super.destruct()}get isEnabled(){return this._isEnabled}start(){if(!this._isEnabled){this._isEnabled=!0,l._instances.forEach(e=>{e!==this&&e.stop()});try{this._api.start()}catch(e){this._onError(e),this.stop();return}this.__on("speechstart",this._onSpeechStart).__on("error",this._onError).__on("result",this._onProgress).__on("end",this._onResults)}}stop(){this._isEnabled&&(this._api.abort(),this._api.stop(),this.__off("speechstart",this._onSpeechStart).__off("error",this._onError).__off("result",this._onProgress).__off("end",this._onResults),this.async.clearTimeout(this._restartTimeout),this._isEnabled=!1,this.emit("pulse",!1))}toggle(){this._isEnabled?this.stop():this.start()}restart(){this.stop(),this.start()}__on(e,t){return this._api.addEventListener(e,t),this}__off(e,t){return this._api.removeEventListener(e,t),this}_onResults(e){this.emit("pulse",!1),this.emit("result",this.__interimResults),this.__interimResults="",this._makeSound(c.PII),this.restart()}_onProgress(e){if(this._isEnabled&&(this.__interimResults="",e.results)){for(let t=0;t<e.results.length;t++){let n=e.results.item(t);if(n.length){let{transcript:e}=n.item(0);this.__interimResults+=e}}this.__interimResults&&this.emit("progress",this.__interimResults)}}_onError(e){"voice-unavailable"===e.error&&this.emit("error","Voice unavailable"),"not-allowed"===e.error&&this.emit("error","Not allowed"),("language-unavailable"===e.error||"language-not-supported"===e.error)&&this.emit("error","Language unavailable"),this._makeSound(c.WARN),this.emit("pulse",!1),this.stop()}_makeSound(e){this.sound&&(0,u.sound)({frequency:e})}constructor(e,t){super(),(0,i._)(this,"async",void 0),(0,i._)(this,"_lang",void 0),(0,i._)(this,"_continuous",void 0),(0,i._)(this,"_interimResults",void 0),(0,i._)(this,"sound",void 0),(0,i._)(this,"_isEnabled",void 0),(0,i._)(this,"_restartTimeout",void 0),(0,i._)(this,"_onSpeechStart",void 0),(0,i._)(this,"_api",void 0),(0,i._)(this,"__interimResults",void 0),this.async=e,this._continuous=!1,this._interimResults=!1,this.sound=!0,this._isEnabled=!1,this._restartTimeout=0,this._onSpeechStart=e=>{this._isEnabled&&(this.async.clearTimeout(this._restartTimeout),this._restartTimeout=this.async.setTimeout(()=>{this.restart(),this.emit("pulse",!1),this._makeSound(c.WARN)},5e3),this.emit("pulse",!0))},this.__interimResults="",this._api=t,l._instances.add(this)}}(0,i._)(l,"_instances",new Set),(0,s.__decorate)([o.autobind],l.prototype,"_onResults",null),(0,s.__decorate)([o.autobind],l.prototype,"_onProgress",null),(0,s.__decorate)([o.autobind],l.prototype,"_onError",null)},32560:function(e,t,n){"use strict";n.d(t,{sound:function(){return o}});var i=n(81937),s=n(94092);function o({sec:e=.1,frequency:t=s.PII,gain:n=.1,type:r="sine"}={}){if(!i.globalWindow||void 0===i.globalWindow.AudioContext&&void 0===i.globalWindow.webkitAudioContext)return;let u=new(i.globalWindow.AudioContext||i.globalWindow.webkitAudioContext),c=u.createGain(),l=u.createOscillator();l.type=r,l.frequency.value=t,l.connect(c),c.connect(u.destination),l.start(),l.stop(u.currentTime+e),c.gain.value=n}},19922:function(e){e.exports={newline:"الخط الجديد",delete:"حذف",space:"الفضاء","Speech Recognize":"التعرف على الكلام",Sound:"الصوت","Interim Results":"النتائج المؤقتة"}},20759:function(e){e.exports={newline:"ř\xe1dek",delete:"odstranit",space:"prostora","Speech Recognize":"Rozpozn\xe1n\xed Řeči",Sound:"Zvuk","Interim Results":"Průběžn\xe9 V\xfdsledky"}},22350:function(e){e.exports={newline:"Zeilenumbruch",delete:"l\xf6schen",space:"Raum","Speech Recognize":"Sprache Erkennen",Sound:"Sound","Interim Results":"Zwischenergebnis"}},97509:function(e){e.exports={newline:"nueva l\xednea",delete:"eliminar",space:"espacio","Speech Recognize":"Reconocimiento de Voz",Sound:"Sonido","Interim Results":"Resultados Provisionales"}},49668:function(e){e.exports={newline:"خط جدید",delete:"حذف",space:"فضا","Speech Recognize":"گفتار را تشخیص دهید",Sound:"صدا","Interim Results":"نتایج موقت"}},33276:function(e){e.exports={"Speech Recognize":"Puheentunnistus",newline:"uusi rivi",delete:"poistaa",space:"tilaa",Sound:"\xc4\xe4ni","Interim Results":"V\xe4litulokset"}},43517:function(e){e.exports={newline:"nouvelle ligne",delete:"supprimer",space:"espace","Speech Recognize":"Reconnaissance Vocale",Sound:"Son","Interim Results":"R\xe9sultats Interm\xe9diaires"}},8858:function(e){e.exports={newline:"חדשות",delete:"מחק",space:"שטח","Speech Recognize":"דיבור מזהה",Sound:"קול","Interim Results":"תוצאות ביניים"}},22922:function(e){e.exports={newline:"\xfajsor",delete:"t\xf6rl\xe9s",space:"t\xe9r","Speech Recognize":"A Besz\xe9d Felismeri",Sound:"Hang","Interim Results":"Idők\xf6zi Eredm\xe9nyek"}},81900:function(e){e.exports={newline:"newline",delete:"Hapus",space:"ruang","Speech Recognize":"Pidato Mengenali",Sound:"Suara","Interim Results":"Hasil Sementara"}},43219:function(e,t,n){"use strict";n.r(t),n.d(t,{ar:function(){return i},cs_cz:function(){return s},de:function(){return o},es:function(){return r},fa:function(){return u},fi:function(){return c},fr:function(){return l},he:function(){return a},hu:function(){return p},id:function(){return h},it:function(){return d},ja:function(){return m},ko:function(){return _},mn:function(){return g},nl:function(){return f},no:function(){return R},pl:function(){return S},pt_br:function(){return v},ru:function(){return z},tr:function(){return w},ua:function(){return b},zh_cn:function(){return x},zh_tw:function(){return k}});var i=n(19922),s=n(20759),o=n(22350),r=n(97509),u=n(49668),c=n(33276),l=n(43517),a=n(8858),p=n(22922),h=n(81900),d=n(35420),m=n(18712),_=n(73363),g=n(74762),f=n(73759),R=n(72850),S=n(37161),v=n(62896),z=n(39996),w=n(93423),b=n(10179),x=n(62547),k=n(29475)},35420:function(e){e.exports={newline:"nuova riga",delete:"eliminare",space:"spazio","Speech Recognize":"Discorso Riconoscere",Sound:"Suono","Interim Results":"Risultati intermedi"}},18712:function(e){e.exports={newline:"改行",delete:"削除",space:"スペース","Speech Recognize":"音声認識",Sound:"音","Interim Results":"中間結果"}},73363:function(e){e.exports={newline:"줄 바꿈",delete:"삭제",space:"공간","Speech Recognize":"음성 인식",Sound:"소리","Interim Results":"중간 결과"}},74762:function(e){e.exports={newline:"Шинэ мөр",delete:"Устгах",space:"Зай","Speech Recognize":"Дуу хоолой таних",Sound:"Дуу","Interim Results":"Түр зуурын үр дүн"}},73759:function(e){e.exports={newline:"regel",delete:"verwijderen",space:"ruimte","Speech Recognize":"Spraak Herkennen",Sound:"Geluid","Interim Results":"Tussentijdse Resultaten"}},72850:function(e){e.exports={newline:"nylinje",delete:"slette",space:"rom","Speech Recognize":"Talegjenkjenning",Sound:"Lyd","Interim Results":"Midlertidige resultater"}},37161:function(e){e.exports={newline:"newline",delete:"usunąć",space:"przestrzeń","Speech Recognize":"Rozpoznawanie Mowy",Sound:"Dźwięk","Interim Results":"Wyniki Okresowe"}},62896:function(e){e.exports={newline:"linha",delete:"excluir",space:"espaco","Speech Recognize":"Discurso Reconhecer",Sound:"Som","Interim Results":"Resultados Provis\xf3rios"}},39996:function(e){e.exports={newline:"новая строка|перенос|энтер",delete:"удалить",space:"пробел","Speech Recognize":"Распознавание речи",Sound:"Звук","Interim Results":"Промежуточные результаты"}},93423:function(e){e.exports={newline:"yeni satır",delete:"silmek",space:"uzay","Speech Recognize":"Konuşma Tanıma",Sound:"Ses","Interim Results":"Ara Sonu\xe7lar"}},10179:function(e){e.exports={newline:"новая строка|перенос|ентер",delete:"видалити",space:"пробел","Speech Recognize":"Распознавание речи",Sound:"Звук","Interim Results":"Проміжні результати"}},62547:function(e){e.exports={newline:"新行",delete:"删除",space:"空间","Speech Recognize":"言语识别",Sound:"声音","Interim Results":"中期业绩"}},29475:function(e){e.exports={newline:"換行",delete:"刪除",space:"空白","Speech Recognize":"語音辨識",Sound:"聲音","Interim Results":"階段性辨識結果"}},31262:function(e,t,n){"use strict";n.r(t),n.d(t,{SpeechRecognizeNative:function(){return d}});var i=n(25045),s=n(31635),o=n(68616),r=n(23211),u=n(28077),c=n(71125),l=n(91206);n(75143);var a=n(73302),p=n(8962),h=n(43219);class d extends l.Plugin{afterInit(e){let{commands:t}=e.o.speechRecognize;t&&((0,u.extendLang)(h),(0,c.keys)(t,!1).forEach(n=>{n.split("|").forEach(i=>{i=i.trim().toLowerCase(),this._commandToWord[i]=t[n];let s=e.i18n(i);s!==i&&s.split("|").forEach(e=>{this._commandToWord[e.trim().toLowerCase()]=t[n].trim()})})}))}beforeDestruct(e){r.Dom.safeRemove(this.messagePopup)}onSpeechRecognizeProgressResult(e){this.messagePopup||(this.messagePopup=this.j.create.div("jodit-speech-recognize__popup")),this.j.workplace.appendChild(this.messagePopup),this.j.async.clearTimeout(this.__hidePopupTimeout),this.__hidePopupTimeout=this.j.async.setTimeout(()=>{r.Dom.safeRemove(this.messagePopup)},1e3),this.messagePopup.innerText=e+"|"}onSpeechRecognizeResult(e){this.j.async.clearTimeout(this.__hidePopupTimeout),r.Dom.safeRemove(this.messagePopup);let{j:t}=this,{s:n}=t;if(!this._checkCommand(e)){let{range:i}=n,s=n.current();if(n.isCollapsed()&&r.Dom.isText(s)&&r.Dom.isOrContains(t.editor,s)&&s.nodeValue){let o=s.nodeValue;s.nodeValue=o+(/[\u00A0 ]\uFEFF*$/.test(o)?"":" ")+e,i.setStartAfter(s),n.selectRange(i),t.synchronizeValues()}else n.insertHTML(e)}}_checkCommand(e){return e=e.toLowerCase().replace(/\./g,""),!!this._commandToWord[e]&&((0,p.execSpellCommand)(this.j,this._commandToWord[e]),!0)}constructor(...e){super(...e),(0,i._)(this,"buttons",[{group:"state",name:"speechRecognize"}]),(0,i._)(this,"messagePopup",void 0),(0,i._)(this,"__hidePopupTimeout",void 0),(0,i._)(this,"_commandToWord",{})}}(0,s.__decorate)([(0,o.watch)(":speechRecognizeProgressResult")],d.prototype,"onSpeechRecognizeProgressResult",null),(0,s.__decorate)([(0,o.watch)(":speechRecognizeResult")],d.prototype,"onSpeechRecognizeResult",null),a.Jodit.plugins.add("speech-recognize",d)},22227:function(e){e.exports='<svg viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"> <path d="M8,11c1.657,0,3-1.343,3-3V3c0-1.657-1.343-3-3-3S5,1.343,5,3v5C5,9.657,6.343,11,8,11z"/> <path d="M13,8V6h-1l0,1.844c0,1.92-1.282,3.688-3.164,4.071C6.266,12.438,4,10.479,4,8V6H3v2c0,2.414,1.721,4.434,4,4.899V15H5v1h6 v-1H9v-2.101C11.279,12.434,13,10.414,13,8z"/> </svg>'}},function(e){return e(e.s=31262)}])});
8
+ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var i in n)("object"==typeof exports?exports:e)[i]=n[i]}}(self,function(){return(self.webpackChunkjodit=self.webpackChunkjodit||[]).push([[882],{75143:function(e,t,n){"use strict";var i=n(22289),s=n(85932),o=n(7909),r=n(36400),u=n(29434),c=n(5266),l=n(97743),a=n(68097),p=n(22227),h=n.n(p);c.Config.prototype.speechRecognize={api:void 0!==l.SpeechRecognition?l.SpeechRecognition:null,sound:!0,continuous:!1,interimResults:!0,commands:{"newline|enter":"enter","delete|remove word|delete word":"backspaceWordButton",comma:"inserthtml::,",underline:"inserthtml::_",hyphen:"inserthtml::-",space:"inserthtml:: ",question:"inserthtml::?",dot:"inserthtml::.","quote|quotes|open quote":"inserthtml::'","header|header h1":"formatblock::h1","select all":"selectall"}},u.Icon.set("speech-recognize",h()),c.Config.prototype.controls.speechRecognize={isVisible(e){return!!e.o.speechRecognize.api},isActive(e,t){let n=(0,r.dataBind)(e,"speech");return!!(null==n?void 0:n.isEnabled)},isDisabled(e){return!e.o.speechRecognize.api},exec(e,t,{button:n,control:u}){let{api:c,lang:l,continuous:p,interimResults:h,sound:d}=e.o.speechRecognize;if(!c)return void e.alert("Speech recognize API unsupported in your browser");let m=(0,r.dataBind)(e,"speech");if(!m){var _;let t=new c;(m=new a.RecognizeManager(e.async,t)).lang=(0,s.isString)(l)?l:null!=(_=(0,o.attr)(e.od.documentElement,"lang"))?_:void 0,m.continuous=p,m.interimResults=h,m.sound=d,(0,r.dataBind)(e,"speech",m),m.on("pulse",e=>{n.setMod("pulse",e)}),m.on("result",t=>e.e.fire("speechRecognizeResult",t)),m.on("progress",t=>e.e.fire("speechRecognizeProgressResult",t)),m.on("error",t=>e.message.error(t)),e.hookStatus("beforeDestruct",()=>{(0,r.dataBind)(e,"speech",null),m.destruct()})}if(u.args){let e=u.args[0];if((0,i.isBoolean)(m[e])){m[e]=!m[e],m.isEnabled&&m.restart();return}}m.toggle(),m.isEnabled&&n.setMod("pulse",!0),n.state.activated=m.isEnabled},name:"speechRecognize",command:"toggleSpeechRecognize",tooltip:"Speech Recognize",list:{sound:"Sound",interimResults:"Interim Results"},childTemplate(e,t,n){var i;let s=(0,r.dataBind)(e,"speech"),o=null!=(i=null==s?void 0:s[t])?i:e.o.speechRecognize[t];return`<span class='jodit-speech-recognize__list-item'><input ${o?"checked":""} class='jodit-checkbox' type='checkbox'>&nbsp;${n}</span>`},mods:{stroke:!1}}},94092:function(e,t,n){"use strict";n.d(t,{PII:function(){return i},WARN:function(){return s}});let i=440,s=940},97743:function(e,t,n){"use strict";n.d(t,{SpeechRecognition:function(){return s}});var i=n(81937);let s=i.globalWindow?i.globalWindow.SpeechRecognition||i.globalWindow.webkitSpeechRecognition:void 0},8962:function(e,t,n){"use strict";function i(e,t){let[n,i]=t.split("::");e.execCommand(n,null,i)}n.d(t,{execSpellCommand:function(){return i}})},68097:function(e,t,n){"use strict";n.d(t,{RecognizeManager:function(){return l}});var i=n(25045),s=n(31635),o=n(84839),r=n(60216),u=n(32560),c=n(94092);class l extends r.Eventify{set lang(e){this._lang=e,this._api.lang=e}get lang(){return this._lang}set continuous(e){this._continuous=e,this._api.continuous=e}get continuous(){return this._continuous}set interimResults(e){this._interimResults=e,this._api.interimResults=e}get interimResults(){return this._interimResults}destruct(){this.stop(),(0,u.closeSound)(this),l._instances.delete(this),super.destruct()}get isEnabled(){return this._isEnabled}start(){if(!this._isEnabled){this._isEnabled=!0,l._instances.forEach(e=>{e!==this&&e.stop()});try{this._api.start()}catch(e){this._onError(e),this.stop();return}this.__on("speechstart",this._onSpeechStart).__on("error",this._onError).__on("result",this._onProgress).__on("end",this._onResults)}}stop(){this._isEnabled&&(this._api.abort(),this._api.stop(),this.__off("speechstart",this._onSpeechStart).__off("error",this._onError).__off("result",this._onProgress).__off("end",this._onResults),this.async.clearTimeout(this._restartTimeout),this._isEnabled=!1,this.emit("pulse",!1))}toggle(){this._isEnabled?this.stop():this.start()}restart(){this.stop(),this.start()}__on(e,t){return this._api.addEventListener(e,t),this}__off(e,t){return this._api.removeEventListener(e,t),this}_onResults(e){this.emit("pulse",!1),this.emit("result",this.__interimResults),this.__interimResults="",this._makeSound(c.PII),this.restart()}_onProgress(e){if(this._isEnabled&&(this.__interimResults="",e.results)){for(let t=0;t<e.results.length;t++){let n=e.results.item(t);if(n.length){let{transcript:e}=n.item(0);this.__interimResults+=e}}this.__interimResults&&this.emit("progress",this.__interimResults)}}_onError(e){"voice-unavailable"===e.error&&this.emit("error","Voice unavailable"),"not-allowed"===e.error&&this.emit("error","Not allowed"),("language-unavailable"===e.error||"language-not-supported"===e.error)&&this.emit("error","Language unavailable"),this._makeSound(c.WARN),this.emit("pulse",!1),this.stop()}_makeSound(e){this.sound&&(0,u.sound)(this,{frequency:e})}constructor(e,t){super(),(0,i._)(this,"async",void 0),(0,i._)(this,"_lang",void 0),(0,i._)(this,"_continuous",void 0),(0,i._)(this,"_interimResults",void 0),(0,i._)(this,"sound",void 0),(0,i._)(this,"_isEnabled",void 0),(0,i._)(this,"_restartTimeout",void 0),(0,i._)(this,"_onSpeechStart",void 0),(0,i._)(this,"_api",void 0),(0,i._)(this,"__interimResults",void 0),this.async=e,this._continuous=!1,this._interimResults=!1,this.sound=!0,this._isEnabled=!1,this._restartTimeout=0,this._onSpeechStart=e=>{this._isEnabled&&(this.async.clearTimeout(this._restartTimeout),this._restartTimeout=this.async.setTimeout(()=>{this.restart(),this.emit("pulse",!1),this._makeSound(c.WARN)},5e3),this.emit("pulse",!0))},this.__interimResults="",this._api=t,l._instances.add(this)}}(0,i._)(l,"_instances",new Set),(0,s.__decorate)([o.autobind],l.prototype,"_onResults",null),(0,s.__decorate)([o.autobind],l.prototype,"_onProgress",null),(0,s.__decorate)([o.autobind],l.prototype,"_onError",null)},32560:function(e,t,n){"use strict";n.d(t,{closeSound:function(){return u},sound:function(){return r}});var i=n(81937),s=n(94092);let o=new WeakMap;function r(e,{sec:t=.1,frequency:n=s.PII,gain:u=.1,type:c="sine"}={}){let l=function(e){if(!i.globalWindow)return null;let t=o.get(e);if(t&&"closed"!==t.state)return t;let n=i.globalWindow.AudioContext||i.globalWindow.webkitAudioContext;if(!n)return null;let s=new n;return o.set(e,s),s}(e);if(!l)return;let a=l.createGain(),p=l.createOscillator();p.type=c,p.frequency.value=n,a.gain.value=u,p.connect(a),a.connect(l.destination),p.start(),p.stop(l.currentTime+t)}function u(e){let t=o.get(e);t&&(o.delete(e),"closed"!==t.state&&t.close())}},19922:function(e){e.exports={newline:"الخط الجديد",delete:"حذف",space:"الفضاء","Speech Recognize":"التعرف على الكلام",Sound:"الصوت","Interim Results":"النتائج المؤقتة"}},20759:function(e){e.exports={newline:"ř\xe1dek",delete:"odstranit",space:"prostora","Speech Recognize":"Rozpozn\xe1n\xed Řeči",Sound:"Zvuk","Interim Results":"Průběžn\xe9 V\xfdsledky"}},22350:function(e){e.exports={newline:"Zeilenumbruch",delete:"l\xf6schen",space:"Raum","Speech Recognize":"Sprache Erkennen",Sound:"Sound","Interim Results":"Zwischenergebnis"}},97509:function(e){e.exports={newline:"nueva l\xednea",delete:"eliminar",space:"espacio","Speech Recognize":"Reconocimiento de Voz",Sound:"Sonido","Interim Results":"Resultados Provisionales"}},49668:function(e){e.exports={newline:"خط جدید",delete:"حذف",space:"فضا","Speech Recognize":"گفتار را تشخیص دهید",Sound:"صدا","Interim Results":"نتایج موقت"}},33276:function(e){e.exports={"Speech Recognize":"Puheentunnistus",newline:"uusi rivi",delete:"poistaa",space:"tilaa",Sound:"\xc4\xe4ni","Interim Results":"V\xe4litulokset"}},43517:function(e){e.exports={newline:"nouvelle ligne",delete:"supprimer",space:"espace","Speech Recognize":"Reconnaissance Vocale",Sound:"Son","Interim Results":"R\xe9sultats Interm\xe9diaires"}},8858:function(e){e.exports={newline:"חדשות",delete:"מחק",space:"שטח","Speech Recognize":"דיבור מזהה",Sound:"קול","Interim Results":"תוצאות ביניים"}},22922:function(e){e.exports={newline:"\xfajsor",delete:"t\xf6rl\xe9s",space:"t\xe9r","Speech Recognize":"A Besz\xe9d Felismeri",Sound:"Hang","Interim Results":"Idők\xf6zi Eredm\xe9nyek"}},81900:function(e){e.exports={newline:"newline",delete:"Hapus",space:"ruang","Speech Recognize":"Pidato Mengenali",Sound:"Suara","Interim Results":"Hasil Sementara"}},43219:function(e,t,n){"use strict";n.r(t),n.d(t,{ar:function(){return i},cs_cz:function(){return s},de:function(){return o},es:function(){return r},fa:function(){return u},fi:function(){return c},fr:function(){return l},he:function(){return a},hu:function(){return p},id:function(){return h},it:function(){return d},ja:function(){return m},ko:function(){return _},mn:function(){return g},nl:function(){return f},no:function(){return R},pl:function(){return S},pt_br:function(){return z},ru:function(){return v},tr:function(){return w},ua:function(){return b},zh_cn:function(){return x},zh_tw:function(){return k}});var i=n(19922),s=n(20759),o=n(22350),r=n(97509),u=n(49668),c=n(33276),l=n(43517),a=n(8858),p=n(22922),h=n(81900),d=n(35420),m=n(18712),_=n(73363),g=n(74762),f=n(73759),R=n(72850),S=n(37161),z=n(62896),v=n(39996),w=n(93423),b=n(10179),x=n(62547),k=n(29475)},35420:function(e){e.exports={newline:"nuova riga",delete:"eliminare",space:"spazio","Speech Recognize":"Discorso Riconoscere",Sound:"Suono","Interim Results":"Risultati intermedi"}},18712:function(e){e.exports={newline:"改行",delete:"削除",space:"スペース","Speech Recognize":"音声認識",Sound:"音","Interim Results":"中間結果"}},73363:function(e){e.exports={newline:"줄 바꿈",delete:"삭제",space:"공간","Speech Recognize":"음성 인식",Sound:"소리","Interim Results":"중간 결과"}},74762:function(e){e.exports={newline:"Шинэ мөр",delete:"Устгах",space:"Зай","Speech Recognize":"Дуу хоолой таних",Sound:"Дуу","Interim Results":"Түр зуурын үр дүн"}},73759:function(e){e.exports={newline:"regel",delete:"verwijderen",space:"ruimte","Speech Recognize":"Spraak Herkennen",Sound:"Geluid","Interim Results":"Tussentijdse Resultaten"}},72850:function(e){e.exports={newline:"nylinje",delete:"slette",space:"rom","Speech Recognize":"Talegjenkjenning",Sound:"Lyd","Interim Results":"Midlertidige resultater"}},37161:function(e){e.exports={newline:"newline",delete:"usunąć",space:"przestrzeń","Speech Recognize":"Rozpoznawanie Mowy",Sound:"Dźwięk","Interim Results":"Wyniki Okresowe"}},62896:function(e){e.exports={newline:"linha",delete:"excluir",space:"espaco","Speech Recognize":"Discurso Reconhecer",Sound:"Som","Interim Results":"Resultados Provis\xf3rios"}},39996:function(e){e.exports={newline:"новая строка|перенос|энтер",delete:"удалить",space:"пробел","Speech Recognize":"Распознавание речи",Sound:"Звук","Interim Results":"Промежуточные результаты"}},93423:function(e){e.exports={newline:"yeni satır",delete:"silmek",space:"uzay","Speech Recognize":"Konuşma Tanıma",Sound:"Ses","Interim Results":"Ara Sonu\xe7lar"}},10179:function(e){e.exports={newline:"новая строка|перенос|ентер",delete:"видалити",space:"пробел","Speech Recognize":"Распознавание речи",Sound:"Звук","Interim Results":"Проміжні результати"}},62547:function(e){e.exports={newline:"新行",delete:"删除",space:"空间","Speech Recognize":"言语识别",Sound:"声音","Interim Results":"中期业绩"}},29475:function(e){e.exports={newline:"換行",delete:"刪除",space:"空白","Speech Recognize":"語音辨識",Sound:"聲音","Interim Results":"階段性辨識結果"}},31262:function(e,t,n){"use strict";n.r(t),n.d(t,{SpeechRecognizeNative:function(){return d}});var i=n(25045),s=n(31635),o=n(68616),r=n(23211),u=n(28077),c=n(71125),l=n(91206);n(75143);var a=n(73302),p=n(8962),h=n(43219);class d extends l.Plugin{afterInit(e){let{commands:t}=e.o.speechRecognize;t&&((0,u.extendLang)(h),(0,c.keys)(t,!1).forEach(n=>{n.split("|").forEach(i=>{i=i.trim().toLowerCase(),this._commandToWord[i]=t[n];let s=e.i18n(i);s!==i&&s.split("|").forEach(e=>{this._commandToWord[e.trim().toLowerCase()]=t[n].trim()})})}))}beforeDestruct(e){r.Dom.safeRemove(this.messagePopup)}onSpeechRecognizeProgressResult(e){this.messagePopup||(this.messagePopup=this.j.create.div("jodit-speech-recognize__popup")),this.j.workplace.appendChild(this.messagePopup),this.j.async.clearTimeout(this.__hidePopupTimeout),this.__hidePopupTimeout=this.j.async.setTimeout(()=>{r.Dom.safeRemove(this.messagePopup)},1e3),this.messagePopup.innerText=e+"|"}onSpeechRecognizeResult(e){this.j.async.clearTimeout(this.__hidePopupTimeout),r.Dom.safeRemove(this.messagePopup);let{j:t}=this,{s:n}=t;if(!this._checkCommand(e)){let{range:i}=n,s=n.current();if(n.isCollapsed()&&r.Dom.isText(s)&&r.Dom.isOrContains(t.editor,s)&&s.nodeValue){let o=s.nodeValue;s.nodeValue=o+(/[\u00A0 ]\uFEFF*$/.test(o)?"":" ")+e,i.setStartAfter(s),n.selectRange(i),t.synchronizeValues()}else n.insertHTML(e)}}_checkCommand(e){return e=e.toLowerCase().replace(/\./g,""),!!this._commandToWord[e]&&((0,p.execSpellCommand)(this.j,this._commandToWord[e]),!0)}constructor(...e){super(...e),(0,i._)(this,"buttons",[{group:"state",name:"speechRecognize"}]),(0,i._)(this,"messagePopup",void 0),(0,i._)(this,"__hidePopupTimeout",void 0),(0,i._)(this,"_commandToWord",{})}}(0,s.__decorate)([(0,o.watch)(":speechRecognizeProgressResult")],d.prototype,"onSpeechRecognizeProgressResult",null),(0,s.__decorate)([(0,o.watch)(":speechRecognizeResult")],d.prototype,"onSpeechRecognizeResult",null),a.Jodit.plugins.add("speech-recognize",d)},22227:function(e){e.exports='<svg viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"> <path d="M8,11c1.657,0,3-1.343,3-3V3c0-1.657-1.343-3-3-3S5,1.343,5,3v5C5,9.657,6.343,11,8,11z"/> <path d="M13,8V6h-1l0,1.844c0,1.92-1.282,3.688-3.164,4.071C6.266,12.438,4,10.479,4,8V6H3v2c0,2.414,1.721,4.434,4,4.899V15H5v1h6 v-1H9v-2.101C11.279,12.434,13,10.414,13,8z"/> </svg>'}},function(e){return e(e.s=31262)}])});