tinymce-rails 4.9.4 → 4.9.6

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.
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: {