tinymce-rails 4.0.18 → 4.0.19
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -0
- data/app/assets/source/tinymce/tinymce.jquery.js +466 -420
- data/app/assets/source/tinymce/tinymce.js +480 -427
- data/lib/tinymce/rails/version.rb +2 -2
- data/vendor/assets/javascripts/tinymce/jquery.tinymce.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/advlist/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/autolink/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/bbcode/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/directionality/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/example/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/fullpage/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/hr/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/image/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/insertdatetime/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/layer/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/legacyoutput/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/link/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/noneditable/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/paste/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/preview/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/print/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/save/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/searchreplace/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/spellchecker/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/table/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/visualblocks/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/visualchars/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/themes/modern/theme.js +1 -1
- data/vendor/assets/javascripts/tinymce/tinymce.jquery.js +10 -10
- data/vendor/assets/javascripts/tinymce/tinymce.js +10 -10
- metadata +2 -2
@@ -1,4 +1,4 @@
|
|
1
|
-
// 4.0.
|
1
|
+
// 4.0.19 (2014-03-11)
|
2
2
|
|
3
3
|
/**
|
4
4
|
* Compiled inline version. (Library mode)
|
@@ -95,6 +95,7 @@
|
|
95
95
|
*/
|
96
96
|
|
97
97
|
/*jshint loopfunc:true*/
|
98
|
+
/*eslint no-loop-func:0 */
|
98
99
|
|
99
100
|
define("tinymce/dom/EventUtils", [], function() {
|
100
101
|
"use strict";
|
@@ -653,6 +654,7 @@ define("tinymce/dom/EventUtils", [], function() {
|
|
653
654
|
*/
|
654
655
|
|
655
656
|
/*jshint bitwise:false, expr:true, noempty:false, sub:true, eqnull:true, latedef:false, maxlen:255 */
|
657
|
+
/*eslint dot-notation:0, no-empty:0, no-cond-assign:0, no-unused-expressions:0, new-cap:0, no-nested-ternary:0, func-style:0, no-bitwise: 0 */
|
656
658
|
|
657
659
|
/*
|
658
660
|
* Sizzle CSS Selector Engine
|
@@ -2673,6 +2675,7 @@ define("tinymce/dom/DomQuery", [
|
|
2673
2675
|
var numericCssMap = makeMap('fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom');
|
2674
2676
|
|
2675
2677
|
function DomQuery(selector, context) {
|
2678
|
+
/*eslint new-cap:0 */
|
2676
2679
|
return new DomQuery.fn.init(selector, context);
|
2677
2680
|
}
|
2678
2681
|
|
@@ -2752,9 +2755,10 @@ define("tinymce/dom/DomQuery", [
|
|
2752
2755
|
};
|
2753
2756
|
|
2754
2757
|
var whiteSpaceRegExp = /^\s*|\s*$/g;
|
2755
|
-
|
2758
|
+
|
2759
|
+
function trim(str) {
|
2756
2760
|
return (str === null || str === undefined) ? '' : ("" + str).replace(whiteSpaceRegExp, '');
|
2757
|
-
}
|
2761
|
+
}
|
2758
2762
|
|
2759
2763
|
/**
|
2760
2764
|
* Executes the callback function for each item in array/object. If you return false in the
|
@@ -3049,8 +3053,8 @@ define("tinymce/dom/DomQuery", [
|
|
3049
3053
|
self.toggleClass(this, state);
|
3050
3054
|
});
|
3051
3055
|
} else {
|
3052
|
-
self.each(function() {
|
3053
|
-
var
|
3056
|
+
self.each(function(node) {
|
3057
|
+
var existingClassName;
|
3054
3058
|
|
3055
3059
|
if (hasClass(node, className) !== state) {
|
3056
3060
|
existingClassName = node.className;
|
@@ -3190,9 +3194,13 @@ define("tinymce/dom/DomQuery", [
|
|
3190
3194
|
expr = ":not(" + expr + ")";
|
3191
3195
|
}
|
3192
3196
|
|
3193
|
-
|
3194
|
-
DomQuery.find.matchesSelector(elems[0], expr) ? [elems[0]] : []
|
3195
|
-
|
3197
|
+
if (elems.length === 1) {
|
3198
|
+
elems = DomQuery.find.matchesSelector(elems[0], expr) ? [elems[0]] : [];
|
3199
|
+
} else {
|
3200
|
+
elems = DomQuery.find.matches(expr, elems);
|
3201
|
+
}
|
3202
|
+
|
3203
|
+
return elems;
|
3196
3204
|
}
|
3197
3205
|
});
|
3198
3206
|
|
@@ -3328,6 +3336,7 @@ define("tinymce/dom/DomQuery", [
|
|
3328
3336
|
define("tinymce/html/Styles", [], function() {
|
3329
3337
|
return function(settings, schema) {
|
3330
3338
|
/*jshint maxlen:255 */
|
3339
|
+
/*eslint max-len:0 */
|
3331
3340
|
var rgbRegExp = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,
|
3332
3341
|
urlOrStrRegExp = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,
|
3333
3342
|
styleRegExp = /\s*([^:]+):\s*([^;]+);?/g,
|
@@ -3730,9 +3739,10 @@ define("tinymce/util/Tools", [], function() {
|
|
3730
3739
|
* @return {String} New string with removed whitespace.
|
3731
3740
|
*/
|
3732
3741
|
var whiteSpaceRegExp = /^\s*|\s*$/g;
|
3733
|
-
|
3742
|
+
|
3743
|
+
function trim(str) {
|
3734
3744
|
return (str === null || str === undefined) ? '' : ("" + str).replace(whiteSpaceRegExp, '');
|
3735
|
-
}
|
3745
|
+
}
|
3736
3746
|
|
3737
3747
|
/**
|
3738
3748
|
* Returns true/false if the object is an array or not.
|
@@ -3842,7 +3852,7 @@ define("tinymce/util/Tools", [], function() {
|
|
3842
3852
|
|
3843
3853
|
if (o.length !== undefined) {
|
3844
3854
|
// Indexed arrays, needed for Safari
|
3845
|
-
for (n=0, l = o.length; n < l; n++) {
|
3855
|
+
for (n = 0, l = o.length; n < l; n++) {
|
3846
3856
|
if (cb.call(s, o[n], n, o) === false) {
|
3847
3857
|
return 0;
|
3848
3858
|
}
|
@@ -3951,14 +3961,14 @@ define("tinymce/util/Tools", [], function() {
|
|
3951
3961
|
* });
|
3952
3962
|
*/
|
3953
3963
|
function create(s, p, root) {
|
3954
|
-
var
|
3964
|
+
var self = this, sp, ns, cn, scn, c, de = 0;
|
3955
3965
|
|
3956
3966
|
// Parse : <prefix> <class>:<super class>
|
3957
3967
|
s = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(s);
|
3958
3968
|
cn = s[3].match(/(^|\.)(\w+)$/i)[2]; // Class name
|
3959
3969
|
|
3960
3970
|
// Create namespace for new class
|
3961
|
-
ns =
|
3971
|
+
ns = self.createNS(s[3].replace(/\.\w+$/, ''), root);
|
3962
3972
|
|
3963
3973
|
// Class already exists
|
3964
3974
|
if (ns[cn]) {
|
@@ -3984,11 +3994,11 @@ define("tinymce/util/Tools", [], function() {
|
|
3984
3994
|
|
3985
3995
|
// Add constructor and methods
|
3986
3996
|
ns[cn] = p[cn];
|
3987
|
-
|
3997
|
+
self.extend(ns[cn].prototype, p);
|
3988
3998
|
|
3989
3999
|
// Extend
|
3990
4000
|
if (s[5]) {
|
3991
|
-
sp =
|
4001
|
+
sp = self.resolve(s[5]).prototype;
|
3992
4002
|
scn = s[5].match(/\.(\w+)$/i)[1]; // Class name
|
3993
4003
|
|
3994
4004
|
// Extend constructor
|
@@ -4008,12 +4018,12 @@ define("tinymce/util/Tools", [], function() {
|
|
4008
4018
|
ns[cn].prototype[cn] = ns[cn];
|
4009
4019
|
|
4010
4020
|
// Add super methods
|
4011
|
-
|
4021
|
+
self.each(sp, function(f, n) {
|
4012
4022
|
ns[cn].prototype[n] = sp[n];
|
4013
4023
|
});
|
4014
4024
|
|
4015
4025
|
// Add overridden methods
|
4016
|
-
|
4026
|
+
self.each(p, function(f, n) {
|
4017
4027
|
// Extend methods if needed
|
4018
4028
|
if (sp[n]) {
|
4019
4029
|
ns[cn].prototype[n] = function() {
|
@@ -4030,7 +4040,7 @@ define("tinymce/util/Tools", [], function() {
|
|
4030
4040
|
|
4031
4041
|
// Add static methods
|
4032
4042
|
/*jshint sub:true*/
|
4033
|
-
|
4043
|
+
self.each(p['static'], function(f, n) {
|
4034
4044
|
ns[cn][n] = f;
|
4035
4045
|
});
|
4036
4046
|
}
|
@@ -4130,7 +4140,7 @@ define("tinymce/util/Tools", [], function() {
|
|
4130
4140
|
o = o || window;
|
4131
4141
|
|
4132
4142
|
n = n.split('.');
|
4133
|
-
for (i=0; i<n.length; i++) {
|
4143
|
+
for (i = 0; i < n.length; i++) {
|
4134
4144
|
v = n[i];
|
4135
4145
|
|
4136
4146
|
if (!o[v]) {
|
@@ -4225,7 +4235,7 @@ define("tinymce/dom/Range", [
|
|
4225
4235
|
], function(Tools) {
|
4226
4236
|
// Range constructor
|
4227
4237
|
function Range(dom) {
|
4228
|
-
var
|
4238
|
+
var self = this,
|
4229
4239
|
doc = dom.doc,
|
4230
4240
|
EXTRACT = 0,
|
4231
4241
|
CLONE = 1,
|
@@ -4269,14 +4279,14 @@ define("tinymce/dom/Range", [
|
|
4269
4279
|
|
4270
4280
|
function collapse(ts) {
|
4271
4281
|
if (ts) {
|
4272
|
-
|
4273
|
-
|
4282
|
+
self[END_CONTAINER] = self[START_CONTAINER];
|
4283
|
+
self[END_OFFSET] = self[START_OFFSET];
|
4274
4284
|
} else {
|
4275
|
-
|
4276
|
-
|
4285
|
+
self[START_CONTAINER] = self[END_CONTAINER];
|
4286
|
+
self[START_OFFSET] = self[END_OFFSET];
|
4277
4287
|
}
|
4278
4288
|
|
4279
|
-
|
4289
|
+
self.collapsed = TRUE;
|
4280
4290
|
}
|
4281
4291
|
|
4282
4292
|
function selectNode(n) {
|
@@ -4290,7 +4300,7 @@ define("tinymce/dom/Range", [
|
|
4290
4300
|
}
|
4291
4301
|
|
4292
4302
|
function compareBoundaryPoints(h, r) {
|
4293
|
-
var sc =
|
4303
|
+
var sc = self[START_CONTAINER], so = self[START_OFFSET], ec = self[END_CONTAINER], eo = self[END_OFFSET],
|
4294
4304
|
rsc = r.startContainer, rso = r.startOffset, rec = r.endContainer, reo = r.endOffset;
|
4295
4305
|
|
4296
4306
|
// Check START_TO_START
|
@@ -4362,21 +4372,21 @@ define("tinymce/dom/Range", [
|
|
4362
4372
|
}
|
4363
4373
|
|
4364
4374
|
function surroundContents(n) {
|
4365
|
-
var f =
|
4375
|
+
var f = self.extractContents();
|
4366
4376
|
|
4367
|
-
|
4377
|
+
self.insertNode(n);
|
4368
4378
|
n.appendChild(f);
|
4369
|
-
|
4379
|
+
self.selectNode(n);
|
4370
4380
|
}
|
4371
4381
|
|
4372
4382
|
function cloneRange() {
|
4373
4383
|
return extend(new Range(dom), {
|
4374
|
-
startContainer:
|
4375
|
-
startOffset:
|
4376
|
-
endContainer:
|
4377
|
-
endOffset:
|
4378
|
-
collapsed:
|
4379
|
-
commonAncestorContainer:
|
4384
|
+
startContainer: self[START_CONTAINER],
|
4385
|
+
startOffset: self[START_OFFSET],
|
4386
|
+
endContainer: self[END_CONTAINER],
|
4387
|
+
endOffset: self[END_OFFSET],
|
4388
|
+
collapsed: self.collapsed,
|
4389
|
+
commonAncestorContainer: self.commonAncestorContainer
|
4380
4390
|
});
|
4381
4391
|
}
|
4382
4392
|
|
@@ -4407,7 +4417,7 @@ define("tinymce/dom/Range", [
|
|
4407
4417
|
}
|
4408
4418
|
|
4409
4419
|
function _isCollapsed() {
|
4410
|
-
return (
|
4420
|
+
return (self[START_CONTAINER] == self[END_CONTAINER] && self[START_OFFSET] == self[END_OFFSET]);
|
4411
4421
|
}
|
4412
4422
|
|
4413
4423
|
function _compareBoundaryPoints(containerA, offsetA, containerB, offsetB) {
|
@@ -4523,23 +4533,23 @@ define("tinymce/dom/Range", [
|
|
4523
4533
|
var ec, sc;
|
4524
4534
|
|
4525
4535
|
if (st) {
|
4526
|
-
|
4527
|
-
|
4536
|
+
self[START_CONTAINER] = n;
|
4537
|
+
self[START_OFFSET] = o;
|
4528
4538
|
} else {
|
4529
|
-
|
4530
|
-
|
4539
|
+
self[END_CONTAINER] = n;
|
4540
|
+
self[END_OFFSET] = o;
|
4531
4541
|
}
|
4532
4542
|
|
4533
4543
|
// If one boundary-point of a Range is set to have a root container
|
4534
4544
|
// other than the current one for the Range, the Range is collapsed to
|
4535
4545
|
// the new position. This enforces the restriction that both boundary-
|
4536
4546
|
// points of a Range must have the same root container.
|
4537
|
-
ec =
|
4547
|
+
ec = self[END_CONTAINER];
|
4538
4548
|
while (ec.parentNode) {
|
4539
4549
|
ec = ec.parentNode;
|
4540
4550
|
}
|
4541
4551
|
|
4542
|
-
sc =
|
4552
|
+
sc = self[START_CONTAINER];
|
4543
4553
|
while (sc.parentNode) {
|
4544
4554
|
sc = sc.parentNode;
|
4545
4555
|
}
|
@@ -4549,34 +4559,34 @@ define("tinymce/dom/Range", [
|
|
4549
4559
|
// end position. To enforce this restriction, if the start is set to
|
4550
4560
|
// be at a position after the end, the Range is collapsed to that
|
4551
4561
|
// position.
|
4552
|
-
if (_compareBoundaryPoints(
|
4553
|
-
|
4562
|
+
if (_compareBoundaryPoints(self[START_CONTAINER], self[START_OFFSET], self[END_CONTAINER], self[END_OFFSET]) > 0) {
|
4563
|
+
self.collapse(st);
|
4554
4564
|
}
|
4555
4565
|
} else {
|
4556
|
-
|
4566
|
+
self.collapse(st);
|
4557
4567
|
}
|
4558
4568
|
|
4559
|
-
|
4560
|
-
|
4569
|
+
self.collapsed = _isCollapsed();
|
4570
|
+
self.commonAncestorContainer = dom.findCommonAncestor(self[START_CONTAINER], self[END_CONTAINER]);
|
4561
4571
|
}
|
4562
4572
|
|
4563
4573
|
function _traverse(how) {
|
4564
4574
|
var c, endContainerDepth = 0, startContainerDepth = 0, p, depthDiff, startNode, endNode, sp, ep;
|
4565
4575
|
|
4566
|
-
if (
|
4576
|
+
if (self[START_CONTAINER] == self[END_CONTAINER]) {
|
4567
4577
|
return _traverseSameContainer(how);
|
4568
4578
|
}
|
4569
4579
|
|
4570
|
-
for (c =
|
4571
|
-
if (p ==
|
4580
|
+
for (c = self[END_CONTAINER], p = c.parentNode; p; c = p, p = p.parentNode) {
|
4581
|
+
if (p == self[START_CONTAINER]) {
|
4572
4582
|
return _traverseCommonStartContainer(c, how);
|
4573
4583
|
}
|
4574
4584
|
|
4575
4585
|
++endContainerDepth;
|
4576
4586
|
}
|
4577
4587
|
|
4578
|
-
for (c =
|
4579
|
-
if (p ==
|
4588
|
+
for (c = self[START_CONTAINER], p = c.parentNode; p; c = p, p = p.parentNode) {
|
4589
|
+
if (p == self[END_CONTAINER]) {
|
4580
4590
|
return _traverseCommonEndContainer(c, how);
|
4581
4591
|
}
|
4582
4592
|
|
@@ -4585,13 +4595,13 @@ define("tinymce/dom/Range", [
|
|
4585
4595
|
|
4586
4596
|
depthDiff = startContainerDepth - endContainerDepth;
|
4587
4597
|
|
4588
|
-
startNode =
|
4598
|
+
startNode = self[START_CONTAINER];
|
4589
4599
|
while (depthDiff > 0) {
|
4590
4600
|
startNode = startNode.parentNode;
|
4591
4601
|
depthDiff--;
|
4592
4602
|
}
|
4593
4603
|
|
4594
|
-
endNode =
|
4604
|
+
endNode = self[END_CONTAINER];
|
4595
4605
|
while (depthDiff < 0) {
|
4596
4606
|
endNode = endNode.parentNode;
|
4597
4607
|
depthDiff++;
|
@@ -4614,21 +4624,21 @@ define("tinymce/dom/Range", [
|
|
4614
4624
|
}
|
4615
4625
|
|
4616
4626
|
// If selection is empty, just return the fragment
|
4617
|
-
if (
|
4627
|
+
if (self[START_OFFSET] == self[END_OFFSET]) {
|
4618
4628
|
return frag;
|
4619
4629
|
}
|
4620
4630
|
|
4621
4631
|
// Text node needs special case handling
|
4622
|
-
if (
|
4632
|
+
if (self[START_CONTAINER].nodeType == 3 /* TEXT_NODE */) {
|
4623
4633
|
// get the substring
|
4624
|
-
s =
|
4625
|
-
sub = s.substring(
|
4634
|
+
s = self[START_CONTAINER].nodeValue;
|
4635
|
+
sub = s.substring(self[START_OFFSET], self[END_OFFSET]);
|
4626
4636
|
|
4627
4637
|
// set the original text node to its new value
|
4628
4638
|
if (how != CLONE) {
|
4629
|
-
n =
|
4630
|
-
start =
|
4631
|
-
len =
|
4639
|
+
n = self[START_CONTAINER];
|
4640
|
+
start = self[START_OFFSET];
|
4641
|
+
len = self[END_OFFSET] - self[START_OFFSET];
|
4632
4642
|
|
4633
4643
|
if (start === 0 && len >= n.nodeValue.length - 1) {
|
4634
4644
|
n.parentNode.removeChild(n);
|
@@ -4637,7 +4647,7 @@ define("tinymce/dom/Range", [
|
|
4637
4647
|
}
|
4638
4648
|
|
4639
4649
|
// Nothing is partially selected, so collapse to start point
|
4640
|
-
|
4650
|
+
self.collapse(TRUE);
|
4641
4651
|
}
|
4642
4652
|
|
4643
4653
|
if (how == DELETE) {
|
@@ -4652,8 +4662,8 @@ define("tinymce/dom/Range", [
|
|
4652
4662
|
}
|
4653
4663
|
|
4654
4664
|
// Copy nodes between the start/end offsets.
|
4655
|
-
n = _getSelectedNode(
|
4656
|
-
cnt =
|
4665
|
+
n = _getSelectedNode(self[START_CONTAINER], self[START_OFFSET]);
|
4666
|
+
cnt = self[END_OFFSET] - self[START_OFFSET];
|
4657
4667
|
|
4658
4668
|
while (n && cnt > 0) {
|
4659
4669
|
sibling = n.nextSibling;
|
@@ -4669,7 +4679,7 @@ define("tinymce/dom/Range", [
|
|
4669
4679
|
|
4670
4680
|
// Nothing is partially selected, so collapse to start point
|
4671
4681
|
if (how != CLONE) {
|
4672
|
-
|
4682
|
+
self.collapse(TRUE);
|
4673
4683
|
}
|
4674
4684
|
|
4675
4685
|
return frag;
|
@@ -4689,14 +4699,14 @@ define("tinymce/dom/Range", [
|
|
4689
4699
|
}
|
4690
4700
|
|
4691
4701
|
endIdx = nodeIndex(endAncestor);
|
4692
|
-
cnt = endIdx -
|
4702
|
+
cnt = endIdx - self[START_OFFSET];
|
4693
4703
|
|
4694
4704
|
if (cnt <= 0) {
|
4695
4705
|
// Collapse to just before the endAncestor, which
|
4696
4706
|
// is partially selected.
|
4697
4707
|
if (how != CLONE) {
|
4698
|
-
|
4699
|
-
|
4708
|
+
self.setEndBefore(endAncestor);
|
4709
|
+
self.collapse(FALSE);
|
4700
4710
|
}
|
4701
4711
|
|
4702
4712
|
return frag;
|
@@ -4718,8 +4728,8 @@ define("tinymce/dom/Range", [
|
|
4718
4728
|
// Collapse to just before the endAncestor, which
|
4719
4729
|
// is partially selected.
|
4720
4730
|
if (how != CLONE) {
|
4721
|
-
|
4722
|
-
|
4731
|
+
self.setEndBefore(endAncestor);
|
4732
|
+
self.collapse(FALSE);
|
4723
4733
|
}
|
4724
4734
|
|
4725
4735
|
return frag;
|
@@ -4740,7 +4750,7 @@ define("tinymce/dom/Range", [
|
|
4740
4750
|
startIdx = nodeIndex(startAncestor);
|
4741
4751
|
++startIdx; // Because we already traversed it
|
4742
4752
|
|
4743
|
-
cnt =
|
4753
|
+
cnt = self[END_OFFSET] - startIdx;
|
4744
4754
|
n = startAncestor.nextSibling;
|
4745
4755
|
while (n && cnt > 0) {
|
4746
4756
|
sibling = n.nextSibling;
|
@@ -4755,15 +4765,15 @@ define("tinymce/dom/Range", [
|
|
4755
4765
|
}
|
4756
4766
|
|
4757
4767
|
if (how != CLONE) {
|
4758
|
-
|
4759
|
-
|
4768
|
+
self.setStartAfter(startAncestor);
|
4769
|
+
self.collapse(TRUE);
|
4760
4770
|
}
|
4761
4771
|
|
4762
4772
|
return frag;
|
4763
4773
|
}
|
4764
4774
|
|
4765
4775
|
function _traverseCommonAncestors(startAncestor, endAncestor, how) {
|
4766
|
-
var n, frag,
|
4776
|
+
var n, frag, startOffset, endOffset, cnt, sibling, nextSibling;
|
4767
4777
|
|
4768
4778
|
if (how != DELETE) {
|
4769
4779
|
frag = createDocumentFragment();
|
@@ -4774,7 +4784,6 @@ define("tinymce/dom/Range", [
|
|
4774
4784
|
frag.appendChild(n);
|
4775
4785
|
}
|
4776
4786
|
|
4777
|
-
commonParent = startAncestor.parentNode;
|
4778
4787
|
startOffset = nodeIndex(startAncestor);
|
4779
4788
|
endOffset = nodeIndex(endAncestor);
|
4780
4789
|
++startOffset;
|
@@ -4801,16 +4810,16 @@ define("tinymce/dom/Range", [
|
|
4801
4810
|
}
|
4802
4811
|
|
4803
4812
|
if (how != CLONE) {
|
4804
|
-
|
4805
|
-
|
4813
|
+
self.setStartAfter(startAncestor);
|
4814
|
+
self.collapse(TRUE);
|
4806
4815
|
}
|
4807
4816
|
|
4808
4817
|
return frag;
|
4809
4818
|
}
|
4810
4819
|
|
4811
4820
|
function _traverseRightBoundary(root, how) {
|
4812
|
-
var next = _getSelectedNode(
|
4813
|
-
var prevSibling, clonedChild, clonedGrandParent, isFullySelected = next !=
|
4821
|
+
var next = _getSelectedNode(self[END_CONTAINER], self[END_OFFSET] - 1), parent, clonedParent;
|
4822
|
+
var prevSibling, clonedChild, clonedGrandParent, isFullySelected = next != self[END_CONTAINER];
|
4814
4823
|
|
4815
4824
|
if (next == root) {
|
4816
4825
|
return _traverseNode(next, isFullySelected, FALSE, how);
|
@@ -4850,7 +4859,7 @@ define("tinymce/dom/Range", [
|
|
4850
4859
|
}
|
4851
4860
|
|
4852
4861
|
function _traverseLeftBoundary(root, how) {
|
4853
|
-
var next = _getSelectedNode(
|
4862
|
+
var next = _getSelectedNode(self[START_CONTAINER], self[START_OFFSET]), isFullySelected = next != self[START_CONTAINER];
|
4854
4863
|
var parent, clonedParent, nextSibling, clonedChild, clonedGrandParent;
|
4855
4864
|
|
4856
4865
|
if (next == root) {
|
@@ -4901,11 +4910,11 @@ define("tinymce/dom/Range", [
|
|
4901
4910
|
txtValue = n.nodeValue;
|
4902
4911
|
|
4903
4912
|
if (isLeft) {
|
4904
|
-
offset =
|
4913
|
+
offset = self[START_OFFSET];
|
4905
4914
|
newNodeValue = txtValue.substring(offset);
|
4906
4915
|
oldNodeValue = txtValue.substring(0, offset);
|
4907
4916
|
} else {
|
4908
|
-
offset =
|
4917
|
+
offset = self[END_OFFSET];
|
4909
4918
|
newNodeValue = txtValue.substring(0, offset);
|
4910
4919
|
oldNodeValue = txtValue.substring(offset);
|
4911
4920
|
}
|
@@ -4943,7 +4952,7 @@ define("tinymce/dom/Range", [
|
|
4943
4952
|
return dom.create('body', null, cloneContents()).outerText;
|
4944
4953
|
}
|
4945
4954
|
|
4946
|
-
extend(
|
4955
|
+
extend(self, {
|
4947
4956
|
// Inital states
|
4948
4957
|
startContainer: doc,
|
4949
4958
|
startOffset: 0,
|
@@ -4978,7 +4987,7 @@ define("tinymce/dom/Range", [
|
|
4978
4987
|
toStringIE: toStringIE
|
4979
4988
|
});
|
4980
4989
|
|
4981
|
-
return
|
4990
|
+
return self;
|
4982
4991
|
}
|
4983
4992
|
|
4984
4993
|
// Older IE versions doesn't let you override toString by it's constructor so we have to stick it in the prototype
|
@@ -5002,6 +5011,7 @@ define("tinymce/dom/Range", [
|
|
5002
5011
|
*/
|
5003
5012
|
|
5004
5013
|
/*jshint bitwise:false */
|
5014
|
+
/*eslint no-bitwise:0 */
|
5005
5015
|
|
5006
5016
|
/**
|
5007
5017
|
* Entity encoder class.
|
@@ -5394,190 +5404,190 @@ define("tinymce/Env", [], function() {
|
|
5394
5404
|
|
5395
5405
|
// Included from: js/tinymce/classes/dom/StyleSheetLoader.js
|
5396
5406
|
|
5397
|
-
/**
|
5398
|
-
* StyleSheetLoader.js
|
5399
|
-
*
|
5400
|
-
* Copyright, Moxiecode Systems AB
|
5401
|
-
* Released under LGPL License.
|
5402
|
-
*
|
5403
|
-
* License: http://www.tinymce.com/license
|
5404
|
-
* Contributing: http://www.tinymce.com/contributing
|
5405
|
-
*/
|
5406
|
-
|
5407
|
-
/**
|
5408
|
-
* This class handles loading of external stylesheets and fires events when these are loaded.
|
5409
|
-
*
|
5410
|
-
* @class tinymce.dom.StyleSheetLoader
|
5411
|
-
* @private
|
5412
|
-
*/
|
5413
|
-
define("tinymce/dom/StyleSheetLoader", [], function() {
|
5414
|
-
"use strict";
|
5415
|
-
|
5416
|
-
return function(document, settings) {
|
5417
|
-
var idCount = 0, loadedStates = {}, maxLoadTime;
|
5418
|
-
|
5419
|
-
settings = settings || {};
|
5420
|
-
maxLoadTime = settings.maxLoadTime || 5000;
|
5421
|
-
|
5422
|
-
function appendToHead(node) {
|
5423
|
-
document.getElementsByTagName('head')[0].appendChild(node);
|
5424
|
-
}
|
5425
|
-
|
5426
|
-
/**
|
5427
|
-
* Loads the specified css style sheet file and call the loadedCallback once it's finished loading.
|
5428
|
-
*
|
5429
|
-
* @method load
|
5430
|
-
* @param {String} url Url to be loaded.
|
5431
|
-
* @param {Function} loadedCallback Callback to be executed when loaded.
|
5432
|
-
* @param {Function} errorCallback Callback to be executed when failed loading.
|
5433
|
-
*/
|
5434
|
-
function load(url, loadedCallback, errorCallback) {
|
5435
|
-
var link, style, startTime, state;
|
5436
|
-
|
5437
|
-
function passed() {
|
5438
|
-
var callbacks = state.passed, i = callbacks.length;
|
5439
|
-
|
5440
|
-
while (i--) {
|
5441
|
-
callbacks[i]();
|
5442
|
-
}
|
5443
|
-
|
5444
|
-
state.status = 2;
|
5445
|
-
state.passed = [];
|
5446
|
-
state.failed = [];
|
5447
|
-
}
|
5448
|
-
|
5449
|
-
function failed() {
|
5450
|
-
var callbacks = state.failed, i = callbacks.length;
|
5451
|
-
|
5452
|
-
while (i--) {
|
5453
|
-
callbacks[i]();
|
5454
|
-
}
|
5455
|
-
|
5456
|
-
state.status = 3;
|
5457
|
-
state.passed = [];
|
5458
|
-
state.failed = [];
|
5459
|
-
}
|
5460
|
-
|
5461
|
-
// Sniffs for older WebKit versions that have the link.onload but a broken one
|
5462
|
-
function isOldWebKit() {
|
5463
|
-
var webKitChunks = navigator.userAgent.match(/WebKit\/(\d*)/);
|
5464
|
-
return !!(webKitChunks && webKitChunks[1] < 536);
|
5465
|
-
}
|
5466
|
-
|
5467
|
-
// Calls the waitCallback until the test returns true or the timeout occurs
|
5468
|
-
function wait(testCallback, waitCallback) {
|
5469
|
-
if (!testCallback()) {
|
5470
|
-
// Wait for timeout
|
5471
|
-
if ((new Date().getTime()) - startTime < maxLoadTime) {
|
5472
|
-
window.setTimeout(waitCallback, 0);
|
5473
|
-
} else {
|
5474
|
-
failed();
|
5475
|
-
}
|
5476
|
-
}
|
5477
|
-
}
|
5478
|
-
|
5479
|
-
// Workaround for WebKit that doesn't properly support the onload event for link elements
|
5480
|
-
// Or WebKit that fires the onload event before the StyleSheet is added to the document
|
5481
|
-
function waitForWebKitLinkLoaded() {
|
5482
|
-
wait(function() {
|
5483
|
-
var styleSheets = document.styleSheets, styleSheet, i = styleSheets.length, owner;
|
5484
|
-
|
5485
|
-
while (i--) {
|
5486
|
-
styleSheet = styleSheets[i];
|
5487
|
-
owner = styleSheet.ownerNode ? styleSheet.ownerNode : styleSheet.owningElement;
|
5488
|
-
if (owner && owner.id === link.id) {
|
5489
|
-
passed();
|
5490
|
-
return true;
|
5491
|
-
}
|
5492
|
-
}
|
5493
|
-
}, waitForWebKitLinkLoaded);
|
5494
|
-
}
|
5495
|
-
|
5496
|
-
// Workaround for older Geckos that doesn't have any onload event for StyleSheets
|
5497
|
-
function waitForGeckoLinkLoaded() {
|
5498
|
-
wait(function() {
|
5499
|
-
try {
|
5500
|
-
// Accessing the cssRules will throw an exception until the CSS file is loaded
|
5501
|
-
var cssRules = style.sheet.cssRules;
|
5502
|
-
passed();
|
5503
|
-
return !!cssRules;
|
5504
|
-
} catch (ex) {
|
5505
|
-
// Ignore
|
5506
|
-
}
|
5507
|
-
}, waitForGeckoLinkLoaded);
|
5508
|
-
}
|
5509
|
-
|
5510
|
-
if (!loadedStates[url]) {
|
5511
|
-
state = {
|
5512
|
-
passed: [],
|
5513
|
-
failed: []
|
5514
|
-
};
|
5515
|
-
|
5516
|
-
loadedStates[url] = state;
|
5517
|
-
} else {
|
5518
|
-
state = loadedStates[url];
|
5519
|
-
}
|
5520
|
-
|
5521
|
-
if (loadedCallback) {
|
5522
|
-
state.passed.push(loadedCallback);
|
5523
|
-
}
|
5524
|
-
|
5525
|
-
if (errorCallback) {
|
5526
|
-
state.failed.push(errorCallback);
|
5527
|
-
}
|
5528
|
-
|
5529
|
-
// Is loading wait for it to pass
|
5530
|
-
if (state.status == 1) {
|
5531
|
-
return;
|
5532
|
-
}
|
5533
|
-
|
5534
|
-
// Has finished loading and was success
|
5535
|
-
if (state.status == 2) {
|
5536
|
-
passed();
|
5537
|
-
return;
|
5538
|
-
}
|
5539
|
-
|
5540
|
-
// Has finished loading and was a failure
|
5541
|
-
if (state.status == 3) {
|
5542
|
-
failed();
|
5543
|
-
return;
|
5544
|
-
}
|
5545
|
-
|
5546
|
-
// Start loading
|
5547
|
-
state.status = 1;
|
5548
|
-
link = document.createElement('link');
|
5549
|
-
link.rel = 'stylesheet';
|
5550
|
-
link.type = 'text/css';
|
5551
|
-
link.id = 'u' + (idCount++);
|
5552
|
-
link.async = false;
|
5553
|
-
link.defer = false;
|
5554
|
-
startTime = new Date().getTime();
|
5555
|
-
|
5556
|
-
// Feature detect onload on link element and sniff older webkits since it has an broken onload event
|
5557
|
-
if ("onload" in link && !isOldWebKit()) {
|
5558
|
-
link.onload = waitForWebKitLinkLoaded;
|
5559
|
-
link.onerror = failed;
|
5560
|
-
} else {
|
5561
|
-
// Sniff for old Firefox that doesn't support the onload event on link elements
|
5562
|
-
// TODO: Remove this in the future when everyone uses modern browsers
|
5563
|
-
if (navigator.userAgent.indexOf("Firefox") > 0) {
|
5564
|
-
style = document.createElement('style');
|
5565
|
-
style.textContent = '@import "' + url + '"';
|
5566
|
-
waitForGeckoLinkLoaded();
|
5567
|
-
appendToHead(style);
|
5568
|
-
return;
|
5569
|
-
} else {
|
5570
|
-
// Use the id owner on older webkits
|
5571
|
-
waitForWebKitLinkLoaded();
|
5572
|
-
}
|
5573
|
-
}
|
5574
|
-
|
5575
|
-
appendToHead(link);
|
5576
|
-
link.href = url;
|
5577
|
-
}
|
5578
|
-
|
5579
|
-
this.load = load;
|
5580
|
-
};
|
5407
|
+
/**
|
5408
|
+
* StyleSheetLoader.js
|
5409
|
+
*
|
5410
|
+
* Copyright, Moxiecode Systems AB
|
5411
|
+
* Released under LGPL License.
|
5412
|
+
*
|
5413
|
+
* License: http://www.tinymce.com/license
|
5414
|
+
* Contributing: http://www.tinymce.com/contributing
|
5415
|
+
*/
|
5416
|
+
|
5417
|
+
/**
|
5418
|
+
* This class handles loading of external stylesheets and fires events when these are loaded.
|
5419
|
+
*
|
5420
|
+
* @class tinymce.dom.StyleSheetLoader
|
5421
|
+
* @private
|
5422
|
+
*/
|
5423
|
+
define("tinymce/dom/StyleSheetLoader", [], function() {
|
5424
|
+
"use strict";
|
5425
|
+
|
5426
|
+
return function(document, settings) {
|
5427
|
+
var idCount = 0, loadedStates = {}, maxLoadTime;
|
5428
|
+
|
5429
|
+
settings = settings || {};
|
5430
|
+
maxLoadTime = settings.maxLoadTime || 5000;
|
5431
|
+
|
5432
|
+
function appendToHead(node) {
|
5433
|
+
document.getElementsByTagName('head')[0].appendChild(node);
|
5434
|
+
}
|
5435
|
+
|
5436
|
+
/**
|
5437
|
+
* Loads the specified css style sheet file and call the loadedCallback once it's finished loading.
|
5438
|
+
*
|
5439
|
+
* @method load
|
5440
|
+
* @param {String} url Url to be loaded.
|
5441
|
+
* @param {Function} loadedCallback Callback to be executed when loaded.
|
5442
|
+
* @param {Function} errorCallback Callback to be executed when failed loading.
|
5443
|
+
*/
|
5444
|
+
function load(url, loadedCallback, errorCallback) {
|
5445
|
+
var link, style, startTime, state;
|
5446
|
+
|
5447
|
+
function passed() {
|
5448
|
+
var callbacks = state.passed, i = callbacks.length;
|
5449
|
+
|
5450
|
+
while (i--) {
|
5451
|
+
callbacks[i]();
|
5452
|
+
}
|
5453
|
+
|
5454
|
+
state.status = 2;
|
5455
|
+
state.passed = [];
|
5456
|
+
state.failed = [];
|
5457
|
+
}
|
5458
|
+
|
5459
|
+
function failed() {
|
5460
|
+
var callbacks = state.failed, i = callbacks.length;
|
5461
|
+
|
5462
|
+
while (i--) {
|
5463
|
+
callbacks[i]();
|
5464
|
+
}
|
5465
|
+
|
5466
|
+
state.status = 3;
|
5467
|
+
state.passed = [];
|
5468
|
+
state.failed = [];
|
5469
|
+
}
|
5470
|
+
|
5471
|
+
// Sniffs for older WebKit versions that have the link.onload but a broken one
|
5472
|
+
function isOldWebKit() {
|
5473
|
+
var webKitChunks = navigator.userAgent.match(/WebKit\/(\d*)/);
|
5474
|
+
return !!(webKitChunks && webKitChunks[1] < 536);
|
5475
|
+
}
|
5476
|
+
|
5477
|
+
// Calls the waitCallback until the test returns true or the timeout occurs
|
5478
|
+
function wait(testCallback, waitCallback) {
|
5479
|
+
if (!testCallback()) {
|
5480
|
+
// Wait for timeout
|
5481
|
+
if ((new Date().getTime()) - startTime < maxLoadTime) {
|
5482
|
+
window.setTimeout(waitCallback, 0);
|
5483
|
+
} else {
|
5484
|
+
failed();
|
5485
|
+
}
|
5486
|
+
}
|
5487
|
+
}
|
5488
|
+
|
5489
|
+
// Workaround for WebKit that doesn't properly support the onload event for link elements
|
5490
|
+
// Or WebKit that fires the onload event before the StyleSheet is added to the document
|
5491
|
+
function waitForWebKitLinkLoaded() {
|
5492
|
+
wait(function() {
|
5493
|
+
var styleSheets = document.styleSheets, styleSheet, i = styleSheets.length, owner;
|
5494
|
+
|
5495
|
+
while (i--) {
|
5496
|
+
styleSheet = styleSheets[i];
|
5497
|
+
owner = styleSheet.ownerNode ? styleSheet.ownerNode : styleSheet.owningElement;
|
5498
|
+
if (owner && owner.id === link.id) {
|
5499
|
+
passed();
|
5500
|
+
return true;
|
5501
|
+
}
|
5502
|
+
}
|
5503
|
+
}, waitForWebKitLinkLoaded);
|
5504
|
+
}
|
5505
|
+
|
5506
|
+
// Workaround for older Geckos that doesn't have any onload event for StyleSheets
|
5507
|
+
function waitForGeckoLinkLoaded() {
|
5508
|
+
wait(function() {
|
5509
|
+
try {
|
5510
|
+
// Accessing the cssRules will throw an exception until the CSS file is loaded
|
5511
|
+
var cssRules = style.sheet.cssRules;
|
5512
|
+
passed();
|
5513
|
+
return !!cssRules;
|
5514
|
+
} catch (ex) {
|
5515
|
+
// Ignore
|
5516
|
+
}
|
5517
|
+
}, waitForGeckoLinkLoaded);
|
5518
|
+
}
|
5519
|
+
|
5520
|
+
if (!loadedStates[url]) {
|
5521
|
+
state = {
|
5522
|
+
passed: [],
|
5523
|
+
failed: []
|
5524
|
+
};
|
5525
|
+
|
5526
|
+
loadedStates[url] = state;
|
5527
|
+
} else {
|
5528
|
+
state = loadedStates[url];
|
5529
|
+
}
|
5530
|
+
|
5531
|
+
if (loadedCallback) {
|
5532
|
+
state.passed.push(loadedCallback);
|
5533
|
+
}
|
5534
|
+
|
5535
|
+
if (errorCallback) {
|
5536
|
+
state.failed.push(errorCallback);
|
5537
|
+
}
|
5538
|
+
|
5539
|
+
// Is loading wait for it to pass
|
5540
|
+
if (state.status == 1) {
|
5541
|
+
return;
|
5542
|
+
}
|
5543
|
+
|
5544
|
+
// Has finished loading and was success
|
5545
|
+
if (state.status == 2) {
|
5546
|
+
passed();
|
5547
|
+
return;
|
5548
|
+
}
|
5549
|
+
|
5550
|
+
// Has finished loading and was a failure
|
5551
|
+
if (state.status == 3) {
|
5552
|
+
failed();
|
5553
|
+
return;
|
5554
|
+
}
|
5555
|
+
|
5556
|
+
// Start loading
|
5557
|
+
state.status = 1;
|
5558
|
+
link = document.createElement('link');
|
5559
|
+
link.rel = 'stylesheet';
|
5560
|
+
link.type = 'text/css';
|
5561
|
+
link.id = 'u' + (idCount++);
|
5562
|
+
link.async = false;
|
5563
|
+
link.defer = false;
|
5564
|
+
startTime = new Date().getTime();
|
5565
|
+
|
5566
|
+
// Feature detect onload on link element and sniff older webkits since it has an broken onload event
|
5567
|
+
if ("onload" in link && !isOldWebKit()) {
|
5568
|
+
link.onload = waitForWebKitLinkLoaded;
|
5569
|
+
link.onerror = failed;
|
5570
|
+
} else {
|
5571
|
+
// Sniff for old Firefox that doesn't support the onload event on link elements
|
5572
|
+
// TODO: Remove this in the future when everyone uses modern browsers
|
5573
|
+
if (navigator.userAgent.indexOf("Firefox") > 0) {
|
5574
|
+
style = document.createElement('style');
|
5575
|
+
style.textContent = '@import "' + url + '"';
|
5576
|
+
waitForGeckoLinkLoaded();
|
5577
|
+
appendToHead(style);
|
5578
|
+
return;
|
5579
|
+
} else {
|
5580
|
+
// Use the id owner on older webkits
|
5581
|
+
waitForWebKitLinkLoaded();
|
5582
|
+
}
|
5583
|
+
}
|
5584
|
+
|
5585
|
+
appendToHead(link);
|
5586
|
+
link.href = url;
|
5587
|
+
}
|
5588
|
+
|
5589
|
+
this.load = load;
|
5590
|
+
};
|
5581
5591
|
});
|
5582
5592
|
|
5583
5593
|
// Included from: js/tinymce/classes/dom/DOMUtils.js
|
@@ -6330,7 +6340,7 @@ define("tinymce/dom/DOMUtils", [
|
|
6330
6340
|
* tinymce.dom.setAttrib('mydiv', 'class', 'myclass');
|
6331
6341
|
*/
|
6332
6342
|
setAttrib: function(e, n, v) {
|
6333
|
-
var
|
6343
|
+
var self = this;
|
6334
6344
|
|
6335
6345
|
// What's the point
|
6336
6346
|
if (!e || !n) {
|
@@ -6338,14 +6348,14 @@ define("tinymce/dom/DOMUtils", [
|
|
6338
6348
|
}
|
6339
6349
|
|
6340
6350
|
return this.run(e, function(e) {
|
6341
|
-
var s =
|
6351
|
+
var s = self.settings;
|
6342
6352
|
var originalValue = e.getAttribute(n);
|
6343
6353
|
if (v !== null) {
|
6344
6354
|
switch (n) {
|
6345
6355
|
case "style":
|
6346
6356
|
if (!is(v, 'string')) {
|
6347
6357
|
each(v, function(v, n) {
|
6348
|
-
|
6358
|
+
self.setStyle(e, n, v);
|
6349
6359
|
});
|
6350
6360
|
|
6351
6361
|
return;
|
@@ -6371,10 +6381,10 @@ define("tinymce/dom/DOMUtils", [
|
|
6371
6381
|
case "href":
|
6372
6382
|
if (s.keep_values) {
|
6373
6383
|
if (s.url_converter) {
|
6374
|
-
v = s.url_converter.call(s.url_converter_scope ||
|
6384
|
+
v = s.url_converter.call(s.url_converter_scope || self, v, n, e);
|
6375
6385
|
}
|
6376
6386
|
|
6377
|
-
|
6387
|
+
self.setAttrib(e, 'data-mce-' + n, v, 2);
|
6378
6388
|
}
|
6379
6389
|
|
6380
6390
|
break;
|
@@ -6943,7 +6953,7 @@ define("tinymce/dom/DOMUtils", [
|
|
6943
6953
|
newElement.innerHTML = '<br />' + html;
|
6944
6954
|
|
6945
6955
|
// Add all children from div to target
|
6946
|
-
each
|
6956
|
+
each(grep(newElement.childNodes), function(node, i) {
|
6947
6957
|
// Skip br element
|
6948
6958
|
if (i && element.canHaveHTML) {
|
6949
6959
|
element.appendChild(node);
|
@@ -7355,10 +7365,10 @@ define("tinymce/dom/DOMUtils", [
|
|
7355
7365
|
* @return {Number} Index of the specified node.
|
7356
7366
|
*/
|
7357
7367
|
nodeIndex: function(node, normalized) {
|
7358
|
-
var idx = 0, lastNodeType,
|
7368
|
+
var idx = 0, lastNodeType, nodeType;
|
7359
7369
|
|
7360
7370
|
if (node) {
|
7361
|
-
for (lastNodeType = node.nodeType, node = node.previousSibling
|
7371
|
+
for (lastNodeType = node.nodeType, node = node.previousSibling; node; node = node.previousSibling) {
|
7362
7372
|
nodeType = node.nodeType;
|
7363
7373
|
|
7364
7374
|
// Normalize text nodes
|
@@ -7740,6 +7750,8 @@ define("tinymce/dom/ScriptLoader", [
|
|
7740
7750
|
}
|
7741
7751
|
|
7742
7752
|
function error() {
|
7753
|
+
/*eslint no-console:0 */
|
7754
|
+
|
7743
7755
|
// Report the error so it's easier for people to spot loading errors
|
7744
7756
|
if (typeof(console) !== "undefined" && console.log) {
|
7745
7757
|
console.log("Failed to load: " + url);
|
@@ -8052,10 +8064,10 @@ define("tinymce/AddOnManager", [
|
|
8052
8064
|
* Loads an add-on from a specific url.
|
8053
8065
|
*
|
8054
8066
|
* @method load
|
8055
|
-
* @param {String}
|
8056
|
-
* @param {String}
|
8057
|
-
* @param {function}
|
8058
|
-
* @param {Object}
|
8067
|
+
* @param {String} name Short name of the add-on that gets loaded.
|
8068
|
+
* @param {String} addOnUrl URL to the add-on that will get loaded.
|
8069
|
+
* @param {function} callback Optional callback to execute ones the add-on is loaded.
|
8070
|
+
* @param {Object} scope Optional scope to execute the callback in.
|
8059
8071
|
* @example
|
8060
8072
|
* // Loads a plugin from an external URL
|
8061
8073
|
* tinymce.PluginManager.load('myplugin', '/some/dir/someplugin/plugin.js');
|
@@ -8066,45 +8078,45 @@ define("tinymce/AddOnManager", [
|
|
8066
8078
|
* plugins: '-myplugin' // Don't try to load it again
|
8067
8079
|
* });
|
8068
8080
|
*/
|
8069
|
-
load: function(
|
8070
|
-
var
|
8081
|
+
load: function(name, addOnUrl, callback, scope) {
|
8082
|
+
var self = this, url = addOnUrl;
|
8071
8083
|
|
8072
8084
|
function loadDependencies() {
|
8073
|
-
var dependencies =
|
8085
|
+
var dependencies = self.dependencies(name);
|
8074
8086
|
|
8075
8087
|
each(dependencies, function(dep) {
|
8076
|
-
var newUrl =
|
8088
|
+
var newUrl = self.createUrl(addOnUrl, dep);
|
8077
8089
|
|
8078
|
-
|
8090
|
+
self.load(newUrl.resource, newUrl, undefined, undefined);
|
8079
8091
|
});
|
8080
8092
|
|
8081
|
-
if (
|
8082
|
-
if (
|
8083
|
-
|
8093
|
+
if (callback) {
|
8094
|
+
if (scope) {
|
8095
|
+
callback.call(scope);
|
8084
8096
|
} else {
|
8085
|
-
|
8097
|
+
callback.call(ScriptLoader);
|
8086
8098
|
}
|
8087
8099
|
}
|
8088
8100
|
}
|
8089
8101
|
|
8090
|
-
if (
|
8102
|
+
if (self.urls[name]) {
|
8091
8103
|
return;
|
8092
8104
|
}
|
8093
8105
|
|
8094
|
-
if (typeof
|
8095
|
-
url =
|
8106
|
+
if (typeof addOnUrl === "object") {
|
8107
|
+
url = addOnUrl.prefix + addOnUrl.resource + addOnUrl.suffix;
|
8096
8108
|
}
|
8097
8109
|
|
8098
8110
|
if (url.indexOf('/') !== 0 && url.indexOf('://') == -1) {
|
8099
8111
|
url = AddOnManager.baseURL + '/' + url;
|
8100
8112
|
}
|
8101
8113
|
|
8102
|
-
|
8114
|
+
self.urls[name] = url.substring(0, url.lastIndexOf('/'));
|
8103
8115
|
|
8104
|
-
if (
|
8116
|
+
if (self.lookup[name]) {
|
8105
8117
|
loadDependencies();
|
8106
8118
|
} else {
|
8107
|
-
ScriptLoader.ScriptLoader.add(url, loadDependencies,
|
8119
|
+
ScriptLoader.ScriptLoader.add(url, loadDependencies, scope);
|
8108
8120
|
}
|
8109
8121
|
}
|
8110
8122
|
};
|
@@ -8718,7 +8730,7 @@ define("tinymce/html/Schema", [
|
|
8718
8730
|
* @return {Object} Schema lookup table.
|
8719
8731
|
*/
|
8720
8732
|
function compileSchema(type) {
|
8721
|
-
var schema = {}, globalAttributes,
|
8733
|
+
var schema = {}, globalAttributes, blockContent;
|
8722
8734
|
var phrasingContent, flowContent, html4BlockContent, html4PhrasingContent;
|
8723
8735
|
|
8724
8736
|
function add(name, attributes, children) {
|
@@ -8786,13 +8798,13 @@ define("tinymce/html/Schema", [
|
|
8786
8798
|
globalAttributes = split("id accesskey class dir lang style tabindex title");
|
8787
8799
|
|
8788
8800
|
// Event attributes can be opt-in/opt-out
|
8789
|
-
eventAttributes = split("onabort onblur oncancel oncanplay oncanplaythrough onchange onclick onclose oncontextmenu oncuechange " +
|
8801
|
+
/*eventAttributes = split("onabort onblur oncancel oncanplay oncanplaythrough onchange onclick onclose oncontextmenu oncuechange " +
|
8790
8802
|
"ondblclick ondrag ondragend ondragenter ondragleave ondragover ondragstart ondrop ondurationchange onemptied onended " +
|
8791
8803
|
"onerror onfocus oninput oninvalid onkeydown onkeypress onkeyup onload onloadeddata onloadedmetadata onloadstart " +
|
8792
8804
|
"onmousedown onmousemove onmouseout onmouseover onmouseup onmousewheel onpause onplay onplaying onprogress onratechange " +
|
8793
8805
|
"onreset onscroll onseeked onseeking onseeking onselect onshow onstalled onsubmit onsuspend ontimeupdate onvolumechange " +
|
8794
8806
|
"onwaiting"
|
8795
|
-
)
|
8807
|
+
);*/
|
8796
8808
|
|
8797
8809
|
// Block content elements
|
8798
8810
|
blockContent = split(
|
@@ -9619,6 +9631,8 @@ define("tinymce/html/Schema", [
|
|
9619
9631
|
* Contributing: http://www.tinymce.com/contributing
|
9620
9632
|
*/
|
9621
9633
|
|
9634
|
+
/*eslint max-depth:[2, 9] */
|
9635
|
+
|
9622
9636
|
/**
|
9623
9637
|
* This class parses HTML code using pure JavaScript and executes various events for each item it finds. It will
|
9624
9638
|
* always execute the events in the right order for tag soup code like <b><p></b></p>. It will also remove elements
|
@@ -9675,7 +9689,9 @@ define("tinymce/html/SaxParser", [
|
|
9675
9689
|
* @param {tinymce.html.Schema} schema HTML Schema class to use when parsing.
|
9676
9690
|
*/
|
9677
9691
|
return function(settings, schema) {
|
9678
|
-
var self = this
|
9692
|
+
var self = this;
|
9693
|
+
|
9694
|
+
function noop() {}
|
9679
9695
|
|
9680
9696
|
settings = settings || {};
|
9681
9697
|
self.schema = schema = schema || new Schema();
|
@@ -11283,6 +11299,7 @@ define("tinymce/dom/Serializer", [
|
|
11283
11299
|
|
11284
11300
|
function trim(value) {
|
11285
11301
|
/*jshint maxlen:255 */
|
11302
|
+
/*eslint max-len:0 */
|
11286
11303
|
return value.replace(/(<!--\[CDATA\[|\]\]-->)/g, '\n')
|
11287
11304
|
.replace(/^[\r\n]*|[\r\n]*$/g, '')
|
11288
11305
|
.replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi, '')
|
@@ -12154,19 +12171,21 @@ define("tinymce/dom/ControlSelection", [
|
|
12154
12171
|
);
|
12155
12172
|
|
12156
12173
|
function isResizable(elm) {
|
12157
|
-
|
12174
|
+
var selector = editor.settings.object_resizing;
|
12175
|
+
|
12176
|
+
if (selector === false || Env.iOS) {
|
12158
12177
|
return false;
|
12159
12178
|
}
|
12160
12179
|
|
12161
|
-
if (
|
12162
|
-
|
12180
|
+
if (typeof selector != 'string') {
|
12181
|
+
selector = 'table,img,div';
|
12163
12182
|
}
|
12164
12183
|
|
12165
12184
|
if (elm.getAttribute('data-mce-resize') === 'false') {
|
12166
12185
|
return false;
|
12167
12186
|
}
|
12168
12187
|
|
12169
|
-
return
|
12188
|
+
return editor.dom.is(elm, selector);
|
12170
12189
|
}
|
12171
12190
|
|
12172
12191
|
function resizeGhostElement(e) {
|
@@ -12536,6 +12555,14 @@ define("tinymce/dom/ControlSelection", [
|
|
12536
12555
|
editor.dom.bind(editor.getBody(), 'mscontrolselect', function(e) {
|
12537
12556
|
if (/^(TABLE|IMG|HR)$/.test(e.target.nodeName)) {
|
12538
12557
|
e.preventDefault();
|
12558
|
+
|
12559
|
+
// This moves the selection from being a control selection to a text like selection like in WebKit #6753
|
12560
|
+
// TODO: Fix this the day IE works like other browsers without this nasty native ugly control selections.
|
12561
|
+
if (e.target.tagName == 'IMG') {
|
12562
|
+
window.setTimeout(function() {
|
12563
|
+
editor.selection.select(e.target);
|
12564
|
+
}, 0);
|
12565
|
+
}
|
12539
12566
|
}
|
12540
12567
|
});
|
12541
12568
|
}
|
@@ -13401,7 +13428,7 @@ define("tinymce/dom/Selection", [
|
|
13401
13428
|
* tinymce.activeEditor.selection.moveToBookmark(bm);
|
13402
13429
|
*/
|
13403
13430
|
getBookmark: function(type, normalized) {
|
13404
|
-
var
|
13431
|
+
var self = this, dom = self.dom, rng, rng2, id, collapsed, name, element, chr = '', styles;
|
13405
13432
|
|
13406
13433
|
function findIndex(name, element) {
|
13407
13434
|
var index = 0;
|
@@ -13439,7 +13466,7 @@ define("tinymce/dom/Selection", [
|
|
13439
13466
|
}
|
13440
13467
|
|
13441
13468
|
function getLocation() {
|
13442
|
-
var rng =
|
13469
|
+
var rng = self.getRng(true), root = dom.getRoot(), bookmark = {};
|
13443
13470
|
|
13444
13471
|
function getPoint(rng, start) {
|
13445
13472
|
var container = rng[start ? 'startContainer' : 'endContainer'],
|
@@ -13461,11 +13488,11 @@ define("tinymce/dom/Selection", [
|
|
13461
13488
|
offset = Math.max(0, childNodes.length - 1);
|
13462
13489
|
}
|
13463
13490
|
|
13464
|
-
point.push(
|
13491
|
+
point.push(self.dom.nodeIndex(childNodes[offset], normalized) + after);
|
13465
13492
|
}
|
13466
13493
|
|
13467
13494
|
for (; container && container != root; container = container.parentNode) {
|
13468
|
-
point.push(
|
13495
|
+
point.push(self.dom.nodeIndex(container, normalized));
|
13469
13496
|
}
|
13470
13497
|
|
13471
13498
|
return point;
|
@@ -13473,7 +13500,7 @@ define("tinymce/dom/Selection", [
|
|
13473
13500
|
|
13474
13501
|
bookmark.start = getPoint(rng, true);
|
13475
13502
|
|
13476
|
-
if (!
|
13503
|
+
if (!self.isCollapsed()) {
|
13477
13504
|
bookmark.end = getPoint(rng);
|
13478
13505
|
}
|
13479
13506
|
|
@@ -13481,15 +13508,15 @@ define("tinymce/dom/Selection", [
|
|
13481
13508
|
}
|
13482
13509
|
|
13483
13510
|
if (type == 2) {
|
13484
|
-
element =
|
13511
|
+
element = self.getNode();
|
13485
13512
|
name = element ? element.nodeName : null;
|
13486
13513
|
|
13487
13514
|
if (name == 'IMG') {
|
13488
13515
|
return {name: name, index: findIndex(name, element)};
|
13489
13516
|
}
|
13490
13517
|
|
13491
|
-
if (
|
13492
|
-
return
|
13518
|
+
if (self.tridentSel) {
|
13519
|
+
return self.tridentSel.getBookmark(type);
|
13493
13520
|
}
|
13494
13521
|
|
13495
13522
|
return getLocation();
|
@@ -13497,12 +13524,12 @@ define("tinymce/dom/Selection", [
|
|
13497
13524
|
|
13498
13525
|
// Handle simple range
|
13499
13526
|
if (type) {
|
13500
|
-
return {rng:
|
13527
|
+
return {rng: self.getRng()};
|
13501
13528
|
}
|
13502
13529
|
|
13503
|
-
rng =
|
13530
|
+
rng = self.getRng();
|
13504
13531
|
id = dom.uniqueId();
|
13505
|
-
collapsed =
|
13532
|
+
collapsed = self.isCollapsed();
|
13506
13533
|
styles = 'overflow:hidden;line-height:0px';
|
13507
13534
|
|
13508
13535
|
// Explorer method
|
@@ -13541,7 +13568,7 @@ define("tinymce/dom/Selection", [
|
|
13541
13568
|
return {name: name, index: findIndex(name, element)};
|
13542
13569
|
}
|
13543
13570
|
} else {
|
13544
|
-
element =
|
13571
|
+
element = self.getNode();
|
13545
13572
|
name = element.nodeName;
|
13546
13573
|
if (name == 'IMG') {
|
13547
13574
|
return {name: name, index: findIndex(name, element)};
|
@@ -13561,7 +13588,7 @@ define("tinymce/dom/Selection", [
|
|
13561
13588
|
rng.insertNode(dom.create('span', {'data-mce-type': "bookmark", id: id + '_start', style: styles}, chr));
|
13562
13589
|
}
|
13563
13590
|
|
13564
|
-
|
13591
|
+
self.moveToBookmark({id: id, keep: 1});
|
13565
13592
|
|
13566
13593
|
return {id: id};
|
13567
13594
|
},
|
@@ -13582,7 +13609,7 @@ define("tinymce/dom/Selection", [
|
|
13582
13609
|
* tinymce.activeEditor.selection.moveToBookmark(bm);
|
13583
13610
|
*/
|
13584
13611
|
moveToBookmark: function(bookmark) {
|
13585
|
-
var
|
13612
|
+
var self = this, dom = self.dom, rng, root, startContainer, endContainer, startOffset, endOffset;
|
13586
13613
|
|
13587
13614
|
function setEndPoint(start) {
|
13588
13615
|
var point = bookmark[start ? 'start' : 'end'], i, node, offset, children;
|
@@ -13702,12 +13729,12 @@ define("tinymce/dom/Selection", [
|
|
13702
13729
|
rng = dom.createRng();
|
13703
13730
|
root = dom.getRoot();
|
13704
13731
|
|
13705
|
-
if (
|
13706
|
-
return
|
13732
|
+
if (self.tridentSel) {
|
13733
|
+
return self.tridentSel.moveToBookmark(bookmark);
|
13707
13734
|
}
|
13708
13735
|
|
13709
13736
|
if (setEndPoint(true) && setEndPoint()) {
|
13710
|
-
|
13737
|
+
self.setRng(rng);
|
13711
13738
|
}
|
13712
13739
|
} else if (bookmark.id) {
|
13713
13740
|
// Restore start/end points
|
@@ -13718,12 +13745,12 @@ define("tinymce/dom/Selection", [
|
|
13718
13745
|
rng = dom.createRng();
|
13719
13746
|
rng.setStart(addBogus(startContainer), startOffset);
|
13720
13747
|
rng.setEnd(addBogus(endContainer), endOffset);
|
13721
|
-
|
13748
|
+
self.setRng(rng);
|
13722
13749
|
}
|
13723
13750
|
} else if (bookmark.name) {
|
13724
|
-
|
13751
|
+
self.select(dom.select(bookmark.name)[bookmark.index]);
|
13725
13752
|
} else if (bookmark.rng) {
|
13726
|
-
|
13753
|
+
self.setRng(bookmark.rng);
|
13727
13754
|
}
|
13728
13755
|
}
|
13729
13756
|
},
|
@@ -15694,7 +15721,8 @@ define("tinymce/Formatter", [
|
|
15694
15721
|
}
|
15695
15722
|
}
|
15696
15723
|
|
15697
|
-
|
15724
|
+
/*eslint no-constant-condition:0 */
|
15725
|
+
while (true) {
|
15698
15726
|
// Stop expanding on block elements
|
15699
15727
|
if (!format[0].block_expand && isBlock(parent)) {
|
15700
15728
|
return parent;
|
@@ -16773,7 +16801,7 @@ define("tinymce/UndoManager", [
|
|
16773
16801
|
].join('|'), 'gi');
|
16774
16802
|
|
16775
16803
|
return function(editor) {
|
16776
|
-
var self, index = 0, data = [], beforeBookmark, isFirstTypedCharacter, lock;
|
16804
|
+
var self = this, index = 0, data = [], beforeBookmark, isFirstTypedCharacter, lock;
|
16777
16805
|
|
16778
16806
|
// Returns a trimmed version of the current editor contents
|
16779
16807
|
function getContent() {
|
@@ -18681,6 +18709,7 @@ define("tinymce/util/URI", [
|
|
18681
18709
|
url = url.replace(/@@/g, '(mce_at)'); // Zope 3 workaround, they use @@something
|
18682
18710
|
|
18683
18711
|
/*jshint maxlen: 255 */
|
18712
|
+
/*eslint max-len: 0 */
|
18684
18713
|
url = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(url);
|
18685
18714
|
|
18686
18715
|
each(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"], function(v, i) {
|
@@ -19014,16 +19043,14 @@ define("tinymce/util/Class", [
|
|
19014
19043
|
|
19015
19044
|
// Provides classical inheritance, based on code made by John Resig
|
19016
19045
|
Class.extend = extendClass = function(prop) {
|
19017
|
-
var
|
19046
|
+
var self = this, _super = self.prototype, prototype, name, member;
|
19018
19047
|
|
19019
19048
|
// The dummy class constructor
|
19020
19049
|
function Class() {
|
19021
|
-
var i, mixins, mixin, self;
|
19050
|
+
var i, mixins, mixin, self = this;
|
19022
19051
|
|
19023
19052
|
// All construction is actually done in the init method
|
19024
19053
|
if (!initializing) {
|
19025
|
-
self = this;
|
19026
|
-
|
19027
19054
|
// Run class constuctor
|
19028
19055
|
if (self.init) {
|
19029
19056
|
self.init.apply(self, arguments);
|
@@ -19065,7 +19092,7 @@ define("tinymce/util/Class", [
|
|
19065
19092
|
// Instantiate a base class (but only create the instance,
|
19066
19093
|
// don't run the init constructor)
|
19067
19094
|
initializing = true;
|
19068
|
-
prototype = new
|
19095
|
+
prototype = new self();
|
19069
19096
|
initializing = false;
|
19070
19097
|
|
19071
19098
|
// Add mixins
|
@@ -19163,6 +19190,8 @@ define("tinymce/util/Class", [
|
|
19163
19190
|
* Contributing: http://www.tinymce.com/contributing
|
19164
19191
|
*/
|
19165
19192
|
|
19193
|
+
/*eslint no-nested-ternary:0 */
|
19194
|
+
|
19166
19195
|
/**
|
19167
19196
|
* Selector engine, enables you to select controls by using CSS like expressions.
|
19168
19197
|
* We currently only support basic CSS expressions to reduce the size of the core
|
@@ -19227,6 +19256,7 @@ define("tinymce/ui/Selector", [
|
|
19227
19256
|
var expression = /^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i;
|
19228
19257
|
|
19229
19258
|
/*jshint maxlen:255 */
|
19259
|
+
/*eslint max-len:0 */
|
19230
19260
|
var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
|
19231
19261
|
whiteSpace = /^\s*|\s*$/g,
|
19232
19262
|
Collection;
|
@@ -20063,6 +20093,8 @@ define("tinymce/ui/DomUtils", [
|
|
20063
20093
|
* Contributing: http://www.tinymce.com/contributing
|
20064
20094
|
*/
|
20065
20095
|
|
20096
|
+
/*eslint consistent-this:0 */
|
20097
|
+
|
20066
20098
|
/**
|
20067
20099
|
* This is the base class for all controls and containers. All UI control instances inherit
|
20068
20100
|
* from this one as it has the base logic needed by all of them.
|
@@ -20774,10 +20806,10 @@ define("tinymce/ui/Control", [
|
|
20774
20806
|
* @return {tinymce.ui.Collection} Collection with all parent controls.
|
20775
20807
|
*/
|
20776
20808
|
parents: function(selector) {
|
20777
|
-
var
|
20809
|
+
var self = this, ctrl, parents = new Collection();
|
20778
20810
|
|
20779
20811
|
// Add each parent to collection
|
20780
|
-
for (ctrl =
|
20812
|
+
for (ctrl = self.parent(); ctrl; ctrl = ctrl.parent()) {
|
20781
20813
|
parents.add(ctrl);
|
20782
20814
|
}
|
20783
20815
|
|
@@ -21422,10 +21454,10 @@ define("tinymce/ui/Control", [
|
|
21422
21454
|
e.preventDefault();
|
21423
21455
|
|
21424
21456
|
if (e.type == "mousewheel") {
|
21425
|
-
e.deltaY = -
|
21457
|
+
e.deltaY = -1 / 40 * e.wheelDelta;
|
21426
21458
|
|
21427
21459
|
if (e.wheelDeltaX) {
|
21428
|
-
e.deltaX = -1/40 * e.wheelDeltaX;
|
21460
|
+
e.deltaX = -1 / 40 * e.wheelDeltaX;
|
21429
21461
|
}
|
21430
21462
|
} else {
|
21431
21463
|
e.deltaX = 0;
|
@@ -22493,7 +22525,7 @@ define("tinymce/ui/Container", [
|
|
22493
22525
|
|
22494
22526
|
return (
|
22495
22527
|
'<div id="' + self._id + '" class="' + self.classes() + '"' + (role ? ' role="' + this.settings.role + '"' : '') + '>' +
|
22496
|
-
'<div id="' + self._id + '-body" class="' + self.classes('body') + '">'+
|
22528
|
+
'<div id="' + self._id + '-body" class="' + self.classes('body') + '">' +
|
22497
22529
|
(self.settings.html || '') + layout.renderHtml(self) +
|
22498
22530
|
'</div>' +
|
22499
22531
|
'</div>'
|
@@ -22584,13 +22616,13 @@ define("tinymce/ui/Container", [
|
|
22584
22616
|
* @return {tinymce.ui.Container} Current container instance.
|
22585
22617
|
*/
|
22586
22618
|
reflow: function() {
|
22587
|
-
var i
|
22619
|
+
var i;
|
22588
22620
|
|
22589
22621
|
if (this.visible()) {
|
22590
22622
|
Control.repaintControls = [];
|
22591
22623
|
Control.repaintControls.map = {};
|
22592
22624
|
|
22593
|
-
|
22625
|
+
this.recalc();
|
22594
22626
|
i = Control.repaintControls.length;
|
22595
22627
|
|
22596
22628
|
while (i--) {
|
@@ -24515,7 +24547,7 @@ define("tinymce/util/Quirks", [
|
|
24515
24547
|
* fix seemed like a huge task. I hope we can remove this before the year 2030.
|
24516
24548
|
*/
|
24517
24549
|
function cleanupStylesWhenDeleting() {
|
24518
|
-
var doc = editor.getDoc();
|
24550
|
+
var doc = editor.getDoc(), urlPrefix = 'data:text/mce-internal,';
|
24519
24551
|
|
24520
24552
|
if (!window.MutationObserver) {
|
24521
24553
|
return;
|
@@ -24630,14 +24662,20 @@ define("tinymce/util/Quirks", [
|
|
24630
24662
|
});
|
24631
24663
|
|
24632
24664
|
editor.on('dragstart', function(e) {
|
24633
|
-
|
24665
|
+
// Safari doesn't support custom dataTransfer items so we can only use URL and Text
|
24666
|
+
e.dataTransfer.setData('URL', 'data:text/mce-internal,' + escape(editor.selection.getContent()));
|
24634
24667
|
});
|
24635
24668
|
|
24636
24669
|
editor.on('drop', function(e) {
|
24637
24670
|
if (!isDefaultPrevented(e)) {
|
24638
|
-
var internalContent = e.dataTransfer.getData('
|
24671
|
+
var internalContent = e.dataTransfer.getData('URL');
|
24639
24672
|
|
24640
|
-
if (internalContent
|
24673
|
+
if (!internalContent || internalContent.indexOf(urlPrefix) == -1 || !doc.caretRangeFromPoint) {
|
24674
|
+
return;
|
24675
|
+
}
|
24676
|
+
|
24677
|
+
internalContent = unescape(internalContent.substr(urlPrefix.length));
|
24678
|
+
if (doc.caretRangeFromPoint) {
|
24641
24679
|
e.preventDefault();
|
24642
24680
|
customDelete();
|
24643
24681
|
editor.selection.setRng(doc.caretRangeFromPoint(e.x, e.y));
|
@@ -25423,16 +25461,20 @@ define("tinymce/util/Quirks", [
|
|
25423
25461
|
|
25424
25462
|
/**
|
25425
25463
|
* IE 11 has a fantastic bug where it will produce two trailing BR elements to iframe bodies when
|
25426
|
-
* the iframe is hidden by display: none.
|
25427
|
-
*
|
25464
|
+
* the iframe is hidden by display: none on a parent container. The DOM is actually out of sync
|
25465
|
+
* with innerHTML in this case. It's like IE adds shadow DOM BR elements that appears on innerHTML
|
25466
|
+
* but not as the lastChild of the body. However is we add a BR element to the body then remove it
|
25467
|
+
* it doesn't seem to add these BR elements makes sence right?!
|
25428
25468
|
*
|
25429
|
-
* Example
|
25469
|
+
* Example of what happens: <body>text</body> becomes <body>text<br><br></body>
|
25430
25470
|
*/
|
25431
25471
|
function doubleTrailingBrElements() {
|
25432
25472
|
if (!editor.inline) {
|
25433
|
-
editor.on('
|
25434
|
-
editor.
|
25435
|
-
|
25473
|
+
editor.on('focus blur', function() {
|
25474
|
+
var br = editor.dom.create('br');
|
25475
|
+
editor.getBody().appendChild(br);
|
25476
|
+
br.parentNode.removeChild(br);
|
25477
|
+
}, true);
|
25436
25478
|
}
|
25437
25479
|
}
|
25438
25480
|
|
@@ -25544,6 +25586,10 @@ define("tinymce/util/Observable", [
|
|
25544
25586
|
fire: function(name, args, bubble) {
|
25545
25587
|
var self = this, handlers, i, l, callback, parent;
|
25546
25588
|
|
25589
|
+
if (self.removed) {
|
25590
|
+
return;
|
25591
|
+
}
|
25592
|
+
|
25547
25593
|
name = name.toLowerCase();
|
25548
25594
|
args = args || {};
|
25549
25595
|
args.type = name;
|
@@ -25617,13 +25663,14 @@ define("tinymce/util/Observable", [
|
|
25617
25663
|
* @method on
|
25618
25664
|
* @param {String} name Event name or space separated list of events to bind.
|
25619
25665
|
* @param {callback} callback Callback to be executed when the event occurs.
|
25666
|
+
* @param {Boolean} first Optional flag if the event should be prepended. Use this with care.
|
25620
25667
|
* @return {Object} Current class instance.
|
25621
25668
|
* @example
|
25622
25669
|
* instance.on('event', function(e) {
|
25623
25670
|
* // Callback logic
|
25624
25671
|
* });
|
25625
25672
|
*/
|
25626
|
-
on: function(name, callback) {
|
25673
|
+
on: function(name, callback, prepend) {
|
25627
25674
|
var self = this, bindings, handlers, names, i;
|
25628
25675
|
|
25629
25676
|
if (callback === false) {
|
@@ -25651,7 +25698,11 @@ define("tinymce/util/Observable", [
|
|
25651
25698
|
}
|
25652
25699
|
}
|
25653
25700
|
|
25654
|
-
|
25701
|
+
if (prepend) {
|
25702
|
+
handlers.unshift(callback);
|
25703
|
+
} else {
|
25704
|
+
handlers.push(callback);
|
25705
|
+
}
|
25655
25706
|
}
|
25656
25707
|
}
|
25657
25708
|
|
@@ -26324,7 +26375,7 @@ define("tinymce/Editor", [
|
|
26324
26375
|
*/
|
26325
26376
|
init: function() {
|
26326
26377
|
var self = this, settings = self.settings, elm = self.getElement();
|
26327
|
-
var w, h, minHeight, n, o, url, bodyId, bodyClass, re, i, initializedPlugins = [];
|
26378
|
+
var w, h, minHeight, n, o, Theme, url, bodyId, bodyClass, re, i, initializedPlugins = [];
|
26328
26379
|
|
26329
26380
|
self.rtl = this.editorManager.i18n.rtl;
|
26330
26381
|
self.editorManager.add(self);
|
@@ -26343,8 +26394,8 @@ define("tinymce/Editor", [
|
|
26343
26394
|
if (settings.theme) {
|
26344
26395
|
if (typeof settings.theme != "function") {
|
26345
26396
|
settings.theme = settings.theme.replace(/-/, '');
|
26346
|
-
|
26347
|
-
self.theme = new
|
26397
|
+
Theme = ThemeManager.get(settings.theme);
|
26398
|
+
self.theme = new Theme(self, ThemeManager.urls[settings.theme]);
|
26348
26399
|
|
26349
26400
|
if (self.theme.init) {
|
26350
26401
|
self.theme.init(self, ThemeManager.urls[settings.theme] || self.documentBaseUrl.replace(/\/$/, ''));
|
@@ -26355,21 +26406,21 @@ define("tinymce/Editor", [
|
|
26355
26406
|
}
|
26356
26407
|
|
26357
26408
|
function initPlugin(plugin) {
|
26358
|
-
var
|
26409
|
+
var Plugin = PluginManager.get(plugin), pluginUrl, pluginInstance;
|
26359
26410
|
|
26360
|
-
|
26411
|
+
pluginUrl = PluginManager.urls[plugin] || self.documentBaseUrl.replace(/\/$/, '');
|
26361
26412
|
plugin = trim(plugin);
|
26362
|
-
if (
|
26413
|
+
if (Plugin && inArray(initializedPlugins, plugin) === -1) {
|
26363
26414
|
each(PluginManager.dependencies(plugin), function(dep){
|
26364
26415
|
initPlugin(dep);
|
26365
26416
|
});
|
26366
26417
|
|
26367
|
-
pluginInstance = new
|
26418
|
+
pluginInstance = new Plugin(self, pluginUrl);
|
26368
26419
|
|
26369
26420
|
self.plugins[plugin] = pluginInstance;
|
26370
26421
|
|
26371
26422
|
if (pluginInstance.init) {
|
26372
|
-
pluginInstance.init(self,
|
26423
|
+
pluginInstance.init(self, pluginUrl);
|
26373
26424
|
initializedPlugins.push(plugin);
|
26374
26425
|
}
|
26375
26426
|
}
|
@@ -26389,11 +26440,11 @@ define("tinymce/Editor", [
|
|
26389
26440
|
re = /^[0-9\.]+(|px)$/i;
|
26390
26441
|
|
26391
26442
|
if (re.test('' + w)) {
|
26392
|
-
w = Math.max(parseInt(w, 10)
|
26443
|
+
w = Math.max(parseInt(w, 10), 100);
|
26393
26444
|
}
|
26394
26445
|
|
26395
26446
|
if (re.test('' + h)) {
|
26396
|
-
h = Math.max(parseInt(h, 10)
|
26447
|
+
h = Math.max(parseInt(h, 10), minHeight);
|
26397
26448
|
}
|
26398
26449
|
|
26399
26450
|
// Render UI
|
@@ -26493,7 +26544,8 @@ define("tinymce/Editor", [
|
|
26493
26544
|
self.iframeHTML += '</head><body id="' + bodyId + '" class="mce-content-body ' + bodyClass + '" ' +
|
26494
26545
|
'onload="window.parent.tinymce.get(\'' + self.id + '\').fire(\'load\');"><br></body></html>';
|
26495
26546
|
|
26496
|
-
|
26547
|
+
/*eslint no-script-url:0 */
|
26548
|
+
var domainRelaxUrl = 'javascript:(function(){' +
|
26497
26549
|
'document.open();document.domain="' + document.domain + '";' +
|
26498
26550
|
'var ed = window.parent.tinymce.get("' + self.id + '");document.write(ed.iframeHTML);' +
|
26499
26551
|
'document.close();ed.initContentBody(true);})()';
|
@@ -26571,12 +26623,12 @@ define("tinymce/Editor", [
|
|
26571
26623
|
|
26572
26624
|
if (settings.content_editable) {
|
26573
26625
|
self.on('remove', function() {
|
26574
|
-
var
|
26626
|
+
var bodyEl = this.getBody();
|
26575
26627
|
|
26576
|
-
DOM.removeClass(
|
26577
|
-
DOM.removeClass(
|
26578
|
-
DOM.setAttrib(
|
26579
|
-
DOM.setAttrib(
|
26628
|
+
DOM.removeClass(bodyEl, 'mce-content-body');
|
26629
|
+
DOM.removeClass(bodyEl, 'mce-edit-focus');
|
26630
|
+
DOM.setAttrib(bodyEl, 'tabIndex', null);
|
26631
|
+
DOM.setAttrib(bodyEl, 'contentEditable', null);
|
26580
26632
|
});
|
26581
26633
|
|
26582
26634
|
DOM.addClass(targetElm, 'mce-content-body');
|
@@ -27036,7 +27088,7 @@ define("tinymce/Editor", [
|
|
27036
27088
|
var self = this, selection = self.selection, node, parents, root;
|
27037
27089
|
|
27038
27090
|
// Fix for bug #1896577 it seems that this can not be fired while the editor is loading
|
27039
|
-
if (self.initialized && !self.settings.disable_nodechange) {
|
27091
|
+
if (self.initialized && !self.settings.disable_nodechange && !self.settings.readonly) {
|
27040
27092
|
// Get start node
|
27041
27093
|
root = self.getBody();
|
27042
27094
|
node = selection.getStart() || root;
|
@@ -27568,7 +27620,7 @@ define("tinymce/Editor", [
|
|
27568
27620
|
// Padd with bogus BR elements on modern browsers and IE 7 and 8 since they don't render empty P tags properly
|
27569
27621
|
content = ie && ie < 11 ? '' : '<br data-mce-bogus="1">';
|
27570
27622
|
content = self.dom.createHTML(forcedRootBlockName, self.settings.forced_root_block_attrs, content);
|
27571
|
-
} else if (!ie
|
27623
|
+
} else if (!ie) {
|
27572
27624
|
// We need to add a BR when forced_root_block is disabled on non IE browsers to place the caret
|
27573
27625
|
content = '<br data-mce-bogus="1">';
|
27574
27626
|
}
|
@@ -27867,6 +27919,8 @@ define("tinymce/Editor", [
|
|
27867
27919
|
var self = this;
|
27868
27920
|
|
27869
27921
|
if (!self.removed) {
|
27922
|
+
self.fire('remove');
|
27923
|
+
self.off();
|
27870
27924
|
self.removed = 1; // Cancels post remove event execution
|
27871
27925
|
|
27872
27926
|
// Remove any hidden input
|
@@ -27874,12 +27928,6 @@ define("tinymce/Editor", [
|
|
27874
27928
|
DOM.remove(self.getElement().nextSibling);
|
27875
27929
|
}
|
27876
27930
|
|
27877
|
-
// Fixed bug where IE has a blinking cursor left from the editor
|
27878
|
-
var doc = self.getDoc();
|
27879
|
-
if (ie && doc && !self.inline) {
|
27880
|
-
doc.execCommand('SelectAll');
|
27881
|
-
}
|
27882
|
-
|
27883
27931
|
// We must save before we hide so Safari doesn't crash
|
27884
27932
|
self.save();
|
27885
27933
|
|
@@ -27896,8 +27944,6 @@ define("tinymce/Editor", [
|
|
27896
27944
|
Event.unbind(self.getBody());
|
27897
27945
|
Event.unbind(elm);
|
27898
27946
|
|
27899
|
-
self.fire('remove');
|
27900
|
-
|
27901
27947
|
self.editorManager.remove(self);
|
27902
27948
|
DOM.remove(elm);
|
27903
27949
|
self.destroy();
|
@@ -27986,7 +28032,7 @@ define("tinymce/Editor", [
|
|
27986
28032
|
DOM.unbind(form, 'submit reset', self.formEventDelegate);
|
27987
28033
|
}
|
27988
28034
|
|
27989
|
-
self.contentAreaContainer = self.formElement = self.container = null;
|
28035
|
+
self.contentAreaContainer = self.formElement = self.container = self.editorContainer = null;
|
27990
28036
|
self.settings.content_element = self.bodyElement = self.contentDocument = self.contentWindow = null;
|
27991
28037
|
|
27992
28038
|
if (self.selection) {
|
@@ -28139,6 +28185,8 @@ define("tinymce/FocusManager", [
|
|
28139
28185
|
"tinymce/dom/DOMUtils",
|
28140
28186
|
"tinymce/Env"
|
28141
28187
|
], function(DOMUtils, Env) {
|
28188
|
+
var selectionChangeHandler, documentFocusInHandler, DOM = DOMUtils.DOM;
|
28189
|
+
|
28142
28190
|
/**
|
28143
28191
|
* Constructs a new focus manager instance.
|
28144
28192
|
*
|
@@ -28186,7 +28234,7 @@ define("tinymce/FocusManager", [
|
|
28186
28234
|
}
|
28187
28235
|
|
28188
28236
|
function isUIElement(elm) {
|
28189
|
-
return !!
|
28237
|
+
return !!DOM.getParent(elm, FocusManager.isEditorUIElement);
|
28190
28238
|
}
|
28191
28239
|
|
28192
28240
|
function isNodeInBodyOfEditor(node, editor) {
|
@@ -28202,7 +28250,7 @@ define("tinymce/FocusManager", [
|
|
28202
28250
|
}
|
28203
28251
|
|
28204
28252
|
function registerEvents(e) {
|
28205
|
-
var editor = e.editor
|
28253
|
+
var editor = e.editor;
|
28206
28254
|
|
28207
28255
|
editor.on('init', function() {
|
28208
28256
|
// On IE take selection snapshot onbeforedeactivate
|
@@ -28242,25 +28290,22 @@ define("tinymce/FocusManager", [
|
|
28242
28290
|
});
|
28243
28291
|
|
28244
28292
|
// Handles the issue with WebKit not retaining selection within inline document
|
28245
|
-
// If the user releases the mouse out side the body
|
28246
|
-
|
28247
|
-
// TODO: Optimize this since we only need to bind these on the active editor
|
28248
|
-
if (Env.webkit) {
|
28293
|
+
// If the user releases the mouse out side the body since a mouse up event wont occur on the body
|
28294
|
+
if (Env.webkit && !selectionChangeHandler) {
|
28249
28295
|
selectionChangeHandler = function() {
|
28250
|
-
var
|
28296
|
+
var activeEditor = editorManager.activeEditor;
|
28251
28297
|
|
28252
|
-
|
28253
|
-
|
28254
|
-
|
28298
|
+
if (activeEditor && activeEditor.selection) {
|
28299
|
+
var rng = activeEditor.selection.getRng();
|
28300
|
+
|
28301
|
+
// Store when it's non collapsed
|
28302
|
+
if (rng && !rng.collapsed) {
|
28303
|
+
editor.lastRng = rng;
|
28304
|
+
}
|
28255
28305
|
}
|
28256
28306
|
};
|
28257
28307
|
|
28258
|
-
|
28259
|
-
DOMUtils.DOM.bind(document, 'selectionchange', selectionChangeHandler);
|
28260
|
-
|
28261
|
-
editor.on('remove', function() {
|
28262
|
-
DOMUtils.DOM.unbind(document, 'selectionchange', selectionChangeHandler);
|
28263
|
-
});
|
28308
|
+
DOM.bind(document, 'selectionchange', selectionChangeHandler);
|
28264
28309
|
}
|
28265
28310
|
}
|
28266
28311
|
});
|
@@ -28312,28 +28357,41 @@ define("tinymce/FocusManager", [
|
|
28312
28357
|
}
|
28313
28358
|
}, 0);
|
28314
28359
|
});
|
28315
|
-
}
|
28316
28360
|
|
28317
|
-
|
28318
|
-
|
28319
|
-
|
28320
|
-
var activeEditor = editorManager.activeEditor;
|
28361
|
+
if (!documentFocusInHandler) {
|
28362
|
+
documentFocusInHandler = function(e) {
|
28363
|
+
var activeEditor = editorManager.activeEditor;
|
28321
28364
|
|
28322
|
-
|
28323
|
-
|
28324
|
-
|
28325
|
-
|
28326
|
-
|
28365
|
+
if (activeEditor && e.target.ownerDocument == document) {
|
28366
|
+
// Check to make sure we have a valid selection
|
28367
|
+
if (activeEditor.selection) {
|
28368
|
+
activeEditor.selection.lastFocusBookmark = createBookmark(activeEditor.lastRng);
|
28369
|
+
}
|
28327
28370
|
|
28328
|
-
|
28329
|
-
|
28330
|
-
|
28331
|
-
|
28332
|
-
|
28371
|
+
// Fire a blur event if the element isn't a UI element
|
28372
|
+
if (!isUIElement(e.target) && editorManager.focusedEditor == activeEditor) {
|
28373
|
+
activeEditor.fire('blur', {focusedEditor: null});
|
28374
|
+
editorManager.focusedEditor = null;
|
28375
|
+
}
|
28376
|
+
}
|
28377
|
+
};
|
28378
|
+
|
28379
|
+
// Check if focus is moved to an element outside the active editor by checking if the target node
|
28380
|
+
// isn't within the body of the activeEditor nor a UI element such as a dialog child control
|
28381
|
+
DOM.bind(document, 'focusin', documentFocusInHandler);
|
28333
28382
|
}
|
28334
|
-
}
|
28383
|
+
}
|
28384
|
+
|
28385
|
+
function unregisterDocumentEvents() {
|
28386
|
+
if (!editorManager.activeEditor) {
|
28387
|
+
DOM.unbind(document, 'selectionchange', selectionChangeHandler);
|
28388
|
+
DOM.unbind(document, 'focusin', documentFocusInHandler);
|
28389
|
+
selectionChangeHandler = documentFocusInHandler = null;
|
28390
|
+
}
|
28391
|
+
}
|
28335
28392
|
|
28336
28393
|
editorManager.on('AddEditor', registerEvents);
|
28394
|
+
editorManager.on('RemoveEditor', unregisterDocumentEvents);
|
28337
28395
|
}
|
28338
28396
|
|
28339
28397
|
/**
|
@@ -28401,7 +28459,7 @@ define("tinymce/EditorManager", [
|
|
28401
28459
|
* @property minorVersion
|
28402
28460
|
* @type String
|
28403
28461
|
*/
|
28404
|
-
minorVersion : '0.
|
28462
|
+
minorVersion : '0.19',
|
28405
28463
|
|
28406
28464
|
/**
|
28407
28465
|
* Release date of TinyMCE build.
|
@@ -28409,7 +28467,7 @@ define("tinymce/EditorManager", [
|
|
28409
28467
|
* @property releaseDate
|
28410
28468
|
* @type String
|
28411
28469
|
*/
|
28412
|
-
releaseDate: '2014-
|
28470
|
+
releaseDate: '2014-03-11',
|
28413
28471
|
|
28414
28472
|
/**
|
28415
28473
|
* Collection of editor instances.
|
@@ -29149,7 +29207,7 @@ define("tinymce/util/JSON", [], function() {
|
|
29149
29207
|
|
29150
29208
|
if (t == 'object') {
|
29151
29209
|
if (o.hasOwnProperty && Object.prototype.toString.call(o) === '[object Array]') {
|
29152
|
-
for (i=0, v = '['; i<o.length; i++) {
|
29210
|
+
for (i = 0, v = '['; i < o.length; i++) {
|
29153
29211
|
v += (i > 0 ? ',' : '') + serialize(o[i], quote);
|
29154
29212
|
}
|
29155
29213
|
|
@@ -29161,7 +29219,7 @@ define("tinymce/util/JSON", [], function() {
|
|
29161
29219
|
for (name in o) {
|
29162
29220
|
if (o.hasOwnProperty(name)) {
|
29163
29221
|
v += typeof o[name] != 'function' ? (v.length > 1 ? ',' + quote : quote) + name +
|
29164
|
-
quote +':' + serialize(o[name], quote) : '';
|
29222
|
+
quote + ':' + serialize(o[name], quote) : '';
|
29165
29223
|
}
|
29166
29224
|
}
|
29167
29225
|
|
@@ -30289,8 +30347,8 @@ define("tinymce/ui/ButtonGroup", [
|
|
30289
30347
|
layout.preRender(self);
|
30290
30348
|
|
30291
30349
|
return (
|
30292
|
-
'<div id="' + self._id + '" class="' + self.classes() + '">'+
|
30293
|
-
'<div id="' + self._id + '-body">'+
|
30350
|
+
'<div id="' + self._id + '" class="' + self.classes() + '">' +
|
30351
|
+
'<div id="' + self._id + '-body">' +
|
30294
30352
|
(self.settings.html || '') + layout.renderHtml(self) +
|
30295
30353
|
'</div>' +
|
30296
30354
|
'</div>'
|
@@ -30414,7 +30472,7 @@ define("tinymce/ui/Checkbox", [
|
|
30414
30472
|
return (
|
30415
30473
|
'<div id="' + id + '" class="' + self.classes() + '" unselectable="on" aria-labelledby="' + id + '-al" tabindex="-1">' +
|
30416
30474
|
'<i class="' + prefix + 'ico ' + prefix + 'i-checkbox"></i>' +
|
30417
|
-
'<span id="' + id +'-al" class="' + prefix + 'label">' + self.encode(self._text) + '</span>' +
|
30475
|
+
'<span id="' + id + '-al" class="' + prefix + 'label">' + self.encode(self._text) + '</span>' +
|
30418
30476
|
'</div>'
|
30419
30477
|
);
|
30420
30478
|
}
|
@@ -31102,9 +31160,9 @@ define("tinymce/ui/Path", [
|
|
31102
31160
|
|
31103
31161
|
for (i = 0, l = parts.length; i < l; i++) {
|
31104
31162
|
html += (
|
31105
|
-
(i > 0 ? '<div class="'+ prefix + 'divider" aria-hidden="true"> ' + self.settings.delimiter + ' </div>' : '') +
|
31163
|
+
(i > 0 ? '<div class="' + prefix + 'divider" aria-hidden="true"> ' + self.settings.delimiter + ' </div>' : '') +
|
31106
31164
|
'<div role="button" class="' + prefix + 'path-item' + (i == l - 1 ? ' ' + prefix + 'last' : '') + '" data-index="' +
|
31107
|
-
i + '" tabindex="-1" id="' + self._id + '-' + i +'" aria-level="' + i + '">' + parts[i].name + '</div>'
|
31165
|
+
i + '" tabindex="-1" id="' + self._id + '-' + i + '" aria-level="' + i + '">' + parts[i].name + '</div>'
|
31108
31166
|
);
|
31109
31167
|
}
|
31110
31168
|
|
@@ -31627,8 +31685,8 @@ define("tinymce/ui/FlexLayout", [
|
|
31627
31685
|
// A ton of variables, needs to be in the same scope for performance
|
31628
31686
|
var i, l, items, contLayoutRect, contPaddingBox, contSettings, align, pack, spacing, totalFlex, availableSpace, direction;
|
31629
31687
|
var ctrl, ctrlLayoutRect, ctrlSettings, flex, maxSizeItems = [], size, maxSize, ratio, rect, pos, maxAlignEndPos;
|
31630
|
-
var sizeName, minSizeName, posName, maxSizeName, beforeName, innerSizeName,
|
31631
|
-
var alignAxisName, alignInnerSizeName, alignSizeName, alignMinSizeName,
|
31688
|
+
var sizeName, minSizeName, posName, maxSizeName, beforeName, innerSizeName, deltaSizeName, contentSizeName;
|
31689
|
+
var alignAxisName, alignInnerSizeName, alignSizeName, alignMinSizeName, alignBeforeName, alignAfterName;
|
31632
31690
|
var alignDeltaSizeName, alignContentSizeName;
|
31633
31691
|
var max = Math.max, min = Math.min;
|
31634
31692
|
|
@@ -31655,7 +31713,6 @@ define("tinymce/ui/FlexLayout", [
|
|
31655
31713
|
maxSizeName = "maxH";
|
31656
31714
|
innerSizeName = "innerH";
|
31657
31715
|
beforeName = 'top';
|
31658
|
-
afterName = 'bottom';
|
31659
31716
|
deltaSizeName = "deltaH";
|
31660
31717
|
contentSizeName = "contentH";
|
31661
31718
|
|
@@ -31664,7 +31721,6 @@ define("tinymce/ui/FlexLayout", [
|
|
31664
31721
|
alignAxisName = "x";
|
31665
31722
|
alignInnerSizeName = "innerW";
|
31666
31723
|
alignMinSizeName = "minW";
|
31667
|
-
alignMaxSizeName = "maxW";
|
31668
31724
|
alignAfterName = "right";
|
31669
31725
|
alignDeltaSizeName = "deltaW";
|
31670
31726
|
alignContentSizeName = "contentW";
|
@@ -31675,7 +31731,6 @@ define("tinymce/ui/FlexLayout", [
|
|
31675
31731
|
maxSizeName = "maxW";
|
31676
31732
|
innerSizeName = "innerW";
|
31677
31733
|
beforeName = 'left';
|
31678
|
-
afterName = 'right';
|
31679
31734
|
deltaSizeName = "deltaW";
|
31680
31735
|
contentSizeName = "contentW";
|
31681
31736
|
|
@@ -31684,7 +31739,6 @@ define("tinymce/ui/FlexLayout", [
|
|
31684
31739
|
alignAxisName = "y";
|
31685
31740
|
alignInnerSizeName = "innerH";
|
31686
31741
|
alignMinSizeName = "minH";
|
31687
|
-
alignMaxSizeName = "maxH";
|
31688
31742
|
alignAfterName = "bottom";
|
31689
31743
|
alignDeltaSizeName = "deltaH";
|
31690
31744
|
alignContentSizeName = "contentH";
|
@@ -32582,7 +32636,7 @@ define("tinymce/ui/GridLayout", [
|
|
32582
32636
|
recalc: function(container) {
|
32583
32637
|
var settings = container.settings, rows, cols, items, contLayoutRect, width, height, rect,
|
32584
32638
|
ctrlLayoutRect, ctrl, x, y, posX, posY, ctrlSettings, contPaddingBox, align, spacingH, spacingV, alignH, alignV, maxX, maxY,
|
32585
|
-
colWidths = [], rowHeights = [], ctrlMinWidth, ctrlMinHeight,
|
32639
|
+
colWidths = [], rowHeights = [], ctrlMinWidth, ctrlMinHeight, availableWidth, availableHeight;
|
32586
32640
|
|
32587
32641
|
// Get layout settings
|
32588
32642
|
settings = container.settings;
|
@@ -32732,7 +32786,6 @@ define("tinymce/ui/GridLayout", [
|
|
32732
32786
|
ctrlSettings = ctrl.settings;
|
32733
32787
|
ctrlLayoutRect = ctrl.layoutRect();
|
32734
32788
|
width = Math.max(colWidths[x], ctrlLayoutRect.startMinWidth);
|
32735
|
-
alignX = alignY = 0;
|
32736
32789
|
ctrlLayoutRect.x = posX;
|
32737
32790
|
ctrlLayoutRect.y = posY;
|
32738
32791
|
|
@@ -32977,7 +33030,7 @@ define("tinymce/ui/Label", [
|
|
32977
33030
|
var self = this, forId = self.settings.forId;
|
32978
33031
|
|
32979
33032
|
return (
|
32980
|
-
'<label id="' + self._id + '" class="' + self.classes() + '"' + (forId ? ' for="' + forId +'"' : '') + '>' +
|
33033
|
+
'<label id="' + self._id + '" class="' + self.classes() + '"' + (forId ? ' for="' + forId + '"' : '') + '>' +
|
32981
33034
|
self.encode(self._text) +
|
32982
33035
|
'</label>'
|
32983
33036
|
);
|
@@ -34295,7 +34348,7 @@ define("tinymce/ui/TabPanel", [
|
|
34295
34348
|
ctrl.aria('labelledby', id);
|
34296
34349
|
|
34297
34350
|
tabsHtml += (
|
34298
|
-
'<div id="' + id + '" class="' + prefix + 'tab" '+
|
34351
|
+
'<div id="' + id + '" class="' + prefix + 'tab" ' +
|
34299
34352
|
'unselectable="on" role="tab" aria-controls="' + ctrl._id + '" aria-selected="false" tabIndex="-1">' +
|
34300
34353
|
self.encode(ctrl.settings.title) +
|
34301
34354
|
'</div>'
|