tinymce-rails 5.0.5 → 5.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
- })();