tinymce-rails 4.9.4 → 4.9.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5fbd2b9b00761813391482b45230beb68d948608975b0995e70fba8888c1e355
4
- data.tar.gz: 827bdeaa54d9a38d85d411eab05976058d0f6f643d6242465f3789f3d75a741e
3
+ metadata.gz: c68e4ad6f27c5f42e0fb00e73e36d1f4ea4c21ab8ef650227e9bcceeac31eeb7
4
+ data.tar.gz: a4c413955e55aba19778d176a23577c78f22ee49156a8c19ac124f97f1ea228b
5
5
  SHA512:
6
- metadata.gz: eb4b56994b963bbce1974ab04700aa1eb806fd1ff6f0ccfe872da372c561920ede8399056f91f6ccab961a47d7939dc4897244e3a5d1585c8ea99cd231422590
7
- data.tar.gz: 23aa7922a2e6947d936858c0430d50908e60c54bac5fbe2bfc6e19688ac42e37086de3500b20d2f711f5f8079ef4fbed095d9773dd4d03ffcad4fde2a0baea66
6
+ metadata.gz: e7a4e4f415e7731cebfbe53f6e47a597475b2e86c5d57517d35245f3e7875b8743187321d3e6388dcd511e7ce67fc33fbdbc78a2fb68856e0fea391ebc897c67
7
+ data.tar.gz: 28ffaa2db4e126fa7573621e7def5bc9de119533a1db81460a18d334e74ba2e82fde8ed60f250d4fff64188751950f990e3f43f543af98869c7e6a98847099d3
@@ -1,13 +1,9 @@
1
- // 4.9.4 (2019-03-20)
1
+ // 4.9.6 (2019-09-02)
2
2
  (function () {
3
3
  (function (domGlobals) {
4
4
  'use strict';
5
5
 
6
6
  var noop = function () {
7
- var args = [];
8
- for (var _i = 0; _i < arguments.length; _i++) {
9
- args[_i] = arguments[_i];
10
- }
11
7
  };
12
8
  var compose = function (fa, fb) {
13
9
  return function () {
@@ -111,8 +107,9 @@
111
107
  },
112
108
  toString: constant('none()')
113
109
  };
114
- if (Object.freeze)
110
+ if (Object.freeze) {
115
111
  Object.freeze(me);
112
+ }
116
113
  return me;
117
114
  }();
118
115
  var some = function (a) {
@@ -187,13 +184,16 @@
187
184
  };
188
185
 
189
186
  var typeOf = function (x) {
190
- if (x === null)
187
+ if (x === null) {
191
188
  return 'null';
189
+ }
192
190
  var t = typeof x;
193
- if (t === 'object' && Array.prototype.isPrototypeOf(x))
191
+ if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) {
194
192
  return 'array';
195
- if (t === 'object' && String.prototype.isPrototypeOf(x))
193
+ }
194
+ if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) {
196
195
  return 'string';
196
+ }
197
197
  return t;
198
198
  };
199
199
  var isType = function (type) {
@@ -209,6 +209,7 @@
209
209
  var isFunction = isType('function');
210
210
  var isNumber = isType('number');
211
211
 
212
+ var slice = Array.prototype.slice;
212
213
  var rawIndexOf = function () {
213
214
  var pIndexOf = Array.prototype.indexOf;
214
215
  var fastIndex = function (xs, x) {
@@ -315,8 +316,9 @@
315
316
  var flatten = function (xs) {
316
317
  var r = [];
317
318
  for (var i = 0, len = xs.length; i < len; ++i) {
318
- if (!Array.prototype.isPrototypeOf(xs[i]))
319
+ if (!isArray(xs[i])) {
319
320
  throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);
321
+ }
320
322
  push.apply(r, xs[i]);
321
323
  }
322
324
  return r;
@@ -334,7 +336,6 @@
334
336
  }
335
337
  return true;
336
338
  };
337
- var slice = Array.prototype.slice;
338
339
  var reverse = function (xs) {
339
340
  var r = slice.call(xs, 0);
340
341
  r.reverse();
@@ -372,8 +373,9 @@
372
373
 
373
374
  var path = function (parts, scope) {
374
375
  var o = scope !== undefined && scope !== null ? scope : Global;
375
- for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)
376
+ for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i) {
376
377
  o = o[parts[i]];
378
+ }
377
379
  return o;
378
380
  };
379
381
  var resolve = function (p, scope) {
@@ -386,8 +388,9 @@
386
388
  };
387
389
  var getOrDie = function (name, scope) {
388
390
  var actual = unsafe(name, scope);
389
- if (actual === undefined || actual === null)
390
- throw name + ' not available on this browser';
391
+ if (actual === undefined || actual === null) {
392
+ throw new Error(name + ' not available on this browser');
393
+ }
391
394
  return actual;
392
395
  };
393
396
  var Global$1 = { getOrDie: getOrDie };
@@ -3252,18 +3255,20 @@
3252
3255
  var firstMatch = function (regexes, s) {
3253
3256
  for (var i = 0; i < regexes.length; i++) {
3254
3257
  var x = regexes[i];
3255
- if (x.test(s))
3258
+ if (x.test(s)) {
3256
3259
  return x;
3260
+ }
3257
3261
  }
3258
3262
  return undefined;
3259
3263
  };
3260
3264
  var find$2 = function (regexes, agent) {
3261
3265
  var r = firstMatch(regexes, agent);
3262
- if (!r)
3266
+ if (!r) {
3263
3267
  return {
3264
3268
  major: 0,
3265
3269
  minor: 0
3266
3270
  };
3271
+ }
3267
3272
  var group = function (i) {
3268
3273
  return Number(agent.replace(r, '$' + i));
3269
3274
  };
@@ -3271,8 +3276,9 @@
3271
3276
  };
3272
3277
  var detect = function (versionRegexes, agent) {
3273
3278
  var cleanedAgent = String(agent).toLowerCase();
3274
- if (versionRegexes.length === 0)
3279
+ if (versionRegexes.length === 0) {
3275
3280
  return unknown();
3281
+ }
3276
3282
  return find$2(versionRegexes, cleanedAgent);
3277
3283
  };
3278
3284
  var unknown = function () {
@@ -3451,8 +3457,7 @@
3451
3457
  name: 'Edge',
3452
3458
  versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
3453
3459
  search: function (uastring) {
3454
- var monstrosity = contains$2(uastring, 'edge/') && contains$2(uastring, 'chrome') && contains$2(uastring, 'safari') && contains$2(uastring, 'applewebkit');
3455
- return monstrosity;
3460
+ return contains$2(uastring, 'edge/') && contains$2(uastring, 'chrome') && contains$2(uastring, 'safari') && contains$2(uastring, 'applewebkit');
3456
3461
  }
3457
3462
  },
3458
3463
  {
@@ -3676,7 +3681,7 @@
3676
3681
  };
3677
3682
 
3678
3683
  var isSupported = function (dom) {
3679
- return dom.style !== undefined;
3684
+ return dom.style !== undefined && isFunction(dom.style.getPropertyValue);
3680
3685
  };
3681
3686
 
3682
3687
  var inBody = function (element) {
@@ -3802,19 +3807,22 @@
3802
3807
  var ELEMENT$1 = ELEMENT;
3803
3808
  var DOCUMENT$1 = DOCUMENT;
3804
3809
  var is$1 = function (element, selector) {
3805
- var elem = element.dom();
3806
- if (elem.nodeType !== ELEMENT$1) {
3810
+ var dom = element.dom();
3811
+ if (dom.nodeType !== ELEMENT$1) {
3807
3812
  return false;
3808
- } else if (elem.matches !== undefined) {
3809
- return elem.matches(selector);
3810
- } else if (elem.msMatchesSelector !== undefined) {
3811
- return elem.msMatchesSelector(selector);
3812
- } else if (elem.webkitMatchesSelector !== undefined) {
3813
- return elem.webkitMatchesSelector(selector);
3814
- } else if (elem.mozMatchesSelector !== undefined) {
3815
- return elem.mozMatchesSelector(selector);
3816
3813
  } else {
3817
- throw new Error('Browser lacks native selectors');
3814
+ var elem = dom;
3815
+ if (elem.matches !== undefined) {
3816
+ return elem.matches(selector);
3817
+ } else if (elem.msMatchesSelector !== undefined) {
3818
+ return elem.msMatchesSelector(selector);
3819
+ } else if (elem.webkitMatchesSelector !== undefined) {
3820
+ return elem.webkitMatchesSelector(selector);
3821
+ } else if (elem.mozMatchesSelector !== undefined) {
3822
+ return elem.mozMatchesSelector(selector);
3823
+ } else {
3824
+ throw new Error('Browser lacks native selectors');
3825
+ }
3818
3826
  }
3819
3827
  };
3820
3828
  var bypassSelector = function (dom) {
@@ -3850,16 +3858,13 @@
3850
3858
  return Element.fromDom(element.dom().ownerDocument.documentElement);
3851
3859
  };
3852
3860
  var defaultView = function (element) {
3853
- var el = element.dom();
3854
- var defView = el.ownerDocument.defaultView;
3855
- return Element.fromDom(defView);
3861
+ return Element.fromDom(element.dom().ownerDocument.defaultView);
3856
3862
  };
3857
3863
  var parent = function (element) {
3858
- var dom = element.dom();
3859
- return Option.from(dom.parentNode).map(Element.fromDom);
3864
+ return Option.from(element.dom().parentNode).map(Element.fromDom);
3860
3865
  };
3861
3866
  var parents = function (element, isRoot) {
3862
- var stop = isFunction(isRoot) ? isRoot : constant(false);
3867
+ var stop = isFunction(isRoot) ? isRoot : never;
3863
3868
  var dom = element.dom();
3864
3869
  var ret = [];
3865
3870
  while (dom.parentNode !== null && dom.parentNode !== undefined) {
@@ -3875,12 +3880,10 @@
3875
3880
  return ret;
3876
3881
  };
3877
3882
  var prevSibling = function (element) {
3878
- var dom = element.dom();
3879
- return Option.from(dom.previousSibling).map(Element.fromDom);
3883
+ return Option.from(element.dom().previousSibling).map(Element.fromDom);
3880
3884
  };
3881
3885
  var nextSibling = function (element) {
3882
- var dom = element.dom();
3883
- return Option.from(dom.nextSibling).map(Element.fromDom);
3886
+ return Option.from(element.dom().nextSibling).map(Element.fromDom);
3884
3887
  };
3885
3888
  var prevSiblings = function (element) {
3886
3889
  return reverse(Recurse.toArray(element, prevSibling));
@@ -3889,8 +3892,7 @@
3889
3892
  return Recurse.toArray(element, nextSibling);
3890
3893
  };
3891
3894
  var children = function (element) {
3892
- var dom = element.dom();
3893
- return map(dom.childNodes, Element.fromDom);
3895
+ return map(element.dom().childNodes, Element.fromDom);
3894
3896
  };
3895
3897
  var child = function (element, index) {
3896
3898
  var cs = element.dom().childNodes;
@@ -3963,6 +3965,503 @@
3963
3965
  };
3964
3966
  var Position = { getPos: getPos };
3965
3967
 
3968
+ var exports$1 = {}, module$1 = { exports: exports$1 };
3969
+ (function (define, exports, module, require) {
3970
+ (function (f) {
3971
+ if (typeof exports === 'object' && typeof module !== 'undefined') {
3972
+ module.exports = f();
3973
+ } else if (typeof define === 'function' && define.amd) {
3974
+ define([], f);
3975
+ } else {
3976
+ var g;
3977
+ if (typeof window !== 'undefined') {
3978
+ g = window;
3979
+ } else if (typeof global !== 'undefined') {
3980
+ g = global;
3981
+ } else if (typeof self !== 'undefined') {
3982
+ g = self;
3983
+ } else {
3984
+ g = this;
3985
+ }
3986
+ g.EphoxContactWrapper = f();
3987
+ }
3988
+ }(function () {
3989
+ return function () {
3990
+ function r(e, n, t) {
3991
+ function o(i, f) {
3992
+ if (!n[i]) {
3993
+ if (!e[i]) {
3994
+ var c = 'function' == typeof require && require;
3995
+ if (!f && c)
3996
+ return c(i, !0);
3997
+ if (u)
3998
+ return u(i, !0);
3999
+ var a = new Error('Cannot find module \'' + i + '\'');
4000
+ throw a.code = 'MODULE_NOT_FOUND', a;
4001
+ }
4002
+ var p = n[i] = { exports: {} };
4003
+ e[i][0].call(p.exports, function (r) {
4004
+ var n = e[i][1][r];
4005
+ return o(n || r);
4006
+ }, p, p.exports, r, e, n, t);
4007
+ }
4008
+ return n[i].exports;
4009
+ }
4010
+ for (var u = 'function' == typeof require && require, i = 0; i < t.length; i++)
4011
+ o(t[i]);
4012
+ return o;
4013
+ }
4014
+ return r;
4015
+ }()({
4016
+ 1: [
4017
+ function (require, module, exports) {
4018
+ var process = module.exports = {};
4019
+ var cachedSetTimeout;
4020
+ var cachedClearTimeout;
4021
+ function defaultSetTimout() {
4022
+ throw new Error('setTimeout has not been defined');
4023
+ }
4024
+ function defaultClearTimeout() {
4025
+ throw new Error('clearTimeout has not been defined');
4026
+ }
4027
+ (function () {
4028
+ try {
4029
+ if (typeof setTimeout === 'function') {
4030
+ cachedSetTimeout = setTimeout;
4031
+ } else {
4032
+ cachedSetTimeout = defaultSetTimout;
4033
+ }
4034
+ } catch (e) {
4035
+ cachedSetTimeout = defaultSetTimout;
4036
+ }
4037
+ try {
4038
+ if (typeof clearTimeout === 'function') {
4039
+ cachedClearTimeout = clearTimeout;
4040
+ } else {
4041
+ cachedClearTimeout = defaultClearTimeout;
4042
+ }
4043
+ } catch (e) {
4044
+ cachedClearTimeout = defaultClearTimeout;
4045
+ }
4046
+ }());
4047
+ function runTimeout(fun) {
4048
+ if (cachedSetTimeout === setTimeout) {
4049
+ return setTimeout(fun, 0);
4050
+ }
4051
+ if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
4052
+ cachedSetTimeout = setTimeout;
4053
+ return setTimeout(fun, 0);
4054
+ }
4055
+ try {
4056
+ return cachedSetTimeout(fun, 0);
4057
+ } catch (e) {
4058
+ try {
4059
+ return cachedSetTimeout.call(null, fun, 0);
4060
+ } catch (e) {
4061
+ return cachedSetTimeout.call(this, fun, 0);
4062
+ }
4063
+ }
4064
+ }
4065
+ function runClearTimeout(marker) {
4066
+ if (cachedClearTimeout === clearTimeout) {
4067
+ return clearTimeout(marker);
4068
+ }
4069
+ if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
4070
+ cachedClearTimeout = clearTimeout;
4071
+ return clearTimeout(marker);
4072
+ }
4073
+ try {
4074
+ return cachedClearTimeout(marker);
4075
+ } catch (e) {
4076
+ try {
4077
+ return cachedClearTimeout.call(null, marker);
4078
+ } catch (e) {
4079
+ return cachedClearTimeout.call(this, marker);
4080
+ }
4081
+ }
4082
+ }
4083
+ var queue = [];
4084
+ var draining = false;
4085
+ var currentQueue;
4086
+ var queueIndex = -1;
4087
+ function cleanUpNextTick() {
4088
+ if (!draining || !currentQueue) {
4089
+ return;
4090
+ }
4091
+ draining = false;
4092
+ if (currentQueue.length) {
4093
+ queue = currentQueue.concat(queue);
4094
+ } else {
4095
+ queueIndex = -1;
4096
+ }
4097
+ if (queue.length) {
4098
+ drainQueue();
4099
+ }
4100
+ }
4101
+ function drainQueue() {
4102
+ if (draining) {
4103
+ return;
4104
+ }
4105
+ var timeout = runTimeout(cleanUpNextTick);
4106
+ draining = true;
4107
+ var len = queue.length;
4108
+ while (len) {
4109
+ currentQueue = queue;
4110
+ queue = [];
4111
+ while (++queueIndex < len) {
4112
+ if (currentQueue) {
4113
+ currentQueue[queueIndex].run();
4114
+ }
4115
+ }
4116
+ queueIndex = -1;
4117
+ len = queue.length;
4118
+ }
4119
+ currentQueue = null;
4120
+ draining = false;
4121
+ runClearTimeout(timeout);
4122
+ }
4123
+ process.nextTick = function (fun) {
4124
+ var args = new Array(arguments.length - 1);
4125
+ if (arguments.length > 1) {
4126
+ for (var i = 1; i < arguments.length; i++) {
4127
+ args[i - 1] = arguments[i];
4128
+ }
4129
+ }
4130
+ queue.push(new Item(fun, args));
4131
+ if (queue.length === 1 && !draining) {
4132
+ runTimeout(drainQueue);
4133
+ }
4134
+ };
4135
+ function Item(fun, array) {
4136
+ this.fun = fun;
4137
+ this.array = array;
4138
+ }
4139
+ Item.prototype.run = function () {
4140
+ this.fun.apply(null, this.array);
4141
+ };
4142
+ process.title = 'browser';
4143
+ process.browser = true;
4144
+ process.env = {};
4145
+ process.argv = [];
4146
+ process.version = '';
4147
+ process.versions = {};
4148
+ function noop() {
4149
+ }
4150
+ process.on = noop;
4151
+ process.addListener = noop;
4152
+ process.once = noop;
4153
+ process.off = noop;
4154
+ process.removeListener = noop;
4155
+ process.removeAllListeners = noop;
4156
+ process.emit = noop;
4157
+ process.prependListener = noop;
4158
+ process.prependOnceListener = noop;
4159
+ process.listeners = function (name) {
4160
+ return [];
4161
+ };
4162
+ process.binding = function (name) {
4163
+ throw new Error('process.binding is not supported');
4164
+ };
4165
+ process.cwd = function () {
4166
+ return '/';
4167
+ };
4168
+ process.chdir = function (dir) {
4169
+ throw new Error('process.chdir is not supported');
4170
+ };
4171
+ process.umask = function () {
4172
+ return 0;
4173
+ };
4174
+ },
4175
+ {}
4176
+ ],
4177
+ 2: [
4178
+ function (require, module, exports) {
4179
+ (function (setImmediate) {
4180
+ (function (root) {
4181
+ var setTimeoutFunc = setTimeout;
4182
+ function noop() {
4183
+ }
4184
+ function bind(fn, thisArg) {
4185
+ return function () {
4186
+ fn.apply(thisArg, arguments);
4187
+ };
4188
+ }
4189
+ function Promise(fn) {
4190
+ if (typeof this !== 'object')
4191
+ throw new TypeError('Promises must be constructed via new');
4192
+ if (typeof fn !== 'function')
4193
+ throw new TypeError('not a function');
4194
+ this._state = 0;
4195
+ this._handled = false;
4196
+ this._value = undefined;
4197
+ this._deferreds = [];
4198
+ doResolve(fn, this);
4199
+ }
4200
+ function handle(self, deferred) {
4201
+ while (self._state === 3) {
4202
+ self = self._value;
4203
+ }
4204
+ if (self._state === 0) {
4205
+ self._deferreds.push(deferred);
4206
+ return;
4207
+ }
4208
+ self._handled = true;
4209
+ Promise._immediateFn(function () {
4210
+ var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;
4211
+ if (cb === null) {
4212
+ (self._state === 1 ? resolve : reject)(deferred.promise, self._value);
4213
+ return;
4214
+ }
4215
+ var ret;
4216
+ try {
4217
+ ret = cb(self._value);
4218
+ } catch (e) {
4219
+ reject(deferred.promise, e);
4220
+ return;
4221
+ }
4222
+ resolve(deferred.promise, ret);
4223
+ });
4224
+ }
4225
+ function resolve(self, newValue) {
4226
+ try {
4227
+ if (newValue === self)
4228
+ throw new TypeError('A promise cannot be resolved with itself.');
4229
+ if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
4230
+ var then = newValue.then;
4231
+ if (newValue instanceof Promise) {
4232
+ self._state = 3;
4233
+ self._value = newValue;
4234
+ finale(self);
4235
+ return;
4236
+ } else if (typeof then === 'function') {
4237
+ doResolve(bind(then, newValue), self);
4238
+ return;
4239
+ }
4240
+ }
4241
+ self._state = 1;
4242
+ self._value = newValue;
4243
+ finale(self);
4244
+ } catch (e) {
4245
+ reject(self, e);
4246
+ }
4247
+ }
4248
+ function reject(self, newValue) {
4249
+ self._state = 2;
4250
+ self._value = newValue;
4251
+ finale(self);
4252
+ }
4253
+ function finale(self) {
4254
+ if (self._state === 2 && self._deferreds.length === 0) {
4255
+ Promise._immediateFn(function () {
4256
+ if (!self._handled) {
4257
+ Promise._unhandledRejectionFn(self._value);
4258
+ }
4259
+ });
4260
+ }
4261
+ for (var i = 0, len = self._deferreds.length; i < len; i++) {
4262
+ handle(self, self._deferreds[i]);
4263
+ }
4264
+ self._deferreds = null;
4265
+ }
4266
+ function Handler(onFulfilled, onRejected, promise) {
4267
+ this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
4268
+ this.onRejected = typeof onRejected === 'function' ? onRejected : null;
4269
+ this.promise = promise;
4270
+ }
4271
+ function doResolve(fn, self) {
4272
+ var done = false;
4273
+ try {
4274
+ fn(function (value) {
4275
+ if (done)
4276
+ return;
4277
+ done = true;
4278
+ resolve(self, value);
4279
+ }, function (reason) {
4280
+ if (done)
4281
+ return;
4282
+ done = true;
4283
+ reject(self, reason);
4284
+ });
4285
+ } catch (ex) {
4286
+ if (done)
4287
+ return;
4288
+ done = true;
4289
+ reject(self, ex);
4290
+ }
4291
+ }
4292
+ Promise.prototype['catch'] = function (onRejected) {
4293
+ return this.then(null, onRejected);
4294
+ };
4295
+ Promise.prototype.then = function (onFulfilled, onRejected) {
4296
+ var prom = new this.constructor(noop);
4297
+ handle(this, new Handler(onFulfilled, onRejected, prom));
4298
+ return prom;
4299
+ };
4300
+ Promise.all = function (arr) {
4301
+ var args = Array.prototype.slice.call(arr);
4302
+ return new Promise(function (resolve, reject) {
4303
+ if (args.length === 0)
4304
+ return resolve([]);
4305
+ var remaining = args.length;
4306
+ function res(i, val) {
4307
+ try {
4308
+ if (val && (typeof val === 'object' || typeof val === 'function')) {
4309
+ var then = val.then;
4310
+ if (typeof then === 'function') {
4311
+ then.call(val, function (val) {
4312
+ res(i, val);
4313
+ }, reject);
4314
+ return;
4315
+ }
4316
+ }
4317
+ args[i] = val;
4318
+ if (--remaining === 0) {
4319
+ resolve(args);
4320
+ }
4321
+ } catch (ex) {
4322
+ reject(ex);
4323
+ }
4324
+ }
4325
+ for (var i = 0; i < args.length; i++) {
4326
+ res(i, args[i]);
4327
+ }
4328
+ });
4329
+ };
4330
+ Promise.resolve = function (value) {
4331
+ if (value && typeof value === 'object' && value.constructor === Promise) {
4332
+ return value;
4333
+ }
4334
+ return new Promise(function (resolve) {
4335
+ resolve(value);
4336
+ });
4337
+ };
4338
+ Promise.reject = function (value) {
4339
+ return new Promise(function (resolve, reject) {
4340
+ reject(value);
4341
+ });
4342
+ };
4343
+ Promise.race = function (values) {
4344
+ return new Promise(function (resolve, reject) {
4345
+ for (var i = 0, len = values.length; i < len; i++) {
4346
+ values[i].then(resolve, reject);
4347
+ }
4348
+ });
4349
+ };
4350
+ Promise._immediateFn = typeof setImmediate === 'function' ? function (fn) {
4351
+ setImmediate(fn);
4352
+ } : function (fn) {
4353
+ setTimeoutFunc(fn, 0);
4354
+ };
4355
+ Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) {
4356
+ if (typeof console !== 'undefined' && console) {
4357
+ console.warn('Possible Unhandled Promise Rejection:', err);
4358
+ }
4359
+ };
4360
+ Promise._setImmediateFn = function _setImmediateFn(fn) {
4361
+ Promise._immediateFn = fn;
4362
+ };
4363
+ Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) {
4364
+ Promise._unhandledRejectionFn = fn;
4365
+ };
4366
+ if (typeof module !== 'undefined' && module.exports) {
4367
+ module.exports = Promise;
4368
+ } else if (!root.Promise) {
4369
+ root.Promise = Promise;
4370
+ }
4371
+ }(this));
4372
+ }.call(this, require('timers').setImmediate));
4373
+ },
4374
+ { 'timers': 3 }
4375
+ ],
4376
+ 3: [
4377
+ function (require, module, exports) {
4378
+ (function (setImmediate, clearImmediate) {
4379
+ var nextTick = require('process/browser.js').nextTick;
4380
+ var apply = Function.prototype.apply;
4381
+ var slice = Array.prototype.slice;
4382
+ var immediateIds = {};
4383
+ var nextImmediateId = 0;
4384
+ exports.setTimeout = function () {
4385
+ return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);
4386
+ };
4387
+ exports.setInterval = function () {
4388
+ return new Timeout(apply.call(setInterval, window, arguments), clearInterval);
4389
+ };
4390
+ exports.clearTimeout = exports.clearInterval = function (timeout) {
4391
+ timeout.close();
4392
+ };
4393
+ function Timeout(id, clearFn) {
4394
+ this._id = id;
4395
+ this._clearFn = clearFn;
4396
+ }
4397
+ Timeout.prototype.unref = Timeout.prototype.ref = function () {
4398
+ };
4399
+ Timeout.prototype.close = function () {
4400
+ this._clearFn.call(window, this._id);
4401
+ };
4402
+ exports.enroll = function (item, msecs) {
4403
+ clearTimeout(item._idleTimeoutId);
4404
+ item._idleTimeout = msecs;
4405
+ };
4406
+ exports.unenroll = function (item) {
4407
+ clearTimeout(item._idleTimeoutId);
4408
+ item._idleTimeout = -1;
4409
+ };
4410
+ exports._unrefActive = exports.active = function (item) {
4411
+ clearTimeout(item._idleTimeoutId);
4412
+ var msecs = item._idleTimeout;
4413
+ if (msecs >= 0) {
4414
+ item._idleTimeoutId = setTimeout(function onTimeout() {
4415
+ if (item._onTimeout)
4416
+ item._onTimeout();
4417
+ }, msecs);
4418
+ }
4419
+ };
4420
+ exports.setImmediate = typeof setImmediate === 'function' ? setImmediate : function (fn) {
4421
+ var id = nextImmediateId++;
4422
+ var args = arguments.length < 2 ? false : slice.call(arguments, 1);
4423
+ immediateIds[id] = true;
4424
+ nextTick(function onNextTick() {
4425
+ if (immediateIds[id]) {
4426
+ if (args) {
4427
+ fn.apply(null, args);
4428
+ } else {
4429
+ fn.call(null);
4430
+ }
4431
+ exports.clearImmediate(id);
4432
+ }
4433
+ });
4434
+ return id;
4435
+ };
4436
+ exports.clearImmediate = typeof clearImmediate === 'function' ? clearImmediate : function (id) {
4437
+ delete immediateIds[id];
4438
+ };
4439
+ }.call(this, require('timers').setImmediate, require('timers').clearImmediate));
4440
+ },
4441
+ {
4442
+ 'process/browser.js': 1,
4443
+ 'timers': 3
4444
+ }
4445
+ ],
4446
+ 4: [
4447
+ function (require, module, exports) {
4448
+ var promisePolyfill = require('promise-polyfill');
4449
+ var Global = function () {
4450
+ if (typeof window !== 'undefined') {
4451
+ return window;
4452
+ } else {
4453
+ return Function('return this;')();
4454
+ }
4455
+ }();
4456
+ module.exports = { boltExport: Global.Promise || promisePolyfill };
4457
+ },
4458
+ { 'promise-polyfill': 2 }
4459
+ ]
4460
+ }, {}, [4])(4);
4461
+ }));
4462
+ }(undefined, exports$1, module$1, undefined));
4463
+ var Promise = module$1.exports.boltExport;
4464
+
3966
4465
  var nu$3 = function (baseFn) {
3967
4466
  var data = Option.none();
3968
4467
  var callbacks = [];
@@ -3974,10 +4473,11 @@
3974
4473
  });
3975
4474
  };
3976
4475
  var get = function (nCallback) {
3977
- if (isReady())
4476
+ if (isReady()) {
3978
4477
  call(nCallback);
3979
- else
4478
+ } else {
3980
4479
  callbacks.push(nCallback);
4480
+ }
3981
4481
  };
3982
4482
  var set = function (x) {
3983
4483
  data = Option.some(x);
@@ -4014,42 +4514,31 @@
4014
4514
  pure: pure
4015
4515
  };
4016
4516
 
4017
- var bounce = function (f) {
4018
- return function () {
4019
- var args = [];
4020
- for (var _i = 0; _i < arguments.length; _i++) {
4021
- args[_i] = arguments[_i];
4022
- }
4023
- var me = this;
4024
- domGlobals.setTimeout(function () {
4025
- f.apply(me, args);
4026
- }, 0);
4027
- };
4517
+ var errorReporter = function (err) {
4518
+ domGlobals.setTimeout(function () {
4519
+ throw err;
4520
+ }, 0);
4028
4521
  };
4029
-
4030
- var nu$4 = function (baseFn) {
4522
+ var make = function (run) {
4031
4523
  var get = function (callback) {
4032
- baseFn(bounce(callback));
4524
+ run().then(callback, errorReporter);
4033
4525
  };
4034
4526
  var map = function (fab) {
4035
- return nu$4(function (callback) {
4036
- get(function (a) {
4037
- var value = fab(a);
4038
- callback(value);
4039
- });
4527
+ return make(function () {
4528
+ return run().then(fab);
4040
4529
  });
4041
4530
  };
4042
4531
  var bind = function (aFutureB) {
4043
- return nu$4(function (callback) {
4044
- get(function (a) {
4045
- aFutureB(a).get(callback);
4532
+ return make(function () {
4533
+ return run().then(function (v) {
4534
+ return aFutureB(v).toPromise();
4046
4535
  });
4047
4536
  });
4048
4537
  };
4049
4538
  var anonBind = function (futureB) {
4050
- return nu$4(function (callback) {
4051
- get(function (a) {
4052
- futureB.get(callback);
4539
+ return make(function () {
4540
+ return run().then(function () {
4541
+ return futureB.toPromise();
4053
4542
  });
4054
4543
  });
4055
4544
  };
@@ -4058,25 +4547,32 @@
4058
4547
  };
4059
4548
  var toCached = function () {
4060
4549
  var cache = null;
4061
- return nu$4(function (callback) {
4550
+ return make(function () {
4062
4551
  if (cache === null) {
4063
- cache = toLazy();
4552
+ cache = run();
4064
4553
  }
4065
- cache.get(callback);
4554
+ return cache;
4066
4555
  });
4067
4556
  };
4557
+ var toPromise = run;
4068
4558
  return {
4069
4559
  map: map,
4070
4560
  bind: bind,
4071
4561
  anonBind: anonBind,
4072
4562
  toLazy: toLazy,
4073
4563
  toCached: toCached,
4564
+ toPromise: toPromise,
4074
4565
  get: get
4075
4566
  };
4076
4567
  };
4568
+ var nu$4 = function (baseFn) {
4569
+ return make(function () {
4570
+ return new Promise(baseFn);
4571
+ });
4572
+ };
4077
4573
  var pure$1 = function (a) {
4078
- return nu$4(function (callback) {
4079
- callback(a);
4574
+ return make(function () {
4575
+ return Promise.resolve(a);
4080
4576
  });
4081
4577
  };
4082
4578
  var Future = {
@@ -4208,9 +4704,15 @@
4208
4704
  toOption: Option.none
4209
4705
  };
4210
4706
  };
4707
+ var fromOption = function (opt, err) {
4708
+ return opt.fold(function () {
4709
+ return error(err);
4710
+ }, value);
4711
+ };
4211
4712
  var Result = {
4212
4713
  value: value,
4213
- error: error
4714
+ error: error,
4715
+ fromOption: fromOption
4214
4716
  };
4215
4717
 
4216
4718
  function StyleSheetLoader(document, settings) {
@@ -4581,6 +5083,9 @@
4581
5083
  return !!node && node.nodeType === type;
4582
5084
  };
4583
5085
  };
5086
+ var isRestrictedNode = function (node) {
5087
+ return !!node && !Object.getPrototypeOf(node);
5088
+ };
4584
5089
  var isElement$1 = isNodeType(1);
4585
5090
  var matchNodeNames = function (names) {
4586
5091
  var items = names.toLowerCase().split(' ');
@@ -4666,6 +5171,7 @@
4666
5171
  isBr: isBr$1,
4667
5172
  isContentEditableTrue: isContentEditableTrue,
4668
5173
  isContentEditableFalse: isContentEditableFalse,
5174
+ isRestrictedNode: isRestrictedNode,
4669
5175
  matchNodeNames: matchNodeNames,
4670
5176
  hasPropValue: hasPropValue,
4671
5177
  hasAttribute: hasAttribute,
@@ -5938,7 +6444,7 @@
5938
6444
  var getViewPort = function (argWin) {
5939
6445
  var actWin = !argWin ? win : argWin;
5940
6446
  var doc = actWin.document;
5941
- var rootElm = doc.documentElement;
6447
+ var rootElm = doc.documentElement ;
5942
6448
  return {
5943
6449
  x: actWin.pageXOffset || rootElm.scrollLeft,
5944
6450
  y: actWin.pageYOffset || rootElm.scrollTop,
@@ -6993,8 +7499,9 @@
6993
7499
  for (var _i = 0; _i < arguments.length; _i++) {
6994
7500
  args[_i] = arguments[_i];
6995
7501
  }
6996
- if (timer !== null)
7502
+ if (timer !== null) {
6997
7503
  domGlobals.clearTimeout(timer);
7504
+ }
6998
7505
  timer = domGlobals.setTimeout(function () {
6999
7506
  fn.apply(null, args);
7000
7507
  timer = null;
@@ -7119,8 +7626,8 @@
7119
7626
  return Option.none();
7120
7627
  };
7121
7628
  var closest = function (scope, predicate, isRoot) {
7122
- var is = function (s) {
7123
- return predicate(s);
7629
+ var is = function (s, test) {
7630
+ return test(s);
7124
7631
  };
7125
7632
  return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot);
7126
7633
  };
@@ -7318,9 +7825,10 @@
7318
7825
  if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
7319
7826
  t[p] = s[p];
7320
7827
  if (s != null && typeof Object.getOwnPropertySymbols === 'function')
7321
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++)
7322
- if (e.indexOf(p[i]) < 0)
7828
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7829
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
7323
7830
  t[p[i]] = s[p[i]];
7831
+ }
7324
7832
  return t;
7325
7833
  }
7326
7834
 
@@ -7649,7 +8157,7 @@
7649
8157
  return container;
7650
8158
  };
7651
8159
 
7652
- var extendingChars = new RegExp('[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a' + '\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0' + '\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08E3-\u0902\u093a\u093c' + '\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3' + '\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc' + '\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57' + '\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56' + '\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44' + '\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9' + '\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97' + '\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074' + '\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5' + '\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18' + '\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1ABE\u1b00-\u1b03\u1b34' + '\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9' + '\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9' + '\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20DD-\u20E0\u20e1\u20E2-\u20E4\u20e5-\u20f0\u2cef-\u2cf1' + '\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\uA670-\uA672\ua674-\ua67d\uA69E-\ua69f\ua6f0-\ua6f1' + '\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc' + '\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1' + '\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\uFE2F\uff9e-\uff9f]');
8160
+ var extendingChars = new RegExp('[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a' + '\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0' + '\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c' + '\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3' + '\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc' + '\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57' + '\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56' + '\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44' + '\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9' + '\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97' + '\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074' + '\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5' + '\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18' + '\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1ABE\u1b00-\u1b03\u1b34' + '\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9' + '\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9' + '\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20DD-\u20E0\u20e1\u20E2-\u20E4\u20e5-\u20f0\u2cef-\u2cf1' + '\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\uA670-\uA672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1' + '\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc' + '\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1' + '\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]');
7653
8161
  var isExtendingChar = function (ch) {
7654
8162
  return typeof ch === 'string' && ch.charCodeAt(0) >= 768 && extendingChars.test(ch);
7655
8163
  };
@@ -9764,18 +10272,9 @@
9764
10272
  }
9765
10273
  return getOption(element).getOr('');
9766
10274
  };
9767
- var getOptionIE10 = function (element) {
9768
- try {
9769
- return getOptionSafe(element);
9770
- } catch (e) {
9771
- return Option.none();
9772
- }
9773
- };
9774
- var getOptionSafe = function (element) {
10275
+ var getOption = function (element) {
9775
10276
  return is(element) ? Option.from(element.dom().nodeValue) : Option.none();
9776
10277
  };
9777
- var browser = PlatformDetection$1.detect().browser;
9778
- var getOption = browser.isIE() && browser.version.major === 10 ? getOptionIE10 : getOptionSafe;
9779
10278
  var set = function (element, value) {
9780
10279
  if (!is(element)) {
9781
10280
  throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node');
@@ -9906,7 +10405,7 @@
9906
10405
  function Annotator (editor) {
9907
10406
  var registry = create$1();
9908
10407
  setup$1(editor, registry);
9909
- var changes = setup(editor, registry);
10408
+ var changes = setup(editor);
9910
10409
  return {
9911
10410
  register: function (name, settings) {
9912
10411
  registry.register(name, settings);
@@ -10665,165 +11164,129 @@
10665
11164
  };
10666
11165
  var InsertContent = { insertAtCaret: insertAtCaret$1 };
10667
11166
 
10668
- var sectionResult = Immutable('sections', 'settings');
10669
- var detection = PlatformDetection$1.detect();
10670
- var isTouch = detection.deviceType.isTouch();
10671
- var mobilePlugins = [
10672
- 'lists',
10673
- 'autolink',
10674
- 'autosave'
10675
- ];
10676
- var defaultMobileSettings = { theme: 'mobile' };
10677
- var normalizePlugins = function (plugins) {
10678
- var pluginNames = isArray(plugins) ? plugins.join(' ') : plugins;
10679
- var trimmedPlugins = map(isString(pluginNames) ? pluginNames.split(' ') : [], trim$2);
10680
- return filter(trimmedPlugins, function (item) {
10681
- return item.length > 0;
10682
- });
11167
+ var strongRtl = /[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/;
11168
+ var hasStrongRtl = function (text) {
11169
+ return strongRtl.test(text);
10683
11170
  };
10684
- var filterMobilePlugins = function (plugins) {
10685
- return filter(plugins, curry(contains, mobilePlugins));
11171
+
11172
+ var getBodySetting = function (editor, name, defaultValue) {
11173
+ var value = editor.getParam(name, defaultValue);
11174
+ if (value.indexOf('=') !== -1) {
11175
+ var bodyObj = editor.getParam(name, '', 'hash');
11176
+ return bodyObj.hasOwnProperty(editor.id) ? bodyObj[editor.id] : defaultValue;
11177
+ } else {
11178
+ return value;
11179
+ }
10686
11180
  };
10687
- var extractSections = function (keys, settings) {
10688
- var result = bifilter(settings, function (value, key) {
10689
- return contains(keys, key);
10690
- });
10691
- return sectionResult(result.t, result.f);
11181
+ var getIframeAttrs = function (editor) {
11182
+ return editor.getParam('iframe_attrs', {});
10692
11183
  };
10693
- var getSection = function (sectionResult, name, defaults) {
10694
- var sections = sectionResult.sections();
10695
- var sectionSettings = sections.hasOwnProperty(name) ? sections[name] : {};
10696
- return Tools.extend({}, defaults, sectionSettings);
11184
+ var getDocType = function (editor) {
11185
+ return editor.getParam('doctype', '<!DOCTYPE html>');
10697
11186
  };
10698
- var hasSection = function (sectionResult, name) {
10699
- return sectionResult.sections().hasOwnProperty(name);
11187
+ var getDocumentBaseUrl = function (editor) {
11188
+ return editor.getParam('document_base_url', '');
10700
11189
  };
10701
- var getDefaultSettings = function (id, documentBaseUrl, editor) {
10702
- return {
10703
- id: id,
10704
- theme: 'modern',
10705
- delta_width: 0,
10706
- delta_height: 0,
10707
- popup_css: '',
10708
- plugins: '',
10709
- document_base_url: documentBaseUrl,
10710
- add_form_submit_trigger: true,
10711
- submit_patch: true,
10712
- add_unload_trigger: true,
10713
- convert_urls: true,
10714
- relative_urls: true,
10715
- remove_script_host: true,
10716
- object_resizing: true,
10717
- doctype: '<!DOCTYPE html>',
10718
- visual: true,
10719
- font_size_style_values: 'xx-small,x-small,small,medium,large,x-large,xx-large',
10720
- font_size_legacy_values: 'xx-small,small,medium,large,x-large,xx-large,300%',
10721
- forced_root_block: 'p',
10722
- hidden_input: true,
10723
- render_ui: true,
10724
- indentation: '40px',
10725
- inline_styles: true,
10726
- convert_fonts_to_spans: true,
10727
- indent: 'simple',
10728
- indent_before: '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',
10729
- 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',
10730
- entity_encoding: 'named',
10731
- url_converter: editor.convertURL,
10732
- url_converter_scope: editor,
10733
- ie7_compat: true
10734
- };
11190
+ var getBodyId = function (editor) {
11191
+ return getBodySetting(editor, 'body_id', 'tinymce');
10735
11192
  };
10736
- var getExternalPlugins = function (overrideSettings, settings) {
10737
- var userDefinedExternalPlugins = settings.external_plugins ? settings.external_plugins : {};
10738
- if (overrideSettings && overrideSettings.external_plugins) {
10739
- return Tools.extend({}, overrideSettings.external_plugins, userDefinedExternalPlugins);
10740
- } else {
10741
- return userDefinedExternalPlugins;
10742
- }
11193
+ var getBodyClass = function (editor) {
11194
+ return getBodySetting(editor, 'body_class', '');
10743
11195
  };
10744
- var combinePlugins = function (forcedPlugins, plugins) {
10745
- return [].concat(normalizePlugins(forcedPlugins)).concat(normalizePlugins(plugins));
11196
+ var getContentSecurityPolicy = function (editor) {
11197
+ return editor.getParam('content_security_policy', '');
10746
11198
  };
10747
- var processPlugins = function (isTouchDevice, sectionResult, defaultOverrideSettings, settings) {
10748
- var forcedPlugins = normalizePlugins(defaultOverrideSettings.forced_plugins);
10749
- var plugins = normalizePlugins(settings.plugins);
10750
- var platformPlugins = isTouchDevice && hasSection(sectionResult, 'mobile') ? filterMobilePlugins(plugins) : plugins;
10751
- var combinedPlugins = combinePlugins(forcedPlugins, platformPlugins);
10752
- return Tools.extend(settings, { plugins: combinedPlugins.join(' ') });
11199
+ var shouldPutBrInPre = function (editor) {
11200
+ return editor.getParam('br_in_pre', true);
10753
11201
  };
10754
- var isOnMobile = function (isTouchDevice, sectionResult) {
10755
- var isInline = sectionResult.settings().inline;
10756
- return isTouchDevice && hasSection(sectionResult, 'mobile') && !isInline;
11202
+ var getForcedRootBlock = function (editor) {
11203
+ if (editor.getParam('force_p_newlines', false)) {
11204
+ return 'p';
11205
+ }
11206
+ var block = editor.getParam('forced_root_block', 'p');
11207
+ return block === false ? '' : block;
10757
11208
  };
10758
- var combineSettings = function (isTouchDevice, defaultSettings, defaultOverrideSettings, settings) {
10759
- var sectionResult = extractSections(['mobile'], settings);
10760
- var extendedSettings = Tools.extend(defaultSettings, defaultOverrideSettings, sectionResult.settings(), isOnMobile(isTouchDevice, sectionResult) ? getSection(sectionResult, 'mobile', defaultMobileSettings) : {}, {
10761
- validate: true,
10762
- content_editable: sectionResult.settings().inline,
10763
- external_plugins: getExternalPlugins(defaultOverrideSettings, sectionResult.settings())
10764
- });
10765
- return processPlugins(isTouchDevice, sectionResult, defaultOverrideSettings, extendedSettings);
11209
+ var getForcedRootBlockAttrs = function (editor) {
11210
+ return editor.getParam('forced_root_block_attrs', {});
10766
11211
  };
10767
- var getEditorSettings = function (editor, id, documentBaseUrl, defaultOverrideSettings, settings) {
10768
- var defaultSettings = getDefaultSettings(id, documentBaseUrl, editor);
10769
- return combineSettings(isTouch, defaultSettings, defaultOverrideSettings, settings);
11212
+ var getBrNewLineSelector = function (editor) {
11213
+ return editor.getParam('br_newline_selector', '.mce-toc h2,figcaption,caption');
10770
11214
  };
10771
- var getFiltered = function (predicate, editor, name) {
10772
- return Option.from(editor.settings[name]).filter(predicate);
11215
+ var getNoNewLineSelector = function (editor) {
11216
+ return editor.getParam('no_newline_selector', '');
10773
11217
  };
10774
- var getString = curry(getFiltered, isString);
10775
- var getParamObject = function (value) {
10776
- var output = {};
10777
- if (typeof value === 'string') {
10778
- each(value.indexOf('=') > 0 ? value.split(/[;,](?![^=;,]*(?:[;,]|$))/) : value.split(','), function (val) {
10779
- var arr = val.split('=');
10780
- if (arr.length > 1) {
10781
- output[Tools.trim(arr[0])] = Tools.trim(arr[1]);
10782
- } else {
10783
- output[Tools.trim(arr[0])] = Tools.trim(arr);
10784
- }
10785
- });
10786
- } else {
10787
- output = value;
10788
- }
10789
- return output;
11218
+ var shouldKeepStyles = function (editor) {
11219
+ return editor.getParam('keep_styles', true);
10790
11220
  };
10791
- var isArrayOf = function (p) {
10792
- return function (a) {
10793
- return isArray(a) && forall(a, p);
10794
- };
11221
+ var shouldEndContainerOnEmptyBlock = function (editor) {
11222
+ return editor.getParam('end_container_on_empty_block', false);
10795
11223
  };
10796
- var getParam = function (editor, name, defaultVal, type) {
10797
- var value = name in editor.settings ? editor.settings[name] : defaultVal;
10798
- if (type === 'hash') {
10799
- return getParamObject(value);
10800
- } else if (type === 'string') {
10801
- return getFiltered(isString, editor, name).getOr(defaultVal);
10802
- } else if (type === 'number') {
10803
- return getFiltered(isNumber, editor, name).getOr(defaultVal);
10804
- } else if (type === 'boolean') {
10805
- return getFiltered(isBoolean, editor, name).getOr(defaultVal);
10806
- } else if (type === 'object') {
10807
- return getFiltered(isObject, editor, name).getOr(defaultVal);
10808
- } else if (type === 'array') {
10809
- return getFiltered(isArray, editor, name).getOr(defaultVal);
10810
- } else if (type === 'string[]') {
10811
- return getFiltered(isArrayOf(isString), editor, name).getOr(defaultVal);
10812
- } else if (type === 'function') {
10813
- return getFiltered(isFunction, editor, name).getOr(defaultVal);
10814
- } else {
10815
- return value;
10816
- }
11224
+ var getFontStyleValues = function (editor) {
11225
+ return Tools.explode(editor.getParam('font_size_style_values', ''));
10817
11226
  };
10818
-
10819
- var strongRtl = /[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/;
10820
- var hasStrongRtl = function (text) {
10821
- return strongRtl.test(text);
11227
+ var getFontSizeClasses = function (editor) {
11228
+ return Tools.explode(editor.getParam('font_size_classes', ''));
11229
+ };
11230
+ var getImagesDataImgFilter = function (editor) {
11231
+ return editor.getParam('images_dataimg_filter', constant(true), 'function');
11232
+ };
11233
+ var isAutomaticUploadsEnabled = function (editor) {
11234
+ return editor.getParam('automatic_uploads', true, 'boolean');
11235
+ };
11236
+ var shouldReuseFileName = function (editor) {
11237
+ return editor.getParam('images_reuse_filename', false, 'boolean');
11238
+ };
11239
+ var shouldReplaceBlobUris = function (editor) {
11240
+ return editor.getParam('images_replace_blob_uris', true, 'boolean');
11241
+ };
11242
+ var getImageUploadUrl = function (editor) {
11243
+ return editor.getParam('images_upload_url', '', 'string');
11244
+ };
11245
+ var getImageUploadBasePath = function (editor) {
11246
+ return editor.getParam('images_upload_base_path', '', 'string');
11247
+ };
11248
+ var getImagesUploadCredentials = function (editor) {
11249
+ return editor.getParam('images_upload_credentials', false, 'boolean');
11250
+ };
11251
+ var getImagesUploadHandler = function (editor) {
11252
+ return editor.getParam('images_upload_handler', null, 'function');
11253
+ };
11254
+ var shouldUseContentCssCors = function (editor) {
11255
+ return editor.getParam('content_css_cors', false, 'boolean');
11256
+ };
11257
+ var getInlineBoundarySelector = function (editor) {
11258
+ return editor.getParam('inline_boundaries_selector', 'a[href],code,.mce-annotation', 'string');
11259
+ };
11260
+ var Settings = {
11261
+ getIframeAttrs: getIframeAttrs,
11262
+ getDocType: getDocType,
11263
+ getDocumentBaseUrl: getDocumentBaseUrl,
11264
+ getBodyId: getBodyId,
11265
+ getBodyClass: getBodyClass,
11266
+ getContentSecurityPolicy: getContentSecurityPolicy,
11267
+ shouldPutBrInPre: shouldPutBrInPre,
11268
+ getForcedRootBlock: getForcedRootBlock,
11269
+ getForcedRootBlockAttrs: getForcedRootBlockAttrs,
11270
+ getBrNewLineSelector: getBrNewLineSelector,
11271
+ getNoNewLineSelector: getNoNewLineSelector,
11272
+ shouldKeepStyles: shouldKeepStyles,
11273
+ shouldEndContainerOnEmptyBlock: shouldEndContainerOnEmptyBlock,
11274
+ getFontStyleValues: getFontStyleValues,
11275
+ getFontSizeClasses: getFontSizeClasses,
11276
+ getImagesDataImgFilter: getImagesDataImgFilter,
11277
+ isAutomaticUploadsEnabled: isAutomaticUploadsEnabled,
11278
+ shouldReuseFileName: shouldReuseFileName,
11279
+ shouldReplaceBlobUris: shouldReplaceBlobUris,
11280
+ getImageUploadUrl: getImageUploadUrl,
11281
+ getImageUploadBasePath: getImageUploadBasePath,
11282
+ getImagesUploadCredentials: getImagesUploadCredentials,
11283
+ getImagesUploadHandler: getImagesUploadHandler,
11284
+ shouldUseContentCssCors: shouldUseContentCssCors,
11285
+ getInlineBoundarySelector: getInlineBoundarySelector
10822
11286
  };
10823
11287
 
10824
11288
  var isInlineTarget = function (editor, elm) {
10825
- var selector = getString(editor, 'inline_boundaries_selector').getOr('a[href],code');
10826
- return is$1(Element.fromDom(elm), selector);
11289
+ return is$1(Element.fromDom(elm), Settings.getInlineBoundarySelector(editor));
10827
11290
  };
10828
11291
  var isRtl = function (element) {
10829
11292
  return DOMUtils$1.DOM.getStyle(element, 'direction', true) === 'rtl' || hasStrongRtl(element.textContent);
@@ -11231,8 +11694,9 @@
11231
11694
  throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength);
11232
11695
  }
11233
11696
  var args = new Array(argLength);
11234
- for (var i = 0; i < args.length; i++)
11697
+ for (var i = 0; i < args.length; i++) {
11235
11698
  args[i] = arguments[i];
11699
+ }
11236
11700
  var match = function (branches) {
11237
11701
  var branchKeys = keys(branches);
11238
11702
  if (constructors.length !== branchKeys.length) {
@@ -11241,8 +11705,9 @@
11241
11705
  var allReqd = forall(constructors, function (reqKey) {
11242
11706
  return contains(branchKeys, reqKey);
11243
11707
  });
11244
- if (!allReqd)
11708
+ if (!allReqd) {
11245
11709
  throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\nRequired: ' + constructors.join(', '));
11710
+ }
11246
11711
  return branches[key].apply(null, args);
11247
11712
  };
11248
11713
  return {
@@ -11567,12 +12032,8 @@
11567
12032
  }
11568
12033
  };
11569
12034
  var deleteNormalized = function (elm, afterDeletePosOpt, normalizeWhitespace) {
11570
- var prevTextOpt = prevSibling(elm).filter(function (e) {
11571
- return NodeType.isText(e.dom());
11572
- });
11573
- var nextTextOpt = nextSibling(elm).filter(function (e) {
11574
- return NodeType.isText(e.dom());
11575
- });
12035
+ var prevTextOpt = prevSibling(elm).filter(isText);
12036
+ var nextTextOpt = nextSibling(elm).filter(isText);
11576
12037
  remove$1(elm);
11577
12038
  return liftN([
11578
12039
  prevTextOpt,
@@ -13015,118 +13476,6 @@
13015
13476
  forwardDeleteCommand: forwardDeleteCommand
13016
13477
  };
13017
13478
 
13018
- var getBodySetting = function (editor, name, defaultValue) {
13019
- var value = editor.getParam(name, defaultValue);
13020
- if (value.indexOf('=') !== -1) {
13021
- var bodyObj = editor.getParam(name, '', 'hash');
13022
- return bodyObj.hasOwnProperty(editor.id) ? bodyObj[editor.id] : defaultValue;
13023
- } else {
13024
- return value;
13025
- }
13026
- };
13027
- var getIframeAttrs = function (editor) {
13028
- return editor.getParam('iframe_attrs', {});
13029
- };
13030
- var getDocType = function (editor) {
13031
- return editor.getParam('doctype', '<!DOCTYPE html>');
13032
- };
13033
- var getDocumentBaseUrl = function (editor) {
13034
- return editor.getParam('document_base_url', '');
13035
- };
13036
- var getBodyId = function (editor) {
13037
- return getBodySetting(editor, 'body_id', 'tinymce');
13038
- };
13039
- var getBodyClass = function (editor) {
13040
- return getBodySetting(editor, 'body_class', '');
13041
- };
13042
- var getContentSecurityPolicy = function (editor) {
13043
- return editor.getParam('content_security_policy', '');
13044
- };
13045
- var shouldPutBrInPre = function (editor) {
13046
- return editor.getParam('br_in_pre', true);
13047
- };
13048
- var getForcedRootBlock = function (editor) {
13049
- if (editor.getParam('force_p_newlines', false)) {
13050
- return 'p';
13051
- }
13052
- var block = editor.getParam('forced_root_block', 'p');
13053
- return block === false ? '' : block;
13054
- };
13055
- var getForcedRootBlockAttrs = function (editor) {
13056
- return editor.getParam('forced_root_block_attrs', {});
13057
- };
13058
- var getBrNewLineSelector = function (editor) {
13059
- return editor.getParam('br_newline_selector', '.mce-toc h2,figcaption,caption');
13060
- };
13061
- var getNoNewLineSelector = function (editor) {
13062
- return editor.getParam('no_newline_selector', '');
13063
- };
13064
- var shouldKeepStyles = function (editor) {
13065
- return editor.getParam('keep_styles', true);
13066
- };
13067
- var shouldEndContainerOnEmptyBlock = function (editor) {
13068
- return editor.getParam('end_container_on_empty_block', false);
13069
- };
13070
- var getFontStyleValues = function (editor) {
13071
- return Tools.explode(editor.getParam('font_size_style_values', ''));
13072
- };
13073
- var getFontSizeClasses = function (editor) {
13074
- return Tools.explode(editor.getParam('font_size_classes', ''));
13075
- };
13076
- var getImagesDataImgFilter = function (editor) {
13077
- return editor.getParam('images_dataimg_filter', constant(true), 'function');
13078
- };
13079
- var isAutomaticUploadsEnabled = function (editor) {
13080
- return editor.getParam('automatic_uploads', true, 'boolean');
13081
- };
13082
- var shouldReuseFileName = function (editor) {
13083
- return editor.getParam('images_reuse_filename', false, 'boolean');
13084
- };
13085
- var shouldReplaceBlobUris = function (editor) {
13086
- return editor.getParam('images_replace_blob_uris', true, 'boolean');
13087
- };
13088
- var getImageUploadUrl = function (editor) {
13089
- return editor.getParam('images_upload_url', '', 'string');
13090
- };
13091
- var getImageUploadBasePath = function (editor) {
13092
- return editor.getParam('images_upload_base_path', '', 'string');
13093
- };
13094
- var getImagesUploadCredentials = function (editor) {
13095
- return editor.getParam('images_upload_credentials', false, 'boolean');
13096
- };
13097
- var getImagesUploadHandler = function (editor) {
13098
- return editor.getParam('images_upload_handler', null, 'function');
13099
- };
13100
- var shouldUseContentCssCors = function (editor) {
13101
- return editor.getParam('content_css_cors', false, 'boolean');
13102
- };
13103
- var Settings = {
13104
- getIframeAttrs: getIframeAttrs,
13105
- getDocType: getDocType,
13106
- getDocumentBaseUrl: getDocumentBaseUrl,
13107
- getBodyId: getBodyId,
13108
- getBodyClass: getBodyClass,
13109
- getContentSecurityPolicy: getContentSecurityPolicy,
13110
- shouldPutBrInPre: shouldPutBrInPre,
13111
- getForcedRootBlock: getForcedRootBlock,
13112
- getForcedRootBlockAttrs: getForcedRootBlockAttrs,
13113
- getBrNewLineSelector: getBrNewLineSelector,
13114
- getNoNewLineSelector: getNoNewLineSelector,
13115
- shouldKeepStyles: shouldKeepStyles,
13116
- shouldEndContainerOnEmptyBlock: shouldEndContainerOnEmptyBlock,
13117
- getFontStyleValues: getFontStyleValues,
13118
- getFontSizeClasses: getFontSizeClasses,
13119
- getImagesDataImgFilter: getImagesDataImgFilter,
13120
- isAutomaticUploadsEnabled: isAutomaticUploadsEnabled,
13121
- shouldReuseFileName: shouldReuseFileName,
13122
- shouldReplaceBlobUris: shouldReplaceBlobUris,
13123
- getImageUploadUrl: getImageUploadUrl,
13124
- getImageUploadBasePath: getImageUploadBasePath,
13125
- getImagesUploadCredentials: getImagesUploadCredentials,
13126
- getImagesUploadHandler: getImagesUploadHandler,
13127
- shouldUseContentCssCors: shouldUseContentCssCors
13128
- };
13129
-
13130
13479
  var getSpecifiedFontProp = function (propName, rootElm, elm) {
13131
13480
  var getProperty = function (elm) {
13132
13481
  return getRaw(elm, propName);
@@ -13549,6 +13898,9 @@
13549
13898
  };
13550
13899
  var InsertBr = { insert: insert };
13551
13900
 
13901
+ var create$3 = Immutable('start', 'soffset', 'finish', 'foffset');
13902
+ var SimRange = { create: create$3 };
13903
+
13552
13904
  var adt = Adt.generate([
13553
13905
  { before: ['element'] },
13554
13906
  {
@@ -13559,8 +13911,24 @@
13559
13911
  },
13560
13912
  { after: ['element'] }
13561
13913
  ]);
13914
+ var cata = function (subject, onBefore, onOn, onAfter) {
13915
+ return subject.fold(onBefore, onOn, onAfter);
13916
+ };
13917
+ var getStart = function (situ) {
13918
+ return situ.fold(identity, identity, identity);
13919
+ };
13920
+ var before$4 = adt.before;
13921
+ var on = adt.on;
13922
+ var after$3 = adt.after;
13923
+ var Situ = {
13924
+ before: before$4,
13925
+ on: on,
13926
+ after: after$3,
13927
+ cata: cata,
13928
+ getStart: getStart
13929
+ };
13562
13930
 
13563
- var type$1 = Adt.generate([
13931
+ var adt$1 = Adt.generate([
13564
13932
  { domRange: ['rng'] },
13565
13933
  {
13566
13934
  relative: [
@@ -13577,7 +13945,38 @@
13577
13945
  ]
13578
13946
  }
13579
13947
  ]);
13580
- var range = Immutable('start', 'soffset', 'finish', 'foffset');
13948
+ var exactFromRange = function (simRange) {
13949
+ return adt$1.exact(simRange.start(), simRange.soffset(), simRange.finish(), simRange.foffset());
13950
+ };
13951
+ var getStart$1 = function (selection) {
13952
+ return selection.match({
13953
+ domRange: function (rng) {
13954
+ return Element.fromDom(rng.startContainer);
13955
+ },
13956
+ relative: function (startSitu, finishSitu) {
13957
+ return Situ.getStart(startSitu);
13958
+ },
13959
+ exact: function (start, soffset, finish, foffset) {
13960
+ return start;
13961
+ }
13962
+ });
13963
+ };
13964
+ var domRange = adt$1.domRange;
13965
+ var relative = adt$1.relative;
13966
+ var exact = adt$1.exact;
13967
+ var getWin = function (selection) {
13968
+ var start = getStart$1(selection);
13969
+ return defaultView(start);
13970
+ };
13971
+ var range = SimRange.create;
13972
+ var Selection = {
13973
+ domRange: domRange,
13974
+ relative: relative,
13975
+ exact: exact,
13976
+ exactFromRange: exactFromRange,
13977
+ getWin: getWin,
13978
+ range: range
13979
+ };
13581
13980
 
13582
13981
  var browser$3 = PlatformDetection$1.detect().browser;
13583
13982
  var clamp = function (offset, element) {
@@ -13590,10 +13989,10 @@
13590
13989
  return offset;
13591
13990
  };
13592
13991
  var normalizeRng = function (rng) {
13593
- return range(rng.start(), clamp(rng.soffset(), rng.start()), rng.finish(), clamp(rng.foffset(), rng.finish()));
13992
+ return Selection.range(rng.start(), clamp(rng.soffset(), rng.start()), rng.finish(), clamp(rng.foffset(), rng.finish()));
13594
13993
  };
13595
13994
  var isOrContains = function (root, elm) {
13596
- return contains$3(root, elm) || eq(root, elm);
13995
+ return !NodeType.isRestrictedNode(elm.dom()) && (contains$3(root, elm) || eq(root, elm));
13597
13996
  };
13598
13997
  var isRngInRoot = function (root) {
13599
13998
  return function (rng) {
@@ -13604,7 +14003,7 @@
13604
14003
  return editor.inline === true || browser$3.isIE();
13605
14004
  };
13606
14005
  var nativeRangeToSelectionRange = function (r) {
13607
- return range(Element.fromDom(r.startContainer), r.startOffset, Element.fromDom(r.endContainer), r.endOffset);
14006
+ return Selection.range(Element.fromDom(r.startContainer), r.startOffset, Element.fromDom(r.endContainer), r.endOffset);
13608
14007
  };
13609
14008
  var readRange = function (win) {
13610
14009
  var selection = win.getSelection();
@@ -14513,6 +14912,156 @@
14513
14912
  EditorObservable = Tools.extend({}, Observable, EditorObservable);
14514
14913
  var EditorObservable$1 = EditorObservable;
14515
14914
 
14915
+ var sectionResult = Immutable('sections', 'settings');
14916
+ var detection = PlatformDetection$1.detect();
14917
+ var isTouch = detection.deviceType.isTouch();
14918
+ var mobilePlugins = [
14919
+ 'lists',
14920
+ 'autolink',
14921
+ 'autosave'
14922
+ ];
14923
+ var defaultMobileSettings = { theme: 'mobile' };
14924
+ var normalizePlugins = function (plugins) {
14925
+ var pluginNames = isArray(plugins) ? plugins.join(' ') : plugins;
14926
+ var trimmedPlugins = map(isString(pluginNames) ? pluginNames.split(' ') : [], trim$2);
14927
+ return filter(trimmedPlugins, function (item) {
14928
+ return item.length > 0;
14929
+ });
14930
+ };
14931
+ var filterMobilePlugins = function (plugins) {
14932
+ return filter(plugins, curry(contains, mobilePlugins));
14933
+ };
14934
+ var extractSections = function (keys, settings) {
14935
+ var result = bifilter(settings, function (value, key) {
14936
+ return contains(keys, key);
14937
+ });
14938
+ return sectionResult(result.t, result.f);
14939
+ };
14940
+ var getSection = function (sectionResult, name, defaults) {
14941
+ var sections = sectionResult.sections();
14942
+ var sectionSettings = sections.hasOwnProperty(name) ? sections[name] : {};
14943
+ return Tools.extend({}, defaults, sectionSettings);
14944
+ };
14945
+ var hasSection = function (sectionResult, name) {
14946
+ return sectionResult.sections().hasOwnProperty(name);
14947
+ };
14948
+ var getDefaultSettings = function (id, documentBaseUrl, editor) {
14949
+ return {
14950
+ id: id,
14951
+ theme: 'modern',
14952
+ delta_width: 0,
14953
+ delta_height: 0,
14954
+ popup_css: '',
14955
+ plugins: '',
14956
+ document_base_url: documentBaseUrl,
14957
+ add_form_submit_trigger: true,
14958
+ submit_patch: true,
14959
+ add_unload_trigger: true,
14960
+ convert_urls: true,
14961
+ relative_urls: true,
14962
+ remove_script_host: true,
14963
+ object_resizing: true,
14964
+ doctype: '<!DOCTYPE html>',
14965
+ visual: true,
14966
+ font_size_style_values: 'xx-small,x-small,small,medium,large,x-large,xx-large',
14967
+ font_size_legacy_values: 'xx-small,small,medium,large,x-large,xx-large,300%',
14968
+ forced_root_block: 'p',
14969
+ hidden_input: true,
14970
+ render_ui: true,
14971
+ indentation: '40px',
14972
+ inline_styles: true,
14973
+ convert_fonts_to_spans: true,
14974
+ indent: 'simple',
14975
+ indent_before: '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',
14976
+ 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',
14977
+ entity_encoding: 'named',
14978
+ url_converter: editor.convertURL,
14979
+ url_converter_scope: editor,
14980
+ ie7_compat: true
14981
+ };
14982
+ };
14983
+ var getExternalPlugins = function (overrideSettings, settings) {
14984
+ var userDefinedExternalPlugins = settings.external_plugins ? settings.external_plugins : {};
14985
+ if (overrideSettings && overrideSettings.external_plugins) {
14986
+ return Tools.extend({}, overrideSettings.external_plugins, userDefinedExternalPlugins);
14987
+ } else {
14988
+ return userDefinedExternalPlugins;
14989
+ }
14990
+ };
14991
+ var combinePlugins = function (forcedPlugins, plugins) {
14992
+ return [].concat(normalizePlugins(forcedPlugins)).concat(normalizePlugins(plugins));
14993
+ };
14994
+ var processPlugins = function (isTouchDevice, sectionResult, defaultOverrideSettings, settings) {
14995
+ var forcedPlugins = normalizePlugins(defaultOverrideSettings.forced_plugins);
14996
+ var plugins = normalizePlugins(settings.plugins);
14997
+ var platformPlugins = isTouchDevice && hasSection(sectionResult, 'mobile') ? filterMobilePlugins(plugins) : plugins;
14998
+ var combinedPlugins = combinePlugins(forcedPlugins, platformPlugins);
14999
+ return Tools.extend(settings, { plugins: combinedPlugins.join(' ') });
15000
+ };
15001
+ var isOnMobile = function (isTouchDevice, sectionResult) {
15002
+ var isInline = sectionResult.settings().inline;
15003
+ return isTouchDevice && hasSection(sectionResult, 'mobile') && !isInline;
15004
+ };
15005
+ var combineSettings = function (isTouchDevice, defaultSettings, defaultOverrideSettings, settings) {
15006
+ var sectionResult = extractSections(['mobile'], settings);
15007
+ var extendedSettings = Tools.extend(defaultSettings, defaultOverrideSettings, sectionResult.settings(), isOnMobile(isTouchDevice, sectionResult) ? getSection(sectionResult, 'mobile', defaultMobileSettings) : {}, {
15008
+ validate: true,
15009
+ content_editable: sectionResult.settings().inline,
15010
+ external_plugins: getExternalPlugins(defaultOverrideSettings, sectionResult.settings())
15011
+ });
15012
+ return processPlugins(isTouchDevice, sectionResult, defaultOverrideSettings, extendedSettings);
15013
+ };
15014
+ var getEditorSettings = function (editor, id, documentBaseUrl, defaultOverrideSettings, settings) {
15015
+ var defaultSettings = getDefaultSettings(id, documentBaseUrl, editor);
15016
+ return combineSettings(isTouch, defaultSettings, defaultOverrideSettings, settings);
15017
+ };
15018
+ var getFiltered = function (predicate, editor, name) {
15019
+ return Option.from(editor.settings[name]).filter(predicate);
15020
+ };
15021
+ var getParamObject = function (value) {
15022
+ var output = {};
15023
+ if (typeof value === 'string') {
15024
+ each(value.indexOf('=') > 0 ? value.split(/[;,](?![^=;,]*(?:[;,]|$))/) : value.split(','), function (val) {
15025
+ var arr = val.split('=');
15026
+ if (arr.length > 1) {
15027
+ output[Tools.trim(arr[0])] = Tools.trim(arr[1]);
15028
+ } else {
15029
+ output[Tools.trim(arr[0])] = Tools.trim(arr);
15030
+ }
15031
+ });
15032
+ } else {
15033
+ output = value;
15034
+ }
15035
+ return output;
15036
+ };
15037
+ var isArrayOf = function (p) {
15038
+ return function (a) {
15039
+ return isArray(a) && forall(a, p);
15040
+ };
15041
+ };
15042
+ var getParam = function (editor, name, defaultVal, type) {
15043
+ var value = name in editor.settings ? editor.settings[name] : defaultVal;
15044
+ if (type === 'hash') {
15045
+ return getParamObject(value);
15046
+ } else if (type === 'string') {
15047
+ return getFiltered(isString, editor, name).getOr(defaultVal);
15048
+ } else if (type === 'number') {
15049
+ return getFiltered(isNumber, editor, name).getOr(defaultVal);
15050
+ } else if (type === 'boolean') {
15051
+ return getFiltered(isBoolean, editor, name).getOr(defaultVal);
15052
+ } else if (type === 'object') {
15053
+ return getFiltered(isObject, editor, name).getOr(defaultVal);
15054
+ } else if (type === 'array') {
15055
+ return getFiltered(isArray, editor, name).getOr(defaultVal);
15056
+ } else if (type === 'string[]') {
15057
+ return getFiltered(isArrayOf(isString), editor, name).getOr(defaultVal);
15058
+ } else if (type === 'function') {
15059
+ return getFiltered(isFunction, editor, name).getOr(defaultVal);
15060
+ } else {
15061
+ return value;
15062
+ }
15063
+ };
15064
+
14516
15065
  var each$b = Tools.each, explode$2 = Tools.explode;
14517
15066
  var keyCodeLookup = {
14518
15067
  f1: 112,
@@ -14665,8 +15214,8 @@
14665
15214
  var doc = owner(element).dom();
14666
15215
  return element.dom() === doc.activeElement;
14667
15216
  };
14668
- var active = function (_DOC) {
14669
- var doc = _DOC !== undefined ? _DOC.dom() : domGlobals.document;
15217
+ var active = function (_doc) {
15218
+ var doc = _doc !== undefined ? _doc.dom() : domGlobals.document;
14670
15219
  return Option.from(doc.activeElement).map(Element.fromDom);
14671
15220
  };
14672
15221
  var search = function (element) {
@@ -16577,9 +17126,17 @@
16577
17126
  if (range.collapsed) {
16578
17127
  return false;
16579
17128
  }
16580
- return foldl(range.getClientRects(), function (state, rect) {
16581
- return state || containsXY(rect, clientX, clientY);
16582
- }, false);
17129
+ if (Env.ie && Env.ie <= 11 && range.startOffset === range.endOffset - 1 && range.startContainer === range.endContainer) {
17130
+ var elm = range.startContainer.childNodes[range.startOffset];
17131
+ if (NodeType.isElement(elm)) {
17132
+ return exists(elm.getClientRects(), function (rect) {
17133
+ return containsXY(rect, clientX, clientY);
17134
+ });
17135
+ }
17136
+ }
17137
+ return exists(range.getClientRects(), function (rect) {
17138
+ return containsXY(rect, clientX, clientY);
17139
+ });
16583
17140
  };
16584
17141
  var RangePoint = { isXYWithinRange: isXYWithinRange };
16585
17142
 
@@ -16905,7 +17462,7 @@
16905
17462
  if (startContainer.nodeType !== 1) {
16906
17463
  return null;
16907
17464
  }
16908
- if (endOffset === startOffset + 1) {
17465
+ if (endOffset === startOffset + 1 && startContainer === range.endContainer) {
16909
17466
  node = startContainer.childNodes[startOffset];
16910
17467
  }
16911
17468
  if (!isContentEditableFalse$9(node)) {
@@ -18618,7 +19175,7 @@
18618
19175
  }
18619
19176
  ed.selection.setRng(RangeNormalizer.normalize(ed.selection.getRng()));
18620
19177
  bookmark = GetBookmark.getPersistentBookmark(ed.selection, true);
18621
- applyRngStyle(dom, ExpandRange.expandRng(ed, selection.getRng(), formatList), bookmark);
19178
+ applyRngStyle(dom, ExpandRange.expandRng(ed, selection.getRng(), formatList));
18622
19179
  if (format.styles) {
18623
19180
  MergeFormats.mergeUnderlineAndColor(dom, format, vars, curSelNode);
18624
19181
  }
@@ -19289,17 +19846,20 @@
19289
19846
  var baseMerge = function (merger) {
19290
19847
  return function () {
19291
19848
  var objects = new Array(arguments.length);
19292
- for (var i = 0; i < objects.length; i++)
19849
+ for (var i = 0; i < objects.length; i++) {
19293
19850
  objects[i] = arguments[i];
19294
- if (objects.length === 0)
19851
+ }
19852
+ if (objects.length === 0) {
19295
19853
  throw new Error('Can\'t merge zero objects');
19854
+ }
19296
19855
  var ret = {};
19297
19856
  for (var j = 0; j < objects.length; j++) {
19298
19857
  var curObject = objects[j];
19299
- for (var key in curObject)
19858
+ for (var key in curObject) {
19300
19859
  if (hasOwnProperty$2.call(curObject, key)) {
19301
19860
  ret[key] = merger(ret[key], curObject[key]);
19302
19861
  }
19862
+ }
19303
19863
  }
19304
19864
  return ret;
19305
19865
  };
@@ -20632,7 +21192,6 @@
20632
21192
  var contextMenuSelectImage = function (evt) {
20633
21193
  var target = evt.target;
20634
21194
  if (isEventOnImageOutsideRange(evt, editor.selection.getRng()) && !evt.isDefaultPrevented()) {
20635
- evt.preventDefault();
20636
21195
  editor.selection.select(target);
20637
21196
  }
20638
21197
  };
@@ -21428,7 +21987,7 @@
21428
21987
  return elm.dom();
21429
21988
  }).getOr(root);
21430
21989
  };
21431
- var getStart = function (root, rng, real) {
21990
+ var getStart$2 = function (root, rng, real) {
21432
21991
  return getEndpointElement(root, rng, true, real, function (elm, offset) {
21433
21992
  return Math.min(childNodesCount(elm), offset);
21434
21993
  });
@@ -21488,7 +22047,7 @@
21488
22047
  var node, root;
21489
22048
  var selectedBlocks = [];
21490
22049
  root = dom.getRoot();
21491
- startElm = dom.getParent(startElm || getStart(root, rng, rng.collapsed), dom.isBlock);
22050
+ startElm = dom.getParent(startElm || getStart$2(root, rng, rng.collapsed), dom.isBlock);
21492
22051
  endElm = dom.getParent(endElm || getEnd(root, rng, rng.collapsed), dom.isBlock);
21493
22052
  if (startElm && startElm !== root) {
21494
22053
  selectedBlocks.push(startElm);
@@ -21537,7 +22096,7 @@
21537
22096
  return isAttachedToDom(rng.startContainer) && isAttachedToDom(rng.endContainer);
21538
22097
  }
21539
22098
  };
21540
- var Selection = function (dom, win, serializer, editor) {
22099
+ var Selection$1 = function (dom, win, serializer, editor) {
21541
22100
  var bookmarkManager, controlSelection;
21542
22101
  var selectedRange, explicitRange, selectorChangedData;
21543
22102
  var setCursorLocation = function (node, offset) {
@@ -21558,8 +22117,8 @@
21558
22117
  var setContent = function (content, args) {
21559
22118
  return SetSelectionContent.setContent(editor, content, args);
21560
22119
  };
21561
- var getStart$1 = function (real) {
21562
- return getStart(editor.getBody(), getRng(), real);
22120
+ var getStart = function (real) {
22121
+ return getStart$2(editor.getBody(), getRng(), real);
21563
22122
  };
21564
22123
  var getEnd$1 = function (real) {
21565
22124
  return getEnd(editor.getBody(), getRng(), real);
@@ -21617,7 +22176,7 @@
21617
22176
  }
21618
22177
  }
21619
22178
  try {
21620
- if (selection = getSel()) {
22179
+ if ((selection = getSel()) && !NodeType.isRestrictedNode(selection.anchorNode)) {
21621
22180
  if (selection.rangeCount > 0) {
21622
22181
  rng = selection.getRangeAt(0);
21623
22182
  } else {
@@ -21824,7 +22383,7 @@
21824
22383
  getSel: getSel,
21825
22384
  setRng: setRng,
21826
22385
  getRng: getRng,
21827
- getStart: getStart$1,
22386
+ getStart: getStart,
21828
22387
  getEnd: getEnd$1,
21829
22388
  getSelectedBlocks: getSelectedBlocks$1,
21830
22389
  normalize: normalize,
@@ -22332,7 +22891,7 @@
22332
22891
  return function () {
22333
22892
  return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) {
22334
22893
  return Option.from(editor.dom.getParent(td, 'table')).map(function (table) {
22335
- return navigateHorizontally(editor, forward, table, td);
22894
+ return navigateHorizontally(editor, forward, table);
22336
22895
  });
22337
22896
  }).getOr(false);
22338
22897
  };
@@ -23282,9 +23841,20 @@
23282
23841
  var navigateIgnoreEmptyTextNodes = function (forward, root, from) {
23283
23842
  return CaretFinder.navigateIgnore(forward, root, from, isEmptyText);
23284
23843
  };
23844
+ var getClosestBlock = function (root, pos) {
23845
+ return find(Parents.parentsAndSelf(Element.fromDom(pos.container()), root), isBlock);
23846
+ };
23847
+ var isAtBeforeAfterBlockBoundary = function (forward, root, pos) {
23848
+ return navigateIgnoreEmptyTextNodes(forward, root.dom(), pos).forall(function (newPos) {
23849
+ return getClosestBlock(root, pos).fold(function () {
23850
+ return isInSameBlock(newPos, pos, root.dom()) === false;
23851
+ }, function (fromBlock) {
23852
+ return isInSameBlock(newPos, pos, root.dom()) === false && contains$3(fromBlock, Element.fromDom(newPos.container()));
23853
+ });
23854
+ });
23855
+ };
23285
23856
  var isAtBlockBoundary = function (forward, root, pos) {
23286
- var parentBlocks = filter(Parents.parentsAndSelf(Element.fromDom(pos.container()), root), isBlock);
23287
- return head(parentBlocks).fold(function () {
23857
+ return getClosestBlock(root, pos).fold(function () {
23288
23858
  return navigateIgnoreEmptyTextNodes(forward, root.dom(), pos).forall(function (newPos) {
23289
23859
  return isInSameBlock(newPos, pos, root.dom()) === false;
23290
23860
  });
@@ -23294,12 +23864,14 @@
23294
23864
  };
23295
23865
  var isAtStartOfBlock = curry(isAtBlockBoundary, false);
23296
23866
  var isAtEndOfBlock = curry(isAtBlockBoundary, true);
23867
+ var isBeforeBlock = curry(isAtBeforeAfterBlockBoundary, false);
23868
+ var isAfterBlock = curry(isAtBeforeAfterBlockBoundary, true);
23297
23869
 
23298
23870
  var nbsp = '\xA0';
23299
23871
  var isInMiddleOfText = function (pos) {
23300
23872
  return CaretPosition.isTextPosition(pos) && !pos.isAtStart() && !pos.isAtEnd();
23301
23873
  };
23302
- var getClosestBlock = function (root, pos) {
23874
+ var getClosestBlock$1 = function (root, pos) {
23303
23875
  var parentBlocks = filter(Parents.parentsAndSelf(Element.fromDom(pos.container()), root), isBlock);
23304
23876
  return head(parentBlocks).getOr(root);
23305
23877
  };
@@ -23307,20 +23879,19 @@
23307
23879
  if (isInMiddleOfText(pos)) {
23308
23880
  return isAfterSpace(pos);
23309
23881
  } else {
23310
- return isAfterSpace(pos) || CaretFinder.prevPosition(getClosestBlock(root, pos).dom(), pos).exists(isAfterSpace);
23882
+ return isAfterSpace(pos) || CaretFinder.prevPosition(getClosestBlock$1(root, pos).dom(), pos).exists(isAfterSpace);
23311
23883
  }
23312
23884
  };
23313
23885
  var hasSpaceAfter = function (root, pos) {
23314
23886
  if (isInMiddleOfText(pos)) {
23315
23887
  return isBeforeSpace(pos);
23316
23888
  } else {
23317
- return isBeforeSpace(pos) || CaretFinder.nextPosition(getClosestBlock(root, pos).dom(), pos).exists(isBeforeSpace);
23889
+ return isBeforeSpace(pos) || CaretFinder.nextPosition(getClosestBlock$1(root, pos).dom(), pos).exists(isBeforeSpace);
23318
23890
  }
23319
23891
  };
23320
23892
  var isPreValue = function (value) {
23321
23893
  return contains([
23322
23894
  'pre',
23323
- 'pre-line',
23324
23895
  'pre-wrap'
23325
23896
  ], value);
23326
23897
  };
@@ -23351,7 +23922,7 @@
23351
23922
  if (isInPre(pos)) {
23352
23923
  return false;
23353
23924
  } else {
23354
- return isAtStartOfBlock(root, pos) || isAfterBr(root, pos) || hasSpaceBefore(root, pos);
23925
+ return isAtStartOfBlock(root, pos) || isBeforeBlock(root, pos) || isAfterBr(root, pos) || hasSpaceBefore(root, pos);
23355
23926
  }
23356
23927
  };
23357
23928
  var leanRight = function (pos) {
@@ -23368,7 +23939,7 @@
23368
23939
  if (isInPre(afterPos)) {
23369
23940
  return false;
23370
23941
  } else {
23371
- return isAtEndOfBlock(root, afterPos) || isBeforeBr(root, afterPos) || hasSpaceAfter(root, afterPos);
23942
+ return isAtEndOfBlock(root, afterPos) || isAfterBlock(root, afterPos) || isBeforeBr(root, afterPos) || hasSpaceAfter(root, afterPos);
23372
23943
  }
23373
23944
  };
23374
23945
  var needsToBeNbsp = function (root, pos) {
@@ -24224,7 +24795,7 @@
24224
24795
  });
24225
24796
  editor.parser = createParser(editor);
24226
24797
  editor.serializer = DomSerializer$1(settings, editor);
24227
- editor.selection = Selection(editor.dom, editor.getWin(), editor.serializer, editor);
24798
+ editor.selection = Selection$1(editor.dom, editor.getWin(), editor.serializer, editor);
24228
24799
  editor.annotator = Annotator(editor);
24229
24800
  editor.formatter = Formatter(editor);
24230
24801
  editor.undoManager = UndoManager(editor);
@@ -25773,8 +26344,8 @@
25773
26344
  defaultSettings: {},
25774
26345
  $: DomQuery,
25775
26346
  majorVersion: '4',
25776
- minorVersion: '9.4',
25777
- releaseDate: '2019-03-20',
26347
+ minorVersion: '9.6',
26348
+ releaseDate: '2019-09-02',
25778
26349
  editors: legacyEditors,
25779
26350
  i18n: I18n,
25780
26351
  activeEditor: null,
@@ -26171,7 +26742,7 @@
26171
26742
  if (rel[4] === 'c') {
26172
26743
  x -= round$2(w / 2);
26173
26744
  }
26174
- return create$3(x, y, w, h);
26745
+ return create$4(x, y, w, h);
26175
26746
  };
26176
26747
  var findBestRelativePosition = function (rect, targetRect, constrainRect, rels) {
26177
26748
  var pos, i;
@@ -26184,7 +26755,7 @@
26184
26755
  return null;
26185
26756
  };
26186
26757
  var inflate = function (rect, w, h) {
26187
- return create$3(rect.x - w, rect.y - h, rect.w + w * 2, rect.h + h * 2);
26758
+ return create$4(rect.x - w, rect.y - h, rect.w + w * 2, rect.h + h * 2);
26188
26759
  };
26189
26760
  var intersect = function (rect, cropRect) {
26190
26761
  var x1, y1, x2, y2;
@@ -26195,7 +26766,7 @@
26195
26766
  if (x2 - x1 < 0 || y2 - y1 < 0) {
26196
26767
  return null;
26197
26768
  }
26198
- return create$3(x1, y1, x2 - x1, y2 - y1);
26769
+ return create$4(x1, y1, x2 - x1, y2 - y1);
26199
26770
  };
26200
26771
  var clamp$1 = function (rect, clampRect, fixedSize) {
26201
26772
  var underflowX1, underflowY1, overflowX2, overflowY2, x1, y1, x2, y2, cx2, cy2;
@@ -26219,9 +26790,9 @@
26219
26790
  }
26220
26791
  x2 -= overflowX2;
26221
26792
  y2 -= overflowY2;
26222
- return create$3(x1, y1, x2 - x1, y2 - y1);
26793
+ return create$4(x1, y1, x2 - x1, y2 - y1);
26223
26794
  };
26224
- var create$3 = function (x, y, w, h) {
26795
+ var create$4 = function (x, y, w, h) {
26225
26796
  return {
26226
26797
  x: x,
26227
26798
  y: y,
@@ -26230,7 +26801,7 @@
26230
26801
  };
26231
26802
  };
26232
26803
  var fromClientRect = function (clientRect) {
26233
- return create$3(clientRect.left, clientRect.top, clientRect.width, clientRect.height);
26804
+ return create$4(clientRect.left, clientRect.top, clientRect.width, clientRect.height);
26234
26805
  };
26235
26806
  var Rect = {
26236
26807
  inflate: inflate,
@@ -26238,7 +26809,7 @@
26238
26809
  findBestRelativePosition: findBestRelativePosition,
26239
26810
  intersect: intersect,
26240
26811
  clamp: clamp$1,
26241
- create: create$3,
26812
+ create: create$4,
26242
26813
  fromClientRect: fromClientRect
26243
26814
  };
26244
26815
 
@@ -26676,7 +27247,7 @@
26676
27247
  }
26677
27248
  };
26678
27249
 
26679
- var create$4 = function () {
27250
+ var create$5 = function () {
26680
27251
  return function () {
26681
27252
  var data = {};
26682
27253
  var keys = [];
@@ -26719,7 +27290,7 @@
26719
27290
  try {
26720
27291
  localStorage = domGlobals.window.localStorage;
26721
27292
  } catch (e) {
26722
- localStorage = create$4();
27293
+ localStorage = create$5();
26723
27294
  }
26724
27295
  var LocalStorage = localStorage;
26725
27296
 
@@ -26754,7 +27325,7 @@
26754
27325
  Serializer: DomSerializer$1,
26755
27326
  ControlSelection: ControlSelection,
26756
27327
  BookmarkManager: BookmarkManager$1,
26757
- Selection: Selection,
27328
+ Selection: Selection$1,
26758
27329
  Event: EventUtils.Event
26759
27330
  },
26760
27331
  html: {