tinymce-rails 5.0.5 → 5.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/source/tinymce/tinymce.js +1599 -1199
  3. data/lib/tinymce/rails/version.rb +2 -2
  4. data/vendor/assets/javascripts/tinymce/plugins/advlist/plugin.js +2 -2
  5. data/vendor/assets/javascripts/tinymce/plugins/anchor/plugin.js +2 -2
  6. data/vendor/assets/javascripts/tinymce/plugins/autolink/plugin.js +2 -2
  7. data/vendor/assets/javascripts/tinymce/plugins/autoresize/plugin.js +2 -2
  8. data/vendor/assets/javascripts/tinymce/plugins/autosave/plugin.js +2 -2
  9. data/vendor/assets/javascripts/tinymce/plugins/bbcode/plugin.js +2 -2
  10. data/vendor/assets/javascripts/tinymce/plugins/charmap/plugin.js +2 -2
  11. data/vendor/assets/javascripts/tinymce/plugins/code/plugin.js +2 -2
  12. data/vendor/assets/javascripts/tinymce/plugins/codesample/plugin.js +2 -2
  13. data/vendor/assets/javascripts/tinymce/plugins/colorpicker/plugin.js +2 -2
  14. data/vendor/assets/javascripts/tinymce/plugins/contextmenu/plugin.js +2 -2
  15. data/vendor/assets/javascripts/tinymce/plugins/directionality/plugin.js +2 -2
  16. data/vendor/assets/javascripts/tinymce/plugins/emoticons/plugin.js +2 -2
  17. data/vendor/assets/javascripts/tinymce/plugins/fullpage/plugin.js +2 -2
  18. data/vendor/assets/javascripts/tinymce/plugins/fullscreen/plugin.js +2 -2
  19. data/vendor/assets/javascripts/tinymce/plugins/help/plugin.js +2 -2
  20. data/vendor/assets/javascripts/tinymce/plugins/hr/plugin.js +2 -2
  21. data/vendor/assets/javascripts/tinymce/plugins/image/plugin.js +2 -2
  22. data/vendor/assets/javascripts/tinymce/plugins/imagetools/plugin.js +2 -2
  23. data/vendor/assets/javascripts/tinymce/plugins/importcss/plugin.js +2 -2
  24. data/vendor/assets/javascripts/tinymce/plugins/insertdatetime/plugin.js +2 -2
  25. data/vendor/assets/javascripts/tinymce/plugins/legacyoutput/plugin.js +2 -2
  26. data/vendor/assets/javascripts/tinymce/plugins/link/plugin.js +2 -2
  27. data/vendor/assets/javascripts/tinymce/plugins/lists/plugin.js +2 -2
  28. data/vendor/assets/javascripts/tinymce/plugins/media/plugin.js +2 -2
  29. data/vendor/assets/javascripts/tinymce/plugins/nonbreaking/plugin.js +2 -2
  30. data/vendor/assets/javascripts/tinymce/plugins/noneditable/plugin.js +2 -2
  31. data/vendor/assets/javascripts/tinymce/plugins/pagebreak/plugin.js +2 -2
  32. data/vendor/assets/javascripts/tinymce/plugins/paste/plugin.js +2 -2
  33. data/vendor/assets/javascripts/tinymce/plugins/preview/plugin.js +2 -2
  34. data/vendor/assets/javascripts/tinymce/plugins/print/plugin.js +2 -2
  35. data/vendor/assets/javascripts/tinymce/plugins/quickbars/plugin.js +2 -2
  36. data/vendor/assets/javascripts/tinymce/plugins/save/plugin.js +2 -2
  37. data/vendor/assets/javascripts/tinymce/plugins/searchreplace/plugin.js +2 -2
  38. data/vendor/assets/javascripts/tinymce/plugins/spellchecker/plugin.js +2 -2
  39. data/vendor/assets/javascripts/tinymce/plugins/tabfocus/plugin.js +2 -2
  40. data/vendor/assets/javascripts/tinymce/plugins/table/plugin.js +2 -2
  41. data/vendor/assets/javascripts/tinymce/plugins/template/plugin.js +2 -2
  42. data/vendor/assets/javascripts/tinymce/plugins/textcolor/plugin.js +2 -2
  43. data/vendor/assets/javascripts/tinymce/plugins/textpattern/plugin.js +2 -2
  44. data/vendor/assets/javascripts/tinymce/plugins/toc/plugin.js +2 -2
  45. data/vendor/assets/javascripts/tinymce/plugins/visualblocks/plugin.js +2 -2
  46. data/vendor/assets/javascripts/tinymce/plugins/visualchars/plugin.js +2 -2
  47. data/vendor/assets/javascripts/tinymce/plugins/wordcount/plugin.js +2 -2
  48. data/vendor/assets/javascripts/tinymce/skins/content/default/content.css +1 -1
  49. data/vendor/assets/javascripts/tinymce/skins/content/default/content.min.css +1 -1
  50. data/vendor/assets/javascripts/tinymce/skins/content/document/content.css +1 -1
  51. data/vendor/assets/javascripts/tinymce/skins/content/document/content.min.css +1 -1
  52. data/vendor/assets/javascripts/tinymce/skins/content/writer/content.css +1 -1
  53. data/vendor/assets/javascripts/tinymce/skins/content/writer/content.min.css +1 -1
  54. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.css +1 -1
  55. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.inline.css +1 -1
  56. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.inline.min.css +1 -1
  57. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.min.css +1 -1
  58. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.mobile.css +7 -0
  59. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.mobile.min.css +7 -0
  60. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/skin.css +1 -1
  61. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/skin.min.css +1 -1
  62. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/skin.mobile.css +7 -0
  63. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/skin.mobile.min.css +7 -0
  64. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/tinymce-mobile.woff +0 -0
  65. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.css +1 -1
  66. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.inline.css +1 -1
  67. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.inline.min.css +1 -1
  68. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.min.css +1 -1
  69. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.mobile.css +7 -1
  70. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.mobile.min.css +7 -1
  71. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/skin.css +1 -1
  72. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/skin.min.css +1 -1
  73. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/skin.mobile.css +7 -1
  74. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/skin.mobile.min.css +7 -1
  75. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/tinymce-mobile.woff +0 -0
  76. data/vendor/assets/javascripts/tinymce/themes/mobile/theme.js +2 -2
  77. data/vendor/assets/javascripts/tinymce/themes/silver/theme.js +2 -2
  78. data/vendor/assets/javascripts/tinymce/tinymce.js +2 -2
  79. metadata +8 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3825d9b3942f8c25ceadb1affeef6ce42722a18e44d09d6e3f0544a6f128dfbd
4
- data.tar.gz: 77bec138b529b542312107e587982343af10d7900243e28eedbab2efc16fab0e
3
+ metadata.gz: 0b4b337972d39d3ac9e105de1b323083d52c654dcb3b127156f12a5f3ef0f93b
4
+ data.tar.gz: 1e2c278b7aa341bb3517a31eb77e182a40f3026f02a7fd4d98c0d6bdc8759717
5
5
  SHA512:
6
- metadata.gz: de30dfac39f464b3e5ac7fe72b0e500931c6bdb9cbaf9a5b9a4f37881a2877aa86bb0c04cd45cb848337b9682e62bd8d0853c7726682eef79071ab46937172cc
7
- data.tar.gz: 66b84cbdbb7b3b5fd917359b59447c116e73a3076a4ffa12f4371ddb2a3c2f54629b226956e366912b446e84d574cc4385340dfce0e189c11a1b94f9fc789a6a
6
+ metadata.gz: 31369d3ba439cbc04b4006d621c777a20ccbd0417d2bd175f119e92aa66210157bd3edfc584aa4fa828c9c493df27103f46197019e99326a539e92b01361151c
7
+ data.tar.gz: c2c192c1c0203280ebac10ea212f1490ba368c8d34e051d24836a9886e83fccdd5c5b8d0dd1cc11227d512c8f7d648c3a19f50ada78d9240400321af02465777
@@ -4,24 +4,15 @@
4
4
  * For LGPL see License.txt in the project root for license information.
5
5
  * For commercial licenses see https://www.tiny.cloud/
6
6
  *
7
- * Version: 5.0.5 (2019-05-09)
7
+ * Version: 5.0.9 (2019-06-26)
8
8
  */
9
- (function () {
10
9
  (function (domGlobals) {
11
10
  'use strict';
12
11
 
13
12
  var noop = function () {
14
- var args = [];
15
- for (var _i = 0; _i < arguments.length; _i++) {
16
- args[_i] = arguments[_i];
17
- }
18
13
  };
19
14
  var noarg = function (f) {
20
15
  return function () {
21
- var args = [];
22
- for (var _i = 0; _i < arguments.length; _i++) {
23
- args[_i] = arguments[_i];
24
- }
25
16
  return f();
26
17
  };
27
18
  };
@@ -250,6 +241,7 @@
250
241
  var isFunction = isType('function');
251
242
  var isNumber = isType('number');
252
243
 
244
+ var slice = Array.prototype.slice;
253
245
  var rawIndexOf = function () {
254
246
  var pIndexOf = Array.prototype.indexOf;
255
247
  var fastIndex = function (xs, x) {
@@ -280,7 +272,7 @@
280
272
  var chunk = function (array, size) {
281
273
  var r = [];
282
274
  for (var i = 0; i < array.length; i += size) {
283
- var s = array.slice(i, i + size);
275
+ var s = slice.call(array, i, i + size);
284
276
  r.push(s);
285
277
  }
286
278
  return r;
@@ -418,7 +410,6 @@
418
410
  return x === a2[i];
419
411
  });
420
412
  };
421
- var slice = Array.prototype.slice;
422
413
  var reverse = function (xs) {
423
414
  var r = slice.call(xs, 0);
424
415
  r.reverse();
@@ -485,471 +476,827 @@
485
476
  from: from$1
486
477
  });
487
478
 
488
- var Global = typeof domGlobals.window !== 'undefined' ? domGlobals.window : Function('return this;')();
489
-
490
- var path = function (parts, scope) {
491
- var o = scope !== undefined && scope !== null ? scope : Global;
492
- for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)
493
- o = o[parts[i]];
494
- return o;
495
- };
496
- var resolve = function (p, scope) {
497
- var parts = p.split('.');
498
- return path(parts, scope);
499
- };
500
-
501
- var unsafe = function (name, scope) {
502
- return resolve(name, scope);
503
- };
504
- var getOrDie = function (name, scope) {
505
- var actual = unsafe(name, scope);
506
- if (actual === undefined || actual === null)
507
- throw name + ' not available on this browser';
508
- return actual;
509
- };
510
- var Global$1 = { getOrDie: getOrDie };
511
-
512
- var url = function () {
513
- return Global$1.getOrDie('URL');
514
- };
515
- var createObjectURL = function (blob) {
516
- return url().createObjectURL(blob);
517
- };
518
- var revokeObjectURL = function (u) {
519
- url().revokeObjectURL(u);
520
- };
521
- var URL = {
522
- createObjectURL: createObjectURL,
523
- revokeObjectURL: revokeObjectURL
524
- };
525
-
526
- var nav = domGlobals.navigator, userAgent = nav.userAgent;
527
- var opera, webkit, ie, ie11, ie12, gecko, mac, iDevice, android, fileApi, phone, tablet, windowsPhone;
528
- var matchMediaQuery = function (query) {
529
- return 'matchMedia' in domGlobals.window ? domGlobals.matchMedia(query).matches : false;
530
- };
531
- opera = false;
532
- android = /Android/.test(userAgent);
533
- webkit = /WebKit/.test(userAgent);
534
- ie = !webkit && !opera && /MSIE/gi.test(userAgent) && /Explorer/gi.test(nav.appName);
535
- ie = ie && /MSIE (\w+)\./.exec(userAgent)[1];
536
- ie11 = userAgent.indexOf('Trident/') !== -1 && (userAgent.indexOf('rv:') !== -1 || nav.appName.indexOf('Netscape') !== -1) ? 11 : false;
537
- ie12 = userAgent.indexOf('Edge/') !== -1 && !ie && !ie11 ? 12 : false;
538
- ie = ie || ie11 || ie12;
539
- gecko = !webkit && !ie11 && /Gecko/.test(userAgent);
540
- mac = userAgent.indexOf('Mac') !== -1;
541
- iDevice = /(iPad|iPhone)/.test(userAgent);
542
- fileApi = 'FormData' in domGlobals.window && 'FileReader' in domGlobals.window && 'URL' in domGlobals.window && !!URL.createObjectURL;
543
- phone = matchMediaQuery('only screen and (max-device-width: 480px)') && (android || iDevice);
544
- tablet = matchMediaQuery('only screen and (min-width: 800px)') && (android || iDevice);
545
- windowsPhone = userAgent.indexOf('Windows Phone') !== -1;
546
- if (ie12) {
547
- webkit = false;
548
- }
549
- var contentEditable = !iDevice || fileApi || parseInt(userAgent.match(/AppleWebKit\/(\d*)/)[1], 10) >= 534;
550
- var Env = {
551
- opera: opera,
552
- webkit: webkit,
553
- ie: ie,
554
- gecko: gecko,
555
- mac: mac,
556
- iOS: iDevice,
557
- android: android,
558
- contentEditable: contentEditable,
559
- transparentSrc: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
560
- caretAfter: ie !== 8,
561
- range: domGlobals.window.getSelection && 'Range' in domGlobals.window,
562
- documentMode: ie && !ie12 ? domGlobals.document.documentMode || 7 : 10,
563
- fileApi: fileApi,
564
- ceFalse: ie === false || ie > 8,
565
- cacheSuffix: null,
566
- container: null,
567
- overrideViewPort: null,
568
- experimentalShadowDom: false,
569
- canHaveCSP: ie === false || ie > 11,
570
- desktop: !phone && !tablet,
571
- windowsPhone: windowsPhone
479
+ var extendStatics = function (d, b) {
480
+ extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {
481
+ d.__proto__ = b;
482
+ } || function (d, b) {
483
+ for (var p in b)
484
+ if (b.hasOwnProperty(p))
485
+ d[p] = b[p];
486
+ };
487
+ return extendStatics(d, b);
572
488
  };
573
-
574
- var promise = function () {
575
- function bind(fn, thisArg) {
576
- return function () {
577
- fn.apply(thisArg, arguments);
578
- };
489
+ function __extends(d, b) {
490
+ extendStatics(d, b);
491
+ function __() {
492
+ this.constructor = d;
579
493
  }
580
- var isArray = Array.isArray || function (value) {
581
- return Object.prototype.toString.call(value) === '[object Array]';
582
- };
583
- var Promise = function (fn) {
584
- if (typeof this !== 'object') {
585
- throw new TypeError('Promises must be constructed via new');
586
- }
587
- if (typeof fn !== 'function') {
588
- throw new TypeError('not a function');
494
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
495
+ }
496
+ var __assign = function () {
497
+ __assign = Object.assign || function __assign(t) {
498
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
499
+ s = arguments[i];
500
+ for (var p in s)
501
+ if (Object.prototype.hasOwnProperty.call(s, p))
502
+ t[p] = s[p];
589
503
  }
590
- this._state = null;
591
- this._value = null;
592
- this._deferreds = [];
593
- doResolve(fn, bind(resolve, this), bind(reject, this));
504
+ return t;
594
505
  };
595
- var asap = Promise.immediateFn || typeof domGlobals.setImmediate === 'function' && domGlobals.setImmediate || function (fn) {
596
- domGlobals.setTimeout(fn, 1);
506
+ return __assign.apply(this, arguments);
507
+ };
508
+ function __rest(s, e) {
509
+ var t = {};
510
+ for (var p in s)
511
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
512
+ t[p] = s[p];
513
+ if (s != null && typeof Object.getOwnPropertySymbols === 'function')
514
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++)
515
+ if (e.indexOf(p[i]) < 0)
516
+ t[p[i]] = s[p[i]];
517
+ return t;
518
+ }
519
+ function __decorate(decorators, target, key, desc) {
520
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
521
+ if (typeof Reflect === 'object' && typeof Reflect.decorate === 'function')
522
+ r = Reflect.decorate(decorators, target, key, desc);
523
+ else
524
+ for (var i = decorators.length - 1; i >= 0; i--)
525
+ if (d = decorators[i])
526
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
527
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
528
+ }
529
+ function __param(paramIndex, decorator) {
530
+ return function (target, key) {
531
+ decorator(target, key, paramIndex);
597
532
  };
598
- function handle(deferred) {
599
- var me = this;
600
- if (this._state === null) {
601
- this._deferreds.push(deferred);
602
- return;
603
- }
604
- asap(function () {
605
- var cb = me._state ? deferred.onFulfilled : deferred.onRejected;
606
- if (cb === null) {
607
- (me._state ? deferred.resolve : deferred.reject)(me._value);
608
- return;
609
- }
610
- var ret;
533
+ }
534
+ function __metadata(metadataKey, metadataValue) {
535
+ if (typeof Reflect === 'object' && typeof Reflect.metadata === 'function')
536
+ return Reflect.metadata(metadataKey, metadataValue);
537
+ }
538
+ function __awaiter(thisArg, _arguments, P, generator) {
539
+ return new (P || (P = Promise))(function (resolve, reject) {
540
+ function fulfilled(value) {
611
541
  try {
612
- ret = cb(me._value);
542
+ step(generator.next(value));
613
543
  } catch (e) {
614
- deferred.reject(e);
615
- return;
616
- }
617
- deferred.resolve(ret);
618
- });
619
- }
620
- function resolve(newValue) {
621
- try {
622
- if (newValue === this) {
623
- throw new TypeError('A promise cannot be resolved with itself.');
544
+ reject(e);
624
545
  }
625
- if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
626
- var then = newValue.then;
627
- if (typeof then === 'function') {
628
- doResolve(bind(then, newValue), bind(resolve, this), bind(reject, this));
629
- return;
630
- }
546
+ }
547
+ function rejected(value) {
548
+ try {
549
+ step(generator['throw'](value));
550
+ } catch (e) {
551
+ reject(e);
631
552
  }
632
- this._state = true;
633
- this._value = newValue;
634
- finale.call(this);
635
- } catch (e) {
636
- reject.call(this, e);
637
553
  }
638
- }
639
- function reject(newValue) {
640
- this._state = false;
641
- this._value = newValue;
642
- finale.call(this);
643
- }
644
- function finale() {
645
- for (var i = 0, len = this._deferreds.length; i < len; i++) {
646
- handle.call(this, this._deferreds[i]);
554
+ function step(result) {
555
+ result.done ? resolve(result.value) : new P(function (resolve) {
556
+ resolve(result.value);
557
+ }).then(fulfilled, rejected);
647
558
  }
648
- this._deferreds = null;
559
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
560
+ });
561
+ }
562
+ function __generator(thisArg, body) {
563
+ var _ = {
564
+ label: 0,
565
+ sent: function () {
566
+ if (t[0] & 1)
567
+ throw t[1];
568
+ return t[1];
569
+ },
570
+ trys: [],
571
+ ops: []
572
+ }, f, y, t, g;
573
+ return g = {
574
+ next: verb(0),
575
+ 'throw': verb(1),
576
+ 'return': verb(2)
577
+ }, typeof Symbol === 'function' && (g[Symbol.iterator] = function () {
578
+ return this;
579
+ }), g;
580
+ function verb(n) {
581
+ return function (v) {
582
+ return step([
583
+ n,
584
+ v
585
+ ]);
586
+ };
649
587
  }
650
- function Handler(onFulfilled, onRejected, resolve, reject) {
651
- this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
652
- this.onRejected = typeof onRejected === 'function' ? onRejected : null;
653
- this.resolve = resolve;
654
- this.reject = reject;
655
- }
656
- function doResolve(fn, onFulfilled, onRejected) {
657
- var done = false;
658
- try {
659
- fn(function (value) {
660
- if (done) {
661
- return;
662
- }
663
- done = true;
664
- onFulfilled(value);
665
- }, function (reason) {
666
- if (done) {
667
- return;
668
- }
669
- done = true;
670
- onRejected(reason);
671
- });
672
- } catch (ex) {
673
- if (done) {
674
- return;
675
- }
676
- done = true;
677
- onRejected(ex);
678
- }
679
- }
680
- Promise.prototype.catch = function (onRejected) {
681
- return this.then(null, onRejected);
682
- };
683
- Promise.prototype.then = function (onFulfilled, onRejected) {
684
- var me = this;
685
- return new Promise(function (resolve, reject) {
686
- handle.call(me, new Handler(onFulfilled, onRejected, resolve, reject));
687
- });
688
- };
689
- Promise.all = function () {
690
- var args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments);
691
- return new Promise(function (resolve, reject) {
692
- if (args.length === 0) {
693
- return resolve([]);
694
- }
695
- var remaining = args.length;
696
- function res(i, val) {
697
- try {
698
- if (val && (typeof val === 'object' || typeof val === 'function')) {
699
- var then = val.then;
700
- if (typeof then === 'function') {
701
- then.call(val, function (val) {
702
- res(i, val);
703
- }, reject);
704
- return;
705
- }
588
+ function step(op) {
589
+ if (f)
590
+ throw new TypeError('Generator is already executing.');
591
+ while (_)
592
+ try {
593
+ if (f = 1, y && (t = op[0] & 2 ? y['return'] : op[0] ? y['throw'] || ((t = y['return']) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
594
+ return t;
595
+ if (y = 0, t)
596
+ op = [
597
+ op[0] & 2,
598
+ t.value
599
+ ];
600
+ switch (op[0]) {
601
+ case 0:
602
+ case 1:
603
+ t = op;
604
+ break;
605
+ case 4:
606
+ _.label++;
607
+ return {
608
+ value: op[1],
609
+ done: false
610
+ };
611
+ case 5:
612
+ _.label++;
613
+ y = op[1];
614
+ op = [0];
615
+ continue;
616
+ case 7:
617
+ op = _.ops.pop();
618
+ _.trys.pop();
619
+ continue;
620
+ default:
621
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
622
+ _ = 0;
623
+ continue;
706
624
  }
707
- args[i] = val;
708
- if (--remaining === 0) {
709
- resolve(args);
625
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
626
+ _.label = op[1];
627
+ break;
710
628
  }
711
- } catch (ex) {
712
- reject(ex);
629
+ if (op[0] === 6 && _.label < t[1]) {
630
+ _.label = t[1];
631
+ t = op;
632
+ break;
633
+ }
634
+ if (t && _.label < t[2]) {
635
+ _.label = t[2];
636
+ _.ops.push(op);
637
+ break;
638
+ }
639
+ if (t[2])
640
+ _.ops.pop();
641
+ _.trys.pop();
642
+ continue;
713
643
  }
644
+ op = body.call(thisArg, _);
645
+ } catch (e) {
646
+ op = [
647
+ 6,
648
+ e
649
+ ];
650
+ y = 0;
651
+ } finally {
652
+ f = t = 0;
714
653
  }
715
- for (var i = 0; i < args.length; i++) {
716
- res(i, args[i]);
717
- }
718
- });
719
- };
720
- Promise.resolve = function (value) {
721
- if (value && typeof value === 'object' && value.constructor === Promise) {
722
- return value;
654
+ if (op[0] & 5)
655
+ throw op[1];
656
+ return {
657
+ value: op[0] ? op[1] : void 0,
658
+ done: true
659
+ };
660
+ }
661
+ }
662
+ function __exportStar(m, exports) {
663
+ for (var p in m)
664
+ if (!exports.hasOwnProperty(p))
665
+ exports[p] = m[p];
666
+ }
667
+ function __values(o) {
668
+ var m = typeof Symbol === 'function' && o[Symbol.iterator], i = 0;
669
+ if (m)
670
+ return m.call(o);
671
+ return {
672
+ next: function () {
673
+ if (o && i >= o.length)
674
+ o = void 0;
675
+ return {
676
+ value: o && o[i++],
677
+ done: !o
678
+ };
723
679
  }
724
- return new Promise(function (resolve) {
725
- resolve(value);
726
- });
727
- };
728
- Promise.reject = function (value) {
729
- return new Promise(function (resolve, reject) {
730
- reject(value);
731
- });
732
- };
733
- Promise.race = function (values) {
734
- return new Promise(function (resolve, reject) {
735
- for (var i = 0, len = values.length; i < len; i++) {
736
- values[i].then(resolve, reject);
737
- }
738
- });
739
- };
740
- return Promise;
741
- };
742
- var promiseObj = window.Promise ? window.Promise : promise();
743
-
744
- var requestAnimationFramePromise;
745
- var requestAnimationFrame = function (callback, element) {
746
- var i, requestAnimationFrameFunc = domGlobals.window.requestAnimationFrame;
747
- var vendors = [
748
- 'ms',
749
- 'moz',
750
- 'webkit'
751
- ];
752
- var featurefill = function (callback) {
753
- domGlobals.window.setTimeout(callback, 0);
754
680
  };
755
- for (i = 0; i < vendors.length && !requestAnimationFrameFunc; i++) {
756
- requestAnimationFrameFunc = domGlobals.window[vendors[i] + 'RequestAnimationFrame'];
681
+ }
682
+ function __read(o, n) {
683
+ var m = typeof Symbol === 'function' && o[Symbol.iterator];
684
+ if (!m)
685
+ return o;
686
+ var i = m.call(o), r, ar = [], e;
687
+ try {
688
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
689
+ ar.push(r.value);
690
+ } catch (error) {
691
+ e = { error: error };
692
+ } finally {
693
+ try {
694
+ if (r && !r.done && (m = i['return']))
695
+ m.call(i);
696
+ } finally {
697
+ if (e)
698
+ throw e.error;
699
+ }
757
700
  }
758
- if (!requestAnimationFrameFunc) {
759
- requestAnimationFrameFunc = featurefill;
701
+ return ar;
702
+ }
703
+ function __spread() {
704
+ for (var ar = [], i = 0; i < arguments.length; i++)
705
+ ar = ar.concat(__read(arguments[i]));
706
+ return ar;
707
+ }
708
+ function __await(v) {
709
+ return this instanceof __await ? (this.v = v, this) : new __await(v);
710
+ }
711
+ function __asyncGenerator(thisArg, _arguments, generator) {
712
+ if (!Symbol.asyncIterator)
713
+ throw new TypeError('Symbol.asyncIterator is not defined.');
714
+ var g = generator.apply(thisArg, _arguments || []), i, q = [];
715
+ return i = {}, verb('next'), verb('throw'), verb('return'), i[Symbol.asyncIterator] = function () {
716
+ return this;
717
+ }, i;
718
+ function verb(n) {
719
+ if (g[n])
720
+ i[n] = function (v) {
721
+ return new Promise(function (a, b) {
722
+ q.push([
723
+ n,
724
+ v,
725
+ a,
726
+ b
727
+ ]) > 1 || resume(n, v);
728
+ });
729
+ };
760
730
  }
761
- requestAnimationFrameFunc(callback, element);
762
- };
763
- var wrappedSetTimeout = function (callback, time) {
764
- if (typeof time !== 'number') {
765
- time = 0;
731
+ function resume(n, v) {
732
+ try {
733
+ step(g[n](v));
734
+ } catch (e) {
735
+ settle(q[0][3], e);
736
+ }
766
737
  }
767
- return domGlobals.setTimeout(callback, time);
768
- };
769
- var wrappedSetInterval = function (callback, time) {
770
- if (typeof time !== 'number') {
771
- time = 1;
738
+ function step(r) {
739
+ r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
772
740
  }
773
- return domGlobals.setInterval(callback, time);
774
- };
775
- var wrappedClearTimeout = function (id) {
776
- return domGlobals.clearTimeout(id);
741
+ function fulfill(value) {
742
+ resume('next', value);
743
+ }
744
+ function reject(value) {
745
+ resume('throw', value);
746
+ }
747
+ function settle(f, v) {
748
+ if (f(v), q.shift(), q.length)
749
+ resume(q[0][0], q[0][1]);
750
+ }
751
+ }
752
+ function __asyncDelegator(o) {
753
+ var i, p;
754
+ return i = {}, verb('next'), verb('throw', function (e) {
755
+ throw e;
756
+ }), verb('return'), i[Symbol.iterator] = function () {
757
+ return this;
758
+ }, i;
759
+ function verb(n, f) {
760
+ i[n] = o[n] ? function (v) {
761
+ return (p = !p) ? {
762
+ value: __await(o[n](v)),
763
+ done: n === 'return'
764
+ } : f ? f(v) : v;
765
+ } : f;
766
+ }
767
+ }
768
+ function __asyncValues(o) {
769
+ if (!Symbol.asyncIterator)
770
+ throw new TypeError('Symbol.asyncIterator is not defined.');
771
+ var m = o[Symbol.asyncIterator], i;
772
+ return m ? m.call(o) : (o = typeof __values === 'function' ? __values(o) : o[Symbol.iterator](), i = {}, verb('next'), verb('throw'), verb('return'), i[Symbol.asyncIterator] = function () {
773
+ return this;
774
+ }, i);
775
+ function verb(n) {
776
+ i[n] = o[n] && function (v) {
777
+ return new Promise(function (resolve, reject) {
778
+ v = o[n](v), settle(resolve, reject, v.done, v.value);
779
+ });
780
+ };
781
+ }
782
+ function settle(resolve, reject, d, v) {
783
+ Promise.resolve(v).then(function (v) {
784
+ resolve({
785
+ value: v,
786
+ done: d
787
+ });
788
+ }, reject);
789
+ }
790
+ }
791
+ function __makeTemplateObject(cooked, raw) {
792
+ if (Object.defineProperty) {
793
+ Object.defineProperty(cooked, 'raw', { value: raw });
794
+ } else {
795
+ cooked.raw = raw;
796
+ }
797
+ return cooked;
798
+ }
799
+ function __importStar(mod) {
800
+ if (mod && mod.__esModule)
801
+ return mod;
802
+ var result = {};
803
+ if (mod != null)
804
+ for (var k in mod)
805
+ if (Object.hasOwnProperty.call(mod, k))
806
+ result[k] = mod[k];
807
+ result.default = mod;
808
+ return result;
809
+ }
810
+ function __importDefault(mod) {
811
+ return mod && mod.__esModule ? mod : { default: mod };
812
+ }
813
+
814
+ var tslib_1 = /*#__PURE__*/Object.freeze({
815
+ __extends: __extends,
816
+ get __assign () { return __assign; },
817
+ __rest: __rest,
818
+ __decorate: __decorate,
819
+ __param: __param,
820
+ __metadata: __metadata,
821
+ __awaiter: __awaiter,
822
+ __generator: __generator,
823
+ __exportStar: __exportStar,
824
+ __values: __values,
825
+ __read: __read,
826
+ __spread: __spread,
827
+ __await: __await,
828
+ __asyncGenerator: __asyncGenerator,
829
+ __asyncDelegator: __asyncDelegator,
830
+ __asyncValues: __asyncValues,
831
+ __makeTemplateObject: __makeTemplateObject,
832
+ __importStar: __importStar,
833
+ __importDefault: __importDefault
834
+ });
835
+
836
+ var Global = typeof domGlobals.window !== 'undefined' ? domGlobals.window : Function('return this;')();
837
+
838
+ var path = function (parts, scope) {
839
+ var o = scope !== undefined && scope !== null ? scope : Global;
840
+ for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)
841
+ o = o[parts[i]];
842
+ return o;
777
843
  };
778
- var wrappedClearInterval = function (id) {
779
- return domGlobals.clearInterval(id);
844
+ var resolve = function (p, scope) {
845
+ var parts = p.split('.');
846
+ return path(parts, scope);
780
847
  };
781
- var debounce = function (callback, time) {
782
- var timer, func;
783
- func = function () {
784
- var args = [];
785
- for (var _i = 0; _i < arguments.length; _i++) {
786
- args[_i] = arguments[_i];
787
- }
788
- domGlobals.clearTimeout(timer);
789
- timer = wrappedSetTimeout(function () {
790
- callback.apply(this, args);
791
- }, time);
792
- };
793
- func.stop = function () {
794
- domGlobals.clearTimeout(timer);
795
- };
796
- return func;
848
+
849
+ var unsafe = function (name, scope) {
850
+ return resolve(name, scope);
797
851
  };
798
- var Delay = {
799
- requestAnimationFrame: function (callback, element) {
800
- if (requestAnimationFramePromise) {
801
- requestAnimationFramePromise.then(callback);
802
- return;
803
- }
804
- requestAnimationFramePromise = new promiseObj(function (resolve) {
805
- if (!element) {
806
- element = domGlobals.document.body;
807
- }
808
- requestAnimationFrame(resolve, element);
809
- }).then(callback);
810
- },
811
- setTimeout: wrappedSetTimeout,
812
- setInterval: wrappedSetInterval,
813
- setEditorTimeout: function (editor, callback, time) {
814
- return wrappedSetTimeout(function () {
815
- if (!editor.removed) {
816
- callback();
817
- }
818
- }, time);
819
- },
820
- setEditorInterval: function (editor, callback, time) {
821
- var timer;
822
- timer = wrappedSetInterval(function () {
823
- if (!editor.removed) {
824
- callback();
825
- } else {
826
- domGlobals.clearInterval(timer);
827
- }
828
- }, time);
829
- return timer;
830
- },
831
- debounce: debounce,
832
- throttle: debounce,
833
- clearInterval: wrappedClearInterval,
834
- clearTimeout: wrappedClearTimeout
852
+ var getOrDie = function (name, scope) {
853
+ var actual = unsafe(name, scope);
854
+ if (actual === undefined || actual === null)
855
+ throw name + ' not available on this browser';
856
+ return actual;
835
857
  };
858
+ var Global$1 = { getOrDie: getOrDie };
836
859
 
837
- var eventExpandoPrefix = 'mce-data-';
838
- var mouseEventRe = /^(?:mouse|contextmenu)|click/;
839
- var deprecated = {
840
- keyLocation: 1,
841
- layerX: 1,
842
- layerY: 1,
843
- returnValue: 1,
844
- webkitMovementX: 1,
845
- webkitMovementY: 1,
846
- keyIdentifier: 1
860
+ var url = function () {
861
+ return Global$1.getOrDie('URL');
847
862
  };
848
- var hasIsDefaultPrevented = function (event) {
849
- return event.isDefaultPrevented === returnTrue || event.isDefaultPrevented === returnFalse;
863
+ var createObjectURL = function (blob) {
864
+ return url().createObjectURL(blob);
850
865
  };
851
- var returnFalse = function () {
852
- return false;
866
+ var revokeObjectURL = function (u) {
867
+ url().revokeObjectURL(u);
853
868
  };
854
- var returnTrue = function () {
855
- return true;
869
+ var URL = {
870
+ createObjectURL: createObjectURL,
871
+ revokeObjectURL: revokeObjectURL
856
872
  };
857
- var addEvent = function (target, name, callback, capture) {
858
- if (target.addEventListener) {
859
- target.addEventListener(name, callback, capture || false);
860
- } else if (target.attachEvent) {
861
- target.attachEvent('on' + name, callback);
862
- }
873
+
874
+ var nav = domGlobals.navigator, userAgent = nav.userAgent;
875
+ var opera, webkit, ie, ie11, ie12, gecko, mac, iDevice, android, fileApi, phone, tablet, windowsPhone;
876
+ var matchMediaQuery = function (query) {
877
+ return 'matchMedia' in domGlobals.window ? domGlobals.matchMedia(query).matches : false;
863
878
  };
864
- var removeEvent = function (target, name, callback, capture) {
865
- if (target.removeEventListener) {
866
- target.removeEventListener(name, callback, capture || false);
867
- } else if (target.detachEvent) {
868
- target.detachEvent('on' + name, callback);
869
- }
879
+ opera = false;
880
+ android = /Android/.test(userAgent);
881
+ webkit = /WebKit/.test(userAgent);
882
+ ie = !webkit && !opera && /MSIE/gi.test(userAgent) && /Explorer/gi.test(nav.appName);
883
+ ie = ie && /MSIE (\w+)\./.exec(userAgent)[1];
884
+ ie11 = userAgent.indexOf('Trident/') !== -1 && (userAgent.indexOf('rv:') !== -1 || nav.appName.indexOf('Netscape') !== -1) ? 11 : false;
885
+ ie12 = userAgent.indexOf('Edge/') !== -1 && !ie && !ie11 ? 12 : false;
886
+ ie = ie || ie11 || ie12;
887
+ gecko = !webkit && !ie11 && /Gecko/.test(userAgent);
888
+ mac = userAgent.indexOf('Mac') !== -1;
889
+ iDevice = /(iPad|iPhone)/.test(userAgent);
890
+ fileApi = 'FormData' in domGlobals.window && 'FileReader' in domGlobals.window && 'URL' in domGlobals.window && !!URL.createObjectURL;
891
+ phone = matchMediaQuery('only screen and (max-device-width: 480px)') && (android || iDevice);
892
+ tablet = matchMediaQuery('only screen and (min-width: 800px)') && (android || iDevice);
893
+ windowsPhone = userAgent.indexOf('Windows Phone') !== -1;
894
+ if (ie12) {
895
+ webkit = false;
896
+ }
897
+ var contentEditable = !iDevice || fileApi || parseInt(userAgent.match(/AppleWebKit\/(\d*)/)[1], 10) >= 534;
898
+ var Env = {
899
+ opera: opera,
900
+ webkit: webkit,
901
+ ie: ie,
902
+ gecko: gecko,
903
+ mac: mac,
904
+ iOS: iDevice,
905
+ android: android,
906
+ contentEditable: contentEditable,
907
+ transparentSrc: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
908
+ caretAfter: ie !== 8,
909
+ range: domGlobals.window.getSelection && 'Range' in domGlobals.window,
910
+ documentMode: ie && !ie12 ? domGlobals.document.documentMode || 7 : 10,
911
+ fileApi: fileApi,
912
+ ceFalse: ie === false || ie > 8,
913
+ cacheSuffix: null,
914
+ container: null,
915
+ experimentalShadowDom: false,
916
+ canHaveCSP: ie === false || ie > 11,
917
+ desktop: !phone && !tablet,
918
+ windowsPhone: windowsPhone
870
919
  };
871
- var getTargetFromShadowDom = function (event, defaultTarget) {
872
- if (event.composedPath) {
873
- var composedPath = event.composedPath();
874
- if (composedPath && composedPath.length > 0) {
875
- return composedPath[0];
920
+
921
+ var promise = function () {
922
+ function bind(fn, thisArg) {
923
+ return function () {
924
+ fn.apply(thisArg, arguments);
925
+ };
926
+ }
927
+ var isArray = Array.isArray || function (value) {
928
+ return Object.prototype.toString.call(value) === '[object Array]';
929
+ };
930
+ var Promise = function (fn) {
931
+ if (typeof this !== 'object') {
932
+ throw new TypeError('Promises must be constructed via new');
933
+ }
934
+ if (typeof fn !== 'function') {
935
+ throw new TypeError('not a function');
936
+ }
937
+ this._state = null;
938
+ this._value = null;
939
+ this._deferreds = [];
940
+ doResolve(fn, bind(resolve, this), bind(reject, this));
941
+ };
942
+ var asap = Promise.immediateFn || typeof domGlobals.setImmediate === 'function' && domGlobals.setImmediate || function (fn) {
943
+ domGlobals.setTimeout(fn, 1);
944
+ };
945
+ function handle(deferred) {
946
+ var me = this;
947
+ if (this._state === null) {
948
+ this._deferreds.push(deferred);
949
+ return;
876
950
  }
951
+ asap(function () {
952
+ var cb = me._state ? deferred.onFulfilled : deferred.onRejected;
953
+ if (cb === null) {
954
+ (me._state ? deferred.resolve : deferred.reject)(me._value);
955
+ return;
956
+ }
957
+ var ret;
958
+ try {
959
+ ret = cb(me._value);
960
+ } catch (e) {
961
+ deferred.reject(e);
962
+ return;
963
+ }
964
+ deferred.resolve(ret);
965
+ });
877
966
  }
878
- return defaultTarget;
879
- };
880
- var fix = function (originalEvent, data) {
881
- var name;
882
- var event = data || {};
883
- for (name in originalEvent) {
884
- if (!deprecated[name]) {
885
- event[name] = originalEvent[name];
967
+ function resolve(newValue) {
968
+ try {
969
+ if (newValue === this) {
970
+ throw new TypeError('A promise cannot be resolved with itself.');
971
+ }
972
+ if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
973
+ var then = newValue.then;
974
+ if (typeof then === 'function') {
975
+ doResolve(bind(then, newValue), bind(resolve, this), bind(reject, this));
976
+ return;
977
+ }
978
+ }
979
+ this._state = true;
980
+ this._value = newValue;
981
+ finale.call(this);
982
+ } catch (e) {
983
+ reject.call(this, e);
886
984
  }
887
985
  }
888
- if (!event.target) {
889
- event.target = event.srcElement || domGlobals.document;
986
+ function reject(newValue) {
987
+ this._state = false;
988
+ this._value = newValue;
989
+ finale.call(this);
890
990
  }
891
- if (Env.experimentalShadowDom) {
892
- event.target = getTargetFromShadowDom(originalEvent, event.target);
991
+ function finale() {
992
+ for (var i = 0, len = this._deferreds.length; i < len; i++) {
993
+ handle.call(this, this._deferreds[i]);
994
+ }
995
+ this._deferreds = null;
893
996
  }
894
- if (originalEvent && mouseEventRe.test(originalEvent.type) && originalEvent.pageX === undefined && originalEvent.clientX !== undefined) {
895
- var eventDoc = event.target.ownerDocument || domGlobals.document;
896
- var doc = eventDoc.documentElement;
897
- var body = eventDoc.body;
898
- event.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
899
- event.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
997
+ function Handler(onFulfilled, onRejected, resolve, reject) {
998
+ this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
999
+ this.onRejected = typeof onRejected === 'function' ? onRejected : null;
1000
+ this.resolve = resolve;
1001
+ this.reject = reject;
900
1002
  }
901
- event.preventDefault = function () {
902
- event.isDefaultPrevented = returnTrue;
903
- if (originalEvent) {
904
- if (originalEvent.preventDefault) {
905
- originalEvent.preventDefault();
906
- } else {
907
- originalEvent.returnValue = false;
1003
+ function doResolve(fn, onFulfilled, onRejected) {
1004
+ var done = false;
1005
+ try {
1006
+ fn(function (value) {
1007
+ if (done) {
1008
+ return;
1009
+ }
1010
+ done = true;
1011
+ onFulfilled(value);
1012
+ }, function (reason) {
1013
+ if (done) {
1014
+ return;
1015
+ }
1016
+ done = true;
1017
+ onRejected(reason);
1018
+ });
1019
+ } catch (ex) {
1020
+ if (done) {
1021
+ return;
908
1022
  }
1023
+ done = true;
1024
+ onRejected(ex);
909
1025
  }
1026
+ }
1027
+ Promise.prototype.catch = function (onRejected) {
1028
+ return this.then(null, onRejected);
910
1029
  };
911
- event.stopPropagation = function () {
912
- event.isPropagationStopped = returnTrue;
913
- if (originalEvent) {
914
- if (originalEvent.stopPropagation) {
915
- originalEvent.stopPropagation();
916
- } else {
917
- originalEvent.cancelBubble = true;
1030
+ Promise.prototype.then = function (onFulfilled, onRejected) {
1031
+ var me = this;
1032
+ return new Promise(function (resolve, reject) {
1033
+ handle.call(me, new Handler(onFulfilled, onRejected, resolve, reject));
1034
+ });
1035
+ };
1036
+ Promise.all = function () {
1037
+ var args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments);
1038
+ return new Promise(function (resolve, reject) {
1039
+ if (args.length === 0) {
1040
+ return resolve([]);
1041
+ }
1042
+ var remaining = args.length;
1043
+ function res(i, val) {
1044
+ try {
1045
+ if (val && (typeof val === 'object' || typeof val === 'function')) {
1046
+ var then = val.then;
1047
+ if (typeof then === 'function') {
1048
+ then.call(val, function (val) {
1049
+ res(i, val);
1050
+ }, reject);
1051
+ return;
1052
+ }
1053
+ }
1054
+ args[i] = val;
1055
+ if (--remaining === 0) {
1056
+ resolve(args);
1057
+ }
1058
+ } catch (ex) {
1059
+ reject(ex);
1060
+ }
1061
+ }
1062
+ for (var i = 0; i < args.length; i++) {
1063
+ res(i, args[i]);
918
1064
  }
1065
+ });
1066
+ };
1067
+ Promise.resolve = function (value) {
1068
+ if (value && typeof value === 'object' && value.constructor === Promise) {
1069
+ return value;
919
1070
  }
1071
+ return new Promise(function (resolve) {
1072
+ resolve(value);
1073
+ });
920
1074
  };
921
- event.stopImmediatePropagation = function () {
922
- event.isImmediatePropagationStopped = returnTrue;
923
- event.stopPropagation();
1075
+ Promise.reject = function (value) {
1076
+ return new Promise(function (resolve, reject) {
1077
+ reject(value);
1078
+ });
924
1079
  };
925
- if (hasIsDefaultPrevented(event) === false) {
926
- event.isDefaultPrevented = returnFalse;
927
- event.isPropagationStopped = returnFalse;
928
- event.isImmediatePropagationStopped = returnFalse;
1080
+ Promise.race = function (values) {
1081
+ return new Promise(function (resolve, reject) {
1082
+ for (var i = 0, len = values.length; i < len; i++) {
1083
+ values[i].then(resolve, reject);
1084
+ }
1085
+ });
1086
+ };
1087
+ return Promise;
1088
+ };
1089
+ var promiseObj = window.Promise ? window.Promise : promise();
1090
+
1091
+ var requestAnimationFramePromise;
1092
+ var requestAnimationFrame = function (callback, element) {
1093
+ var i, requestAnimationFrameFunc = domGlobals.window.requestAnimationFrame;
1094
+ var vendors = [
1095
+ 'ms',
1096
+ 'moz',
1097
+ 'webkit'
1098
+ ];
1099
+ var featurefill = function (callback) {
1100
+ domGlobals.window.setTimeout(callback, 0);
1101
+ };
1102
+ for (i = 0; i < vendors.length && !requestAnimationFrameFunc; i++) {
1103
+ requestAnimationFrameFunc = domGlobals.window[vendors[i] + 'RequestAnimationFrame'];
929
1104
  }
930
- if (typeof event.metaKey === 'undefined') {
931
- event.metaKey = false;
1105
+ if (!requestAnimationFrameFunc) {
1106
+ requestAnimationFrameFunc = featurefill;
932
1107
  }
933
- return event;
1108
+ requestAnimationFrameFunc(callback, element);
934
1109
  };
935
- var bindOnReady = function (win, callback, eventUtils) {
936
- var doc = win.document, event = { type: 'ready' };
937
- if (eventUtils.domLoaded) {
938
- callback(event);
939
- return;
1110
+ var wrappedSetTimeout = function (callback, time) {
1111
+ if (typeof time !== 'number') {
1112
+ time = 0;
940
1113
  }
941
- var isDocReady = function () {
942
- return doc.readyState === 'complete' || doc.readyState === 'interactive' && doc.body;
943
- };
944
- var readyHandler = function () {
945
- removeEvent(win, 'DOMContentLoaded', readyHandler);
946
- removeEvent(win, 'load', readyHandler);
947
- if (!eventUtils.domLoaded) {
948
- eventUtils.domLoaded = true;
949
- callback(event);
1114
+ return domGlobals.setTimeout(callback, time);
1115
+ };
1116
+ var wrappedSetInterval = function (callback, time) {
1117
+ if (typeof time !== 'number') {
1118
+ time = 1;
1119
+ }
1120
+ return domGlobals.setInterval(callback, time);
1121
+ };
1122
+ var wrappedClearTimeout = function (id) {
1123
+ return domGlobals.clearTimeout(id);
1124
+ };
1125
+ var wrappedClearInterval = function (id) {
1126
+ return domGlobals.clearInterval(id);
1127
+ };
1128
+ var debounce = function (callback, time) {
1129
+ var timer, func;
1130
+ func = function () {
1131
+ var args = [];
1132
+ for (var _i = 0; _i < arguments.length; _i++) {
1133
+ args[_i] = arguments[_i];
950
1134
  }
951
- };
952
- var waitForDomLoaded = function () {
1135
+ domGlobals.clearTimeout(timer);
1136
+ timer = wrappedSetTimeout(function () {
1137
+ callback.apply(this, args);
1138
+ }, time);
1139
+ };
1140
+ func.stop = function () {
1141
+ domGlobals.clearTimeout(timer);
1142
+ };
1143
+ return func;
1144
+ };
1145
+ var Delay = {
1146
+ requestAnimationFrame: function (callback, element) {
1147
+ if (requestAnimationFramePromise) {
1148
+ requestAnimationFramePromise.then(callback);
1149
+ return;
1150
+ }
1151
+ requestAnimationFramePromise = new promiseObj(function (resolve) {
1152
+ if (!element) {
1153
+ element = domGlobals.document.body;
1154
+ }
1155
+ requestAnimationFrame(resolve, element);
1156
+ }).then(callback);
1157
+ },
1158
+ setTimeout: wrappedSetTimeout,
1159
+ setInterval: wrappedSetInterval,
1160
+ setEditorTimeout: function (editor, callback, time) {
1161
+ return wrappedSetTimeout(function () {
1162
+ if (!editor.removed) {
1163
+ callback();
1164
+ }
1165
+ }, time);
1166
+ },
1167
+ setEditorInterval: function (editor, callback, time) {
1168
+ var timer;
1169
+ timer = wrappedSetInterval(function () {
1170
+ if (!editor.removed) {
1171
+ callback();
1172
+ } else {
1173
+ domGlobals.clearInterval(timer);
1174
+ }
1175
+ }, time);
1176
+ return timer;
1177
+ },
1178
+ debounce: debounce,
1179
+ throttle: debounce,
1180
+ clearInterval: wrappedClearInterval,
1181
+ clearTimeout: wrappedClearTimeout
1182
+ };
1183
+
1184
+ var eventExpandoPrefix = 'mce-data-';
1185
+ var mouseEventRe = /^(?:mouse|contextmenu)|click/;
1186
+ var deprecated = {
1187
+ keyLocation: 1,
1188
+ layerX: 1,
1189
+ layerY: 1,
1190
+ returnValue: 1,
1191
+ webkitMovementX: 1,
1192
+ webkitMovementY: 1,
1193
+ keyIdentifier: 1
1194
+ };
1195
+ var hasIsDefaultPrevented = function (event) {
1196
+ return event.isDefaultPrevented === returnTrue || event.isDefaultPrevented === returnFalse;
1197
+ };
1198
+ var returnFalse = function () {
1199
+ return false;
1200
+ };
1201
+ var returnTrue = function () {
1202
+ return true;
1203
+ };
1204
+ var addEvent = function (target, name, callback, capture) {
1205
+ if (target.addEventListener) {
1206
+ target.addEventListener(name, callback, capture || false);
1207
+ } else if (target.attachEvent) {
1208
+ target.attachEvent('on' + name, callback);
1209
+ }
1210
+ };
1211
+ var removeEvent = function (target, name, callback, capture) {
1212
+ if (target.removeEventListener) {
1213
+ target.removeEventListener(name, callback, capture || false);
1214
+ } else if (target.detachEvent) {
1215
+ target.detachEvent('on' + name, callback);
1216
+ }
1217
+ };
1218
+ var getTargetFromShadowDom = function (event, defaultTarget) {
1219
+ if (event.composedPath) {
1220
+ var composedPath = event.composedPath();
1221
+ if (composedPath && composedPath.length > 0) {
1222
+ return composedPath[0];
1223
+ }
1224
+ }
1225
+ return defaultTarget;
1226
+ };
1227
+ var fix = function (originalEvent, data) {
1228
+ var name;
1229
+ var event = data || {};
1230
+ for (name in originalEvent) {
1231
+ if (!deprecated[name]) {
1232
+ event[name] = originalEvent[name];
1233
+ }
1234
+ }
1235
+ if (!event.target) {
1236
+ event.target = event.srcElement || domGlobals.document;
1237
+ }
1238
+ if (Env.experimentalShadowDom) {
1239
+ event.target = getTargetFromShadowDom(originalEvent, event.target);
1240
+ }
1241
+ if (originalEvent && mouseEventRe.test(originalEvent.type) && originalEvent.pageX === undefined && originalEvent.clientX !== undefined) {
1242
+ var eventDoc = event.target.ownerDocument || domGlobals.document;
1243
+ var doc = eventDoc.documentElement;
1244
+ var body = eventDoc.body;
1245
+ event.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
1246
+ event.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
1247
+ }
1248
+ event.preventDefault = function () {
1249
+ event.isDefaultPrevented = returnTrue;
1250
+ if (originalEvent) {
1251
+ if (originalEvent.preventDefault) {
1252
+ originalEvent.preventDefault();
1253
+ } else {
1254
+ originalEvent.returnValue = false;
1255
+ }
1256
+ }
1257
+ };
1258
+ event.stopPropagation = function () {
1259
+ event.isPropagationStopped = returnTrue;
1260
+ if (originalEvent) {
1261
+ if (originalEvent.stopPropagation) {
1262
+ originalEvent.stopPropagation();
1263
+ } else {
1264
+ originalEvent.cancelBubble = true;
1265
+ }
1266
+ }
1267
+ };
1268
+ event.stopImmediatePropagation = function () {
1269
+ event.isImmediatePropagationStopped = returnTrue;
1270
+ event.stopPropagation();
1271
+ };
1272
+ if (hasIsDefaultPrevented(event) === false) {
1273
+ event.isDefaultPrevented = returnFalse;
1274
+ event.isPropagationStopped = returnFalse;
1275
+ event.isImmediatePropagationStopped = returnFalse;
1276
+ }
1277
+ if (typeof event.metaKey === 'undefined') {
1278
+ event.metaKey = false;
1279
+ }
1280
+ return event;
1281
+ };
1282
+ var bindOnReady = function (win, callback, eventUtils) {
1283
+ var doc = win.document, event = { type: 'ready' };
1284
+ if (eventUtils.domLoaded) {
1285
+ callback(event);
1286
+ return;
1287
+ }
1288
+ var isDocReady = function () {
1289
+ return doc.readyState === 'complete' || doc.readyState === 'interactive' && doc.body;
1290
+ };
1291
+ var readyHandler = function () {
1292
+ removeEvent(win, 'DOMContentLoaded', readyHandler);
1293
+ removeEvent(win, 'load', readyHandler);
1294
+ if (!eventUtils.domLoaded) {
1295
+ eventUtils.domLoaded = true;
1296
+ callback(event);
1297
+ }
1298
+ };
1299
+ var waitForDomLoaded = function () {
953
1300
  if (isDocReady()) {
954
1301
  removeEvent(doc, 'readystatechange', waitForDomLoaded);
955
1302
  readyHandler();
@@ -3753,6 +4100,7 @@
3753
4100
  };
3754
4101
  var isElement = isType$1(ELEMENT);
3755
4102
  var isText = isType$1(TEXT);
4103
+ var isDocument = isType$1(DOCUMENT);
3756
4104
 
3757
4105
  var keys = Object.keys;
3758
4106
  var hasOwnProperty$1 = Object.hasOwnProperty;
@@ -3854,6 +4202,9 @@
3854
4202
  return r.length > 0;
3855
4203
  });
3856
4204
  };
4205
+ var reflow = function (e) {
4206
+ return e.dom().offsetWidth;
4207
+ };
3857
4208
 
3858
4209
  var Immutable = function () {
3859
4210
  var fields = [];
@@ -4044,6 +4395,9 @@
4044
4395
  return 0;
4045
4396
  }
4046
4397
  };
4398
+ var hasChild = function (elm, child) {
4399
+ return elm.children && contains(elm.children, child);
4400
+ };
4047
4401
  var getPos = function (body, elm, rootElm) {
4048
4402
  var x = 0, y = 0, offsetParent;
4049
4403
  var doc = body.ownerDocument;
@@ -4060,13 +4414,13 @@
4060
4414
  };
4061
4415
  }
4062
4416
  offsetParent = elm;
4063
- while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) {
4417
+ while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType && !hasChild(offsetParent, rootElm)) {
4064
4418
  x += offsetParent.offsetLeft || 0;
4065
4419
  y += offsetParent.offsetTop || 0;
4066
4420
  offsetParent = offsetParent.offsetParent;
4067
4421
  }
4068
4422
  offsetParent = elm.parentNode;
4069
- while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) {
4423
+ while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType && !hasChild(offsetParent, rootElm)) {
4070
4424
  x -= offsetParent.scrollLeft || 0;
4071
4425
  y -= offsetParent.scrollTop || 0;
4072
4426
  offsetParent = offsetParent.parentNode;
@@ -4497,6 +4851,9 @@
4497
4851
  return !!node && node.nodeType === type;
4498
4852
  };
4499
4853
  };
4854
+ var isRestrictedNode = function (node) {
4855
+ return !!node && !Object.getPrototypeOf(node);
4856
+ };
4500
4857
  var isElement$1 = isNodeType(1);
4501
4858
  var matchNodeNames = function (names) {
4502
4859
  var items = names.toLowerCase().split(' ');
@@ -4568,7 +4925,7 @@
4568
4925
  };
4569
4926
  var isText$1 = isNodeType(3);
4570
4927
  var isComment = isNodeType(8);
4571
- var isDocument = isNodeType(9);
4928
+ var isDocument$1 = isNodeType(9);
4572
4929
  var isDocumentFragment = isNodeType(11);
4573
4930
  var isBr = matchNodeNames('br');
4574
4931
  var isContentEditableTrue = hasContentEditableState('true');
@@ -4577,11 +4934,12 @@
4577
4934
  isText: isText$1,
4578
4935
  isElement: isElement$1,
4579
4936
  isComment: isComment,
4580
- isDocument: isDocument,
4937
+ isDocument: isDocument$1,
4581
4938
  isDocumentFragment: isDocumentFragment,
4582
4939
  isBr: isBr,
4583
4940
  isContentEditableTrue: isContentEditableTrue,
4584
4941
  isContentEditableFalse: isContentEditableFalse,
4942
+ isRestrictedNode: isRestrictedNode,
4585
4943
  matchNodeNames: matchNodeNames,
4586
4944
  hasPropValue: hasPropValue,
4587
4945
  hasAttribute: hasAttribute,
@@ -6399,10 +6757,11 @@
6399
6757
  return;
6400
6758
  }
6401
6759
  files[url] = true;
6402
- link = create('link', {
6760
+ link = create('link', __assign({
6403
6761
  rel: 'stylesheet',
6762
+ type: 'text/css',
6404
6763
  href: url
6405
- });
6764
+ }, settings.contentCssCors ? { crossOrigin: 'anonymous' } : {}));
6406
6765
  head.appendChild(link);
6407
6766
  });
6408
6767
  };
@@ -6808,455 +7167,98 @@
6808
7167
  };
6809
7168
  ScriptLoader.prototype.add = function (url, success, scope, failure) {
6810
7169
  var state = this.states[url];
6811
- if (state === undefined) {
6812
- this.queue.push(url);
6813
- this.states[url] = QUEUED;
6814
- }
6815
- if (success) {
6816
- if (!this.scriptLoadedCallbacks[url]) {
6817
- this.scriptLoadedCallbacks[url] = [];
6818
- }
6819
- this.scriptLoadedCallbacks[url].push({
6820
- success: success,
6821
- failure: failure,
6822
- scope: scope || this
6823
- });
6824
- }
6825
- };
6826
- ScriptLoader.prototype.load = function (url, success, scope, failure) {
6827
- return this.add(url, success, scope, failure);
6828
- };
6829
- ScriptLoader.prototype.remove = function (url) {
6830
- delete this.states[url];
6831
- delete this.scriptLoadedCallbacks[url];
6832
- };
6833
- ScriptLoader.prototype.loadQueue = function (success, scope, failure) {
6834
- this.loadScripts(this.queue, success, scope, failure);
6835
- };
6836
- ScriptLoader.prototype.loadScripts = function (scripts, success, scope, failure) {
6837
- var self = this;
6838
- var loadScripts;
6839
- var failures = [];
6840
- var execCallbacks = function (name, url) {
6841
- each$6(self.scriptLoadedCallbacks[url], function (callback) {
6842
- if (isFunction(callback[name])) {
6843
- callback[name].call(callback.scope);
6844
- }
6845
- });
6846
- self.scriptLoadedCallbacks[url] = undefined;
6847
- };
6848
- self.queueLoadedCallbacks.push({
6849
- success: success,
6850
- failure: failure,
6851
- scope: scope || this
6852
- });
6853
- loadScripts = function () {
6854
- var loadingScripts = grep$2(scripts);
6855
- scripts.length = 0;
6856
- each$6(loadingScripts, function (url) {
6857
- if (self.states[url] === LOADED) {
6858
- execCallbacks('success', url);
6859
- return;
6860
- }
6861
- if (self.states[url] === FAILED) {
6862
- execCallbacks('failure', url);
6863
- return;
6864
- }
6865
- if (self.states[url] !== LOADING) {
6866
- self.states[url] = LOADING;
6867
- self.loading++;
6868
- self.loadScript(url, function () {
6869
- self.states[url] = LOADED;
6870
- self.loading--;
6871
- execCallbacks('success', url);
6872
- loadScripts();
6873
- }, function () {
6874
- self.states[url] = FAILED;
6875
- self.loading--;
6876
- failures.push(url);
6877
- execCallbacks('failure', url);
6878
- loadScripts();
6879
- });
6880
- }
6881
- });
6882
- if (!self.loading) {
6883
- var notifyCallbacks = self.queueLoadedCallbacks.slice(0);
6884
- self.queueLoadedCallbacks.length = 0;
6885
- each$6(notifyCallbacks, function (callback) {
6886
- if (failures.length === 0) {
6887
- if (isFunction(callback.success)) {
6888
- callback.success.call(callback.scope);
6889
- }
6890
- } else {
6891
- if (isFunction(callback.failure)) {
6892
- callback.failure.call(callback.scope, failures);
6893
- }
6894
- }
6895
- });
6896
- }
6897
- };
6898
- loadScripts();
6899
- };
6900
- ScriptLoader.ScriptLoader = new ScriptLoader();
6901
- return ScriptLoader;
6902
- }();
6903
-
6904
- var extendStatics = function (d, b) {
6905
- extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {
6906
- d.__proto__ = b;
6907
- } || function (d, b) {
6908
- for (var p in b)
6909
- if (b.hasOwnProperty(p))
6910
- d[p] = b[p];
6911
- };
6912
- return extendStatics(d, b);
6913
- };
6914
- function __extends(d, b) {
6915
- extendStatics(d, b);
6916
- function __() {
6917
- this.constructor = d;
6918
- }
6919
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
6920
- }
6921
- var __assign = function () {
6922
- __assign = Object.assign || function __assign(t) {
6923
- for (var s, i = 1, n = arguments.length; i < n; i++) {
6924
- s = arguments[i];
6925
- for (var p in s)
6926
- if (Object.prototype.hasOwnProperty.call(s, p))
6927
- t[p] = s[p];
6928
- }
6929
- return t;
6930
- };
6931
- return __assign.apply(this, arguments);
6932
- };
6933
- function __rest(s, e) {
6934
- var t = {};
6935
- for (var p in s)
6936
- if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
6937
- t[p] = s[p];
6938
- if (s != null && typeof Object.getOwnPropertySymbols === 'function')
6939
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++)
6940
- if (e.indexOf(p[i]) < 0)
6941
- t[p[i]] = s[p[i]];
6942
- return t;
6943
- }
6944
- function __decorate(decorators, target, key, desc) {
6945
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6946
- if (typeof Reflect === 'object' && typeof Reflect.decorate === 'function')
6947
- r = Reflect.decorate(decorators, target, key, desc);
6948
- else
6949
- for (var i = decorators.length - 1; i >= 0; i--)
6950
- if (d = decorators[i])
6951
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6952
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6953
- }
6954
- function __param(paramIndex, decorator) {
6955
- return function (target, key) {
6956
- decorator(target, key, paramIndex);
6957
- };
6958
- }
6959
- function __metadata(metadataKey, metadataValue) {
6960
- if (typeof Reflect === 'object' && typeof Reflect.metadata === 'function')
6961
- return Reflect.metadata(metadataKey, metadataValue);
6962
- }
6963
- function __awaiter(thisArg, _arguments, P, generator) {
6964
- return new (P || (P = Promise))(function (resolve, reject) {
6965
- function fulfilled(value) {
6966
- try {
6967
- step(generator.next(value));
6968
- } catch (e) {
6969
- reject(e);
6970
- }
6971
- }
6972
- function rejected(value) {
6973
- try {
6974
- step(generator['throw'](value));
6975
- } catch (e) {
6976
- reject(e);
6977
- }
6978
- }
6979
- function step(result) {
6980
- result.done ? resolve(result.value) : new P(function (resolve) {
6981
- resolve(result.value);
6982
- }).then(fulfilled, rejected);
6983
- }
6984
- step((generator = generator.apply(thisArg, _arguments || [])).next());
6985
- });
6986
- }
6987
- function __generator(thisArg, body) {
6988
- var _ = {
6989
- label: 0,
6990
- sent: function () {
6991
- if (t[0] & 1)
6992
- throw t[1];
6993
- return t[1];
6994
- },
6995
- trys: [],
6996
- ops: []
6997
- }, f, y, t, g;
6998
- return g = {
6999
- next: verb(0),
7000
- 'throw': verb(1),
7001
- 'return': verb(2)
7002
- }, typeof Symbol === 'function' && (g[Symbol.iterator] = function () {
7003
- return this;
7004
- }), g;
7005
- function verb(n) {
7006
- return function (v) {
7007
- return step([
7008
- n,
7009
- v
7010
- ]);
7011
- };
7012
- }
7013
- function step(op) {
7014
- if (f)
7015
- throw new TypeError('Generator is already executing.');
7016
- while (_)
7017
- try {
7018
- if (f = 1, y && (t = op[0] & 2 ? y['return'] : op[0] ? y['throw'] || ((t = y['return']) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
7019
- return t;
7020
- if (y = 0, t)
7021
- op = [
7022
- op[0] & 2,
7023
- t.value
7024
- ];
7025
- switch (op[0]) {
7026
- case 0:
7027
- case 1:
7028
- t = op;
7029
- break;
7030
- case 4:
7031
- _.label++;
7032
- return {
7033
- value: op[1],
7034
- done: false
7035
- };
7036
- case 5:
7037
- _.label++;
7038
- y = op[1];
7039
- op = [0];
7040
- continue;
7041
- case 7:
7042
- op = _.ops.pop();
7043
- _.trys.pop();
7044
- continue;
7045
- default:
7046
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
7047
- _ = 0;
7048
- continue;
7049
- }
7050
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
7051
- _.label = op[1];
7052
- break;
7053
- }
7054
- if (op[0] === 6 && _.label < t[1]) {
7055
- _.label = t[1];
7056
- t = op;
7057
- break;
7058
- }
7059
- if (t && _.label < t[2]) {
7060
- _.label = t[2];
7061
- _.ops.push(op);
7062
- break;
7063
- }
7064
- if (t[2])
7065
- _.ops.pop();
7066
- _.trys.pop();
7067
- continue;
7068
- }
7069
- op = body.call(thisArg, _);
7070
- } catch (e) {
7071
- op = [
7072
- 6,
7073
- e
7074
- ];
7075
- y = 0;
7076
- } finally {
7077
- f = t = 0;
7078
- }
7079
- if (op[0] & 5)
7080
- throw op[1];
7081
- return {
7082
- value: op[0] ? op[1] : void 0,
7083
- done: true
7084
- };
7085
- }
7086
- }
7087
- function __exportStar(m, exports) {
7088
- for (var p in m)
7089
- if (!exports.hasOwnProperty(p))
7090
- exports[p] = m[p];
7091
- }
7092
- function __values(o) {
7093
- var m = typeof Symbol === 'function' && o[Symbol.iterator], i = 0;
7094
- if (m)
7095
- return m.call(o);
7096
- return {
7097
- next: function () {
7098
- if (o && i >= o.length)
7099
- o = void 0;
7100
- return {
7101
- value: o && o[i++],
7102
- done: !o
7103
- };
7104
- }
7105
- };
7106
- }
7107
- function __read(o, n) {
7108
- var m = typeof Symbol === 'function' && o[Symbol.iterator];
7109
- if (!m)
7110
- return o;
7111
- var i = m.call(o), r, ar = [], e;
7112
- try {
7113
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
7114
- ar.push(r.value);
7115
- } catch (error) {
7116
- e = { error: error };
7117
- } finally {
7118
- try {
7119
- if (r && !r.done && (m = i['return']))
7120
- m.call(i);
7121
- } finally {
7122
- if (e)
7123
- throw e.error;
7124
- }
7125
- }
7126
- return ar;
7127
- }
7128
- function __spread() {
7129
- for (var ar = [], i = 0; i < arguments.length; i++)
7130
- ar = ar.concat(__read(arguments[i]));
7131
- return ar;
7132
- }
7133
- function __await(v) {
7134
- return this instanceof __await ? (this.v = v, this) : new __await(v);
7135
- }
7136
- function __asyncGenerator(thisArg, _arguments, generator) {
7137
- if (!Symbol.asyncIterator)
7138
- throw new TypeError('Symbol.asyncIterator is not defined.');
7139
- var g = generator.apply(thisArg, _arguments || []), i, q = [];
7140
- return i = {}, verb('next'), verb('throw'), verb('return'), i[Symbol.asyncIterator] = function () {
7141
- return this;
7142
- }, i;
7143
- function verb(n) {
7144
- if (g[n])
7145
- i[n] = function (v) {
7146
- return new Promise(function (a, b) {
7147
- q.push([
7148
- n,
7149
- v,
7150
- a,
7151
- b
7152
- ]) > 1 || resume(n, v);
7153
- });
7154
- };
7155
- }
7156
- function resume(n, v) {
7157
- try {
7158
- step(g[n](v));
7159
- } catch (e) {
7160
- settle(q[0][3], e);
7170
+ if (state === undefined) {
7171
+ this.queue.push(url);
7172
+ this.states[url] = QUEUED;
7161
7173
  }
7162
- }
7163
- function step(r) {
7164
- r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
7165
- }
7166
- function fulfill(value) {
7167
- resume('next', value);
7168
- }
7169
- function reject(value) {
7170
- resume('throw', value);
7171
- }
7172
- function settle(f, v) {
7173
- if (f(v), q.shift(), q.length)
7174
- resume(q[0][0], q[0][1]);
7175
- }
7176
- }
7177
- function __asyncDelegator(o) {
7178
- var i, p;
7179
- return i = {}, verb('next'), verb('throw', function (e) {
7180
- throw e;
7181
- }), verb('return'), i[Symbol.iterator] = function () {
7182
- return this;
7183
- }, i;
7184
- function verb(n, f) {
7185
- i[n] = o[n] ? function (v) {
7186
- return (p = !p) ? {
7187
- value: __await(o[n](v)),
7188
- done: n === 'return'
7189
- } : f ? f(v) : v;
7190
- } : f;
7191
- }
7192
- }
7193
- function __asyncValues(o) {
7194
- if (!Symbol.asyncIterator)
7195
- throw new TypeError('Symbol.asyncIterator is not defined.');
7196
- var m = o[Symbol.asyncIterator], i;
7197
- return m ? m.call(o) : (o = typeof __values === 'function' ? __values(o) : o[Symbol.iterator](), i = {}, verb('next'), verb('throw'), verb('return'), i[Symbol.asyncIterator] = function () {
7198
- return this;
7199
- }, i);
7200
- function verb(n) {
7201
- i[n] = o[n] && function (v) {
7202
- return new Promise(function (resolve, reject) {
7203
- v = o[n](v), settle(resolve, reject, v.done, v.value);
7174
+ if (success) {
7175
+ if (!this.scriptLoadedCallbacks[url]) {
7176
+ this.scriptLoadedCallbacks[url] = [];
7177
+ }
7178
+ this.scriptLoadedCallbacks[url].push({
7179
+ success: success,
7180
+ failure: failure,
7181
+ scope: scope || this
7182
+ });
7183
+ }
7184
+ };
7185
+ ScriptLoader.prototype.load = function (url, success, scope, failure) {
7186
+ return this.add(url, success, scope, failure);
7187
+ };
7188
+ ScriptLoader.prototype.remove = function (url) {
7189
+ delete this.states[url];
7190
+ delete this.scriptLoadedCallbacks[url];
7191
+ };
7192
+ ScriptLoader.prototype.loadQueue = function (success, scope, failure) {
7193
+ this.loadScripts(this.queue, success, scope, failure);
7194
+ };
7195
+ ScriptLoader.prototype.loadScripts = function (scripts, success, scope, failure) {
7196
+ var self = this;
7197
+ var loadScripts;
7198
+ var failures = [];
7199
+ var execCallbacks = function (name, url) {
7200
+ each$6(self.scriptLoadedCallbacks[url], function (callback) {
7201
+ if (isFunction(callback[name])) {
7202
+ callback[name].call(callback.scope);
7203
+ }
7204
7204
  });
7205
+ self.scriptLoadedCallbacks[url] = undefined;
7205
7206
  };
7206
- }
7207
- function settle(resolve, reject, d, v) {
7208
- Promise.resolve(v).then(function (v) {
7209
- resolve({
7210
- value: v,
7211
- done: d
7207
+ self.queueLoadedCallbacks.push({
7208
+ success: success,
7209
+ failure: failure,
7210
+ scope: scope || this
7211
+ });
7212
+ loadScripts = function () {
7213
+ var loadingScripts = grep$2(scripts);
7214
+ scripts.length = 0;
7215
+ each$6(loadingScripts, function (url) {
7216
+ if (self.states[url] === LOADED) {
7217
+ execCallbacks('success', url);
7218
+ return;
7219
+ }
7220
+ if (self.states[url] === FAILED) {
7221
+ execCallbacks('failure', url);
7222
+ return;
7223
+ }
7224
+ if (self.states[url] !== LOADING) {
7225
+ self.states[url] = LOADING;
7226
+ self.loading++;
7227
+ self.loadScript(url, function () {
7228
+ self.states[url] = LOADED;
7229
+ self.loading--;
7230
+ execCallbacks('success', url);
7231
+ loadScripts();
7232
+ }, function () {
7233
+ self.states[url] = FAILED;
7234
+ self.loading--;
7235
+ failures.push(url);
7236
+ execCallbacks('failure', url);
7237
+ loadScripts();
7238
+ });
7239
+ }
7212
7240
  });
7213
- }, reject);
7214
- }
7215
- }
7216
- function __makeTemplateObject(cooked, raw) {
7217
- if (Object.defineProperty) {
7218
- Object.defineProperty(cooked, 'raw', { value: raw });
7219
- } else {
7220
- cooked.raw = raw;
7221
- }
7222
- return cooked;
7223
- }
7224
- function __importStar(mod) {
7225
- if (mod && mod.__esModule)
7226
- return mod;
7227
- var result = {};
7228
- if (mod != null)
7229
- for (var k in mod)
7230
- if (Object.hasOwnProperty.call(mod, k))
7231
- result[k] = mod[k];
7232
- result.default = mod;
7233
- return result;
7234
- }
7235
- function __importDefault(mod) {
7236
- return mod && mod.__esModule ? mod : { default: mod };
7237
- }
7238
-
7239
- var tslib_1 = /*#__PURE__*/Object.freeze({
7240
- __extends: __extends,
7241
- get __assign () { return __assign; },
7242
- __rest: __rest,
7243
- __decorate: __decorate,
7244
- __param: __param,
7245
- __metadata: __metadata,
7246
- __awaiter: __awaiter,
7247
- __generator: __generator,
7248
- __exportStar: __exportStar,
7249
- __values: __values,
7250
- __read: __read,
7251
- __spread: __spread,
7252
- __await: __await,
7253
- __asyncGenerator: __asyncGenerator,
7254
- __asyncDelegator: __asyncDelegator,
7255
- __asyncValues: __asyncValues,
7256
- __makeTemplateObject: __makeTemplateObject,
7257
- __importStar: __importStar,
7258
- __importDefault: __importDefault
7259
- });
7241
+ if (!self.loading) {
7242
+ var notifyCallbacks = self.queueLoadedCallbacks.slice(0);
7243
+ self.queueLoadedCallbacks.length = 0;
7244
+ each$6(notifyCallbacks, function (callback) {
7245
+ if (failures.length === 0) {
7246
+ if (isFunction(callback.success)) {
7247
+ callback.success.call(callback.scope);
7248
+ }
7249
+ } else {
7250
+ if (isFunction(callback.failure)) {
7251
+ callback.failure.call(callback.scope, failures);
7252
+ }
7253
+ }
7254
+ });
7255
+ }
7256
+ };
7257
+ loadScripts();
7258
+ };
7259
+ ScriptLoader.ScriptLoader = new ScriptLoader();
7260
+ return ScriptLoader;
7261
+ }();
7260
7262
 
7261
7263
  var Cell = function (initial) {
7262
7264
  var value = initial;
@@ -8277,26 +8279,6 @@
8277
8279
  var containsXY = function (rect, clientX, clientY) {
8278
8280
  return clientX >= rect.left && clientX <= rect.right && clientY >= rect.top && clientY <= rect.bottom;
8279
8281
  };
8280
- var overflowX = function (outer, inner) {
8281
- if (inner.left > outer.left && inner.right < outer.right) {
8282
- return 0;
8283
- } else {
8284
- return inner.left < outer.left ? inner.left - outer.left : inner.right - outer.right;
8285
- }
8286
- };
8287
- var overflowY = function (outer, inner) {
8288
- if (inner.top > outer.top && inner.bottom < outer.bottom) {
8289
- return 0;
8290
- } else {
8291
- return inner.top < outer.top ? inner.top - outer.top : inner.bottom - outer.bottom;
8292
- }
8293
- };
8294
- var getOverflow = function (outer, inner) {
8295
- return {
8296
- x: overflowX(outer, inner),
8297
- y: overflowY(outer, inner)
8298
- };
8299
- };
8300
8282
 
8301
8283
  var getSelectedNode = function (range) {
8302
8284
  var startContainer = range.startContainer, startOffset = range.startOffset;
@@ -11306,7 +11288,7 @@
11306
11288
  return editor.getParam('end_container_on_empty_block', false);
11307
11289
  };
11308
11290
  var getFontStyleValues = function (editor) {
11309
- return Tools.explode(editor.getParam('font_size_style_values', ''));
11291
+ return Tools.explode(editor.getParam('font_size_style_values', 'xx-small,x-small,small,medium,large,x-large,xx-large'));
11310
11292
  };
11311
11293
  var getFontSizeClasses = function (editor) {
11312
11294
  return Tools.explode(editor.getParam('font_size_classes', ''));
@@ -11323,6 +11305,12 @@
11323
11305
  var shouldReplaceBlobUris = function (editor) {
11324
11306
  return editor.getParam('images_replace_blob_uris', true, 'boolean');
11325
11307
  };
11308
+ var getIconPackName = function (editor) {
11309
+ return editor.getParam('icons', '', 'string');
11310
+ };
11311
+ var getIconsUrl = function (editor) {
11312
+ return editor.getParam('icons_url', '', 'string');
11313
+ };
11326
11314
  var getImageUploadUrl = function (editor) {
11327
11315
  return editor.getParam('images_upload_url', '', 'string');
11328
11316
  };
@@ -11365,6 +11353,9 @@
11365
11353
  var getDirectionality = function (editor) {
11366
11354
  return editor.getParam('directionality', I18n.isRtl() ? 'rtl' : undefined);
11367
11355
  };
11356
+ var getInlineBoundarySelector = function (editor) {
11357
+ return editor.getParam('inline_boundaries_selector', 'a[href],code,.mce-annotation', 'string');
11358
+ };
11368
11359
  var Settings = {
11369
11360
  getIframeAttrs: getIframeAttrs,
11370
11361
  getDocType: getDocType,
@@ -11381,6 +11372,8 @@
11381
11372
  shouldEndContainerOnEmptyBlock: shouldEndContainerOnEmptyBlock,
11382
11373
  getFontStyleValues: getFontStyleValues,
11383
11374
  getFontSizeClasses: getFontSizeClasses,
11375
+ getIconPackName: getIconPackName,
11376
+ getIconsUrl: getIconsUrl,
11384
11377
  getImagesDataImgFilter: getImagesDataImgFilter,
11385
11378
  isAutomaticUploadsEnabled: isAutomaticUploadsEnabled,
11386
11379
  shouldReuseFileName: shouldReuseFileName,
@@ -11395,7 +11388,8 @@
11395
11388
  shouldIndentUseMargin: shouldIndentUseMargin,
11396
11389
  getIndentation: getIndentation,
11397
11390
  getContentCss: getContentCss,
11398
- getDirectionality: getDirectionality
11391
+ getDirectionality: getDirectionality,
11392
+ getInlineBoundarySelector: getInlineBoundarySelector
11399
11393
  };
11400
11394
 
11401
11395
  var defaultFormat = 'html';
@@ -11759,6 +11753,9 @@
11759
11753
  };
11760
11754
  var Adt = { generate: generate$1 };
11761
11755
 
11756
+ var create$3 = Immutable('start', 'soffset', 'finish', 'foffset');
11757
+ var SimRange = { create: create$3 };
11758
+
11762
11759
  var adt = Adt.generate([
11763
11760
  { before: ['element'] },
11764
11761
  {
@@ -11769,8 +11766,24 @@
11769
11766
  },
11770
11767
  { after: ['element'] }
11771
11768
  ]);
11769
+ var cata = function (subject, onBefore, onOn, onAfter) {
11770
+ return subject.fold(onBefore, onOn, onAfter);
11771
+ };
11772
+ var getStart = function (situ) {
11773
+ return situ.fold(identity, identity, identity);
11774
+ };
11775
+ var before$3 = adt.before;
11776
+ var on = adt.on;
11777
+ var after$2 = adt.after;
11778
+ var Situ = {
11779
+ before: before$3,
11780
+ on: on,
11781
+ after: after$2,
11782
+ cata: cata,
11783
+ getStart: getStart
11784
+ };
11772
11785
 
11773
- var type$1 = Adt.generate([
11786
+ var adt$1 = Adt.generate([
11774
11787
  { domRange: ['rng'] },
11775
11788
  {
11776
11789
  relative: [
@@ -11787,7 +11800,38 @@
11787
11800
  ]
11788
11801
  }
11789
11802
  ]);
11790
- var range$1 = Immutable('start', 'soffset', 'finish', 'foffset');
11803
+ var exactFromRange = function (simRange) {
11804
+ return adt$1.exact(simRange.start(), simRange.soffset(), simRange.finish(), simRange.foffset());
11805
+ };
11806
+ var getStart$1 = function (selection) {
11807
+ return selection.match({
11808
+ domRange: function (rng) {
11809
+ return Element.fromDom(rng.startContainer);
11810
+ },
11811
+ relative: function (startSitu, finishSitu) {
11812
+ return Situ.getStart(startSitu);
11813
+ },
11814
+ exact: function (start, soffset, finish, foffset) {
11815
+ return start;
11816
+ }
11817
+ });
11818
+ };
11819
+ var domRange = adt$1.domRange;
11820
+ var relative = adt$1.relative;
11821
+ var exact = adt$1.exact;
11822
+ var getWin = function (selection) {
11823
+ var start = getStart$1(selection);
11824
+ return defaultView(start);
11825
+ };
11826
+ var range$1 = SimRange.create;
11827
+ var Selection = {
11828
+ domRange: domRange,
11829
+ relative: relative,
11830
+ exact: exact,
11831
+ exactFromRange: exactFromRange,
11832
+ getWin: getWin,
11833
+ range: range$1
11834
+ };
11791
11835
 
11792
11836
  var browser$3 = PlatformDetection$1.detect().browser;
11793
11837
  var clamp = function (offset, element) {
@@ -11800,10 +11844,10 @@
11800
11844
  return offset;
11801
11845
  };
11802
11846
  var normalizeRng = function (rng) {
11803
- return range$1(rng.start(), clamp(rng.soffset(), rng.start()), rng.finish(), clamp(rng.foffset(), rng.finish()));
11847
+ return Selection.range(rng.start(), clamp(rng.soffset(), rng.start()), rng.finish(), clamp(rng.foffset(), rng.finish()));
11804
11848
  };
11805
11849
  var isOrContains = function (root, elm) {
11806
- return contains$3(root, elm) || eq(root, elm);
11850
+ return !NodeType.isRestrictedNode(elm.dom()) && (contains$3(root, elm) || eq(root, elm));
11807
11851
  };
11808
11852
  var isRngInRoot = function (root) {
11809
11853
  return function (rng) {
@@ -11814,7 +11858,7 @@
11814
11858
  return editor.inline === true || browser$3.isIE();
11815
11859
  };
11816
11860
  var nativeRangeToSelectionRange = function (r) {
11817
- return range$1(Element.fromDom(r.startContainer), r.startOffset, Element.fromDom(r.endContainer), r.endOffset);
11861
+ return Selection.range(Element.fromDom(r.startContainer), r.startOffset, Element.fromDom(r.endContainer), r.endOffset);
11818
11862
  };
11819
11863
  var readRange = function (win) {
11820
11864
  var selection = win.getSelection();
@@ -12191,7 +12235,6 @@
12191
12235
  return {
12192
12236
  id: id,
12193
12237
  theme: 'silver',
12194
- popup_css: '',
12195
12238
  plugins: '',
12196
12239
  document_base_url: documentBaseUrl,
12197
12240
  add_form_submit_trigger: true,
@@ -12203,11 +12246,9 @@
12203
12246
  object_resizing: true,
12204
12247
  doctype: '<!DOCTYPE html>',
12205
12248
  visual: true,
12206
- font_size_style_values: 'xx-small,x-small,small,medium,large,x-large,xx-large',
12207
12249
  font_size_legacy_values: 'xx-small,small,medium,large,x-large,xx-large,300%',
12208
12250
  forced_root_block: 'p',
12209
12251
  hidden_input: true,
12210
- render_ui: true,
12211
12252
  inline_styles: true,
12212
12253
  convert_fonts_to_spans: true,
12213
12254
  indent: true,
@@ -12215,8 +12256,7 @@
12215
12256
  indent_after: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist',
12216
12257
  entity_encoding: 'named',
12217
12258
  url_converter: editor.convertURL,
12218
- url_converter_scope: editor,
12219
- ie7_compat: true
12259
+ url_converter_scope: editor
12220
12260
  };
12221
12261
  };
12222
12262
  var getExternalPlugins = function (overrideSettings, settings) {
@@ -12256,7 +12296,6 @@
12256
12296
  var getFiltered = function (predicate, editor, name) {
12257
12297
  return Option.from(editor.settings[name]).filter(predicate);
12258
12298
  };
12259
- var getString = curry(getFiltered, isString);
12260
12299
  var getParamObject = function (value) {
12261
12300
  var output = {};
12262
12301
  if (typeof value === 'string') {
@@ -12536,27 +12575,6 @@
12536
12575
  };
12537
12576
  };
12538
12577
 
12539
- var PluginManager = AddOnManager$1.PluginManager;
12540
- var resolvePluginName = function (targetUrl, suffix) {
12541
- for (var name in PluginManager.urls) {
12542
- var matchUrl = PluginManager.urls[name] + '/plugin' + suffix + '.js';
12543
- if (matchUrl === targetUrl) {
12544
- return name;
12545
- }
12546
- }
12547
- return null;
12548
- };
12549
- var pluginUrlToMessage = function (editor, url) {
12550
- var plugin = resolvePluginName(url, editor.suffix);
12551
- return plugin ? I18n.translate([
12552
- 'Failed to load plugin: {0} from url {1}',
12553
- plugin,
12554
- url
12555
- ]) : I18n.translate([
12556
- 'Failed to load plugin url: {0}',
12557
- url
12558
- ]);
12559
- };
12560
12578
  var displayNotification = function (editor, message) {
12561
12579
  editor.notificationManager.open({
12562
12580
  type: 'error',
@@ -12578,8 +12596,20 @@
12578
12596
  message
12579
12597
  ]));
12580
12598
  };
12581
- var pluginLoadError = function (editor, url) {
12582
- displayError(editor, pluginUrlToMessage(editor, url));
12599
+ var logError = function (msg) {
12600
+ domGlobals.console.error(msg);
12601
+ };
12602
+ var createLoadError = function (type, url, name) {
12603
+ return name ? 'Failed to load ' + type + ': ' + name + ' from url ' + url : 'Failed to load ' + type + ' url: ' + url;
12604
+ };
12605
+ var pluginLoadError = function (url, name) {
12606
+ logError(createLoadError('plugin', url, name));
12607
+ };
12608
+ var iconsLoadError = function (url, name) {
12609
+ logError(createLoadError('icons', url, name));
12610
+ };
12611
+ var languageLoadError = function (url, name) {
12612
+ logError(createLoadError('language', url, name));
12583
12613
  };
12584
12614
  var pluginInitError = function (editor, name, err) {
12585
12615
  var message = I18n.translate([
@@ -12605,6 +12635,8 @@
12605
12635
  };
12606
12636
  var ErrorReporter = {
12607
12637
  pluginLoadError: pluginLoadError,
12638
+ iconsLoadError: iconsLoadError,
12639
+ languageLoadError: languageLoadError,
12608
12640
  pluginInitError: pluginInitError,
12609
12641
  uploadError: uploadError,
12610
12642
  displayError: displayError,
@@ -12791,7 +12823,7 @@
12791
12823
  };
12792
12824
  var IconManager = CreateIconManager();
12793
12825
 
12794
- var PluginManager$1 = AddOnManager$1.PluginManager;
12826
+ var PluginManager = AddOnManager$1.PluginManager;
12795
12827
 
12796
12828
  var ThemeManager = AddOnManager$1.ThemeManager;
12797
12829
 
@@ -14255,9 +14287,17 @@
14255
14287
  if (range.collapsed) {
14256
14288
  return false;
14257
14289
  }
14258
- return foldl(range.getClientRects(), function (state, rect) {
14259
- return state || containsXY(rect, clientX, clientY);
14260
- }, false);
14290
+ if (Env.ie <= 11 && range.startOffset === range.endOffset - 1 && range.startContainer === range.endContainer) {
14291
+ var elm = range.startContainer.childNodes[range.startOffset];
14292
+ if (NodeType.isElement(elm)) {
14293
+ return exists(elm.getClientRects(), function (rect) {
14294
+ return containsXY(rect, clientX, clientY);
14295
+ });
14296
+ }
14297
+ }
14298
+ return exists(range.getClientRects(), function (rect) {
14299
+ return containsXY(rect, clientX, clientY);
14300
+ });
14261
14301
  };
14262
14302
  var RangePoint = { isXYWithinRange: isXYWithinRange };
14263
14303
 
@@ -14668,7 +14708,7 @@
14668
14708
  if (startContainer.nodeType !== 1) {
14669
14709
  return null;
14670
14710
  }
14671
- if (endOffset === startOffset + 1) {
14711
+ if (endOffset === startOffset + 1 && startContainer === range.endContainer) {
14672
14712
  node = startContainer.childNodes[startOffset];
14673
14713
  }
14674
14714
  if (!isContentEditableFalse$9(node)) {
@@ -16178,7 +16218,7 @@
16178
16218
  name = value;
16179
16219
  compareNode = 0;
16180
16220
  }
16181
- if (!compareNode || isEq$4(dom.getAttrib(compareNode, name), value)) {
16221
+ if (format.remove_similar || (!compareNode || isEq$4(dom.getAttrib(compareNode, name), value))) {
16182
16222
  if (name === 'class') {
16183
16223
  value = dom.getAttrib(node, name);
16184
16224
  if (value) {
@@ -18583,7 +18623,6 @@
18583
18623
  var contextMenuSelectImage = function (evt) {
18584
18624
  var target = evt.target;
18585
18625
  if (isEventOnImageOutsideRange(evt, editor.selection.getRng()) && !evt.isDefaultPrevented()) {
18586
- evt.preventDefault();
18587
18626
  editor.selection.select(target);
18588
18627
  }
18589
18628
  };
@@ -18878,112 +18917,347 @@
18878
18917
  }
18879
18918
  });
18880
18919
  editor.on('hide blur', hideResizeRect);
18881
- editor.on('contextmenu', contextMenuSelectImage);
18920
+ editor.on('contextmenu', contextMenuSelectImage, true);
18882
18921
  });
18883
18922
  editor.on('remove', unbindResizeHandleEvents);
18884
18923
  var destroy = function () {
18885
18924
  selectedElm = selectedElmGhost = null;
18886
18925
  };
18887
18926
  return {
18888
- isResizable: isResizable,
18889
- showResizeRect: showResizeRect,
18890
- hideResizeRect: hideResizeRect,
18891
- updateResizeRect: updateResizeRect,
18892
- destroy: destroy
18927
+ isResizable: isResizable,
18928
+ showResizeRect: showResizeRect,
18929
+ hideResizeRect: hideResizeRect,
18930
+ updateResizeRect: updateResizeRect,
18931
+ destroy: destroy
18932
+ };
18933
+ };
18934
+
18935
+ function Dimension (name, getOffset) {
18936
+ var set = function (element, h) {
18937
+ if (!isNumber(h) && !h.match(/^[0-9]+$/)) {
18938
+ throw new Error(name + '.set accepts only positive integer values. Value was ' + h);
18939
+ }
18940
+ var dom = element.dom();
18941
+ if (isSupported(dom)) {
18942
+ dom.style[name] = h + 'px';
18943
+ }
18944
+ };
18945
+ var get = function (element) {
18946
+ var r = getOffset(element);
18947
+ if (r <= 0 || r === null) {
18948
+ var css = get$2(element, name);
18949
+ return parseFloat(css) || 0;
18950
+ }
18951
+ return r;
18952
+ };
18953
+ var getOuter = get;
18954
+ var aggregate = function (element, properties) {
18955
+ return foldl(properties, function (acc, property) {
18956
+ var val = get$2(element, property);
18957
+ var value = val === undefined ? 0 : parseInt(val, 10);
18958
+ return isNaN(value) ? acc : acc + value;
18959
+ }, 0);
18960
+ };
18961
+ var max = function (element, value, properties) {
18962
+ var cumulativeInclusions = aggregate(element, properties);
18963
+ var absoluteMax = value > cumulativeInclusions ? value - cumulativeInclusions : 0;
18964
+ return absoluteMax;
18965
+ };
18966
+ return {
18967
+ set: set,
18968
+ get: get,
18969
+ getOuter: getOuter,
18970
+ aggregate: aggregate,
18971
+ max: max
18972
+ };
18973
+ }
18974
+
18975
+ var api$1 = Dimension('height', function (element) {
18976
+ var dom = element.dom();
18977
+ return inBody(element) ? dom.getBoundingClientRect().height : dom.offsetHeight;
18978
+ });
18979
+ var get$7 = function (element) {
18980
+ return api$1.get(element);
18981
+ };
18982
+
18983
+ var attached = function (element, scope) {
18984
+ var doc = scope || Element.fromDom(domGlobals.document.documentElement);
18985
+ return ancestor(element, curry(eq, doc)).isSome();
18986
+ };
18987
+ var windowOf = function (element) {
18988
+ var dom = element.dom();
18989
+ if (dom === dom.window && element instanceof domGlobals.Window) {
18990
+ return element;
18991
+ }
18992
+ return isDocument(element) ? dom.defaultView || dom.parentWindow : null;
18993
+ };
18994
+
18995
+ var r = function (left, top) {
18996
+ var translate = function (x, y) {
18997
+ return r(left + x, top + y);
18998
+ };
18999
+ return {
19000
+ left: constant(left),
19001
+ top: constant(top),
19002
+ translate: translate
18893
19003
  };
18894
19004
  };
19005
+ var Position$1 = r;
19006
+
19007
+ var boxPosition = function (dom) {
19008
+ var box = dom.getBoundingClientRect();
19009
+ return Position$1(box.left, box.top);
19010
+ };
19011
+ var firstDefinedOrZero = function (a, b) {
19012
+ return a !== undefined ? a : b !== undefined ? b : 0;
19013
+ };
19014
+ var absolute = function (element) {
19015
+ var doc = element.dom().ownerDocument;
19016
+ var body = doc.body;
19017
+ var win = windowOf(Element.fromDom(doc));
19018
+ var html = doc.documentElement;
19019
+ var scrollTop = firstDefinedOrZero(win.pageYOffset, html.scrollTop);
19020
+ var scrollLeft = firstDefinedOrZero(win.pageXOffset, html.scrollLeft);
19021
+ var clientTop = firstDefinedOrZero(html.clientTop, body.clientTop);
19022
+ var clientLeft = firstDefinedOrZero(html.clientLeft, body.clientLeft);
19023
+ return viewport(element).translate(scrollLeft - clientLeft, scrollTop - clientTop);
19024
+ };
19025
+ var viewport = function (element) {
19026
+ var dom = element.dom();
19027
+ var doc = dom.ownerDocument;
19028
+ var body = doc.body;
19029
+ var html = Element.fromDom(doc.documentElement);
19030
+ if (body === dom) {
19031
+ return Position$1(body.offsetLeft, body.offsetTop);
19032
+ }
19033
+ if (!attached(element, html)) {
19034
+ return Position$1(0, 0);
19035
+ }
19036
+ return boxPosition(dom);
19037
+ };
19038
+
19039
+ var isSafari = PlatformDetection$1.detect().browser.isSafari();
19040
+ var get$8 = function (_DOC) {
19041
+ var doc = _DOC !== undefined ? _DOC.dom() : domGlobals.document;
19042
+ var x = doc.body.scrollLeft || doc.documentElement.scrollLeft;
19043
+ var y = doc.body.scrollTop || doc.documentElement.scrollTop;
19044
+ return Position$1(x, y);
19045
+ };
19046
+ var to = function (x, y, _DOC) {
19047
+ var doc = _DOC !== undefined ? _DOC.dom() : domGlobals.document;
19048
+ var win = doc.defaultView;
19049
+ win.scrollTo(x, y);
19050
+ };
19051
+ var intoView = function (element, alignToTop) {
19052
+ if (isSafari && isFunction(element.dom().scrollIntoViewIfNeeded)) {
19053
+ element.dom().scrollIntoViewIfNeeded(false);
19054
+ } else {
19055
+ element.dom().scrollIntoView(alignToTop);
19056
+ }
19057
+ };
19058
+
19059
+ var walkUp = function (navigation, doc) {
19060
+ var frame = navigation.view(doc);
19061
+ return frame.fold(constant([]), function (f) {
19062
+ var parent = navigation.owner(f);
19063
+ var rest = walkUp(navigation, parent);
19064
+ return [f].concat(rest);
19065
+ });
19066
+ };
19067
+ var pathTo = function (element, navigation) {
19068
+ var d = navigation.owner(element);
19069
+ return walkUp(navigation, d);
19070
+ };
19071
+
19072
+ var view = function (doc) {
19073
+ var element = doc.dom() === domGlobals.document ? Option.none() : Option.from(doc.dom().defaultView.frameElement);
19074
+ return element.map(Element.fromDom);
19075
+ };
19076
+ var owner$1 = function (element) {
19077
+ return owner(element);
19078
+ };
19079
+
19080
+ var Navigation = /*#__PURE__*/Object.freeze({
19081
+ view: view,
19082
+ owner: owner$1
19083
+ });
19084
+
19085
+ var find$4 = function (element) {
19086
+ var doc = Element.fromDom(domGlobals.document);
19087
+ var scroll = get$8(doc);
19088
+ var frames = pathTo(element, Navigation);
19089
+ var offset = viewport(element);
19090
+ var r = foldr(frames, function (b, a) {
19091
+ var loc = viewport(a);
19092
+ return {
19093
+ left: b.left + loc.left(),
19094
+ top: b.top + loc.top()
19095
+ };
19096
+ }, {
19097
+ left: 0,
19098
+ top: 0
19099
+ });
19100
+ return Position$1(r.left + offset.left() + scroll.left(), r.top + offset.top() + scroll.top());
19101
+ };
18895
19102
 
18896
- var getPos$1 = function (elm) {
18897
- var x = 0, y = 0;
18898
- var offsetParent = elm;
18899
- while (offsetParent && offsetParent.nodeType) {
18900
- x += offsetParent.offsetLeft || 0;
18901
- y += offsetParent.offsetTop || 0;
18902
- offsetParent = offsetParent.offsetParent;
19103
+ var excludeFromDescend = function (element) {
19104
+ return name(element) === 'textarea';
19105
+ };
19106
+ var descend = function (element, offset) {
19107
+ var children$1 = children(element);
19108
+ if (children$1.length === 0 || excludeFromDescend(element)) {
19109
+ return {
19110
+ element: element,
19111
+ offset: offset
19112
+ };
19113
+ } else if (offset < children$1.length && !excludeFromDescend(children$1[offset])) {
19114
+ return {
19115
+ element: children$1[offset],
19116
+ offset: 0
19117
+ };
19118
+ } else {
19119
+ var last = children$1[children$1.length - 1];
19120
+ if (excludeFromDescend(last)) {
19121
+ return {
19122
+ element: element,
19123
+ offset: offset
19124
+ };
19125
+ } else {
19126
+ if (name(last) === 'img') {
19127
+ return {
19128
+ element: last,
19129
+ offset: 1
19130
+ };
19131
+ } else if (isText(last)) {
19132
+ return {
19133
+ element: last,
19134
+ offset: get$5(last).length
19135
+ };
19136
+ } else {
19137
+ return {
19138
+ element: last,
19139
+ offset: children(last).length
19140
+ };
19141
+ }
19142
+ }
18903
19143
  }
19144
+ };
19145
+ var markerInfo = function (element, cleanupFun) {
19146
+ var pos = absolute(element);
19147
+ var height = get$7(element);
18904
19148
  return {
18905
- x: x,
18906
- y: y
19149
+ element: element,
19150
+ bottom: pos.top() + height,
19151
+ pos: pos,
19152
+ cleanup: cleanupFun
18907
19153
  };
18908
19154
  };
19155
+ var createMarker = function (element, offset) {
19156
+ var startPoint = descend(element, offset);
19157
+ var span = Element.fromHtml('<span data-mce-bogus="all">' + Zwsp.ZWSP + '</span>');
19158
+ before(startPoint.element, span);
19159
+ return markerInfo(span, function () {
19160
+ return remove$1(span);
19161
+ });
19162
+ };
19163
+ var elementMarker = function (element) {
19164
+ return markerInfo(Element.fromDom(element), noop);
19165
+ };
19166
+ var withMarker = function (editor, f, rng, alignToTop) {
19167
+ preserveWith(editor, function (_s, _e) {
19168
+ return applyWithMarker(editor, f, rng, alignToTop);
19169
+ }, rng);
19170
+ };
19171
+ var applyWithMarker = function (editor, f, rng, alignToTop) {
19172
+ var body = Element.fromDom(editor.getBody());
19173
+ var doc = Element.fromDom(editor.getDoc());
19174
+ reflow(body);
19175
+ var scrollTop = get$8(doc).top();
19176
+ var marker = createMarker(Element.fromDom(rng.startContainer), rng.startOffset);
19177
+ f(doc, scrollTop, marker, alignToTop);
19178
+ marker.cleanup();
19179
+ };
19180
+ var withElement = function (editor, element, f, alignToTop) {
19181
+ var doc = Element.fromDom(editor.getDoc());
19182
+ var scrollTop = get$8(doc).top();
19183
+ f(doc, scrollTop, element, alignToTop);
19184
+ };
19185
+ var preserveWith = function (editor, f, rng) {
19186
+ var startElement = rng.startContainer;
19187
+ var startOffset = rng.startOffset;
19188
+ var endElement = rng.endContainer;
19189
+ var endOffset = rng.endOffset;
19190
+ f(Element.fromDom(startElement), Element.fromDom(endElement));
19191
+ var newRng = editor.dom.createRng();
19192
+ newRng.setStart(startElement, startOffset);
19193
+ newRng.setEnd(endElement, endOffset);
19194
+ editor.selection.setRng(rng);
19195
+ };
18909
19196
  var fireScrollIntoViewEvent = function (editor, elm, alignToTop) {
18910
- var scrollEvent = {
19197
+ var scrollEvent = editor.fire('ScrollIntoView', {
18911
19198
  elm: elm,
18912
19199
  alignToTop: alignToTop
18913
- };
18914
- editor.fire('ScrollIntoView', scrollEvent);
19200
+ });
18915
19201
  return scrollEvent.isDefaultPrevented();
18916
19202
  };
18917
- var scrollElementIntoView = function (editor, elm, alignToTop) {
18918
- var y, viewPort;
18919
- var dom = editor.dom;
18920
- var root = dom.getRoot();
18921
- var viewPortY, viewPortH, offsetY = 0;
18922
- if (fireScrollIntoViewEvent(editor, elm, alignToTop)) {
18923
- return;
18924
- }
18925
- if (!NodeType.isElement(elm)) {
18926
- return;
18927
- }
18928
- if (alignToTop === false) {
18929
- offsetY = elm.offsetHeight;
18930
- }
18931
- if (root.nodeName !== 'BODY') {
18932
- var scrollContainer = editor.selection.getScrollContainer();
18933
- if (scrollContainer) {
18934
- y = getPos$1(elm).y - getPos$1(scrollContainer).y + offsetY;
18935
- viewPortH = scrollContainer.clientHeight;
18936
- viewPortY = scrollContainer.scrollTop;
18937
- if (y < viewPortY || y + 25 > viewPortY + viewPortH) {
18938
- scrollContainer.scrollTop = y < viewPortY ? y : y - viewPortH + 25;
18939
- }
18940
- return;
18941
- }
19203
+ var scrollTo = function (marker, viewHeight, alignToTop, doc) {
19204
+ var pos = marker.pos;
19205
+ if (alignToTop) {
19206
+ to(pos.left(), pos.top(), doc);
19207
+ } else {
19208
+ var y = pos.top() - viewHeight + (marker.bottom - pos.top());
19209
+ to(pos.left(), y, doc);
18942
19210
  }
18943
- viewPort = dom.getViewPort(editor.getWin());
18944
- y = dom.getPos(elm).y + offsetY;
18945
- viewPortY = viewPort.y;
18946
- viewPortH = viewPort.h;
18947
- if (y < viewPort.y || y + 25 > viewPortY + viewPortH) {
18948
- editor.getWin().scrollTo(0, y < viewPortY ? y : y - viewPortH + 25);
19211
+ };
19212
+ var intoWindowIfNeeded = function (doc, scrollTop, viewHeight, marker, alignToTop) {
19213
+ if (marker.pos.top() < scrollTop) {
19214
+ scrollTo(marker, viewHeight, alignToTop !== false, doc);
19215
+ } else if (marker.bottom > viewHeight + scrollTop) {
19216
+ scrollTo(marker, viewHeight, alignToTop === true, doc);
18949
19217
  }
18950
19218
  };
18951
- var getViewPortRect = function (editor) {
18952
- if (editor.inline) {
18953
- return editor.getBody().getBoundingClientRect();
18954
- } else {
18955
- var win = editor.getWin();
18956
- return {
18957
- left: 0,
18958
- right: win.innerWidth,
18959
- top: 0,
18960
- bottom: win.innerHeight,
18961
- width: win.innerWidth,
18962
- height: win.innerHeight
18963
- };
19219
+ var intoWindow = function (doc, scrollTop, marker, alignToTop) {
19220
+ var viewHeight = doc.dom().defaultView.innerHeight;
19221
+ intoWindowIfNeeded(doc, scrollTop, viewHeight, marker, alignToTop);
19222
+ };
19223
+ var intoFrame = function (editor, doc, scrollTop, marker, alignToTop) {
19224
+ var frameViewHeight = doc.dom().defaultView.innerHeight;
19225
+ intoWindowIfNeeded(doc, scrollTop, frameViewHeight, marker, alignToTop);
19226
+ var op = find$4(marker.element);
19227
+ var viewTop = get$8().top();
19228
+ var viewBot = domGlobals.window.innerHeight + viewTop;
19229
+ if (op.top() < viewTop) {
19230
+ intoView(marker.element, alignToTop !== false);
19231
+ } else if (op.top() > viewBot) {
19232
+ intoView(marker.element, alignToTop === true);
18964
19233
  }
18965
19234
  };
18966
- var scrollBy = function (editor, dx, dy) {
18967
- if (editor.inline) {
18968
- editor.getBody().scrollLeft += dx;
18969
- editor.getBody().scrollTop += dy;
18970
- } else {
18971
- editor.getWin().scrollBy(dx, dy);
19235
+ var rangeIntoWindow = function (editor, rng, alignToTop) {
19236
+ return withMarker(editor, curry(intoWindow), rng, alignToTop);
19237
+ };
19238
+ var elementIntoWindow = function (editor, element, alignToTop) {
19239
+ return withElement(editor, elementMarker(element), curry(intoWindow), alignToTop);
19240
+ };
19241
+ var rangeIntoFrame = function (editor, rng, alignToTop) {
19242
+ return withMarker(editor, curry(intoFrame, editor), rng, alignToTop);
19243
+ };
19244
+ var elementIntoFrame = function (editor, element, alignToTop) {
19245
+ return withElement(editor, elementMarker(element), curry(intoFrame, editor), alignToTop);
19246
+ };
19247
+ var elementIntoView = function (editor, element, alignToTop) {
19248
+ if (fireScrollIntoViewEvent(editor, element, alignToTop)) {
19249
+ return;
18972
19250
  }
19251
+ var scroller = editor.inline ? elementIntoWindow : elementIntoFrame;
19252
+ scroller(editor, element, alignToTop);
18973
19253
  };
18974
- var scrollRangeIntoView = function (editor, rng) {
18975
- head(CaretPosition.fromRangeStart(rng).getClientRects()).each(function (rngRect) {
18976
- var bodyRect = getViewPortRect(editor);
18977
- var overflow = getOverflow(bodyRect, rngRect);
18978
- var margin = 4;
18979
- var dx = overflow.x > 0 ? overflow.x + margin : overflow.x - margin;
18980
- var dy = overflow.y > 0 ? overflow.y + margin : overflow.y - margin;
18981
- scrollBy(editor, overflow.x !== 0 ? dx : 0, overflow.y !== 0 ? dy : 0);
18982
- });
19254
+ var rangeIntoView = function (editor, rng, alignToTop) {
19255
+ var scroller = editor.inline ? rangeIntoWindow : rangeIntoFrame;
19256
+ scroller(editor, rng, alignToTop);
18983
19257
  };
18984
19258
  var ScrollIntoView = {
18985
- scrollElementIntoView: scrollElementIntoView,
18986
- scrollRangeIntoView: scrollRangeIntoView
19259
+ scrollElementIntoView: elementIntoView,
19260
+ scrollRangeIntoView: rangeIntoView
18987
19261
  };
18988
19262
 
18989
19263
  var hasCeProperty = function (node) {
@@ -19617,7 +19891,7 @@
19617
19891
  return elm.dom();
19618
19892
  }).getOr(root);
19619
19893
  };
19620
- var getStart = function (root, rng, real) {
19894
+ var getStart$2 = function (root, rng, real) {
19621
19895
  return getEndpointElement(root, rng, true, real, function (elm, offset) {
19622
19896
  return Math.min(childNodesCount(elm), offset);
19623
19897
  });
@@ -19677,7 +19951,7 @@
19677
19951
  var node, root;
19678
19952
  var selectedBlocks = [];
19679
19953
  root = dom.getRoot();
19680
- startElm = dom.getParent(startElm || getStart(root, rng, rng.collapsed), dom.isBlock);
19954
+ startElm = dom.getParent(startElm || getStart$2(root, rng, rng.collapsed), dom.isBlock);
19681
19955
  endElm = dom.getParent(endElm || getEnd(root, rng, rng.collapsed), dom.isBlock);
19682
19956
  if (startElm && startElm !== root) {
19683
19957
  selectedBlocks.push(startElm);
@@ -19792,7 +20066,7 @@
19792
20066
  return isAttachedToDom(rng.startContainer) && isAttachedToDom(rng.endContainer);
19793
20067
  }
19794
20068
  };
19795
- var Selection = function (dom, win, serializer, editor) {
20069
+ var Selection$1 = function (dom, win, serializer, editor) {
19796
20070
  var bookmarkManager, controlSelection;
19797
20071
  var selectedRange, explicitRange;
19798
20072
  var selectorChangedWithUnbind = SelectorChanged(dom, editor).selectorChangedWithUnbind;
@@ -19814,8 +20088,8 @@
19814
20088
  var setContent = function (content, args) {
19815
20089
  return SetSelectionContent.setContent(editor, content, args);
19816
20090
  };
19817
- var getStart$1 = function (real) {
19818
- return getStart(editor.getBody(), getRng(), real);
20091
+ var getStart = function (real) {
20092
+ return getStart$2(editor.getBody(), getRng(), real);
19819
20093
  };
19820
20094
  var getEnd$1 = function (real) {
19821
20095
  return getEnd(editor.getBody(), getRng(), real);
@@ -19873,7 +20147,7 @@
19873
20147
  }
19874
20148
  }
19875
20149
  try {
19876
- if (selection = getSel()) {
20150
+ if ((selection = getSel()) && !NodeType.isRestrictedNode(selection.anchorNode)) {
19877
20151
  if (selection.rangeCount > 0) {
19878
20152
  rng = selection.getRangeAt(0);
19879
20153
  } else {
@@ -20039,7 +20313,7 @@
20039
20313
  getSel: getSel,
20040
20314
  setRng: setRng,
20041
20315
  getRng: getRng,
20042
- getStart: getStart$1,
20316
+ getStart: getStart,
20043
20317
  getEnd: getEnd$1,
20044
20318
  getSelectedBlocks: getSelectedBlocks$1,
20045
20319
  normalize: normalize,
@@ -20174,8 +20448,7 @@
20174
20448
  };
20175
20449
 
20176
20450
  var isInlineTarget = function (editor, elm) {
20177
- var selector = getString(editor, 'inline_boundaries_selector').getOr('a[href],code');
20178
- return is$1(Element.fromDom(elm), selector);
20451
+ return is$1(Element.fromDom(elm), Settings.getInlineBoundarySelector(editor));
20179
20452
  };
20180
20453
  var isRtl$1 = function (element) {
20181
20454
  return DOMUtils$1.DOM.getStyle(element, 'direction', true) === 'rtl' || hasStrongRtl(element.textContent);
@@ -20256,7 +20529,7 @@
20256
20529
  var parentBlock = getParentBlock(node, rootNode);
20257
20530
  return parentBlock ? parentBlock : rootNode;
20258
20531
  };
20259
- var before$3 = function (isInlineTarget, rootNode, pos) {
20532
+ var before$4 = function (isInlineTarget, rootNode, pos) {
20260
20533
  var nPos = InlineUtils.normalizeForwards(pos);
20261
20534
  var scope = rescope(rootNode, nPos.container());
20262
20535
  return InlineUtils.findRootInline(isInlineTarget, scope, nPos).fold(function () {
@@ -20285,7 +20558,7 @@
20285
20558
  return nextPos.isNone() ? Option.some(Location.end(inline)) : Option.none();
20286
20559
  });
20287
20560
  };
20288
- var after$2 = function (isInlineTarget, rootNode, pos) {
20561
+ var after$3 = function (isInlineTarget, rootNode, pos) {
20289
20562
  var nPos = InlineUtils.normalizeBackwards(pos);
20290
20563
  var scope = rescope(rootNode, nPos.container());
20291
20564
  return InlineUtils.findRootInline(isInlineTarget, scope, nPos).fold(function () {
@@ -20299,10 +20572,10 @@
20299
20572
  };
20300
20573
  var readLocation = function (isInlineTarget, rootNode, pos) {
20301
20574
  var location = LazyEvaluator.evaluateUntil([
20302
- before$3,
20575
+ before$4,
20303
20576
  start$1,
20304
20577
  end,
20305
- after$2
20578
+ after$3
20306
20579
  ], [
20307
20580
  isInlineTarget,
20308
20581
  rootNode,
@@ -22908,9 +23181,20 @@
22908
23181
  var navigateIgnoreEmptyTextNodes = function (forward, root, from) {
22909
23182
  return CaretFinder.navigateIgnore(forward, root, from, isEmptyText);
22910
23183
  };
23184
+ var getClosestBlock = function (root, pos) {
23185
+ return find(Parents.parentsAndSelf(Element.fromDom(pos.container()), root), isBlock);
23186
+ };
23187
+ var isAtBeforeAfterBlockBoundary = function (forward, root, pos) {
23188
+ return navigateIgnoreEmptyTextNodes(forward, root.dom(), pos).forall(function (newPos) {
23189
+ return getClosestBlock(root, pos).fold(function () {
23190
+ return isInSameBlock(newPos, pos, root.dom()) === false;
23191
+ }, function (fromBlock) {
23192
+ return isInSameBlock(newPos, pos, root.dom()) === false && contains$3(fromBlock, Element.fromDom(newPos.container()));
23193
+ });
23194
+ });
23195
+ };
22911
23196
  var isAtBlockBoundary = function (forward, root, pos) {
22912
- var parentBlocks = filter(Parents.parentsAndSelf(Element.fromDom(pos.container()), root), isBlock);
22913
- return head(parentBlocks).fold(function () {
23197
+ return getClosestBlock(root, pos).fold(function () {
22914
23198
  return navigateIgnoreEmptyTextNodes(forward, root.dom(), pos).forall(function (newPos) {
22915
23199
  return isInSameBlock(newPos, pos, root.dom()) === false;
22916
23200
  });
@@ -22920,12 +23204,14 @@
22920
23204
  };
22921
23205
  var isAtStartOfBlock = curry(isAtBlockBoundary, false);
22922
23206
  var isAtEndOfBlock = curry(isAtBlockBoundary, true);
23207
+ var isBeforeBlock = curry(isAtBeforeAfterBlockBoundary, false);
23208
+ var isAfterBlock = curry(isAtBeforeAfterBlockBoundary, true);
22923
23209
 
22924
23210
  var nbsp = '\xA0';
22925
23211
  var isInMiddleOfText = function (pos) {
22926
23212
  return CaretPosition.isTextPosition(pos) && !pos.isAtStart() && !pos.isAtEnd();
22927
23213
  };
22928
- var getClosestBlock = function (root, pos) {
23214
+ var getClosestBlock$1 = function (root, pos) {
22929
23215
  var parentBlocks = filter(Parents.parentsAndSelf(Element.fromDom(pos.container()), root), isBlock);
22930
23216
  return head(parentBlocks).getOr(root);
22931
23217
  };
@@ -22933,20 +23219,19 @@
22933
23219
  if (isInMiddleOfText(pos)) {
22934
23220
  return isAfterSpace(pos);
22935
23221
  } else {
22936
- return isAfterSpace(pos) || CaretFinder.prevPosition(getClosestBlock(root, pos).dom(), pos).exists(isAfterSpace);
23222
+ return isAfterSpace(pos) || CaretFinder.prevPosition(getClosestBlock$1(root, pos).dom(), pos).exists(isAfterSpace);
22937
23223
  }
22938
23224
  };
22939
23225
  var hasSpaceAfter = function (root, pos) {
22940
23226
  if (isInMiddleOfText(pos)) {
22941
23227
  return isBeforeSpace(pos);
22942
23228
  } else {
22943
- return isBeforeSpace(pos) || CaretFinder.nextPosition(getClosestBlock(root, pos).dom(), pos).exists(isBeforeSpace);
23229
+ return isBeforeSpace(pos) || CaretFinder.nextPosition(getClosestBlock$1(root, pos).dom(), pos).exists(isBeforeSpace);
22944
23230
  }
22945
23231
  };
22946
23232
  var isPreValue = function (value) {
22947
23233
  return contains([
22948
23234
  'pre',
22949
- 'pre-line',
22950
23235
  'pre-wrap'
22951
23236
  ], value);
22952
23237
  };
@@ -22977,7 +23262,7 @@
22977
23262
  if (isInPre(pos)) {
22978
23263
  return false;
22979
23264
  } else {
22980
- return isAtStartOfBlock(root, pos) || isAfterBr(root, pos) || hasSpaceBefore(root, pos);
23265
+ return isAtStartOfBlock(root, pos) || isBeforeBlock(root, pos) || isAfterBr(root, pos) || hasSpaceBefore(root, pos);
22981
23266
  }
22982
23267
  };
22983
23268
  var leanRight = function (pos) {
@@ -22994,7 +23279,7 @@
22994
23279
  if (isInPre(afterPos)) {
22995
23280
  return false;
22996
23281
  } else {
22997
- return isAtEndOfBlock(root, afterPos) || isBeforeBr(root, afterPos) || hasSpaceAfter(root, afterPos);
23282
+ return isAtEndOfBlock(root, afterPos) || isAfterBlock(root, afterPos) || isBeforeBr(root, afterPos) || hasSpaceAfter(root, afterPos);
22998
23283
  }
22999
23284
  };
23000
23285
  var needsToBeNbsp = function (root, pos) {
@@ -23816,11 +24101,10 @@
23816
24101
  DOM$2.setAttrib(bodyEl, 'contentEditable', null);
23817
24102
  });
23818
24103
  DOM$2.addClass(targetElm, 'mce-content-body');
23819
- editor.contentDocument = doc = settings.content_document || domGlobals.document;
23820
- editor.contentWindow = settings.content_window || domGlobals.window;
24104
+ editor.contentDocument = doc = domGlobals.document;
24105
+ editor.contentWindow = domGlobals.window;
23821
24106
  editor.bodyElement = targetElm;
23822
24107
  editor.contentAreaContainer = targetElm;
23823
- settings.content_document = settings.content_window = null;
23824
24108
  settings.root_name = targetElm.nodeName.toLowerCase();
23825
24109
  }
23826
24110
  body = editor.getBody();
@@ -23853,7 +24137,7 @@
23853
24137
  });
23854
24138
  editor.parser = createParser(editor);
23855
24139
  editor.serializer = Serializer$1(settings, editor);
23856
- editor.selection = Selection(editor.dom, editor.getWin(), editor.serializer, editor);
24140
+ editor.selection = Selection$1(editor.dom, editor.getWin(), editor.serializer, editor);
23857
24141
  editor.annotator = Annotator(editor);
23858
24142
  editor.formatter = Formatter(editor);
23859
24143
  editor.undoManager = UndoManager(editor);
@@ -24003,11 +24287,11 @@
24003
24287
 
24004
24288
  var DOM$4 = DOMUtils$1.DOM;
24005
24289
  var initPlugin = function (editor, initializedPlugins, plugin) {
24006
- var Plugin = PluginManager$1.get(plugin);
24007
- var pluginUrl = PluginManager$1.urls[plugin] || editor.documentBaseUrl.replace(/\/$/, '');
24290
+ var Plugin = PluginManager.get(plugin);
24291
+ var pluginUrl = PluginManager.urls[plugin] || editor.documentBaseUrl.replace(/\/$/, '');
24008
24292
  plugin = Tools.trim(plugin);
24009
24293
  if (Plugin && Tools.inArray(initializedPlugins, plugin) === -1) {
24010
- Tools.each(PluginManager$1.dependencies(plugin), function (dep) {
24294
+ Tools.each(PluginManager.dependencies(plugin), function (dep) {
24011
24295
  initPlugin(editor, initializedPlugins, dep);
24012
24296
  });
24013
24297
  if (editor.plugins[plugin]) {
@@ -24124,11 +24408,10 @@
24124
24408
  var languageCode = Settings.getLanguageCode(editor);
24125
24409
  var languageUrl = Settings.getLanguageUrl(editor);
24126
24410
  if (I18n.hasCode(languageCode) === false && languageCode !== 'en') {
24127
- if (languageUrl !== '') {
24128
- scriptLoader.add(languageUrl);
24129
- } else {
24130
- scriptLoader.add(editor.editorManager.baseURL + '/langs/' + languageCode + '.js');
24131
- }
24411
+ var url_1 = languageUrl !== '' ? languageUrl : editor.editorManager.baseURL + '/langs/' + languageCode + '.js';
24412
+ scriptLoader.add(url_1, noop, undefined, function () {
24413
+ ErrorReporter.languageLoadError(url_1, languageCode);
24414
+ });
24132
24415
  }
24133
24416
  };
24134
24417
  var loadTheme = function (scriptLoader, editor, suffix, callback) {
@@ -24149,41 +24432,70 @@
24149
24432
  callback();
24150
24433
  }
24151
24434
  };
24152
- var loadIcons = function (editor) {
24153
- var iconPackName = Tools.trim(editor.getParam('icons', '', 'string'));
24154
- if (iconPackName.length > 0 && !IconManager.has(iconPackName)) {
24155
- var urlString = editor.editorManager.baseURL + '/icons/' + iconPackName + '/icons.js';
24156
- ScriptLoader.ScriptLoader.add(urlString);
24157
- }
24435
+ var getIconsUrlMetaFromUrl = function (editor) {
24436
+ return Option.from(Settings.getIconsUrl(editor)).filter(function (url) {
24437
+ return url.length > 0;
24438
+ }).map(function (url) {
24439
+ return {
24440
+ url: url,
24441
+ name: Option.none()
24442
+ };
24443
+ });
24444
+ };
24445
+ var getIconsUrlMetaFromName = function (editor) {
24446
+ return Option.from(Settings.getIconPackName(editor)).filter(function (name) {
24447
+ return name.length > 0 && !IconManager.has(name);
24448
+ }).map(function (name) {
24449
+ return {
24450
+ url: editor.editorManager.baseURL + '/icons/' + name + '/icons.js',
24451
+ name: Option.some(name)
24452
+ };
24453
+ });
24454
+ };
24455
+ var loadIcons = function (scriptLoader, editor) {
24456
+ getIconsUrlMetaFromUrl(editor).orThunk(function () {
24457
+ return getIconsUrlMetaFromName(editor);
24458
+ }).each(function (urlMeta) {
24459
+ scriptLoader.add(urlMeta.url, noop, undefined, function () {
24460
+ ErrorReporter.iconsLoadError(urlMeta.url, urlMeta.name.getOrUndefined());
24461
+ });
24462
+ });
24158
24463
  };
24159
24464
  var loadPlugins = function (settings, suffix) {
24160
- if (Tools.isArray(settings.plugins)) {
24465
+ if (isArray(settings.plugins)) {
24161
24466
  settings.plugins = settings.plugins.join(' ');
24162
24467
  }
24163
24468
  Tools.each(settings.external_plugins, function (url, name) {
24164
- PluginManager$1.load(name, url);
24469
+ PluginManager.load(name, url, noop, undefined, function () {
24470
+ ErrorReporter.pluginLoadError(name, url);
24471
+ });
24165
24472
  settings.plugins += ' ' + name;
24166
24473
  });
24167
24474
  Tools.each(settings.plugins.split(/[ ,]/), function (plugin) {
24168
24475
  plugin = Tools.trim(plugin);
24169
- if (plugin && !PluginManager$1.urls[plugin]) {
24476
+ if (plugin && !PluginManager.urls[plugin]) {
24170
24477
  if (hasSkipLoadPrefix(plugin)) {
24171
24478
  plugin = plugin.substr(1, plugin.length);
24172
- var dependencies = PluginManager$1.dependencies(plugin);
24479
+ var dependencies = PluginManager.dependencies(plugin);
24173
24480
  Tools.each(dependencies, function (dep) {
24174
24481
  var defaultSettings = {
24175
24482
  prefix: 'plugins/',
24176
24483
  resource: dep,
24177
24484
  suffix: '/plugin' + suffix + '.js'
24178
24485
  };
24179
- dep = PluginManager$1.createUrl(defaultSettings, dep);
24180
- PluginManager$1.load(dep.resource, dep);
24486
+ dep = PluginManager.createUrl(defaultSettings, dep);
24487
+ PluginManager.load(dep.resource, dep, noop, undefined, function () {
24488
+ ErrorReporter.pluginLoadError(dep.prefix + dep.resource + dep.suffix, dep.resource);
24489
+ });
24181
24490
  });
24182
24491
  } else {
24183
- PluginManager$1.load(plugin, {
24492
+ var url_2 = {
24184
24493
  prefix: 'plugins/',
24185
24494
  resource: plugin,
24186
24495
  suffix: '/plugin' + suffix + '.js'
24496
+ };
24497
+ PluginManager.load(plugin, url_2, noop, undefined, function () {
24498
+ ErrorReporter.pluginLoadError(url_2.prefix + url_2.resource + url_2.suffix, plugin);
24187
24499
  });
24188
24500
  }
24189
24501
  }
@@ -24193,14 +24505,13 @@
24193
24505
  var scriptLoader = ScriptLoader.ScriptLoader;
24194
24506
  loadTheme(scriptLoader, editor, suffix, function () {
24195
24507
  loadLanguage(scriptLoader, editor);
24196
- loadIcons(editor);
24508
+ loadIcons(scriptLoader, editor);
24197
24509
  loadPlugins(editor.settings, suffix);
24198
24510
  scriptLoader.loadQueue(function () {
24199
24511
  if (!editor.removed) {
24200
24512
  Init.init(editor);
24201
24513
  }
24202
- }, editor, function (urls) {
24203
- ErrorReporter.pluginLoadError(editor, urls[0]);
24514
+ }, editor, function () {
24204
24515
  if (!editor.removed) {
24205
24516
  Init.init(editor);
24206
24517
  }
@@ -24289,6 +24600,7 @@
24289
24600
  };
24290
24601
  var Render = { render: render };
24291
24602
 
24603
+ var internalContentEditableAttr = 'data-mce-contenteditable';
24292
24604
  var toggleClass = function (elm, cls, state) {
24293
24605
  if (has$2(elm, cls) && state === false) {
24294
24606
  remove$4(elm, cls);
@@ -24296,13 +24608,160 @@
24296
24608
  add$3(elm, cls);
24297
24609
  }
24298
24610
  };
24299
- var create$3 = function (editor) {
24300
- var activeMode = 'design';
24301
- var defaultModes = [
24302
- 'design',
24303
- 'readonly'
24304
- ];
24305
- var availableModes = {
24611
+ var setEditorCommandState = function (editor, cmd, state) {
24612
+ try {
24613
+ editor.getDoc().execCommand(cmd, false, state);
24614
+ } catch (ex) {
24615
+ }
24616
+ };
24617
+ var setContentEditable = function (elm, state) {
24618
+ elm.dom().contentEditable = state ? 'true' : 'false';
24619
+ };
24620
+ var switchOffContentEditableTrue = function (elm) {
24621
+ each(descendants$1(elm, '*[contenteditable="true"]'), function (elm) {
24622
+ set(elm, internalContentEditableAttr, 'true');
24623
+ setContentEditable(elm, false);
24624
+ });
24625
+ };
24626
+ var switchOnContentEditableTrue = function (elm) {
24627
+ each(descendants$1(elm, '*[' + internalContentEditableAttr + '="true"]'), function (elm) {
24628
+ remove(elm, internalContentEditableAttr);
24629
+ setContentEditable(elm, true);
24630
+ });
24631
+ };
24632
+ var removeFakeSelection = function (editor) {
24633
+ Option.from(editor.selection.getNode()).each(function (elm) {
24634
+ elm.removeAttribute('data-mce-selected');
24635
+ });
24636
+ };
24637
+ var restoreFakeSelection = function (editor) {
24638
+ editor.selection.setRng(editor.selection.getRng());
24639
+ };
24640
+ var toggleReadOnly = function (editor, state) {
24641
+ var body = Element.fromDom(editor.getBody());
24642
+ toggleClass(body, 'mce-content-readonly', state);
24643
+ if (state) {
24644
+ editor.selection.controlSelection.hideResizeRect();
24645
+ editor._selectionOverrides.hideFakeCaret();
24646
+ removeFakeSelection(editor);
24647
+ editor.readonly = true;
24648
+ setContentEditable(body, false);
24649
+ switchOffContentEditableTrue(body);
24650
+ } else {
24651
+ editor.readonly = false;
24652
+ setContentEditable(body, true);
24653
+ switchOnContentEditableTrue(body);
24654
+ setEditorCommandState(editor, 'StyleWithCSS', false);
24655
+ setEditorCommandState(editor, 'enableInlineTableEditing', false);
24656
+ setEditorCommandState(editor, 'enableObjectResizing', false);
24657
+ editor.focus();
24658
+ restoreFakeSelection(editor);
24659
+ editor.nodeChanged();
24660
+ }
24661
+ };
24662
+ var isReadOnly = function (editor) {
24663
+ return editor.readonly === true;
24664
+ };
24665
+ var registerFilters = function (editor) {
24666
+ editor.parser.addAttributeFilter('contenteditable', function (nodes) {
24667
+ if (isReadOnly(editor)) {
24668
+ each(nodes, function (node) {
24669
+ node.attr(internalContentEditableAttr, node.attr('contenteditable'));
24670
+ node.attr('contenteditable', 'false');
24671
+ });
24672
+ }
24673
+ });
24674
+ editor.serializer.addAttributeFilter(internalContentEditableAttr, function (nodes) {
24675
+ if (isReadOnly(editor)) {
24676
+ each(nodes, function (node) {
24677
+ node.attr('contenteditable', node.attr(internalContentEditableAttr));
24678
+ });
24679
+ }
24680
+ });
24681
+ editor.serializer.addTempAttr(internalContentEditableAttr);
24682
+ };
24683
+ var registerReadOnlyContentFilters = function (editor) {
24684
+ if (editor.serializer) {
24685
+ registerFilters(editor);
24686
+ } else {
24687
+ editor.on('PreInit', function () {
24688
+ registerFilters(editor);
24689
+ });
24690
+ }
24691
+ };
24692
+ var preventReadOnlyEvents = function (e) {
24693
+ var target = e.target;
24694
+ if (e.type === 'click' && target.tagName === 'A') {
24695
+ e.preventDefault();
24696
+ }
24697
+ };
24698
+ var registerReadOnlySelectionBlockers = function (editor) {
24699
+ editor.on('ShowCaret', function (e) {
24700
+ if (isReadOnly(editor)) {
24701
+ e.preventDefault();
24702
+ }
24703
+ });
24704
+ editor.on('ObjectSelected', function (e) {
24705
+ if (isReadOnly(editor)) {
24706
+ e.preventDefault();
24707
+ }
24708
+ });
24709
+ };
24710
+
24711
+ var defaultModes = [
24712
+ 'design',
24713
+ 'readonly'
24714
+ ];
24715
+ var switchToMode = function (editor, activeMode, availableModes, mode) {
24716
+ var oldMode = availableModes[activeMode.get()];
24717
+ var newMode = availableModes[mode];
24718
+ try {
24719
+ newMode.activate();
24720
+ } catch (e) {
24721
+ domGlobals.console.error('problem while activating editor mode ' + mode + ':', e);
24722
+ return;
24723
+ }
24724
+ oldMode.deactivate();
24725
+ if (oldMode.editorReadOnly !== newMode.editorReadOnly) {
24726
+ toggleReadOnly(editor, newMode.editorReadOnly);
24727
+ }
24728
+ activeMode.set(mode);
24729
+ Events.fireSwitchMode(editor, mode);
24730
+ };
24731
+ var setMode = function (editor, availableModes, activeMode, mode) {
24732
+ if (mode === activeMode.get()) {
24733
+ return;
24734
+ } else if (!has(availableModes, mode)) {
24735
+ throw new Error('Editor mode \'' + mode + '\' is invalid');
24736
+ }
24737
+ if (editor.initialized) {
24738
+ switchToMode(editor, activeMode, availableModes, mode);
24739
+ } else {
24740
+ editor.on('init', function () {
24741
+ return switchToMode(editor, activeMode, availableModes, mode);
24742
+ });
24743
+ }
24744
+ };
24745
+ var registerMode = function (availableModes, mode, api) {
24746
+ var _a;
24747
+ if (contains(defaultModes, mode)) {
24748
+ throw new Error('Cannot override default mode ' + mode);
24749
+ }
24750
+ return __assign({}, availableModes, (_a = {}, _a[mode] = __assign({}, api, {
24751
+ deactivate: function () {
24752
+ try {
24753
+ api.deactivate();
24754
+ } catch (e) {
24755
+ domGlobals.console.error('problem while deactivating editor mode ' + mode + ':');
24756
+ domGlobals.console.error(e);
24757
+ }
24758
+ }
24759
+ }), _a));
24760
+ };
24761
+
24762
+ var create$4 = function (editor) {
24763
+ var activeMode = Cell('design');
24764
+ var availableModes = Cell({
24306
24765
  design: {
24307
24766
  activate: noop,
24308
24767
  deactivate: noop,
@@ -24313,85 +24772,22 @@
24313
24772
  deactivate: noop,
24314
24773
  editorReadOnly: true
24315
24774
  }
24316
- };
24317
- var setEditorCommandState = function (cmd, state) {
24318
- try {
24319
- editor.getDoc().execCommand(cmd, false, state);
24320
- } catch (ex) {
24321
- }
24322
- };
24323
- var toggleReadOnly = function (state) {
24324
- toggleClass(Element.fromDom(editor.getBody()), 'mce-content-readonly', state);
24325
- if (state) {
24326
- editor.selection.controlSelection.hideResizeRect();
24327
- editor.readonly = true;
24328
- editor.getBody().contentEditable = 'false';
24329
- } else {
24330
- editor.readonly = false;
24331
- editor.getBody().contentEditable = 'true';
24332
- setEditorCommandState('StyleWithCSS', false);
24333
- setEditorCommandState('enableInlineTableEditing', false);
24334
- setEditorCommandState('enableObjectResizing', false);
24335
- editor.focus();
24336
- editor.nodeChanged();
24337
- }
24338
- };
24339
- var switchToMode = function (mode) {
24340
- var oldMode = availableModes[activeMode];
24341
- var newMode = availableModes[mode];
24342
- try {
24343
- newMode.activate();
24344
- } catch (e) {
24345
- domGlobals.console.error('problem while activating editor mode ' + mode + ':', e);
24346
- return;
24347
- }
24348
- oldMode.deactivate();
24349
- if (oldMode.editorReadOnly !== newMode.editorReadOnly) {
24350
- toggleReadOnly(newMode.editorReadOnly);
24351
- }
24352
- activeMode = mode;
24353
- Events.fireSwitchMode(editor, mode);
24354
- };
24355
- var set = function (mode) {
24356
- if (mode === activeMode) {
24357
- return;
24358
- } else if (!has(availableModes, mode)) {
24359
- throw new Error('Editor mode \'' + mode + '\' is invalid');
24360
- }
24361
- if (editor.initialized) {
24362
- switchToMode(mode);
24363
- } else {
24364
- editor.on('init', function () {
24365
- return switchToMode(mode);
24366
- });
24367
- }
24368
- };
24369
- var get = function () {
24370
- return activeMode;
24371
- };
24372
- var isReadOnly = function () {
24373
- return editor.readonly === true;
24374
- };
24375
- var register = function (mode, api) {
24376
- if (contains(defaultModes, mode)) {
24377
- throw new Error('Cannot override default mode ' + mode);
24378
- }
24379
- availableModes[mode] = __assign({}, api, {
24380
- deactivate: function () {
24381
- try {
24382
- api.deactivate();
24383
- } catch (e) {
24384
- domGlobals.console.error('problem while deactivating editor mode ' + mode + ':');
24385
- domGlobals.console.error(e);
24386
- }
24387
- }
24388
- });
24389
- };
24775
+ });
24776
+ registerReadOnlyContentFilters(editor);
24777
+ registerReadOnlySelectionBlockers(editor);
24390
24778
  return {
24391
- isReadOnly: isReadOnly,
24392
- set: set,
24393
- get: get,
24394
- register: register
24779
+ isReadOnly: function () {
24780
+ return isReadOnly(editor);
24781
+ },
24782
+ set: function (mode) {
24783
+ return setMode(editor, availableModes.get(), activeMode, mode);
24784
+ },
24785
+ get: function () {
24786
+ return activeMode.get();
24787
+ },
24788
+ register: function (mode, api) {
24789
+ availableModes.set(registerMode(availableModes.get(), mode, api));
24790
+ }
24395
24791
  };
24396
24792
  };
24397
24793
 
@@ -25375,7 +25771,7 @@
25375
25771
  value = { href: value };
25376
25772
  }
25377
25773
  anchor = editor.dom.getParent(editor.selection.getNode(), 'a');
25378
- value.href = value.href.replace(' ', '%20');
25774
+ value.href = value.href.replace(/ /g, '%20');
25379
25775
  if (!anchor || !value.href) {
25380
25776
  editor.formatter.remove('link');
25381
25777
  }
@@ -25452,18 +25848,12 @@
25452
25848
  }();
25453
25849
 
25454
25850
  var nativeEvents = Tools.makeMap('focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange ' + 'mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover ' + 'draggesture dragdrop drop drag submit ' + 'compositionstart compositionend compositionupdate touchstart touchmove touchend', ' ');
25455
- var returnFalse$1 = function () {
25456
- return false;
25457
- };
25458
- var returnTrue$1 = function () {
25459
- return true;
25460
- };
25461
25851
  var EventDispatcher = function () {
25462
25852
  function EventDispatcher(settings) {
25463
25853
  this.bindings = {};
25464
25854
  this.settings = settings || {};
25465
25855
  this.scope = this.settings.scope || this;
25466
- this.toggleEvent = this.settings.toggleEvent || returnFalse$1;
25856
+ this.toggleEvent = this.settings.toggleEvent || never;
25467
25857
  }
25468
25858
  EventDispatcher.isNative = function (name) {
25469
25859
  return !!nativeEvents[name.toLowerCase()];
@@ -25478,17 +25868,17 @@
25478
25868
  }
25479
25869
  if (!args.preventDefault) {
25480
25870
  args.preventDefault = function () {
25481
- args.isDefaultPrevented = returnTrue$1;
25871
+ args.isDefaultPrevented = always;
25482
25872
  };
25483
25873
  args.stopPropagation = function () {
25484
- args.isPropagationStopped = returnTrue$1;
25874
+ args.isPropagationStopped = always;
25485
25875
  };
25486
25876
  args.stopImmediatePropagation = function () {
25487
- args.isImmediatePropagationStopped = returnTrue$1;
25877
+ args.isImmediatePropagationStopped = always;
25488
25878
  };
25489
- args.isDefaultPrevented = returnFalse$1;
25490
- args.isPropagationStopped = returnFalse$1;
25491
- args.isImmediatePropagationStopped = returnFalse$1;
25879
+ args.isDefaultPrevented = never;
25880
+ args.isPropagationStopped = never;
25881
+ args.isImmediatePropagationStopped = never;
25492
25882
  }
25493
25883
  if (this.settings.beforeFire) {
25494
25884
  this.settings.beforeFire(args);
@@ -25515,7 +25905,7 @@
25515
25905
  EventDispatcher.prototype.on = function (name, callback, prepend, extra) {
25516
25906
  var handlers, names, i;
25517
25907
  if (callback === false) {
25518
- callback = returnFalse$1;
25908
+ callback = never;
25519
25909
  }
25520
25910
  if (callback) {
25521
25911
  var wrappedCallback = { func: callback };
@@ -25652,13 +26042,13 @@
25652
26042
  return editor.getBody();
25653
26043
  };
25654
26044
  var isListening = function (editor) {
25655
- return !editor.hidden && !editor.readonly;
26045
+ return !editor.hidden && !isReadOnly(editor);
25656
26046
  };
25657
26047
  var fireEvent = function (editor, eventName, e) {
25658
26048
  if (isListening(editor)) {
25659
26049
  editor.fire(eventName, e);
25660
- } else if (editor.readonly) {
25661
- e.preventDefault();
26050
+ } else if (isReadOnly(editor)) {
26051
+ preventReadOnlyEvents(e);
25662
26052
  }
25663
26053
  };
25664
26054
  var bindEventDelegate = function (editor, eventName) {
@@ -26157,7 +26547,7 @@
26157
26547
  return URI;
26158
26548
  }();
26159
26549
 
26160
- var create$4 = function () {
26550
+ var create$5 = function () {
26161
26551
  var buttons = {};
26162
26552
  var menuItems = {};
26163
26553
  var popups = {};
@@ -26202,7 +26592,7 @@
26202
26592
  };
26203
26593
 
26204
26594
  var registry = function () {
26205
- var bridge = create$4();
26595
+ var bridge = create$5();
26206
26596
  return {
26207
26597
  addAutocompleter: bridge.addAutocompleter,
26208
26598
  addButton: bridge.addButton,
@@ -26235,9 +26625,16 @@
26235
26625
  this.isNotDirty = false;
26236
26626
  this.editorManager = editorManager;
26237
26627
  this.documentBaseUrl = editorManager.documentBaseURL;
26238
- this.baseUri = editorManager.baseURI;
26239
26628
  extend$3(this, EditorObservable);
26240
26629
  this.settings = getEditorSettings(this, id, this.documentBaseUrl, editorManager.defaultSettings, settings);
26630
+ if (this.settings.suffix) {
26631
+ editorManager.suffix = this.settings.suffix;
26632
+ }
26633
+ this.suffix = editorManager.suffix;
26634
+ if (this.settings.base_url) {
26635
+ editorManager._setBaseUrl(this.settings.base_url);
26636
+ }
26637
+ this.baseUri = editorManager.baseURI;
26241
26638
  AddOnManager$1.languageLoad = this.settings.language_load;
26242
26639
  AddOnManager$1.baseURL = editorManager.baseURL;
26243
26640
  this.id = id;
@@ -26245,18 +26642,14 @@
26245
26642
  this.documentBaseURI = new URI(this.settings.document_base_url, { base_uri: this.baseUri });
26246
26643
  this.baseURI = this.baseUri;
26247
26644
  this.inline = this.settings.inline;
26248
- this.suffix = editorManager.suffix;
26249
26645
  this.shortcuts = new Shortcuts(this);
26250
26646
  this.editorCommands = new EditorCommands(this);
26251
26647
  if (this.settings.cache_suffix) {
26252
26648
  Env.cacheSuffix = this.settings.cache_suffix.replace(/^[\?\&]+/, '');
26253
26649
  }
26254
- if (this.settings.override_viewport === false) {
26255
- Env.overrideViewPort = false;
26256
- }
26257
26650
  this.ui = { registry: registry() };
26258
26651
  var self = this;
26259
- var modeInstance = create$3(self);
26652
+ var modeInstance = create$4(self);
26260
26653
  this.mode = modeInstance;
26261
26654
  this.setMode = modeInstance.set;
26262
26655
  editorManager.fire('SetupEditor', { editor: this });
@@ -26727,7 +27120,8 @@
26727
27120
 
26728
27121
  var DOM$9 = DOMUtils$1.DOM;
26729
27122
  var explode$4 = Tools.explode, each$k = Tools.each, extend$4 = Tools.extend;
26730
- var instanceCounter = 0, beforeUnloadDelegate, boundGlobalEvents = false;
27123
+ var instanceCounter = 0, boundGlobalEvents = false;
27124
+ var beforeUnloadDelegate;
26731
27125
  var legacyEditors = [];
26732
27126
  var editors = [];
26733
27127
  var isValidLegacyKey = function (id) {
@@ -26787,7 +27181,6 @@
26787
27181
  return editor;
26788
27182
  };
26789
27183
  var EditorManager = __assign({}, Observable, {
26790
- _beforeUnloadHandler: null,
26791
27184
  baseURI: null,
26792
27185
  baseURL: null,
26793
27186
  defaultSettings: {},
@@ -26795,8 +27188,8 @@
26795
27188
  suffix: null,
26796
27189
  $: DomQuery,
26797
27190
  majorVersion: '5',
26798
- minorVersion: '0.5',
26799
- releaseDate: '2019-05-09',
27191
+ minorVersion: '0.9',
27192
+ releaseDate: '2019-06-26',
26800
27193
  editors: legacyEditors,
26801
27194
  i18n: I18n,
26802
27195
  activeEditor: null,
@@ -26847,8 +27240,7 @@
26847
27240
  var baseUrl, suffix;
26848
27241
  baseUrl = defaultSettings.base_url;
26849
27242
  if (baseUrl) {
26850
- this.baseURL = new URI(this.documentBaseURL).toAbsolute(baseUrl.replace(/\/+$/, ''));
26851
- this.baseURI = new URI(this.baseURL);
27243
+ this._setBaseUrl(baseUrl);
26852
27244
  }
26853
27245
  suffix = defaultSettings.suffix;
26854
27246
  if (defaultSettings.suffix) {
@@ -27036,10 +27428,15 @@
27036
27428
  self.activeEditor = editor;
27037
27429
  self.fire('AddEditor', { editor: editor });
27038
27430
  if (!beforeUnloadDelegate) {
27039
- beforeUnloadDelegate = function () {
27040
- self.fire('BeforeUnload');
27431
+ beforeUnloadDelegate = function (e) {
27432
+ var event = self.fire('BeforeUnload');
27433
+ if (event.returnValue) {
27434
+ e.preventDefault();
27435
+ e.returnValue = event.returnValue;
27436
+ return event.returnValue;
27437
+ }
27041
27438
  };
27042
- DOM$9.bind(window, 'beforeunload', beforeUnloadDelegate);
27439
+ window.addEventListener('beforeunload', beforeUnloadDelegate);
27043
27440
  }
27044
27441
  return editor;
27045
27442
  },
@@ -27072,7 +27469,7 @@
27072
27469
  self.fire('RemoveEditor', { editor: editor });
27073
27470
  }
27074
27471
  if (editors.length === 0) {
27075
- DOM$9.unbind(window, 'beforeunload', beforeUnloadDelegate);
27472
+ window.removeEventListener('beforeunload', beforeUnloadDelegate);
27076
27473
  }
27077
27474
  editor.remove();
27078
27475
  toggleGlobalEvents(editors.length > 0);
@@ -27128,6 +27525,10 @@
27128
27525
  editor.fire('activate', { relatedTarget: activeEditor });
27129
27526
  }
27130
27527
  this.activeEditor = editor;
27528
+ },
27529
+ _setBaseUrl: function (baseUrl) {
27530
+ this.baseURL = new URI(this.documentBaseURL).toAbsolute(baseUrl.replace(/\/+$/, ''));
27531
+ this.baseURI = new URI(this.baseURL);
27131
27532
  }
27132
27533
  });
27133
27534
  EditorManager.setup();
@@ -27192,7 +27593,7 @@
27192
27593
  if (rel[4] === 'c') {
27193
27594
  x -= round$2(w / 2);
27194
27595
  }
27195
- return create$5(x, y, w, h);
27596
+ return create$6(x, y, w, h);
27196
27597
  };
27197
27598
  var findBestRelativePosition = function (rect, targetRect, constrainRect, rels) {
27198
27599
  var pos, i;
@@ -27205,7 +27606,7 @@
27205
27606
  return null;
27206
27607
  };
27207
27608
  var inflate = function (rect, w, h) {
27208
- return create$5(rect.x - w, rect.y - h, rect.w + w * 2, rect.h + h * 2);
27609
+ return create$6(rect.x - w, rect.y - h, rect.w + w * 2, rect.h + h * 2);
27209
27610
  };
27210
27611
  var intersect = function (rect, cropRect) {
27211
27612
  var x1, y1, x2, y2;
@@ -27216,7 +27617,7 @@
27216
27617
  if (x2 - x1 < 0 || y2 - y1 < 0) {
27217
27618
  return null;
27218
27619
  }
27219
- return create$5(x1, y1, x2 - x1, y2 - y1);
27620
+ return create$6(x1, y1, x2 - x1, y2 - y1);
27220
27621
  };
27221
27622
  var clamp$1 = function (rect, clampRect, fixedSize) {
27222
27623
  var underflowX1, underflowY1, overflowX2, overflowY2, x1, y1, x2, y2, cx2, cy2;
@@ -27240,9 +27641,9 @@
27240
27641
  }
27241
27642
  x2 -= overflowX2;
27242
27643
  y2 -= overflowY2;
27243
- return create$5(x1, y1, x2 - x1, y2 - y1);
27644
+ return create$6(x1, y1, x2 - x1, y2 - y1);
27244
27645
  };
27245
- var create$5 = function (x, y, w, h) {
27646
+ var create$6 = function (x, y, w, h) {
27246
27647
  return {
27247
27648
  x: x,
27248
27649
  y: y,
@@ -27251,7 +27652,7 @@
27251
27652
  };
27252
27653
  };
27253
27654
  var fromClientRect = function (clientRect) {
27254
- return create$5(clientRect.left, clientRect.top, clientRect.width, clientRect.height);
27655
+ return create$6(clientRect.left, clientRect.top, clientRect.width, clientRect.height);
27255
27656
  };
27256
27657
  var Rect = {
27257
27658
  inflate: inflate,
@@ -27259,7 +27660,7 @@
27259
27660
  findBestRelativePosition: findBestRelativePosition,
27260
27661
  intersect: intersect,
27261
27662
  clamp: clamp$1,
27262
- create: create$5,
27663
+ create: create$6,
27263
27664
  fromClientRect: fromClientRect
27264
27665
  };
27265
27666
 
@@ -27633,7 +28034,7 @@
27633
28034
  return JSONRequest;
27634
28035
  }();
27635
28036
 
27636
- var create$6 = function () {
28037
+ var create$7 = function () {
27637
28038
  return function () {
27638
28039
  var data = {};
27639
28040
  var keys = [];
@@ -27676,7 +28077,7 @@
27676
28077
  try {
27677
28078
  localStorage = domGlobals.window.localStorage;
27678
28079
  } catch (e) {
27679
- localStorage = create$6();
28080
+ localStorage = create$7();
27680
28081
  }
27681
28082
  var LocalStorage = localStorage;
27682
28083
 
@@ -27710,7 +28111,7 @@
27710
28111
  Serializer: Serializer$1,
27711
28112
  ControlSelection: ControlSelection,
27712
28113
  BookmarkManager: BookmarkManager$1,
27713
- Selection: Selection,
28114
+ Selection: Selection$1,
27714
28115
  Event: EventUtils.Event
27715
28116
  },
27716
28117
  html: {
@@ -27781,4 +28182,3 @@
27781
28182
  exportToModuleLoaders(tinymce);
27782
28183
 
27783
28184
  }(window));
27784
- })();