tinymce-rails 5.7.1 → 5.8.0
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 +4 -4
- data/app/assets/source/tinymce/tinymce.js +1193 -964
- data/lib/tinymce/rails/version.rb +2 -2
- data/vendor/assets/javascripts/tinymce/langs/{readme.md → README.md} +0 -0
- data/vendor/assets/javascripts/tinymce/plugins/advlist/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/anchor/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/autolink/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/autoresize/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/autosave/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/bbcode/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/charmap/plugin.js +2 -2
- data/vendor/assets/javascripts/tinymce/plugins/code/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/codesample/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/colorpicker/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/contextmenu/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/directionality/plugin.js +2 -2
- data/vendor/assets/javascripts/tinymce/plugins/emoticons/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/fullpage/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/fullscreen/plugin.js +2 -2
- data/vendor/assets/javascripts/tinymce/plugins/help/plugin.js +2 -2
- data/vendor/assets/javascripts/tinymce/plugins/hr/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/image/plugin.js +2 -2
- data/vendor/assets/javascripts/tinymce/plugins/imagetools/plugin.js +2 -2
- data/vendor/assets/javascripts/tinymce/plugins/importcss/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/insertdatetime/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/lists/plugin.js +2 -2
- data/vendor/assets/javascripts/tinymce/plugins/media/plugin.js +2 -2
- data/vendor/assets/javascripts/tinymce/plugins/nonbreaking/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/noneditable/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/pagebreak/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/paste/plugin.js +2 -2
- 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/quickbars/plugin.js +2 -2
- data/vendor/assets/javascripts/tinymce/plugins/save/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/searchreplace/plugin.js +2 -2
- data/vendor/assets/javascripts/tinymce/plugins/spellchecker/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/tabfocus/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/table/plugin.js +2 -2
- data/vendor/assets/javascripts/tinymce/plugins/template/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/textcolor/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/textpattern/plugin.js +2 -2
- data/vendor/assets/javascripts/tinymce/plugins/toc/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/visualblocks/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/visualchars/plugin.js +2 -2
- data/vendor/assets/javascripts/tinymce/plugins/wordcount/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/skin.css +1 -1
- data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/skin.min.css +1 -1
- data/vendor/assets/javascripts/tinymce/skins/ui/oxide/skin.css +1 -1
- data/vendor/assets/javascripts/tinymce/skins/ui/oxide/skin.min.css +1 -1
- data/vendor/assets/javascripts/tinymce/themes/mobile/theme.js +2 -2
- data/vendor/assets/javascripts/tinymce/themes/silver/theme.js +2 -2
- data/vendor/assets/javascripts/tinymce/tinymce.d.ts +6 -1
- data/vendor/assets/javascripts/tinymce/tinymce.js +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2e895482a995fdfe18407ebcb8e8dfacffe635fd677d113fac18a5b16e32c39d
|
|
4
|
+
data.tar.gz: 3a25e9b6d3637d63c9f3900aea076690781b69e3c687eebfa25ff5de6e33fb1c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 689ea6dbaefe12f0ca67c71075b9e7c45347b93e70372b387062db25085972ac5d7c38a390f8e0671b67072f003a6a7ab609317970443f0ff21a0983e2efd977
|
|
7
|
+
data.tar.gz: 786d93116ce63655873dbc2ff785873a4a1c4eb58a76b92088917eb224ab7688102009e73cf38847ab5ec35870b4408414ff9d6a10e944c59b4e2bdb00fca67f
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* For LGPL see License.txt in the project root for license information.
|
|
5
5
|
* For commercial licenses see https://www.tiny.cloud/
|
|
6
6
|
*
|
|
7
|
-
* Version: 5.
|
|
7
|
+
* Version: 5.8.0 (2021-05-06)
|
|
8
8
|
*/
|
|
9
9
|
(function () {
|
|
10
10
|
'use strict';
|
|
@@ -109,6 +109,48 @@
|
|
|
109
109
|
return false;
|
|
110
110
|
});
|
|
111
111
|
|
|
112
|
+
var typeOf$1 = function (x) {
|
|
113
|
+
var t = typeof x;
|
|
114
|
+
if (x === null) {
|
|
115
|
+
return 'null';
|
|
116
|
+
} else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) {
|
|
117
|
+
return 'array';
|
|
118
|
+
} else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) {
|
|
119
|
+
return 'string';
|
|
120
|
+
} else {
|
|
121
|
+
return t;
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
var isType = function (type) {
|
|
125
|
+
return function (value) {
|
|
126
|
+
return typeOf$1(value) === type;
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
var isSimpleType = function (type) {
|
|
130
|
+
return function (value) {
|
|
131
|
+
return typeof value === type;
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
var eq$1 = function (t) {
|
|
135
|
+
return function (a) {
|
|
136
|
+
return t === a;
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
var isString = isType('string');
|
|
140
|
+
var isObject = isType('object');
|
|
141
|
+
var isArray = isType('array');
|
|
142
|
+
var isNull = eq$1(null);
|
|
143
|
+
var isBoolean = isSimpleType('boolean');
|
|
144
|
+
var isUndefined = eq$1(undefined);
|
|
145
|
+
var isNullable = function (a) {
|
|
146
|
+
return a === null || a === undefined;
|
|
147
|
+
};
|
|
148
|
+
var isNonNullable = function (a) {
|
|
149
|
+
return !isNullable(a);
|
|
150
|
+
};
|
|
151
|
+
var isFunction = isSimpleType('function');
|
|
152
|
+
var isNumber = isSimpleType('number');
|
|
153
|
+
|
|
112
154
|
var noop = function () {
|
|
113
155
|
};
|
|
114
156
|
var compose = function (fa, fb) {
|
|
@@ -272,48 +314,6 @@
|
|
|
272
314
|
from: from
|
|
273
315
|
};
|
|
274
316
|
|
|
275
|
-
var typeOf$1 = function (x) {
|
|
276
|
-
var t = typeof x;
|
|
277
|
-
if (x === null) {
|
|
278
|
-
return 'null';
|
|
279
|
-
} else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) {
|
|
280
|
-
return 'array';
|
|
281
|
-
} else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) {
|
|
282
|
-
return 'string';
|
|
283
|
-
} else {
|
|
284
|
-
return t;
|
|
285
|
-
}
|
|
286
|
-
};
|
|
287
|
-
var isType = function (type) {
|
|
288
|
-
return function (value) {
|
|
289
|
-
return typeOf$1(value) === type;
|
|
290
|
-
};
|
|
291
|
-
};
|
|
292
|
-
var isSimpleType = function (type) {
|
|
293
|
-
return function (value) {
|
|
294
|
-
return typeof value === type;
|
|
295
|
-
};
|
|
296
|
-
};
|
|
297
|
-
var eq$1 = function (t) {
|
|
298
|
-
return function (a) {
|
|
299
|
-
return t === a;
|
|
300
|
-
};
|
|
301
|
-
};
|
|
302
|
-
var isString = isType('string');
|
|
303
|
-
var isObject = isType('object');
|
|
304
|
-
var isArray = isType('array');
|
|
305
|
-
var isNull = eq$1(null);
|
|
306
|
-
var isBoolean = isSimpleType('boolean');
|
|
307
|
-
var isUndefined = eq$1(undefined);
|
|
308
|
-
var isNullable = function (a) {
|
|
309
|
-
return a === null || a === undefined;
|
|
310
|
-
};
|
|
311
|
-
var isNonNullable = function (a) {
|
|
312
|
-
return !isNullable(a);
|
|
313
|
-
};
|
|
314
|
-
var isFunction = isSimpleType('function');
|
|
315
|
-
var isNumber = isSimpleType('number');
|
|
316
|
-
|
|
317
317
|
var nativeSlice = Array.prototype.slice;
|
|
318
318
|
var nativeIndexOf = Array.prototype.indexOf;
|
|
319
319
|
var nativePush = Array.prototype.push;
|
|
@@ -811,6 +811,9 @@
|
|
|
811
811
|
var trim = blank(/^\s+|\s+$/g);
|
|
812
812
|
var lTrim = blank(/^\s+/g);
|
|
813
813
|
var rTrim = blank(/\s+$/g);
|
|
814
|
+
var isNotEmpty = function (s) {
|
|
815
|
+
return s.length > 0;
|
|
816
|
+
};
|
|
814
817
|
|
|
815
818
|
var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/;
|
|
816
819
|
var checkContains = function (target) {
|
|
@@ -1146,7 +1149,8 @@
|
|
|
1146
1149
|
return;
|
|
1147
1150
|
}
|
|
1148
1151
|
if (!p[cn]) {
|
|
1149
|
-
p[cn] =
|
|
1152
|
+
p[cn] = function () {
|
|
1153
|
+
};
|
|
1150
1154
|
de = 1;
|
|
1151
1155
|
}
|
|
1152
1156
|
ns[cn] = p[cn];
|
|
@@ -10712,6 +10716,9 @@
|
|
|
10712
10716
|
var isInlineFormat = function (format) {
|
|
10713
10717
|
return hasNonNullableKey(format, 'inline');
|
|
10714
10718
|
};
|
|
10719
|
+
var hasBlockChildren = function (dom, elm) {
|
|
10720
|
+
return exists(elm.childNodes, dom.isBlock);
|
|
10721
|
+
};
|
|
10715
10722
|
|
|
10716
10723
|
var isBookmarkNode$2 = isBookmarkNode$1;
|
|
10717
10724
|
var getParents$2 = getParents$1;
|
|
@@ -11441,6 +11448,8 @@
|
|
|
11441
11448
|
SPACEBAR: 32,
|
|
11442
11449
|
TAB: 9,
|
|
11443
11450
|
UP: 38,
|
|
11451
|
+
PAGE_UP: 33,
|
|
11452
|
+
PAGE_DOWN: 34,
|
|
11444
11453
|
END: 35,
|
|
11445
11454
|
HOME: 36,
|
|
11446
11455
|
modifierPressed: function (e) {
|
|
@@ -14020,6 +14029,108 @@
|
|
|
14020
14029
|
return { serialize: serialize };
|
|
14021
14030
|
};
|
|
14022
14031
|
|
|
14032
|
+
var nonInheritableStyles = new Set();
|
|
14033
|
+
(function () {
|
|
14034
|
+
var nonInheritableStylesArr = [
|
|
14035
|
+
'margin',
|
|
14036
|
+
'margin-left',
|
|
14037
|
+
'margin-right',
|
|
14038
|
+
'margin-top',
|
|
14039
|
+
'margin-bottom',
|
|
14040
|
+
'padding',
|
|
14041
|
+
'padding-left',
|
|
14042
|
+
'padding-right',
|
|
14043
|
+
'padding-top',
|
|
14044
|
+
'padding-bottom',
|
|
14045
|
+
'border',
|
|
14046
|
+
'border-width',
|
|
14047
|
+
'border-style',
|
|
14048
|
+
'border-color',
|
|
14049
|
+
'background',
|
|
14050
|
+
'background-attachment',
|
|
14051
|
+
'background-clip',
|
|
14052
|
+
'background-color',
|
|
14053
|
+
'background-image',
|
|
14054
|
+
'background-origin',
|
|
14055
|
+
'background-position',
|
|
14056
|
+
'background-repeat',
|
|
14057
|
+
'background-size',
|
|
14058
|
+
'float',
|
|
14059
|
+
'position',
|
|
14060
|
+
'left',
|
|
14061
|
+
'right',
|
|
14062
|
+
'top',
|
|
14063
|
+
'bottom',
|
|
14064
|
+
'z-index',
|
|
14065
|
+
'display',
|
|
14066
|
+
'transform',
|
|
14067
|
+
'width',
|
|
14068
|
+
'max-width',
|
|
14069
|
+
'min-width',
|
|
14070
|
+
'height',
|
|
14071
|
+
'max-height',
|
|
14072
|
+
'min-height',
|
|
14073
|
+
'overflow',
|
|
14074
|
+
'overflow-x',
|
|
14075
|
+
'overflow-y',
|
|
14076
|
+
'text-overflow',
|
|
14077
|
+
'vertical-align',
|
|
14078
|
+
'transition',
|
|
14079
|
+
'transition-delay',
|
|
14080
|
+
'transition-duration',
|
|
14081
|
+
'transition-property',
|
|
14082
|
+
'transition-timing-function'
|
|
14083
|
+
];
|
|
14084
|
+
each(nonInheritableStylesArr, function (style) {
|
|
14085
|
+
nonInheritableStyles.add(style);
|
|
14086
|
+
});
|
|
14087
|
+
}());
|
|
14088
|
+
var shorthandStyleProps = [
|
|
14089
|
+
'font',
|
|
14090
|
+
'text-decoration',
|
|
14091
|
+
'text-emphasis'
|
|
14092
|
+
];
|
|
14093
|
+
var getStyleProps = function (dom, node) {
|
|
14094
|
+
return keys(dom.parseStyle(dom.getAttrib(node, 'style')));
|
|
14095
|
+
};
|
|
14096
|
+
var isNonInheritableStyle = function (style) {
|
|
14097
|
+
return nonInheritableStyles.has(style);
|
|
14098
|
+
};
|
|
14099
|
+
var hasInheritableStyles = function (dom, node) {
|
|
14100
|
+
return forall(getStyleProps(dom, node), function (style) {
|
|
14101
|
+
return !isNonInheritableStyle(style);
|
|
14102
|
+
});
|
|
14103
|
+
};
|
|
14104
|
+
var getLonghandStyleProps = function (styles) {
|
|
14105
|
+
return filter(styles, function (style) {
|
|
14106
|
+
return exists(shorthandStyleProps, function (prop) {
|
|
14107
|
+
return startsWith(style, prop);
|
|
14108
|
+
});
|
|
14109
|
+
});
|
|
14110
|
+
};
|
|
14111
|
+
var hasStyleConflict = function (dom, node, parentNode) {
|
|
14112
|
+
var nodeStyleProps = getStyleProps(dom, node);
|
|
14113
|
+
var parentNodeStyleProps = getStyleProps(dom, parentNode);
|
|
14114
|
+
var valueMismatch = function (prop) {
|
|
14115
|
+
var nodeValue = dom.getStyle(node, prop);
|
|
14116
|
+
var parentValue = dom.getStyle(parentNode, prop);
|
|
14117
|
+
return isNotEmpty(nodeValue) && isNotEmpty(parentValue) && nodeValue !== parentValue;
|
|
14118
|
+
};
|
|
14119
|
+
return exists(nodeStyleProps, function (nodeStyleProp) {
|
|
14120
|
+
var propExists = function (props) {
|
|
14121
|
+
return exists(props, function (prop) {
|
|
14122
|
+
return prop === nodeStyleProp;
|
|
14123
|
+
});
|
|
14124
|
+
};
|
|
14125
|
+
if (!propExists(parentNodeStyleProps) && propExists(shorthandStyleProps)) {
|
|
14126
|
+
var longhandProps = getLonghandStyleProps(parentNodeStyleProps);
|
|
14127
|
+
return exists(longhandProps, valueMismatch);
|
|
14128
|
+
} else {
|
|
14129
|
+
return valueMismatch(nodeStyleProp);
|
|
14130
|
+
}
|
|
14131
|
+
});
|
|
14132
|
+
};
|
|
14133
|
+
|
|
14023
14134
|
var isChar = function (forward, predicate, pos) {
|
|
14024
14135
|
return Optional.from(pos.container()).filter(isText$1).exists(function (text) {
|
|
14025
14136
|
var delta = forward ? 0 : -1;
|
|
@@ -14949,11 +15060,20 @@
|
|
|
14949
15060
|
var textInlineElements = editor.schema.getTextInlineElements();
|
|
14950
15061
|
var dom = editor.dom;
|
|
14951
15062
|
if (merge) {
|
|
14952
|
-
var root_1 = editor.getBody()
|
|
15063
|
+
var root_1 = editor.getBody();
|
|
15064
|
+
var elementUtils_1 = ElementUtils(dom);
|
|
14953
15065
|
Tools.each(dom.select('*[data-mce-fragment]'), function (node) {
|
|
14954
|
-
|
|
14955
|
-
|
|
14956
|
-
|
|
15066
|
+
var isInline = isNonNullable(textInlineElements[node.nodeName.toLowerCase()]);
|
|
15067
|
+
if (isInline && hasInheritableStyles(dom, node)) {
|
|
15068
|
+
for (var parentNode = node.parentNode; isNonNullable(parentNode) && parentNode !== root_1; parentNode = parentNode.parentNode) {
|
|
15069
|
+
var styleConflict = hasStyleConflict(dom, node, parentNode);
|
|
15070
|
+
if (styleConflict) {
|
|
15071
|
+
break;
|
|
15072
|
+
}
|
|
15073
|
+
if (elementUtils_1.compare(parentNode, node)) {
|
|
15074
|
+
dom.remove(node, true);
|
|
15075
|
+
break;
|
|
15076
|
+
}
|
|
14957
15077
|
}
|
|
14958
15078
|
}
|
|
14959
15079
|
});
|
|
@@ -15404,7 +15524,7 @@
|
|
|
15404
15524
|
if (matchName(ed.dom, node, format) && matchItems(dom, node, format, 'attributes', similar, vars) && matchItems(dom, node, format, 'styles', similar, vars)) {
|
|
15405
15525
|
if (classes = format.classes) {
|
|
15406
15526
|
for (x = 0; x < classes.length; x++) {
|
|
15407
|
-
if (!ed.dom.hasClass(node, classes[x])) {
|
|
15527
|
+
if (!ed.dom.hasClass(node, replaceVars(classes[x], vars))) {
|
|
15408
15528
|
return;
|
|
15409
15529
|
}
|
|
15410
15530
|
}
|
|
@@ -16145,6 +16265,10 @@
|
|
|
16145
16265
|
};
|
|
16146
16266
|
var process = function (node) {
|
|
16147
16267
|
var lastContentEditable, hasContentEditableState;
|
|
16268
|
+
var parentNode = node.parentNode;
|
|
16269
|
+
if (isText$1(node) && hasBlockChildren(dom, parentNode)) {
|
|
16270
|
+
removeFormat(ed, format, vars, parentNode, parentNode);
|
|
16271
|
+
}
|
|
16148
16272
|
if (isElement$1(node) && dom.getContentEditable(node)) {
|
|
16149
16273
|
lastContentEditable = contentEditable;
|
|
16150
16274
|
contentEditable = dom.getContentEditable(node) === 'true';
|
|
@@ -16465,6 +16589,9 @@
|
|
|
16465
16589
|
}
|
|
16466
16590
|
if (isSelectorFormat(format)) {
|
|
16467
16591
|
var found = applyNodeStyle(formatList, node);
|
|
16592
|
+
if (isText$1(node) && hasBlockChildren(dom, node.parentNode)) {
|
|
16593
|
+
applyNodeStyle(formatList, node.parentNode);
|
|
16594
|
+
}
|
|
16468
16595
|
if (!hasFormatProperty(format, 'inline') || found) {
|
|
16469
16596
|
currentWrapElm = null;
|
|
16470
16597
|
return;
|
|
@@ -17638,13 +17765,18 @@
|
|
|
17638
17765
|
var isRtc = function (editor) {
|
|
17639
17766
|
return has(editor.plugins, 'rtc');
|
|
17640
17767
|
};
|
|
17768
|
+
var getRtcSetup = function (editor) {
|
|
17769
|
+
return get$1(editor.plugins, 'rtc').bind(function (rtcPlugin) {
|
|
17770
|
+
return Optional.from(rtcPlugin.setup);
|
|
17771
|
+
});
|
|
17772
|
+
};
|
|
17641
17773
|
var setup$5 = function (editor) {
|
|
17642
17774
|
var editorCast = editor;
|
|
17643
|
-
return
|
|
17775
|
+
return getRtcSetup(editor).fold(function () {
|
|
17644
17776
|
editorCast.rtcInstance = makePlainAdaptor(editor);
|
|
17645
17777
|
return Optional.none();
|
|
17646
|
-
}, function (
|
|
17647
|
-
return Optional.some(
|
|
17778
|
+
}, function (setup) {
|
|
17779
|
+
return Optional.some(setup().then(function (rtcEditor) {
|
|
17648
17780
|
editorCast.rtcInstance = makeRtcAdaptor(rtcEditor);
|
|
17649
17781
|
return rtcEditor.rtc.isRemote;
|
|
17650
17782
|
}, function (err) {
|
|
@@ -20669,7 +20801,7 @@
|
|
|
20669
20801
|
defaultBlock: 'div'
|
|
20670
20802
|
},
|
|
20671
20803
|
{
|
|
20672
|
-
selector: 'img,table',
|
|
20804
|
+
selector: 'img,table,audio,video',
|
|
20673
20805
|
collapsed: false,
|
|
20674
20806
|
styles: { float: 'left' },
|
|
20675
20807
|
preview: 'font-family font-size'
|
|
@@ -20691,7 +20823,7 @@
|
|
|
20691
20823
|
preview: 'font-family font-size'
|
|
20692
20824
|
},
|
|
20693
20825
|
{
|
|
20694
|
-
selector: 'img',
|
|
20826
|
+
selector: 'img,audio,video',
|
|
20695
20827
|
collapsed: false,
|
|
20696
20828
|
styles: {
|
|
20697
20829
|
display: 'block',
|
|
@@ -20726,7 +20858,7 @@
|
|
|
20726
20858
|
defaultBlock: 'div'
|
|
20727
20859
|
},
|
|
20728
20860
|
{
|
|
20729
|
-
selector: 'img,table',
|
|
20861
|
+
selector: 'img,table,audio,video',
|
|
20730
20862
|
collapsed: false,
|
|
20731
20863
|
styles: { float: 'right' },
|
|
20732
20864
|
preview: 'font-family font-size'
|
|
@@ -20881,7 +21013,7 @@
|
|
|
20881
21013
|
},
|
|
20882
21014
|
removeformat: [
|
|
20883
21015
|
{
|
|
20884
|
-
selector: 'b,strong,em,i,font,u,strike,s,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins',
|
|
21016
|
+
selector: 'b,strong,em,i,font,u,strike,s,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins,small',
|
|
20885
21017
|
remove: 'all',
|
|
20886
21018
|
split: true,
|
|
20887
21019
|
expand: false,
|
|
@@ -20911,7 +21043,7 @@
|
|
|
20911
21043
|
}
|
|
20912
21044
|
]
|
|
20913
21045
|
};
|
|
20914
|
-
Tools.each('p h1 h2 h3 h4 h5 h6 div address pre
|
|
21046
|
+
Tools.each('p h1 h2 h3 h4 h5 h6 div address pre dt dd samp'.split(/\s/), function (name) {
|
|
20915
21047
|
formats[name] = {
|
|
20916
21048
|
block: name,
|
|
20917
21049
|
remove: 'all'
|
|
@@ -22330,978 +22462,995 @@
|
|
|
22330
22462
|
}
|
|
22331
22463
|
};
|
|
22332
22464
|
|
|
22333
|
-
var
|
|
22334
|
-
|
|
22335
|
-
|
|
22336
|
-
|
|
22337
|
-
|
|
22465
|
+
var BreakType;
|
|
22466
|
+
(function (BreakType) {
|
|
22467
|
+
BreakType[BreakType['Br'] = 0] = 'Br';
|
|
22468
|
+
BreakType[BreakType['Block'] = 1] = 'Block';
|
|
22469
|
+
BreakType[BreakType['Wrap'] = 2] = 'Wrap';
|
|
22470
|
+
BreakType[BreakType['Eol'] = 3] = 'Eol';
|
|
22471
|
+
}(BreakType || (BreakType = {})));
|
|
22472
|
+
var flip = function (direction, positions) {
|
|
22473
|
+
return direction === HDirection.Backwards ? reverse(positions) : positions;
|
|
22338
22474
|
};
|
|
22339
|
-
var
|
|
22340
|
-
|
|
22341
|
-
|
|
22475
|
+
var walk$3 = function (direction, caretWalker, pos) {
|
|
22476
|
+
return direction === HDirection.Forwards ? caretWalker.next(pos) : caretWalker.prev(pos);
|
|
22477
|
+
};
|
|
22478
|
+
var getBreakType = function (scope, direction, currentPos, nextPos) {
|
|
22479
|
+
if (isBr(nextPos.getNode(direction === HDirection.Forwards))) {
|
|
22480
|
+
return BreakType.Br;
|
|
22481
|
+
} else if (isInSameBlock(currentPos, nextPos) === false) {
|
|
22482
|
+
return BreakType.Block;
|
|
22342
22483
|
} else {
|
|
22343
|
-
|
|
22484
|
+
return BreakType.Wrap;
|
|
22344
22485
|
}
|
|
22345
22486
|
};
|
|
22346
|
-
var
|
|
22347
|
-
|
|
22348
|
-
|
|
22349
|
-
|
|
22350
|
-
|
|
22351
|
-
|
|
22352
|
-
|
|
22353
|
-
|
|
22354
|
-
var from = CaretPosition.fromRangeStart(editor.selection.getRng());
|
|
22355
|
-
var isInlineTarget$1 = curry(isInlineTarget, editor);
|
|
22356
|
-
var location = findLocation(forward, isInlineTarget$1, rootNode, from);
|
|
22357
|
-
return location.bind(function (location) {
|
|
22358
|
-
return renderCaretLocation(editor, caret, location);
|
|
22359
|
-
});
|
|
22360
|
-
};
|
|
22361
|
-
var toggleInlines = function (isInlineTarget, dom, elms) {
|
|
22362
|
-
var inlineBoundaries = map(descendants$1(SugarElement.fromDom(dom.getRoot()), '*[data-mce-selected="inline-boundary"]'), function (e) {
|
|
22363
|
-
return e.dom;
|
|
22364
|
-
});
|
|
22365
|
-
var selectedInlines = filter(inlineBoundaries, isInlineTarget);
|
|
22366
|
-
var targetInlines = filter(elms, isInlineTarget);
|
|
22367
|
-
each(difference(selectedInlines, targetInlines), curry(setSelected, false));
|
|
22368
|
-
each(difference(targetInlines, selectedInlines), curry(setSelected, true));
|
|
22369
|
-
};
|
|
22370
|
-
var safeRemoveCaretContainer = function (editor, caret) {
|
|
22371
|
-
if (editor.selection.isCollapsed() && editor.composing !== true && caret.get()) {
|
|
22372
|
-
var pos = CaretPosition.fromRangeStart(editor.selection.getRng());
|
|
22373
|
-
if (CaretPosition.isTextPosition(pos) && isAtZwsp(pos) === false) {
|
|
22374
|
-
setCaretPosition(editor, removeAndReposition(caret.get(), pos));
|
|
22375
|
-
caret.set(null);
|
|
22487
|
+
var getPositionsUntil = function (predicate, direction, scope, start) {
|
|
22488
|
+
var caretWalker = CaretWalker(scope);
|
|
22489
|
+
var currentPos = start, nextPos;
|
|
22490
|
+
var positions = [];
|
|
22491
|
+
while (currentPos) {
|
|
22492
|
+
nextPos = walk$3(direction, caretWalker, currentPos);
|
|
22493
|
+
if (!nextPos) {
|
|
22494
|
+
break;
|
|
22376
22495
|
}
|
|
22496
|
+
if (isBr(nextPos.getNode(false))) {
|
|
22497
|
+
if (direction === HDirection.Forwards) {
|
|
22498
|
+
return {
|
|
22499
|
+
positions: flip(direction, positions).concat([nextPos]),
|
|
22500
|
+
breakType: BreakType.Br,
|
|
22501
|
+
breakAt: Optional.some(nextPos)
|
|
22502
|
+
};
|
|
22503
|
+
} else {
|
|
22504
|
+
return {
|
|
22505
|
+
positions: flip(direction, positions),
|
|
22506
|
+
breakType: BreakType.Br,
|
|
22507
|
+
breakAt: Optional.some(nextPos)
|
|
22508
|
+
};
|
|
22509
|
+
}
|
|
22510
|
+
}
|
|
22511
|
+
if (!nextPos.isVisible()) {
|
|
22512
|
+
currentPos = nextPos;
|
|
22513
|
+
continue;
|
|
22514
|
+
}
|
|
22515
|
+
if (predicate(currentPos, nextPos)) {
|
|
22516
|
+
var breakType = getBreakType(scope, direction, currentPos, nextPos);
|
|
22517
|
+
return {
|
|
22518
|
+
positions: flip(direction, positions),
|
|
22519
|
+
breakType: breakType,
|
|
22520
|
+
breakAt: Optional.some(nextPos)
|
|
22521
|
+
};
|
|
22522
|
+
}
|
|
22523
|
+
positions.push(nextPos);
|
|
22524
|
+
currentPos = nextPos;
|
|
22377
22525
|
}
|
|
22526
|
+
return {
|
|
22527
|
+
positions: flip(direction, positions),
|
|
22528
|
+
breakType: BreakType.Eol,
|
|
22529
|
+
breakAt: Optional.none()
|
|
22530
|
+
};
|
|
22378
22531
|
};
|
|
22379
|
-
var
|
|
22380
|
-
|
|
22381
|
-
var
|
|
22382
|
-
|
|
22383
|
-
|
|
22384
|
-
readLocation(isInlineTarget, editor.getBody(), pos).bind(function (location) {
|
|
22385
|
-
return renderCaretLocation(editor, caret, location);
|
|
22386
|
-
});
|
|
22387
|
-
});
|
|
22388
|
-
}
|
|
22389
|
-
};
|
|
22390
|
-
var move = function (editor, caret, forward) {
|
|
22391
|
-
return isInlineBoundariesEnabled(editor) ? findLocation$1(editor, caret, forward).isSome() : false;
|
|
22532
|
+
var getAdjacentLinePositions = function (direction, getPositionsUntilBreak, scope, start) {
|
|
22533
|
+
return getPositionsUntilBreak(scope, start).breakAt.map(function (pos) {
|
|
22534
|
+
var positions = getPositionsUntilBreak(scope, pos).positions;
|
|
22535
|
+
return direction === HDirection.Backwards ? positions.concat(pos) : [pos].concat(positions);
|
|
22536
|
+
}).getOr([]);
|
|
22392
22537
|
};
|
|
22393
|
-
var
|
|
22394
|
-
return
|
|
22538
|
+
var findClosestHorizontalPositionFromPoint = function (positions, x) {
|
|
22539
|
+
return foldl(positions, function (acc, newPos) {
|
|
22540
|
+
return acc.fold(function () {
|
|
22541
|
+
return Optional.some(newPos);
|
|
22542
|
+
}, function (lastPos) {
|
|
22543
|
+
return lift2(head(lastPos.getClientRects()), head(newPos.getClientRects()), function (lastRect, newRect) {
|
|
22544
|
+
var lastDist = Math.abs(x - lastRect.left);
|
|
22545
|
+
var newDist = Math.abs(x - newRect.left);
|
|
22546
|
+
return newDist <= lastDist ? newPos : lastPos;
|
|
22547
|
+
}).or(acc);
|
|
22548
|
+
});
|
|
22549
|
+
}, Optional.none());
|
|
22395
22550
|
};
|
|
22396
|
-
var
|
|
22397
|
-
|
|
22398
|
-
|
|
22399
|
-
editor.on('NodeChange', function (e) {
|
|
22400
|
-
if (isInlineBoundariesEnabled(editor) && !(Env.browser.isIE() && e.initial)) {
|
|
22401
|
-
toggleInlines(isInlineTarget$1, editor.dom, e.parents);
|
|
22402
|
-
safeRemoveCaretContainer(editor, caret);
|
|
22403
|
-
renderInsideInlineCaret(isInlineTarget$1, editor, caret, e.parents);
|
|
22404
|
-
}
|
|
22551
|
+
var findClosestHorizontalPosition = function (positions, pos) {
|
|
22552
|
+
return head(pos.getClientRects()).bind(function (targetRect) {
|
|
22553
|
+
return findClosestHorizontalPositionFromPoint(positions, targetRect.left);
|
|
22405
22554
|
});
|
|
22406
|
-
return caret;
|
|
22407
22555
|
};
|
|
22408
|
-
var
|
|
22409
|
-
var
|
|
22410
|
-
|
|
22411
|
-
|
|
22412
|
-
var range = document.createRange();
|
|
22413
|
-
range.setStart(from.container(), from.offset());
|
|
22414
|
-
range.setEnd(to.container(), to.offset());
|
|
22415
|
-
return range;
|
|
22556
|
+
var getPositionsUntilPreviousLine = curry(getPositionsUntil, CaretPosition.isAbove, -1);
|
|
22557
|
+
var getPositionsUntilNextLine = curry(getPositionsUntil, CaretPosition.isBelow, 1);
|
|
22558
|
+
var isAtFirstLine = function (scope, pos) {
|
|
22559
|
+
return getPositionsUntilPreviousLine(scope, pos).breakAt.isNone();
|
|
22416
22560
|
};
|
|
22417
|
-
var
|
|
22418
|
-
return
|
|
22419
|
-
var normalizedFirstPos = normalizePosition(true, firstPos);
|
|
22420
|
-
var normalizedLastPos = normalizePosition(false, lastPos);
|
|
22421
|
-
return nextPosition(elm, normalizedFirstPos).forall(function (pos) {
|
|
22422
|
-
return pos.isEqual(normalizedLastPos);
|
|
22423
|
-
});
|
|
22424
|
-
}).getOr(true);
|
|
22561
|
+
var isAtLastLine = function (scope, pos) {
|
|
22562
|
+
return getPositionsUntilNextLine(scope, pos).breakAt.isNone();
|
|
22425
22563
|
};
|
|
22426
|
-
var
|
|
22427
|
-
|
|
22428
|
-
|
|
22429
|
-
|
|
22430
|
-
|
|
22564
|
+
var getPositionsAbove = curry(getAdjacentLinePositions, -1, getPositionsUntilPreviousLine);
|
|
22565
|
+
var getPositionsBelow = curry(getAdjacentLinePositions, 1, getPositionsUntilNextLine);
|
|
22566
|
+
var getFirstLinePositions = function (scope) {
|
|
22567
|
+
return firstPositionIn(scope).map(function (pos) {
|
|
22568
|
+
return [pos].concat(getPositionsUntilNextLine(scope, pos).positions);
|
|
22569
|
+
}).getOr([]);
|
|
22570
|
+
};
|
|
22571
|
+
var getLastLinePositions = function (scope) {
|
|
22572
|
+
return lastPositionIn(scope).map(function (pos) {
|
|
22573
|
+
return getPositionsUntilPreviousLine(scope, pos).positions.concat(pos);
|
|
22574
|
+
}).getOr([]);
|
|
22575
|
+
};
|
|
22576
|
+
|
|
22577
|
+
var getNodeClientRects = function (node) {
|
|
22578
|
+
var toArrayWithNode = function (clientRects) {
|
|
22579
|
+
return map(clientRects, function (clientRect) {
|
|
22580
|
+
clientRect = clone$2(clientRect);
|
|
22581
|
+
clientRect.node = node;
|
|
22582
|
+
return clientRect;
|
|
22431
22583
|
});
|
|
22432
22584
|
};
|
|
22585
|
+
if (isElement$1(node)) {
|
|
22586
|
+
return toArrayWithNode(node.getClientRects());
|
|
22587
|
+
}
|
|
22588
|
+
if (isText$1(node)) {
|
|
22589
|
+
var rng = node.ownerDocument.createRange();
|
|
22590
|
+
rng.setStart(node, 0);
|
|
22591
|
+
rng.setEnd(node, node.data.length);
|
|
22592
|
+
return toArrayWithNode(rng.getClientRects());
|
|
22593
|
+
}
|
|
22433
22594
|
};
|
|
22434
|
-
var
|
|
22435
|
-
|
|
22436
|
-
var isInlineTarget$1 = curry(isInlineTarget, editor);
|
|
22437
|
-
editor.undoManager.ignore(function () {
|
|
22438
|
-
editor.selection.setRng(rangeFromPositions(from, to));
|
|
22439
|
-
editor.execCommand('Delete');
|
|
22440
|
-
readLocation(isInlineTarget$1, rootNode, CaretPosition.fromRangeStart(editor.selection.getRng())).map(inside).map(setCaretLocation(editor, caret));
|
|
22441
|
-
});
|
|
22442
|
-
editor.nodeChanged();
|
|
22443
|
-
};
|
|
22444
|
-
var rescope$1 = function (rootNode, node) {
|
|
22445
|
-
var parentBlock = getParentBlock(node, rootNode);
|
|
22446
|
-
return parentBlock ? parentBlock : rootNode;
|
|
22595
|
+
var getClientRects = function (nodes) {
|
|
22596
|
+
return bind(nodes, getNodeClientRects);
|
|
22447
22597
|
};
|
|
22448
|
-
|
|
22449
|
-
|
|
22450
|
-
|
|
22451
|
-
|
|
22452
|
-
|
|
22453
|
-
|
|
22454
|
-
|
|
22455
|
-
|
|
22456
|
-
|
|
22598
|
+
|
|
22599
|
+
var VDirection;
|
|
22600
|
+
(function (VDirection) {
|
|
22601
|
+
VDirection[VDirection['Up'] = -1] = 'Up';
|
|
22602
|
+
VDirection[VDirection['Down'] = 1] = 'Down';
|
|
22603
|
+
}(VDirection || (VDirection = {})));
|
|
22604
|
+
var findUntil$1 = function (direction, root, predicateFn, node) {
|
|
22605
|
+
while (node = findNode(node, direction, isEditableCaretCandidate, root)) {
|
|
22606
|
+
if (predicateFn(node)) {
|
|
22607
|
+
return;
|
|
22457
22608
|
}
|
|
22458
|
-
}
|
|
22459
|
-
var toPosition = navigate(forward, rootNode, from);
|
|
22460
|
-
var toLocation = toPosition.bind(function (pos) {
|
|
22461
|
-
return readLocation(isInlineTarget$1, rootNode, pos);
|
|
22462
|
-
});
|
|
22463
|
-
return lift2(fromLocation, toLocation, function () {
|
|
22464
|
-
return findRootInline(isInlineTarget$1, rootNode, from).exists(function (elm) {
|
|
22465
|
-
if (hasOnlyTwoOrLessPositionsLeft(elm)) {
|
|
22466
|
-
deleteElement(editor, forward, SugarElement.fromDom(elm));
|
|
22467
|
-
return true;
|
|
22468
|
-
} else {
|
|
22469
|
-
return false;
|
|
22470
|
-
}
|
|
22471
|
-
});
|
|
22472
|
-
}).orThunk(function () {
|
|
22473
|
-
return toLocation.bind(function (_) {
|
|
22474
|
-
return toPosition.map(function (to) {
|
|
22475
|
-
if (forward) {
|
|
22476
|
-
deleteFromTo(editor, caret, from, to);
|
|
22477
|
-
} else {
|
|
22478
|
-
deleteFromTo(editor, caret, to, from);
|
|
22479
|
-
}
|
|
22480
|
-
return true;
|
|
22481
|
-
});
|
|
22482
|
-
});
|
|
22483
|
-
}).getOr(false);
|
|
22484
|
-
});
|
|
22609
|
+
}
|
|
22485
22610
|
};
|
|
22486
|
-
var
|
|
22487
|
-
|
|
22488
|
-
|
|
22489
|
-
|
|
22611
|
+
var walkUntil = function (direction, isAboveFn, isBeflowFn, root, predicateFn, caretPosition) {
|
|
22612
|
+
var line = 0;
|
|
22613
|
+
var result = [];
|
|
22614
|
+
var add = function (node) {
|
|
22615
|
+
var i, clientRect, clientRects;
|
|
22616
|
+
clientRects = getClientRects([node]);
|
|
22617
|
+
if (direction === -1) {
|
|
22618
|
+
clientRects = clientRects.reverse();
|
|
22619
|
+
}
|
|
22620
|
+
for (i = 0; i < clientRects.length; i++) {
|
|
22621
|
+
clientRect = clientRects[i];
|
|
22622
|
+
if (isBeflowFn(clientRect, targetClientRect)) {
|
|
22623
|
+
continue;
|
|
22624
|
+
}
|
|
22625
|
+
if (result.length > 0 && isAboveFn(clientRect, last$1(result))) {
|
|
22626
|
+
line++;
|
|
22627
|
+
}
|
|
22628
|
+
clientRect.line = line;
|
|
22629
|
+
if (predicateFn(clientRect)) {
|
|
22630
|
+
return true;
|
|
22631
|
+
}
|
|
22632
|
+
result.push(clientRect);
|
|
22633
|
+
}
|
|
22634
|
+
};
|
|
22635
|
+
var targetClientRect = last$1(caretPosition.getClientRects());
|
|
22636
|
+
if (!targetClientRect) {
|
|
22637
|
+
return result;
|
|
22490
22638
|
}
|
|
22491
|
-
|
|
22639
|
+
var node = caretPosition.getNode();
|
|
22640
|
+
add(node);
|
|
22641
|
+
findUntil$1(direction, root, add, node);
|
|
22642
|
+
return result;
|
|
22492
22643
|
};
|
|
22493
|
-
|
|
22494
|
-
|
|
22495
|
-
var parents = parentsAndSelf(startElm, rootElm);
|
|
22496
|
-
return findIndex(parents, isBlock).fold(constant(parents), function (index) {
|
|
22497
|
-
return parents.slice(0, index);
|
|
22498
|
-
});
|
|
22644
|
+
var aboveLineNumber = function (lineNumber, clientRect) {
|
|
22645
|
+
return clientRect.line > lineNumber;
|
|
22499
22646
|
};
|
|
22500
|
-
var
|
|
22501
|
-
return
|
|
22647
|
+
var isLineNumber = function (lineNumber, clientRect) {
|
|
22648
|
+
return clientRect.line === lineNumber;
|
|
22502
22649
|
};
|
|
22503
|
-
var
|
|
22504
|
-
|
|
22505
|
-
|
|
22506
|
-
|
|
22507
|
-
|
|
22508
|
-
|
|
22509
|
-
|
|
22650
|
+
var upUntil = curry(walkUntil, VDirection.Up, isAbove, isBelow);
|
|
22651
|
+
var downUntil = curry(walkUntil, VDirection.Down, isBelow, isAbove);
|
|
22652
|
+
var positionsUntil = function (direction, root, predicateFn, node) {
|
|
22653
|
+
var caretWalker = CaretWalker(root);
|
|
22654
|
+
var walkFn, isBelowFn, isAboveFn, caretPosition;
|
|
22655
|
+
var result = [];
|
|
22656
|
+
var line = 0, clientRect;
|
|
22657
|
+
var getClientRect = function (caretPosition) {
|
|
22658
|
+
if (direction === 1) {
|
|
22659
|
+
return last$1(caretPosition.getClientRects());
|
|
22660
|
+
}
|
|
22661
|
+
return last$1(caretPosition.getClientRects());
|
|
22662
|
+
};
|
|
22663
|
+
if (direction === 1) {
|
|
22664
|
+
walkFn = caretWalker.next;
|
|
22665
|
+
isBelowFn = isBelow;
|
|
22666
|
+
isAboveFn = isAbove;
|
|
22667
|
+
caretPosition = CaretPosition.after(node);
|
|
22510
22668
|
} else {
|
|
22511
|
-
|
|
22512
|
-
|
|
22669
|
+
walkFn = caretWalker.prev;
|
|
22670
|
+
isBelowFn = isAbove;
|
|
22671
|
+
isAboveFn = isBelow;
|
|
22672
|
+
caretPosition = CaretPosition.before(node);
|
|
22513
22673
|
}
|
|
22514
|
-
|
|
22515
|
-
|
|
22516
|
-
|
|
22517
|
-
|
|
22518
|
-
var parentInlines = filter(getParentInlines(rootElm, startElm), hasOnlyOneChild$1);
|
|
22519
|
-
return last(parentInlines).exists(function (target) {
|
|
22520
|
-
var fromPos = CaretPosition.fromRangeStart(editor.selection.getRng());
|
|
22521
|
-
if (willDeleteLastPositionInElement(forward, fromPos, target.dom) && !isEmptyCaretFormatElement(target)) {
|
|
22522
|
-
deleteLastPosition(forward, editor, target, parentInlines);
|
|
22523
|
-
return true;
|
|
22524
|
-
} else {
|
|
22525
|
-
return false;
|
|
22674
|
+
var targetClientRect = getClientRect(caretPosition);
|
|
22675
|
+
do {
|
|
22676
|
+
if (!caretPosition.isVisible()) {
|
|
22677
|
+
continue;
|
|
22526
22678
|
}
|
|
22527
|
-
|
|
22679
|
+
clientRect = getClientRect(caretPosition);
|
|
22680
|
+
if (isAboveFn(clientRect, targetClientRect)) {
|
|
22681
|
+
continue;
|
|
22682
|
+
}
|
|
22683
|
+
if (result.length > 0 && isBelowFn(clientRect, last$1(result))) {
|
|
22684
|
+
line++;
|
|
22685
|
+
}
|
|
22686
|
+
clientRect = clone$2(clientRect);
|
|
22687
|
+
clientRect.position = caretPosition;
|
|
22688
|
+
clientRect.line = line;
|
|
22689
|
+
if (predicateFn(clientRect)) {
|
|
22690
|
+
return result;
|
|
22691
|
+
}
|
|
22692
|
+
result.push(clientRect);
|
|
22693
|
+
} while (caretPosition = walkFn(caretPosition));
|
|
22694
|
+
return result;
|
|
22528
22695
|
};
|
|
22529
|
-
var
|
|
22530
|
-
return
|
|
22696
|
+
var isAboveLine = function (lineNumber) {
|
|
22697
|
+
return function (clientRect) {
|
|
22698
|
+
return aboveLineNumber(lineNumber, clientRect);
|
|
22699
|
+
};
|
|
22700
|
+
};
|
|
22701
|
+
var isLine = function (lineNumber) {
|
|
22702
|
+
return function (clientRect) {
|
|
22703
|
+
return isLineNumber(lineNumber, clientRect);
|
|
22704
|
+
};
|
|
22531
22705
|
};
|
|
22532
22706
|
|
|
22533
|
-
var
|
|
22534
|
-
|
|
22535
|
-
|
|
22536
|
-
return
|
|
22707
|
+
var isContentEditableFalse$8 = isContentEditableFalse;
|
|
22708
|
+
var findNode$1 = findNode;
|
|
22709
|
+
var distanceToRectLeft = function (clientRect, clientX) {
|
|
22710
|
+
return Math.abs(clientRect.left - clientX);
|
|
22537
22711
|
};
|
|
22538
|
-
var
|
|
22539
|
-
|
|
22540
|
-
var direction = forward ? HDirection.Forwards : HDirection.Backwards;
|
|
22541
|
-
var fromPos = getNormalizedRangeEndPoint(direction, editor.getBody(), editor.selection.getRng());
|
|
22542
|
-
if (isNearMedia(fromPos)) {
|
|
22543
|
-
return deleteElement$2(editor, forward, fromPos.getNode(!forward));
|
|
22544
|
-
} else {
|
|
22545
|
-
return Optional.from(normalizePosition(forward, fromPos)).filter(function (pos) {
|
|
22546
|
-
return isNearMedia(pos) && isMoveInsideSameBlock(fromPos, pos);
|
|
22547
|
-
}).exists(function (pos) {
|
|
22548
|
-
return deleteElement$2(editor, forward, pos.getNode(!forward));
|
|
22549
|
-
});
|
|
22550
|
-
}
|
|
22712
|
+
var distanceToRectRight = function (clientRect, clientX) {
|
|
22713
|
+
return Math.abs(clientRect.right - clientX);
|
|
22551
22714
|
};
|
|
22552
|
-
var
|
|
22553
|
-
|
|
22554
|
-
return isMedia(selectedNode) ? deleteElement$2(editor, forward, selectedNode) : false;
|
|
22715
|
+
var isInsideX = function (clientX, clientRect) {
|
|
22716
|
+
return clientX >= clientRect.left && clientX <= clientRect.right;
|
|
22555
22717
|
};
|
|
22556
|
-
var
|
|
22557
|
-
return
|
|
22718
|
+
var isInsideY = function (clientY, clientRect) {
|
|
22719
|
+
return clientY >= clientRect.top && clientY <= clientRect.bottom;
|
|
22558
22720
|
};
|
|
22559
|
-
|
|
22560
|
-
|
|
22561
|
-
|
|
22562
|
-
|
|
22563
|
-
|
|
22564
|
-
|
|
22721
|
+
var findClosestClientRect = function (clientRects, clientX) {
|
|
22722
|
+
return reduce(clientRects, function (oldClientRect, clientRect) {
|
|
22723
|
+
var oldDistance = Math.min(distanceToRectLeft(oldClientRect, clientX), distanceToRectRight(oldClientRect, clientX));
|
|
22724
|
+
var newDistance = Math.min(distanceToRectLeft(clientRect, clientX), distanceToRectRight(clientRect, clientX));
|
|
22725
|
+
if (isInsideX(clientX, clientRect)) {
|
|
22726
|
+
return clientRect;
|
|
22727
|
+
}
|
|
22728
|
+
if (isInsideX(clientX, oldClientRect)) {
|
|
22729
|
+
return oldClientRect;
|
|
22730
|
+
}
|
|
22731
|
+
if (newDistance === oldDistance && isContentEditableFalse$8(clientRect.node)) {
|
|
22732
|
+
return clientRect;
|
|
22733
|
+
}
|
|
22734
|
+
if (newDistance < oldDistance) {
|
|
22735
|
+
return clientRect;
|
|
22736
|
+
}
|
|
22737
|
+
return oldClientRect;
|
|
22565
22738
|
});
|
|
22566
22739
|
};
|
|
22567
|
-
var
|
|
22568
|
-
var
|
|
22569
|
-
|
|
22570
|
-
|
|
22571
|
-
|
|
22572
|
-
|
|
22573
|
-
|
|
22574
|
-
return indentStyleName + suffix;
|
|
22740
|
+
var walkUntil$1 = function (direction, root, predicateFn, startNode, includeChildren) {
|
|
22741
|
+
var node = findNode$1(startNode, direction, isEditableCaretCandidate, root, !includeChildren);
|
|
22742
|
+
do {
|
|
22743
|
+
if (!node || predicateFn(node)) {
|
|
22744
|
+
return;
|
|
22745
|
+
}
|
|
22746
|
+
} while (node = findNode$1(node, direction, isEditableCaretCandidate, root));
|
|
22575
22747
|
};
|
|
22576
|
-
var
|
|
22577
|
-
|
|
22578
|
-
|
|
22579
|
-
var styleValue = Math.max(0, parseIndentValue(element.style[indentStyleName]) - value);
|
|
22580
|
-
dom.setStyle(element, indentStyleName, styleValue ? styleValue + unit : '');
|
|
22581
|
-
} else {
|
|
22582
|
-
var styleValue = parseIndentValue(element.style[indentStyleName]) + value + unit;
|
|
22583
|
-
dom.setStyle(element, indentStyleName, styleValue);
|
|
22748
|
+
var findLineNodeRects = function (root, targetNodeRect, includeChildren) {
|
|
22749
|
+
if (includeChildren === void 0) {
|
|
22750
|
+
includeChildren = true;
|
|
22584
22751
|
}
|
|
22752
|
+
var clientRects = [];
|
|
22753
|
+
var collect = function (checkPosFn, node) {
|
|
22754
|
+
var lineRects = filter(getClientRects([node]), function (clientRect) {
|
|
22755
|
+
return !checkPosFn(clientRect, targetNodeRect);
|
|
22756
|
+
});
|
|
22757
|
+
clientRects = clientRects.concat(lineRects);
|
|
22758
|
+
return lineRects.length === 0;
|
|
22759
|
+
};
|
|
22760
|
+
clientRects.push(targetNodeRect);
|
|
22761
|
+
walkUntil$1(VDirection.Up, root, curry(collect, isAbove), targetNodeRect.node, includeChildren);
|
|
22762
|
+
walkUntil$1(VDirection.Down, root, curry(collect, isBelow), targetNodeRect.node, includeChildren);
|
|
22763
|
+
return clientRects;
|
|
22585
22764
|
};
|
|
22586
|
-
var
|
|
22587
|
-
return
|
|
22588
|
-
var indentStyleName = getIndentStyleName(shouldIndentUseMargin(editor), block);
|
|
22589
|
-
var intentValue = getRaw(block, indentStyleName).map(parseIndentValue).getOr(0);
|
|
22590
|
-
var contentEditable = editor.dom.getContentEditable(block.dom);
|
|
22591
|
-
return contentEditable !== 'false' && intentValue > 0;
|
|
22592
|
-
});
|
|
22765
|
+
var getFakeCaretTargets = function (root) {
|
|
22766
|
+
return filter(from$1(root.getElementsByTagName('*')), isFakeCaretTarget);
|
|
22593
22767
|
};
|
|
22594
|
-
var
|
|
22595
|
-
|
|
22596
|
-
|
|
22768
|
+
var caretInfo = function (clientRect, clientX) {
|
|
22769
|
+
return {
|
|
22770
|
+
node: clientRect.node,
|
|
22771
|
+
before: distanceToRectLeft(clientRect, clientX) < distanceToRectRight(clientRect, clientX)
|
|
22772
|
+
};
|
|
22597
22773
|
};
|
|
22598
|
-
var
|
|
22599
|
-
|
|
22774
|
+
var closestFakeCaret = function (root, clientX, clientY) {
|
|
22775
|
+
var fakeTargetNodeRects = getClientRects(getFakeCaretTargets(root));
|
|
22776
|
+
var targetNodeRects = filter(fakeTargetNodeRects, curry(isInsideY, clientY));
|
|
22777
|
+
var closestNodeRect = findClosestClientRect(targetNodeRects, clientX);
|
|
22778
|
+
if (closestNodeRect) {
|
|
22779
|
+
var includeChildren = !isTable(closestNodeRect.node) && !isMedia(closestNodeRect.node);
|
|
22780
|
+
closestNodeRect = findClosestClientRect(findLineNodeRects(root, closestNodeRect, includeChildren), clientX);
|
|
22781
|
+
if (closestNodeRect && isFakeCaretTarget(closestNodeRect.node)) {
|
|
22782
|
+
return caretInfo(closestNodeRect, clientX);
|
|
22783
|
+
}
|
|
22784
|
+
}
|
|
22785
|
+
return null;
|
|
22600
22786
|
};
|
|
22601
|
-
|
|
22602
|
-
|
|
22787
|
+
|
|
22788
|
+
var moveToRange = function (editor, rng) {
|
|
22789
|
+
editor.selection.setRng(rng);
|
|
22790
|
+
scrollRangeIntoView(editor, editor.selection.getRng());
|
|
22603
22791
|
};
|
|
22604
|
-
var
|
|
22605
|
-
return
|
|
22606
|
-
return !isListComponent(el) && !parentIsListComponent(el) && isEditable$1(el);
|
|
22607
|
-
});
|
|
22792
|
+
var renderRangeCaretOpt = function (editor, range, scrollIntoView) {
|
|
22793
|
+
return Optional.some(renderRangeCaret(editor, range, scrollIntoView));
|
|
22608
22794
|
};
|
|
22609
|
-
var
|
|
22610
|
-
var
|
|
22611
|
-
var
|
|
22612
|
-
var
|
|
22613
|
-
var
|
|
22614
|
-
|
|
22615
|
-
|
|
22616
|
-
|
|
22617
|
-
|
|
22618
|
-
formatter.apply('div');
|
|
22795
|
+
var moveHorizontally = function (editor, direction, range, isBefore, isAfter, isElement) {
|
|
22796
|
+
var forwards = direction === HDirection.Forwards;
|
|
22797
|
+
var caretWalker = CaretWalker(editor.getBody());
|
|
22798
|
+
var getNextPosFn = curry(getVisualCaretPosition, forwards ? caretWalker.next : caretWalker.prev);
|
|
22799
|
+
var isBeforeFn = forwards ? isBefore : isAfter;
|
|
22800
|
+
if (!range.collapsed) {
|
|
22801
|
+
var node = getSelectedNode(range);
|
|
22802
|
+
if (isElement(node)) {
|
|
22803
|
+
return showCaret(direction, editor, node, direction === HDirection.Backwards, false);
|
|
22619
22804
|
}
|
|
22620
22805
|
}
|
|
22621
|
-
|
|
22622
|
-
|
|
22623
|
-
|
|
22624
|
-
|
|
22625
|
-
|
|
22626
|
-
|
|
22627
|
-
if (
|
|
22628
|
-
|
|
22629
|
-
|
|
22630
|
-
|
|
22631
|
-
|
|
22632
|
-
|
|
22633
|
-
|
|
22634
|
-
|
|
22806
|
+
var caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);
|
|
22807
|
+
if (isBeforeFn(caretPosition)) {
|
|
22808
|
+
return selectNode(editor, caretPosition.getNode(!forwards));
|
|
22809
|
+
}
|
|
22810
|
+
var nextCaretPosition = normalizePosition(forwards, getNextPosFn(caretPosition));
|
|
22811
|
+
var rangeIsInContainerBlock = isRangeInCaretContainerBlock(range);
|
|
22812
|
+
if (!nextCaretPosition) {
|
|
22813
|
+
return rangeIsInContainerBlock ? Optional.some(range) : Optional.none();
|
|
22814
|
+
}
|
|
22815
|
+
if (isBeforeFn(nextCaretPosition)) {
|
|
22816
|
+
return showCaret(direction, editor, nextCaretPosition.getNode(!forwards), forwards, false);
|
|
22817
|
+
}
|
|
22818
|
+
var peekCaretPosition = getNextPosFn(nextCaretPosition);
|
|
22819
|
+
if (peekCaretPosition && isBeforeFn(peekCaretPosition)) {
|
|
22820
|
+
if (isMoveInsideSameBlock(nextCaretPosition, peekCaretPosition)) {
|
|
22821
|
+
return showCaret(direction, editor, peekCaretPosition.getNode(!forwards), forwards, false);
|
|
22635
22822
|
}
|
|
22636
22823
|
}
|
|
22637
|
-
|
|
22824
|
+
if (rangeIsInContainerBlock) {
|
|
22825
|
+
return renderRangeCaretOpt(editor, nextCaretPosition.toRange(), false);
|
|
22826
|
+
}
|
|
22827
|
+
return Optional.none();
|
|
22638
22828
|
};
|
|
22639
|
-
|
|
22640
|
-
|
|
22641
|
-
|
|
22829
|
+
var moveVertically = function (editor, direction, range, isBefore, isAfter, isElement) {
|
|
22830
|
+
var caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);
|
|
22831
|
+
var caretClientRect = last$1(caretPosition.getClientRects());
|
|
22832
|
+
var forwards = direction === VDirection.Down;
|
|
22833
|
+
if (!caretClientRect) {
|
|
22834
|
+
return Optional.none();
|
|
22835
|
+
}
|
|
22836
|
+
var walkerFn = forwards ? downUntil : upUntil;
|
|
22837
|
+
var linePositions = walkerFn(editor.getBody(), isAboveLine(1), caretPosition);
|
|
22838
|
+
var nextLinePositions = filter(linePositions, isLine(1));
|
|
22839
|
+
var clientX = caretClientRect.left;
|
|
22840
|
+
var nextLineRect = findClosestClientRect(nextLinePositions, clientX);
|
|
22841
|
+
if (nextLineRect && isElement(nextLineRect.node)) {
|
|
22842
|
+
var dist1 = Math.abs(clientX - nextLineRect.left);
|
|
22843
|
+
var dist2 = Math.abs(clientX - nextLineRect.right);
|
|
22844
|
+
return showCaret(direction, editor, nextLineRect.node, dist1 < dist2, false);
|
|
22845
|
+
}
|
|
22846
|
+
var currentNode;
|
|
22847
|
+
if (isBefore(caretPosition)) {
|
|
22848
|
+
currentNode = caretPosition.getNode();
|
|
22849
|
+
} else if (isAfter(caretPosition)) {
|
|
22850
|
+
currentNode = caretPosition.getNode(true);
|
|
22851
|
+
} else {
|
|
22852
|
+
currentNode = getSelectedNode(range);
|
|
22853
|
+
}
|
|
22854
|
+
if (currentNode) {
|
|
22855
|
+
var caretPositions = positionsUntil(direction, editor.getBody(), isAboveLine(1), currentNode);
|
|
22856
|
+
var closestNextLineRect = findClosestClientRect(filter(caretPositions, isLine(1)), clientX);
|
|
22857
|
+
if (closestNextLineRect) {
|
|
22858
|
+
return renderRangeCaretOpt(editor, closestNextLineRect.position.toRange(), false);
|
|
22859
|
+
}
|
|
22860
|
+
closestNextLineRect = last$1(filter(caretPositions, isLine(0)));
|
|
22861
|
+
if (closestNextLineRect) {
|
|
22862
|
+
return renderRangeCaretOpt(editor, closestNextLineRect.position.toRange(), false);
|
|
22863
|
+
}
|
|
22864
|
+
}
|
|
22865
|
+
if (nextLinePositions.length === 0) {
|
|
22866
|
+
return getLineEndPoint(editor, forwards).filter(forwards ? isAfter : isBefore).map(function (pos) {
|
|
22867
|
+
return renderRangeCaret(editor, pos.toRange(), false);
|
|
22868
|
+
});
|
|
22869
|
+
}
|
|
22870
|
+
return Optional.none();
|
|
22642
22871
|
};
|
|
22643
|
-
var
|
|
22644
|
-
|
|
22645
|
-
|
|
22646
|
-
|
|
22647
|
-
|
|
22648
|
-
|
|
22649
|
-
return;
|
|
22650
|
-
} else if (backspaceDelete$6(editor, caret, false)) {
|
|
22651
|
-
return;
|
|
22652
|
-
} else if (backspaceDelete$1(editor, false)) {
|
|
22653
|
-
return;
|
|
22654
|
-
} else if (backspaceDelete(editor)) {
|
|
22655
|
-
return;
|
|
22656
|
-
} else if (backspaceDelete$5(editor, false)) {
|
|
22657
|
-
return;
|
|
22658
|
-
} else if (backspaceDelete$8(editor, false)) {
|
|
22659
|
-
return;
|
|
22660
|
-
} else if (backspaceDelete$2(editor)) {
|
|
22661
|
-
return;
|
|
22662
|
-
} else if (backspaceDelete$7(editor, false)) {
|
|
22663
|
-
return;
|
|
22872
|
+
var getLineEndPoint = function (editor, forward) {
|
|
22873
|
+
var rng = editor.selection.getRng();
|
|
22874
|
+
var body = editor.getBody();
|
|
22875
|
+
if (forward) {
|
|
22876
|
+
var from = CaretPosition.fromRangeEnd(rng);
|
|
22877
|
+
var result = getPositionsUntilNextLine(body, from);
|
|
22878
|
+
return last(result.positions);
|
|
22664
22879
|
} else {
|
|
22665
|
-
|
|
22666
|
-
|
|
22880
|
+
var from = CaretPosition.fromRangeStart(rng);
|
|
22881
|
+
var result = getPositionsUntilPreviousLine(body, from);
|
|
22882
|
+
return head(result.positions);
|
|
22667
22883
|
}
|
|
22668
22884
|
};
|
|
22669
|
-
var
|
|
22670
|
-
|
|
22671
|
-
|
|
22672
|
-
|
|
22673
|
-
|
|
22674
|
-
|
|
22675
|
-
|
|
22676
|
-
|
|
22677
|
-
|
|
22678
|
-
|
|
22679
|
-
|
|
22680
|
-
|
|
22681
|
-
|
|
22682
|
-
|
|
22683
|
-
|
|
22684
|
-
|
|
22685
|
-
return;
|
|
22686
|
-
} else if (backspaceDelete$7(editor, true)) {
|
|
22687
|
-
return;
|
|
22885
|
+
var moveToLineEndPoint = function (editor, forward, isElementPosition) {
|
|
22886
|
+
return getLineEndPoint(editor, forward).filter(isElementPosition).exists(function (pos) {
|
|
22887
|
+
editor.selection.setRng(pos.toRange());
|
|
22888
|
+
return true;
|
|
22889
|
+
});
|
|
22890
|
+
};
|
|
22891
|
+
|
|
22892
|
+
var setCaretPosition = function (editor, pos) {
|
|
22893
|
+
var rng = editor.dom.createRng();
|
|
22894
|
+
rng.setStart(pos.container(), pos.offset());
|
|
22895
|
+
rng.setEnd(pos.container(), pos.offset());
|
|
22896
|
+
editor.selection.setRng(rng);
|
|
22897
|
+
};
|
|
22898
|
+
var setSelected = function (state, elm) {
|
|
22899
|
+
if (state) {
|
|
22900
|
+
elm.setAttribute('data-mce-selected', 'inline-boundary');
|
|
22688
22901
|
} else {
|
|
22689
|
-
|
|
22902
|
+
elm.removeAttribute('data-mce-selected');
|
|
22690
22903
|
}
|
|
22691
22904
|
};
|
|
22692
|
-
var
|
|
22693
|
-
|
|
22694
|
-
|
|
22905
|
+
var renderCaretLocation = function (editor, caret, location) {
|
|
22906
|
+
return renderCaret(caret, location).map(function (pos) {
|
|
22907
|
+
setCaretPosition(editor, pos);
|
|
22908
|
+
return location;
|
|
22695
22909
|
});
|
|
22696
|
-
|
|
22697
|
-
|
|
22910
|
+
};
|
|
22911
|
+
var findLocation$1 = function (editor, caret, forward) {
|
|
22912
|
+
var rootNode = editor.getBody();
|
|
22913
|
+
var from = CaretPosition.fromRangeStart(editor.selection.getRng());
|
|
22914
|
+
var isInlineTarget$1 = curry(isInlineTarget, editor);
|
|
22915
|
+
var location = findLocation(forward, isInlineTarget$1, rootNode, from);
|
|
22916
|
+
return location.bind(function (location) {
|
|
22917
|
+
return renderCaretLocation(editor, caret, location);
|
|
22698
22918
|
});
|
|
22699
22919
|
};
|
|
22700
|
-
|
|
22701
|
-
|
|
22702
|
-
|
|
22703
|
-
|
|
22704
|
-
|
|
22705
|
-
|
|
22706
|
-
|
|
22707
|
-
|
|
22920
|
+
var toggleInlines = function (isInlineTarget, dom, elms) {
|
|
22921
|
+
var inlineBoundaries = map(descendants$1(SugarElement.fromDom(dom.getRoot()), '*[data-mce-selected="inline-boundary"]'), function (e) {
|
|
22922
|
+
return e.dom;
|
|
22923
|
+
});
|
|
22924
|
+
var selectedInlines = filter(inlineBoundaries, isInlineTarget);
|
|
22925
|
+
var targetInlines = filter(elms, isInlineTarget);
|
|
22926
|
+
each(difference(selectedInlines, targetInlines), curry(setSelected, false));
|
|
22927
|
+
each(difference(targetInlines, selectedInlines), curry(setSelected, true));
|
|
22708
22928
|
};
|
|
22709
|
-
var
|
|
22710
|
-
|
|
22711
|
-
|
|
22712
|
-
|
|
22929
|
+
var safeRemoveCaretContainer = function (editor, caret) {
|
|
22930
|
+
if (editor.selection.isCollapsed() && editor.composing !== true && caret.get()) {
|
|
22931
|
+
var pos = CaretPosition.fromRangeStart(editor.selection.getRng());
|
|
22932
|
+
if (CaretPosition.isTextPosition(pos) && isAtZwsp(pos) === false) {
|
|
22933
|
+
setCaretPosition(editor, removeAndReposition(caret.get(), pos));
|
|
22934
|
+
caret.set(null);
|
|
22935
|
+
}
|
|
22936
|
+
}
|
|
22713
22937
|
};
|
|
22714
|
-
var
|
|
22715
|
-
|
|
22716
|
-
|
|
22717
|
-
|
|
22718
|
-
|
|
22719
|
-
|
|
22720
|
-
|
|
22721
|
-
editor.on('touchstart', function (e) {
|
|
22722
|
-
getTouch(e).each(function (touch) {
|
|
22723
|
-
debounceLongpress.cancel();
|
|
22724
|
-
var data = {
|
|
22725
|
-
x: touch.clientX,
|
|
22726
|
-
y: touch.clientY,
|
|
22727
|
-
target: e.target
|
|
22728
|
-
};
|
|
22729
|
-
debounceLongpress.throttle(e);
|
|
22730
|
-
longpressFired.set(false);
|
|
22731
|
-
startData.set(Optional.some(data));
|
|
22732
|
-
});
|
|
22733
|
-
}, true);
|
|
22734
|
-
editor.on('touchmove', function (e) {
|
|
22735
|
-
debounceLongpress.cancel();
|
|
22736
|
-
getTouch(e).each(function (touch) {
|
|
22737
|
-
startData.get().each(function (data) {
|
|
22738
|
-
if (isFarEnough(touch, data)) {
|
|
22739
|
-
startData.set(Optional.none());
|
|
22740
|
-
longpressFired.set(false);
|
|
22741
|
-
editor.fire('longpresscancel');
|
|
22742
|
-
}
|
|
22938
|
+
var renderInsideInlineCaret = function (isInlineTarget, editor, caret, elms) {
|
|
22939
|
+
if (editor.selection.isCollapsed()) {
|
|
22940
|
+
var inlines = filter(elms, isInlineTarget);
|
|
22941
|
+
each(inlines, function (_inline) {
|
|
22942
|
+
var pos = CaretPosition.fromRangeStart(editor.selection.getRng());
|
|
22943
|
+
readLocation(isInlineTarget, editor.getBody(), pos).bind(function (location) {
|
|
22944
|
+
return renderCaretLocation(editor, caret, location);
|
|
22743
22945
|
});
|
|
22744
22946
|
});
|
|
22745
|
-
}
|
|
22746
|
-
editor.on('touchend touchcancel', function (e) {
|
|
22747
|
-
debounceLongpress.cancel();
|
|
22748
|
-
if (e.type === 'touchcancel') {
|
|
22749
|
-
return;
|
|
22750
|
-
}
|
|
22751
|
-
startData.get().filter(function (data) {
|
|
22752
|
-
return data.target.isEqualNode(e.target);
|
|
22753
|
-
}).each(function () {
|
|
22754
|
-
if (longpressFired.get()) {
|
|
22755
|
-
e.preventDefault();
|
|
22756
|
-
} else {
|
|
22757
|
-
editor.fire('tap', __assign(__assign({}, e), { type: 'tap' }));
|
|
22758
|
-
}
|
|
22759
|
-
});
|
|
22760
|
-
}, true);
|
|
22947
|
+
}
|
|
22761
22948
|
};
|
|
22762
|
-
|
|
22763
|
-
|
|
22764
|
-
return blockElements.hasOwnProperty(node.nodeName);
|
|
22949
|
+
var move = function (editor, caret, forward) {
|
|
22950
|
+
return isInlineBoundariesEnabled(editor) ? findLocation$1(editor, caret, forward).isSome() : false;
|
|
22765
22951
|
};
|
|
22766
|
-
var
|
|
22767
|
-
|
|
22768
|
-
|
|
22769
|
-
|
|
22770
|
-
|
|
22952
|
+
var moveWord = function (forward, editor, _caret) {
|
|
22953
|
+
return isInlineBoundariesEnabled(editor) ? moveByWord(forward, editor) : false;
|
|
22954
|
+
};
|
|
22955
|
+
var setupSelectedState = function (editor) {
|
|
22956
|
+
var caret = Cell(null);
|
|
22957
|
+
var isInlineTarget$1 = curry(isInlineTarget, editor);
|
|
22958
|
+
editor.on('NodeChange', function (e) {
|
|
22959
|
+
if (isInlineBoundariesEnabled(editor) && !(Env.browser.isIE() && e.initial)) {
|
|
22960
|
+
toggleInlines(isInlineTarget$1, editor.dom, e.parents);
|
|
22961
|
+
safeRemoveCaretContainer(editor, caret);
|
|
22962
|
+
renderInsideInlineCaret(isInlineTarget$1, editor, caret, e.parents);
|
|
22963
|
+
}
|
|
22964
|
+
});
|
|
22965
|
+
return caret;
|
|
22966
|
+
};
|
|
22967
|
+
var moveNextWord = curry(moveWord, true);
|
|
22968
|
+
var movePrevWord = curry(moveWord, false);
|
|
22969
|
+
var moveToLineEndPoint$1 = function (editor, forward, caret) {
|
|
22970
|
+
if (isInlineBoundariesEnabled(editor)) {
|
|
22971
|
+
var linePoint = getLineEndPoint(editor, forward).getOrThunk(function () {
|
|
22972
|
+
var rng = editor.selection.getRng();
|
|
22973
|
+
return forward ? CaretPosition.fromRangeEnd(rng) : CaretPosition.fromRangeStart(rng);
|
|
22974
|
+
});
|
|
22975
|
+
return readLocation(curry(isInlineTarget, editor), editor.getBody(), linePoint).exists(function (loc) {
|
|
22976
|
+
var outsideLoc = outside(loc);
|
|
22977
|
+
return renderCaret(caret, outsideLoc).exists(function (pos) {
|
|
22978
|
+
setCaretPosition(editor, pos);
|
|
22979
|
+
return true;
|
|
22980
|
+
});
|
|
22981
|
+
});
|
|
22771
22982
|
} else {
|
|
22772
22983
|
return false;
|
|
22773
22984
|
}
|
|
22774
22985
|
};
|
|
22775
|
-
|
|
22776
|
-
|
|
22777
|
-
|
|
22778
|
-
|
|
22986
|
+
|
|
22987
|
+
var rangeFromPositions = function (from, to) {
|
|
22988
|
+
var range = document.createRange();
|
|
22989
|
+
range.setStart(from.container(), from.offset());
|
|
22990
|
+
range.setEnd(to.container(), to.offset());
|
|
22991
|
+
return range;
|
|
22779
22992
|
};
|
|
22780
|
-
var
|
|
22781
|
-
|
|
22782
|
-
|
|
22783
|
-
|
|
22784
|
-
|
|
22993
|
+
var hasOnlyTwoOrLessPositionsLeft = function (elm) {
|
|
22994
|
+
return lift2(firstPositionIn(elm), lastPositionIn(elm), function (firstPos, lastPos) {
|
|
22995
|
+
var normalizedFirstPos = normalizePosition(true, firstPos);
|
|
22996
|
+
var normalizedLastPos = normalizePosition(false, lastPos);
|
|
22997
|
+
return nextPosition(elm, normalizedFirstPos).forall(function (pos) {
|
|
22998
|
+
return pos.isEqual(normalizedLastPos);
|
|
22999
|
+
});
|
|
23000
|
+
}).getOr(true);
|
|
23001
|
+
};
|
|
23002
|
+
var setCaretLocation = function (editor, caret) {
|
|
23003
|
+
return function (location) {
|
|
23004
|
+
return renderCaret(caret, location).exists(function (pos) {
|
|
23005
|
+
setCaretPosition(editor, pos);
|
|
22785
23006
|
return true;
|
|
22786
|
-
}
|
|
22787
|
-
}
|
|
22788
|
-
return false;
|
|
23007
|
+
});
|
|
23008
|
+
};
|
|
22789
23009
|
};
|
|
22790
|
-
var
|
|
22791
|
-
var dom = editor.dom, selection = editor.selection;
|
|
22792
|
-
var schema = editor.schema, blockElements = schema.getBlockElements();
|
|
22793
|
-
var node = selection.getStart();
|
|
23010
|
+
var deleteFromTo = function (editor, caret, from, to) {
|
|
22794
23011
|
var rootNode = editor.getBody();
|
|
22795
|
-
var
|
|
22796
|
-
|
|
22797
|
-
|
|
22798
|
-
|
|
22799
|
-
|
|
22800
|
-
|
|
22801
|
-
|
|
22802
|
-
|
|
22803
|
-
|
|
22804
|
-
var
|
|
22805
|
-
|
|
22806
|
-
|
|
22807
|
-
|
|
22808
|
-
var
|
|
22809
|
-
var
|
|
22810
|
-
|
|
22811
|
-
|
|
22812
|
-
if (
|
|
22813
|
-
|
|
22814
|
-
tempNode = node;
|
|
22815
|
-
node = node.nextSibling;
|
|
22816
|
-
dom.remove(tempNode);
|
|
22817
|
-
continue;
|
|
22818
|
-
}
|
|
22819
|
-
if (!rootBlockNode) {
|
|
22820
|
-
rootBlockNode = dom.create(forcedRootBlock, getForcedRootBlockAttrs(editor));
|
|
22821
|
-
node.parentNode.insertBefore(rootBlockNode, node);
|
|
22822
|
-
wrapped = true;
|
|
22823
|
-
}
|
|
22824
|
-
tempNode = node;
|
|
22825
|
-
node = node.nextSibling;
|
|
22826
|
-
rootBlockNode.appendChild(tempNode);
|
|
23012
|
+
var isInlineTarget$1 = curry(isInlineTarget, editor);
|
|
23013
|
+
editor.undoManager.ignore(function () {
|
|
23014
|
+
editor.selection.setRng(rangeFromPositions(from, to));
|
|
23015
|
+
editor.execCommand('Delete');
|
|
23016
|
+
readLocation(isInlineTarget$1, rootNode, CaretPosition.fromRangeStart(editor.selection.getRng())).map(inside).map(setCaretLocation(editor, caret));
|
|
23017
|
+
});
|
|
23018
|
+
editor.nodeChanged();
|
|
23019
|
+
};
|
|
23020
|
+
var rescope$1 = function (rootNode, node) {
|
|
23021
|
+
var parentBlock = getParentBlock(node, rootNode);
|
|
23022
|
+
return parentBlock ? parentBlock : rootNode;
|
|
23023
|
+
};
|
|
23024
|
+
var backspaceDeleteCollapsed = function (editor, caret, forward, from) {
|
|
23025
|
+
var rootNode = rescope$1(editor.getBody(), from.container());
|
|
23026
|
+
var isInlineTarget$1 = curry(isInlineTarget, editor);
|
|
23027
|
+
var fromLocation = readLocation(isInlineTarget$1, rootNode, from);
|
|
23028
|
+
return fromLocation.bind(function (location) {
|
|
23029
|
+
if (forward) {
|
|
23030
|
+
return location.fold(constant(Optional.some(inside(location))), Optional.none, constant(Optional.some(outside(location))), Optional.none);
|
|
22827
23031
|
} else {
|
|
22828
|
-
|
|
22829
|
-
node = node.nextSibling;
|
|
23032
|
+
return location.fold(Optional.none, constant(Optional.some(outside(location))), Optional.none, constant(Optional.some(inside(location))));
|
|
22830
23033
|
}
|
|
22831
|
-
}
|
|
22832
|
-
|
|
22833
|
-
|
|
22834
|
-
|
|
22835
|
-
|
|
22836
|
-
|
|
22837
|
-
|
|
23034
|
+
}).map(setCaretLocation(editor, caret)).getOrThunk(function () {
|
|
23035
|
+
var toPosition = navigate(forward, rootNode, from);
|
|
23036
|
+
var toLocation = toPosition.bind(function (pos) {
|
|
23037
|
+
return readLocation(isInlineTarget$1, rootNode, pos);
|
|
23038
|
+
});
|
|
23039
|
+
return lift2(fromLocation, toLocation, function () {
|
|
23040
|
+
return findRootInline(isInlineTarget$1, rootNode, from).exists(function (elm) {
|
|
23041
|
+
if (hasOnlyTwoOrLessPositionsLeft(elm)) {
|
|
23042
|
+
deleteElement(editor, forward, SugarElement.fromDom(elm));
|
|
23043
|
+
return true;
|
|
23044
|
+
} else {
|
|
23045
|
+
return false;
|
|
23046
|
+
}
|
|
23047
|
+
});
|
|
23048
|
+
}).orThunk(function () {
|
|
23049
|
+
return toLocation.bind(function (_) {
|
|
23050
|
+
return toPosition.map(function (to) {
|
|
23051
|
+
if (forward) {
|
|
23052
|
+
deleteFromTo(editor, caret, from, to);
|
|
23053
|
+
} else {
|
|
23054
|
+
deleteFromTo(editor, caret, to, from);
|
|
23055
|
+
}
|
|
23056
|
+
return true;
|
|
23057
|
+
});
|
|
23058
|
+
});
|
|
23059
|
+
}).getOr(false);
|
|
23060
|
+
});
|
|
22838
23061
|
};
|
|
22839
|
-
var
|
|
22840
|
-
if (
|
|
22841
|
-
editor.
|
|
23062
|
+
var backspaceDelete$6 = function (editor, caret, forward) {
|
|
23063
|
+
if (editor.selection.isCollapsed() && isInlineBoundariesEnabled(editor)) {
|
|
23064
|
+
var from = CaretPosition.fromRangeStart(editor.selection.getRng());
|
|
23065
|
+
return backspaceDeleteCollapsed(editor, caret, forward, from);
|
|
22842
23066
|
}
|
|
23067
|
+
return false;
|
|
22843
23068
|
};
|
|
22844
23069
|
|
|
22845
|
-
var
|
|
22846
|
-
|
|
22847
|
-
|
|
23070
|
+
var getParentInlines = function (rootElm, startElm) {
|
|
23071
|
+
var parents = parentsAndSelf(startElm, rootElm);
|
|
23072
|
+
return findIndex(parents, isBlock).fold(constant(parents), function (index) {
|
|
23073
|
+
return parents.slice(0, index);
|
|
22848
23074
|
});
|
|
22849
23075
|
};
|
|
22850
|
-
var
|
|
22851
|
-
|
|
23076
|
+
var hasOnlyOneChild$1 = function (elm) {
|
|
23077
|
+
return children(elm).length === 1;
|
|
22852
23078
|
};
|
|
22853
|
-
var
|
|
22854
|
-
|
|
22855
|
-
|
|
22856
|
-
|
|
22857
|
-
|
|
23079
|
+
var deleteLastPosition = function (forward, editor, target, parentInlines) {
|
|
23080
|
+
var isFormatElement$1 = curry(isFormatElement, editor);
|
|
23081
|
+
var formatNodes = map(filter(parentInlines, isFormatElement$1), function (elm) {
|
|
23082
|
+
return elm.dom;
|
|
23083
|
+
});
|
|
23084
|
+
if (formatNodes.length === 0) {
|
|
23085
|
+
deleteElement(editor, forward, target);
|
|
23086
|
+
} else {
|
|
23087
|
+
var pos = replaceWithCaretFormat(target.dom, formatNodes);
|
|
23088
|
+
editor.selection.setRng(pos.toRange());
|
|
22858
23089
|
}
|
|
22859
23090
|
};
|
|
22860
|
-
var
|
|
22861
|
-
var
|
|
22862
|
-
|
|
22863
|
-
|
|
22864
|
-
|
|
22865
|
-
|
|
22866
|
-
|
|
22867
|
-
|
|
22868
|
-
|
|
22869
|
-
|
|
22870
|
-
|
|
22871
|
-
|
|
22872
|
-
|
|
22873
|
-
editor.undoManager.add();
|
|
22874
|
-
}
|
|
23091
|
+
var deleteCaret$2 = function (editor, forward) {
|
|
23092
|
+
var rootElm = SugarElement.fromDom(editor.getBody());
|
|
23093
|
+
var startElm = SugarElement.fromDom(editor.selection.getStart());
|
|
23094
|
+
var parentInlines = filter(getParentInlines(rootElm, startElm), hasOnlyOneChild$1);
|
|
23095
|
+
return last(parentInlines).exists(function (target) {
|
|
23096
|
+
var fromPos = CaretPosition.fromRangeStart(editor.selection.getRng());
|
|
23097
|
+
if (willDeleteLastPositionInElement(forward, fromPos, target.dom) && !isEmptyCaretFormatElement(target)) {
|
|
23098
|
+
deleteLastPosition(forward, editor, target, parentInlines);
|
|
23099
|
+
return true;
|
|
23100
|
+
} else {
|
|
23101
|
+
return false;
|
|
23102
|
+
}
|
|
23103
|
+
});
|
|
22875
23104
|
};
|
|
22876
|
-
var
|
|
22877
|
-
editor.
|
|
23105
|
+
var backspaceDelete$7 = function (editor, forward) {
|
|
23106
|
+
return editor.selection.isCollapsed() ? deleteCaret$2(editor, forward) : false;
|
|
22878
23107
|
};
|
|
22879
23108
|
|
|
22880
|
-
var
|
|
22881
|
-
|
|
22882
|
-
|
|
22883
|
-
|
|
22884
|
-
BreakType[BreakType['Wrap'] = 2] = 'Wrap';
|
|
22885
|
-
BreakType[BreakType['Eol'] = 3] = 'Eol';
|
|
22886
|
-
}(BreakType || (BreakType = {})));
|
|
22887
|
-
var flip = function (direction, positions) {
|
|
22888
|
-
return direction === HDirection.Backwards ? reverse(positions) : positions;
|
|
22889
|
-
};
|
|
22890
|
-
var walk$3 = function (direction, caretWalker, pos) {
|
|
22891
|
-
return direction === HDirection.Forwards ? caretWalker.next(pos) : caretWalker.prev(pos);
|
|
23109
|
+
var deleteElement$2 = function (editor, forward, element) {
|
|
23110
|
+
editor._selectionOverrides.hideFakeCaret();
|
|
23111
|
+
deleteElement(editor, forward, SugarElement.fromDom(element));
|
|
23112
|
+
return true;
|
|
22892
23113
|
};
|
|
22893
|
-
var
|
|
22894
|
-
|
|
22895
|
-
|
|
22896
|
-
|
|
22897
|
-
|
|
23114
|
+
var deleteCaret$3 = function (editor, forward) {
|
|
23115
|
+
var isNearMedia = forward ? isBeforeMedia : isAfterMedia;
|
|
23116
|
+
var direction = forward ? HDirection.Forwards : HDirection.Backwards;
|
|
23117
|
+
var fromPos = getNormalizedRangeEndPoint(direction, editor.getBody(), editor.selection.getRng());
|
|
23118
|
+
if (isNearMedia(fromPos)) {
|
|
23119
|
+
return deleteElement$2(editor, forward, fromPos.getNode(!forward));
|
|
22898
23120
|
} else {
|
|
22899
|
-
return
|
|
22900
|
-
|
|
22901
|
-
|
|
22902
|
-
|
|
22903
|
-
|
|
22904
|
-
var currentPos = start, nextPos;
|
|
22905
|
-
var positions = [];
|
|
22906
|
-
while (currentPos) {
|
|
22907
|
-
nextPos = walk$3(direction, caretWalker, currentPos);
|
|
22908
|
-
if (!nextPos) {
|
|
22909
|
-
break;
|
|
22910
|
-
}
|
|
22911
|
-
if (isBr(nextPos.getNode(false))) {
|
|
22912
|
-
if (direction === HDirection.Forwards) {
|
|
22913
|
-
return {
|
|
22914
|
-
positions: flip(direction, positions).concat([nextPos]),
|
|
22915
|
-
breakType: BreakType.Br,
|
|
22916
|
-
breakAt: Optional.some(nextPos)
|
|
22917
|
-
};
|
|
22918
|
-
} else {
|
|
22919
|
-
return {
|
|
22920
|
-
positions: flip(direction, positions),
|
|
22921
|
-
breakType: BreakType.Br,
|
|
22922
|
-
breakAt: Optional.some(nextPos)
|
|
22923
|
-
};
|
|
22924
|
-
}
|
|
22925
|
-
}
|
|
22926
|
-
if (!nextPos.isVisible()) {
|
|
22927
|
-
currentPos = nextPos;
|
|
22928
|
-
continue;
|
|
22929
|
-
}
|
|
22930
|
-
if (predicate(currentPos, nextPos)) {
|
|
22931
|
-
var breakType = getBreakType(scope, direction, currentPos, nextPos);
|
|
22932
|
-
return {
|
|
22933
|
-
positions: flip(direction, positions),
|
|
22934
|
-
breakType: breakType,
|
|
22935
|
-
breakAt: Optional.some(nextPos)
|
|
22936
|
-
};
|
|
22937
|
-
}
|
|
22938
|
-
positions.push(nextPos);
|
|
22939
|
-
currentPos = nextPos;
|
|
23121
|
+
return Optional.from(normalizePosition(forward, fromPos)).filter(function (pos) {
|
|
23122
|
+
return isNearMedia(pos) && isMoveInsideSameBlock(fromPos, pos);
|
|
23123
|
+
}).exists(function (pos) {
|
|
23124
|
+
return deleteElement$2(editor, forward, pos.getNode(!forward));
|
|
23125
|
+
});
|
|
22940
23126
|
}
|
|
22941
|
-
return {
|
|
22942
|
-
positions: flip(direction, positions),
|
|
22943
|
-
breakType: BreakType.Eol,
|
|
22944
|
-
breakAt: Optional.none()
|
|
22945
|
-
};
|
|
22946
23127
|
};
|
|
22947
|
-
var
|
|
22948
|
-
|
|
22949
|
-
|
|
22950
|
-
return direction === HDirection.Backwards ? positions.concat(pos) : [pos].concat(positions);
|
|
22951
|
-
}).getOr([]);
|
|
23128
|
+
var deleteRange$2 = function (editor, forward) {
|
|
23129
|
+
var selectedNode = editor.selection.getNode();
|
|
23130
|
+
return isMedia(selectedNode) ? deleteElement$2(editor, forward, selectedNode) : false;
|
|
22952
23131
|
};
|
|
22953
|
-
var
|
|
22954
|
-
return
|
|
22955
|
-
return acc.fold(function () {
|
|
22956
|
-
return Optional.some(newPos);
|
|
22957
|
-
}, function (lastPos) {
|
|
22958
|
-
return lift2(head(lastPos.getClientRects()), head(newPos.getClientRects()), function (lastRect, newRect) {
|
|
22959
|
-
var lastDist = Math.abs(x - lastRect.left);
|
|
22960
|
-
var newDist = Math.abs(x - newRect.left);
|
|
22961
|
-
return newDist <= lastDist ? newPos : lastPos;
|
|
22962
|
-
}).or(acc);
|
|
22963
|
-
});
|
|
22964
|
-
}, Optional.none());
|
|
23132
|
+
var backspaceDelete$8 = function (editor, forward) {
|
|
23133
|
+
return editor.selection.isCollapsed() ? deleteCaret$3(editor, forward) : deleteRange$2(editor, forward);
|
|
22965
23134
|
};
|
|
22966
|
-
|
|
22967
|
-
|
|
22968
|
-
|
|
23135
|
+
|
|
23136
|
+
var isEditable$1 = function (target) {
|
|
23137
|
+
return closest(target, function (elm) {
|
|
23138
|
+
return isContentEditableTrue(elm.dom) || isContentEditableFalse(elm.dom);
|
|
23139
|
+
}).exists(function (elm) {
|
|
23140
|
+
return isContentEditableTrue(elm.dom);
|
|
22969
23141
|
});
|
|
22970
23142
|
};
|
|
22971
|
-
var
|
|
22972
|
-
|
|
22973
|
-
|
|
22974
|
-
return getPositionsUntilPreviousLine(scope, pos).breakAt.isNone();
|
|
23143
|
+
var parseIndentValue = function (value) {
|
|
23144
|
+
var number = parseInt(value, 10);
|
|
23145
|
+
return isNaN(number) ? 0 : number;
|
|
22975
23146
|
};
|
|
22976
|
-
var
|
|
22977
|
-
|
|
23147
|
+
var getIndentStyleName = function (useMargin, element) {
|
|
23148
|
+
var indentStyleName = useMargin || isTable$1(element) ? 'margin' : 'padding';
|
|
23149
|
+
var suffix = get$5(element, 'direction') === 'rtl' ? '-right' : '-left';
|
|
23150
|
+
return indentStyleName + suffix;
|
|
22978
23151
|
};
|
|
22979
|
-
var
|
|
22980
|
-
|
|
22981
|
-
|
|
22982
|
-
|
|
22983
|
-
|
|
22984
|
-
}
|
|
23152
|
+
var indentElement = function (dom, command, useMargin, value, unit, element) {
|
|
23153
|
+
var indentStyleName = getIndentStyleName(useMargin, SugarElement.fromDom(element));
|
|
23154
|
+
if (command === 'outdent') {
|
|
23155
|
+
var styleValue = Math.max(0, parseIndentValue(element.style[indentStyleName]) - value);
|
|
23156
|
+
dom.setStyle(element, indentStyleName, styleValue ? styleValue + unit : '');
|
|
23157
|
+
} else {
|
|
23158
|
+
var styleValue = parseIndentValue(element.style[indentStyleName]) + value + unit;
|
|
23159
|
+
dom.setStyle(element, indentStyleName, styleValue);
|
|
23160
|
+
}
|
|
22985
23161
|
};
|
|
22986
|
-
var
|
|
22987
|
-
return
|
|
22988
|
-
|
|
22989
|
-
|
|
23162
|
+
var validateBlocks = function (editor, blocks) {
|
|
23163
|
+
return forall(blocks, function (block) {
|
|
23164
|
+
var indentStyleName = getIndentStyleName(shouldIndentUseMargin(editor), block);
|
|
23165
|
+
var intentValue = getRaw(block, indentStyleName).map(parseIndentValue).getOr(0);
|
|
23166
|
+
var contentEditable = editor.dom.getContentEditable(block.dom);
|
|
23167
|
+
return contentEditable !== 'false' && intentValue > 0;
|
|
23168
|
+
});
|
|
22990
23169
|
};
|
|
22991
|
-
|
|
22992
|
-
|
|
22993
|
-
|
|
22994
|
-
return map(clientRects, function (clientRect) {
|
|
22995
|
-
clientRect = clone$2(clientRect);
|
|
22996
|
-
clientRect.node = node;
|
|
22997
|
-
return clientRect;
|
|
22998
|
-
});
|
|
22999
|
-
};
|
|
23000
|
-
if (isElement$1(node)) {
|
|
23001
|
-
return toArrayWithNode(node.getClientRects());
|
|
23002
|
-
}
|
|
23003
|
-
if (isText$1(node)) {
|
|
23004
|
-
var rng = node.ownerDocument.createRange();
|
|
23005
|
-
rng.setStart(node, 0);
|
|
23006
|
-
rng.setEnd(node, node.data.length);
|
|
23007
|
-
return toArrayWithNode(rng.getClientRects());
|
|
23008
|
-
}
|
|
23170
|
+
var canOutdent = function (editor) {
|
|
23171
|
+
var blocks = getBlocksToIndent(editor);
|
|
23172
|
+
return !editor.mode.isReadOnly() && (blocks.length > 1 || validateBlocks(editor, blocks));
|
|
23009
23173
|
};
|
|
23010
|
-
var
|
|
23011
|
-
return
|
|
23174
|
+
var isListComponent = function (el) {
|
|
23175
|
+
return isList(el) || isListItem(el);
|
|
23012
23176
|
};
|
|
23013
|
-
|
|
23014
|
-
|
|
23015
|
-
(function (VDirection) {
|
|
23016
|
-
VDirection[VDirection['Up'] = -1] = 'Up';
|
|
23017
|
-
VDirection[VDirection['Down'] = 1] = 'Down';
|
|
23018
|
-
}(VDirection || (VDirection = {})));
|
|
23019
|
-
var findUntil$1 = function (direction, root, predicateFn, node) {
|
|
23020
|
-
while (node = findNode(node, direction, isEditableCaretCandidate, root)) {
|
|
23021
|
-
if (predicateFn(node)) {
|
|
23022
|
-
return;
|
|
23023
|
-
}
|
|
23024
|
-
}
|
|
23177
|
+
var parentIsListComponent = function (el) {
|
|
23178
|
+
return parent(el).map(isListComponent).getOr(false);
|
|
23025
23179
|
};
|
|
23026
|
-
var
|
|
23027
|
-
|
|
23028
|
-
|
|
23029
|
-
|
|
23030
|
-
|
|
23031
|
-
|
|
23032
|
-
|
|
23033
|
-
|
|
23034
|
-
|
|
23035
|
-
|
|
23036
|
-
|
|
23037
|
-
|
|
23038
|
-
|
|
23039
|
-
|
|
23040
|
-
|
|
23041
|
-
line++;
|
|
23042
|
-
}
|
|
23043
|
-
clientRect.line = line;
|
|
23044
|
-
if (predicateFn(clientRect)) {
|
|
23045
|
-
return true;
|
|
23046
|
-
}
|
|
23047
|
-
result.push(clientRect);
|
|
23180
|
+
var getBlocksToIndent = function (editor) {
|
|
23181
|
+
return filter(map(editor.selection.getSelectedBlocks(), SugarElement.fromDom), function (el) {
|
|
23182
|
+
return !isListComponent(el) && !parentIsListComponent(el) && isEditable$1(el);
|
|
23183
|
+
});
|
|
23184
|
+
};
|
|
23185
|
+
var handle = function (editor, command) {
|
|
23186
|
+
var dom = editor.dom, selection = editor.selection, formatter = editor.formatter;
|
|
23187
|
+
var indentation = getIndentation(editor);
|
|
23188
|
+
var indentUnit = /[a-z%]+$/i.exec(indentation)[0];
|
|
23189
|
+
var indentValue = parseInt(indentation, 10);
|
|
23190
|
+
var useMargin = shouldIndentUseMargin(editor);
|
|
23191
|
+
var forcedRootBlock = getForcedRootBlock(editor);
|
|
23192
|
+
if (!editor.queryCommandState('InsertUnorderedList') && !editor.queryCommandState('InsertOrderedList')) {
|
|
23193
|
+
if (forcedRootBlock === '' && !dom.getParent(selection.getNode(), dom.isBlock)) {
|
|
23194
|
+
formatter.apply('div');
|
|
23048
23195
|
}
|
|
23049
|
-
};
|
|
23050
|
-
var targetClientRect = last$1(caretPosition.getClientRects());
|
|
23051
|
-
if (!targetClientRect) {
|
|
23052
|
-
return result;
|
|
23053
23196
|
}
|
|
23054
|
-
|
|
23055
|
-
|
|
23056
|
-
|
|
23057
|
-
return result;
|
|
23058
|
-
};
|
|
23059
|
-
var aboveLineNumber = function (lineNumber, clientRect) {
|
|
23060
|
-
return clientRect.line > lineNumber;
|
|
23061
|
-
};
|
|
23062
|
-
var isLineNumber = function (lineNumber, clientRect) {
|
|
23063
|
-
return clientRect.line === lineNumber;
|
|
23197
|
+
each(getBlocksToIndent(editor), function (block) {
|
|
23198
|
+
indentElement(dom, command, useMargin, indentValue, indentUnit, block.dom);
|
|
23199
|
+
});
|
|
23064
23200
|
};
|
|
23065
|
-
|
|
23066
|
-
var
|
|
23067
|
-
|
|
23068
|
-
|
|
23069
|
-
|
|
23070
|
-
|
|
23071
|
-
|
|
23072
|
-
|
|
23073
|
-
|
|
23074
|
-
return
|
|
23201
|
+
|
|
23202
|
+
var backspaceDelete$9 = function (editor, _forward) {
|
|
23203
|
+
if (editor.selection.isCollapsed() && canOutdent(editor)) {
|
|
23204
|
+
var dom = editor.dom;
|
|
23205
|
+
var rng = editor.selection.getRng();
|
|
23206
|
+
var pos = CaretPosition.fromRangeStart(rng);
|
|
23207
|
+
var block = dom.getParent(rng.startContainer, dom.isBlock);
|
|
23208
|
+
if (block !== null && isAtStartOfBlock(SugarElement.fromDom(block), pos)) {
|
|
23209
|
+
handle(editor, 'outdent');
|
|
23210
|
+
return true;
|
|
23075
23211
|
}
|
|
23076
|
-
return last$1(caretPosition.getClientRects());
|
|
23077
|
-
};
|
|
23078
|
-
if (direction === 1) {
|
|
23079
|
-
walkFn = caretWalker.next;
|
|
23080
|
-
isBelowFn = isBelow;
|
|
23081
|
-
isAboveFn = isAbove;
|
|
23082
|
-
caretPosition = CaretPosition.after(node);
|
|
23083
|
-
} else {
|
|
23084
|
-
walkFn = caretWalker.prev;
|
|
23085
|
-
isBelowFn = isAbove;
|
|
23086
|
-
isAboveFn = isBelow;
|
|
23087
|
-
caretPosition = CaretPosition.before(node);
|
|
23088
23212
|
}
|
|
23089
|
-
|
|
23090
|
-
do {
|
|
23091
|
-
if (!caretPosition.isVisible()) {
|
|
23092
|
-
continue;
|
|
23093
|
-
}
|
|
23094
|
-
clientRect = getClientRect(caretPosition);
|
|
23095
|
-
if (isAboveFn(clientRect, targetClientRect)) {
|
|
23096
|
-
continue;
|
|
23097
|
-
}
|
|
23098
|
-
if (result.length > 0 && isBelowFn(clientRect, last$1(result))) {
|
|
23099
|
-
line++;
|
|
23100
|
-
}
|
|
23101
|
-
clientRect = clone$2(clientRect);
|
|
23102
|
-
clientRect.position = caretPosition;
|
|
23103
|
-
clientRect.line = line;
|
|
23104
|
-
if (predicateFn(clientRect)) {
|
|
23105
|
-
return result;
|
|
23106
|
-
}
|
|
23107
|
-
result.push(clientRect);
|
|
23108
|
-
} while (caretPosition = walkFn(caretPosition));
|
|
23109
|
-
return result;
|
|
23110
|
-
};
|
|
23111
|
-
var isAboveLine = function (lineNumber) {
|
|
23112
|
-
return function (clientRect) {
|
|
23113
|
-
return aboveLineNumber(lineNumber, clientRect);
|
|
23114
|
-
};
|
|
23115
|
-
};
|
|
23116
|
-
var isLine = function (lineNumber) {
|
|
23117
|
-
return function (clientRect) {
|
|
23118
|
-
return isLineNumber(lineNumber, clientRect);
|
|
23119
|
-
};
|
|
23213
|
+
return false;
|
|
23120
23214
|
};
|
|
23121
23215
|
|
|
23122
|
-
var
|
|
23123
|
-
|
|
23124
|
-
var distanceToRectLeft = function (clientRect, clientX) {
|
|
23125
|
-
return Math.abs(clientRect.left - clientX);
|
|
23126
|
-
};
|
|
23127
|
-
var distanceToRectRight = function (clientRect, clientX) {
|
|
23128
|
-
return Math.abs(clientRect.right - clientX);
|
|
23216
|
+
var nativeCommand = function (editor, command) {
|
|
23217
|
+
editor.getDoc().execCommand(command, false, null);
|
|
23129
23218
|
};
|
|
23130
|
-
var
|
|
23131
|
-
|
|
23219
|
+
var deleteCommand = function (editor, caret) {
|
|
23220
|
+
if (backspaceDelete$9(editor)) {
|
|
23221
|
+
return;
|
|
23222
|
+
} else if (backspaceDelete$4(editor, false)) {
|
|
23223
|
+
return;
|
|
23224
|
+
} else if (backspaceDelete$3(editor, false)) {
|
|
23225
|
+
return;
|
|
23226
|
+
} else if (backspaceDelete$6(editor, caret, false)) {
|
|
23227
|
+
return;
|
|
23228
|
+
} else if (backspaceDelete$1(editor, false)) {
|
|
23229
|
+
return;
|
|
23230
|
+
} else if (backspaceDelete(editor)) {
|
|
23231
|
+
return;
|
|
23232
|
+
} else if (backspaceDelete$5(editor, false)) {
|
|
23233
|
+
return;
|
|
23234
|
+
} else if (backspaceDelete$8(editor, false)) {
|
|
23235
|
+
return;
|
|
23236
|
+
} else if (backspaceDelete$2(editor)) {
|
|
23237
|
+
return;
|
|
23238
|
+
} else if (backspaceDelete$7(editor, false)) {
|
|
23239
|
+
return;
|
|
23240
|
+
} else {
|
|
23241
|
+
nativeCommand(editor, 'Delete');
|
|
23242
|
+
paddEmptyBody(editor);
|
|
23243
|
+
}
|
|
23132
23244
|
};
|
|
23133
|
-
var
|
|
23134
|
-
|
|
23245
|
+
var forwardDeleteCommand = function (editor, caret) {
|
|
23246
|
+
if (backspaceDelete$4(editor, true)) {
|
|
23247
|
+
return;
|
|
23248
|
+
} else if (backspaceDelete$3(editor, true)) {
|
|
23249
|
+
return;
|
|
23250
|
+
} else if (backspaceDelete$6(editor, caret, true)) {
|
|
23251
|
+
return;
|
|
23252
|
+
} else if (backspaceDelete$1(editor, true)) {
|
|
23253
|
+
return;
|
|
23254
|
+
} else if (backspaceDelete(editor)) {
|
|
23255
|
+
return;
|
|
23256
|
+
} else if (backspaceDelete$5(editor, true)) {
|
|
23257
|
+
return;
|
|
23258
|
+
} else if (backspaceDelete$8(editor, true)) {
|
|
23259
|
+
return;
|
|
23260
|
+
} else if (backspaceDelete$2(editor)) {
|
|
23261
|
+
return;
|
|
23262
|
+
} else if (backspaceDelete$7(editor, true)) {
|
|
23263
|
+
return;
|
|
23264
|
+
} else {
|
|
23265
|
+
nativeCommand(editor, 'ForwardDelete');
|
|
23266
|
+
}
|
|
23135
23267
|
};
|
|
23136
|
-
var
|
|
23137
|
-
|
|
23138
|
-
|
|
23139
|
-
|
|
23140
|
-
|
|
23141
|
-
|
|
23142
|
-
}
|
|
23143
|
-
if (isInsideX(clientX, oldClientRect)) {
|
|
23144
|
-
return oldClientRect;
|
|
23145
|
-
}
|
|
23146
|
-
if (newDistance === oldDistance && isContentEditableFalse$8(clientRect.node)) {
|
|
23147
|
-
return clientRect;
|
|
23148
|
-
}
|
|
23149
|
-
if (newDistance < oldDistance) {
|
|
23150
|
-
return clientRect;
|
|
23151
|
-
}
|
|
23152
|
-
return oldClientRect;
|
|
23268
|
+
var setup$8 = function (editor, caret) {
|
|
23269
|
+
editor.addCommand('delete', function () {
|
|
23270
|
+
deleteCommand(editor, caret);
|
|
23271
|
+
});
|
|
23272
|
+
editor.addCommand('forwardDelete', function () {
|
|
23273
|
+
forwardDeleteCommand(editor, caret);
|
|
23153
23274
|
});
|
|
23154
23275
|
};
|
|
23155
|
-
|
|
23156
|
-
|
|
23157
|
-
|
|
23158
|
-
|
|
23159
|
-
|
|
23160
|
-
|
|
23161
|
-
} while (node = findNode$1(node, direction, isEditableCaretCandidate, root));
|
|
23162
|
-
};
|
|
23163
|
-
var findLineNodeRects = function (root, targetNodeRect, includeChildren) {
|
|
23164
|
-
if (includeChildren === void 0) {
|
|
23165
|
-
includeChildren = true;
|
|
23276
|
+
|
|
23277
|
+
var SIGNIFICANT_MOVE = 5;
|
|
23278
|
+
var LONGPRESS_DELAY = 400;
|
|
23279
|
+
var getTouch = function (event) {
|
|
23280
|
+
if (event.touches === undefined || event.touches.length !== 1) {
|
|
23281
|
+
return Optional.none();
|
|
23166
23282
|
}
|
|
23167
|
-
|
|
23168
|
-
var collect = function (checkPosFn, node) {
|
|
23169
|
-
var lineRects = filter(getClientRects([node]), function (clientRect) {
|
|
23170
|
-
return !checkPosFn(clientRect, targetNodeRect);
|
|
23171
|
-
});
|
|
23172
|
-
clientRects = clientRects.concat(lineRects);
|
|
23173
|
-
return lineRects.length === 0;
|
|
23174
|
-
};
|
|
23175
|
-
clientRects.push(targetNodeRect);
|
|
23176
|
-
walkUntil$1(VDirection.Up, root, curry(collect, isAbove), targetNodeRect.node, includeChildren);
|
|
23177
|
-
walkUntil$1(VDirection.Down, root, curry(collect, isBelow), targetNodeRect.node, includeChildren);
|
|
23178
|
-
return clientRects;
|
|
23179
|
-
};
|
|
23180
|
-
var getFakeCaretTargets = function (root) {
|
|
23181
|
-
return filter(from$1(root.getElementsByTagName('*')), isFakeCaretTarget);
|
|
23283
|
+
return Optional.some(event.touches[0]);
|
|
23182
23284
|
};
|
|
23183
|
-
var
|
|
23184
|
-
|
|
23185
|
-
|
|
23186
|
-
|
|
23187
|
-
};
|
|
23285
|
+
var isFarEnough = function (touch, data) {
|
|
23286
|
+
var distX = Math.abs(touch.clientX - data.x);
|
|
23287
|
+
var distY = Math.abs(touch.clientY - data.y);
|
|
23288
|
+
return distX > SIGNIFICANT_MOVE || distY > SIGNIFICANT_MOVE;
|
|
23188
23289
|
};
|
|
23189
|
-
var
|
|
23190
|
-
var
|
|
23191
|
-
var
|
|
23192
|
-
var
|
|
23193
|
-
|
|
23194
|
-
|
|
23195
|
-
|
|
23196
|
-
|
|
23197
|
-
|
|
23290
|
+
var setup$9 = function (editor) {
|
|
23291
|
+
var startData = Cell(Optional.none());
|
|
23292
|
+
var longpressFired = Cell(false);
|
|
23293
|
+
var debounceLongpress = last$2(function (e) {
|
|
23294
|
+
editor.fire('longpress', __assign(__assign({}, e), { type: 'longpress' }));
|
|
23295
|
+
longpressFired.set(true);
|
|
23296
|
+
}, LONGPRESS_DELAY);
|
|
23297
|
+
editor.on('touchstart', function (e) {
|
|
23298
|
+
getTouch(e).each(function (touch) {
|
|
23299
|
+
debounceLongpress.cancel();
|
|
23300
|
+
var data = {
|
|
23301
|
+
x: touch.clientX,
|
|
23302
|
+
y: touch.clientY,
|
|
23303
|
+
target: e.target
|
|
23304
|
+
};
|
|
23305
|
+
debounceLongpress.throttle(e);
|
|
23306
|
+
longpressFired.set(false);
|
|
23307
|
+
startData.set(Optional.some(data));
|
|
23308
|
+
});
|
|
23309
|
+
}, true);
|
|
23310
|
+
editor.on('touchmove', function (e) {
|
|
23311
|
+
debounceLongpress.cancel();
|
|
23312
|
+
getTouch(e).each(function (touch) {
|
|
23313
|
+
startData.get().each(function (data) {
|
|
23314
|
+
if (isFarEnough(touch, data)) {
|
|
23315
|
+
startData.set(Optional.none());
|
|
23316
|
+
longpressFired.set(false);
|
|
23317
|
+
editor.fire('longpresscancel');
|
|
23318
|
+
}
|
|
23319
|
+
});
|
|
23320
|
+
});
|
|
23321
|
+
}, true);
|
|
23322
|
+
editor.on('touchend touchcancel', function (e) {
|
|
23323
|
+
debounceLongpress.cancel();
|
|
23324
|
+
if (e.type === 'touchcancel') {
|
|
23325
|
+
return;
|
|
23198
23326
|
}
|
|
23199
|
-
|
|
23200
|
-
|
|
23327
|
+
startData.get().filter(function (data) {
|
|
23328
|
+
return data.target.isEqualNode(e.target);
|
|
23329
|
+
}).each(function () {
|
|
23330
|
+
if (longpressFired.get()) {
|
|
23331
|
+
e.preventDefault();
|
|
23332
|
+
} else {
|
|
23333
|
+
editor.fire('tap', __assign(__assign({}, e), { type: 'tap' }));
|
|
23334
|
+
}
|
|
23335
|
+
});
|
|
23336
|
+
}, true);
|
|
23201
23337
|
};
|
|
23202
23338
|
|
|
23203
|
-
var
|
|
23204
|
-
|
|
23205
|
-
scrollRangeIntoView(editor, editor.selection.getRng());
|
|
23339
|
+
var isBlockElement = function (blockElements, node) {
|
|
23340
|
+
return blockElements.hasOwnProperty(node.nodeName);
|
|
23206
23341
|
};
|
|
23207
|
-
var
|
|
23208
|
-
|
|
23342
|
+
var isValidTarget = function (blockElements, node) {
|
|
23343
|
+
if (isText$1(node)) {
|
|
23344
|
+
return true;
|
|
23345
|
+
} else if (isElement$1(node)) {
|
|
23346
|
+
return !isBlockElement(blockElements, node) && !isBookmarkNode$1(node);
|
|
23347
|
+
} else {
|
|
23348
|
+
return false;
|
|
23349
|
+
}
|
|
23209
23350
|
};
|
|
23210
|
-
var
|
|
23211
|
-
|
|
23212
|
-
|
|
23213
|
-
|
|
23214
|
-
|
|
23215
|
-
|
|
23216
|
-
|
|
23217
|
-
if (
|
|
23218
|
-
return
|
|
23351
|
+
var hasBlockParent = function (blockElements, root, node) {
|
|
23352
|
+
return exists(parents$1(SugarElement.fromDom(node), SugarElement.fromDom(root)), function (elm) {
|
|
23353
|
+
return isBlockElement(blockElements, elm.dom);
|
|
23354
|
+
});
|
|
23355
|
+
};
|
|
23356
|
+
var shouldRemoveTextNode = function (blockElements, node) {
|
|
23357
|
+
if (isText$1(node)) {
|
|
23358
|
+
if (node.nodeValue.length === 0) {
|
|
23359
|
+
return true;
|
|
23360
|
+
} else if (/^\s+$/.test(node.nodeValue) && (!node.nextSibling || isBlockElement(blockElements, node.nextSibling))) {
|
|
23361
|
+
return true;
|
|
23219
23362
|
}
|
|
23220
23363
|
}
|
|
23221
|
-
|
|
23222
|
-
|
|
23223
|
-
|
|
23224
|
-
|
|
23225
|
-
var
|
|
23226
|
-
var
|
|
23227
|
-
|
|
23228
|
-
|
|
23364
|
+
return false;
|
|
23365
|
+
};
|
|
23366
|
+
var addRootBlocks = function (editor) {
|
|
23367
|
+
var dom = editor.dom, selection = editor.selection;
|
|
23368
|
+
var schema = editor.schema, blockElements = schema.getBlockElements();
|
|
23369
|
+
var node = selection.getStart();
|
|
23370
|
+
var rootNode = editor.getBody();
|
|
23371
|
+
var rootBlockNode, tempNode, wrapped;
|
|
23372
|
+
var forcedRootBlock = getForcedRootBlock(editor);
|
|
23373
|
+
if (!node || !isElement$1(node) || !forcedRootBlock) {
|
|
23374
|
+
return;
|
|
23229
23375
|
}
|
|
23230
|
-
|
|
23231
|
-
|
|
23376
|
+
var rootNodeName = rootNode.nodeName.toLowerCase();
|
|
23377
|
+
if (!schema.isValidChild(rootNodeName, forcedRootBlock.toLowerCase()) || hasBlockParent(blockElements, rootNode, node)) {
|
|
23378
|
+
return;
|
|
23232
23379
|
}
|
|
23233
|
-
var
|
|
23234
|
-
|
|
23235
|
-
|
|
23236
|
-
|
|
23380
|
+
var rng = selection.getRng();
|
|
23381
|
+
var startContainer = rng.startContainer;
|
|
23382
|
+
var startOffset = rng.startOffset;
|
|
23383
|
+
var endContainer = rng.endContainer;
|
|
23384
|
+
var endOffset = rng.endOffset;
|
|
23385
|
+
var restoreSelection = hasFocus$1(editor);
|
|
23386
|
+
node = rootNode.firstChild;
|
|
23387
|
+
while (node) {
|
|
23388
|
+
if (isValidTarget(blockElements, node)) {
|
|
23389
|
+
if (shouldRemoveTextNode(blockElements, node)) {
|
|
23390
|
+
tempNode = node;
|
|
23391
|
+
node = node.nextSibling;
|
|
23392
|
+
dom.remove(tempNode);
|
|
23393
|
+
continue;
|
|
23394
|
+
}
|
|
23395
|
+
if (!rootBlockNode) {
|
|
23396
|
+
rootBlockNode = dom.create(forcedRootBlock, getForcedRootBlockAttrs(editor));
|
|
23397
|
+
node.parentNode.insertBefore(rootBlockNode, node);
|
|
23398
|
+
wrapped = true;
|
|
23399
|
+
}
|
|
23400
|
+
tempNode = node;
|
|
23401
|
+
node = node.nextSibling;
|
|
23402
|
+
rootBlockNode.appendChild(tempNode);
|
|
23403
|
+
} else {
|
|
23404
|
+
rootBlockNode = null;
|
|
23405
|
+
node = node.nextSibling;
|
|
23237
23406
|
}
|
|
23238
23407
|
}
|
|
23239
|
-
if (
|
|
23240
|
-
|
|
23408
|
+
if (wrapped && restoreSelection) {
|
|
23409
|
+
rng.setStart(startContainer, startOffset);
|
|
23410
|
+
rng.setEnd(endContainer, endOffset);
|
|
23411
|
+
selection.setRng(rng);
|
|
23412
|
+
editor.nodeChanged();
|
|
23241
23413
|
}
|
|
23242
|
-
return Optional.none();
|
|
23243
23414
|
};
|
|
23244
|
-
var
|
|
23245
|
-
|
|
23246
|
-
|
|
23247
|
-
var forwards = direction === VDirection.Down;
|
|
23248
|
-
if (!caretClientRect) {
|
|
23249
|
-
return Optional.none();
|
|
23250
|
-
}
|
|
23251
|
-
var walkerFn = forwards ? downUntil : upUntil;
|
|
23252
|
-
var linePositions = walkerFn(editor.getBody(), isAboveLine(1), caretPosition);
|
|
23253
|
-
var nextLinePositions = filter(linePositions, isLine(1));
|
|
23254
|
-
var clientX = caretClientRect.left;
|
|
23255
|
-
var nextLineRect = findClosestClientRect(nextLinePositions, clientX);
|
|
23256
|
-
if (nextLineRect && isElement(nextLineRect.node)) {
|
|
23257
|
-
var dist1 = Math.abs(clientX - nextLineRect.left);
|
|
23258
|
-
var dist2 = Math.abs(clientX - nextLineRect.right);
|
|
23259
|
-
return showCaret(direction, editor, nextLineRect.node, dist1 < dist2, false);
|
|
23415
|
+
var setup$a = function (editor) {
|
|
23416
|
+
if (getForcedRootBlock(editor)) {
|
|
23417
|
+
editor.on('NodeChange', curry(addRootBlocks, editor));
|
|
23260
23418
|
}
|
|
23261
|
-
|
|
23262
|
-
|
|
23263
|
-
|
|
23264
|
-
|
|
23265
|
-
|
|
23266
|
-
}
|
|
23267
|
-
|
|
23419
|
+
};
|
|
23420
|
+
|
|
23421
|
+
var findBlockCaretContainer = function (editor) {
|
|
23422
|
+
return descendant(SugarElement.fromDom(editor.getBody()), '*[data-mce-caret]').fold(constant(null), function (elm) {
|
|
23423
|
+
return elm.dom;
|
|
23424
|
+
});
|
|
23425
|
+
};
|
|
23426
|
+
var removeIeControlRect = function (editor) {
|
|
23427
|
+
editor.selection.setRng(editor.selection.getRng());
|
|
23428
|
+
};
|
|
23429
|
+
var showBlockCaretContainer = function (editor, blockCaretContainer) {
|
|
23430
|
+
if (blockCaretContainer.hasAttribute('data-mce-caret')) {
|
|
23431
|
+
showCaretContainerBlock(blockCaretContainer);
|
|
23432
|
+
removeIeControlRect(editor);
|
|
23433
|
+
editor.selection.scrollIntoView(blockCaretContainer);
|
|
23268
23434
|
}
|
|
23269
|
-
|
|
23270
|
-
|
|
23271
|
-
|
|
23272
|
-
|
|
23273
|
-
|
|
23274
|
-
}
|
|
23275
|
-
closestNextLineRect = last$1(filter(caretPositions, isLine(0)));
|
|
23276
|
-
if (closestNextLineRect) {
|
|
23277
|
-
return renderRangeCaretOpt(editor, closestNextLineRect.position.toRange(), false);
|
|
23278
|
-
}
|
|
23435
|
+
};
|
|
23436
|
+
var handleBlockContainer = function (editor, e) {
|
|
23437
|
+
var blockCaretContainer = findBlockCaretContainer(editor);
|
|
23438
|
+
if (!blockCaretContainer) {
|
|
23439
|
+
return;
|
|
23279
23440
|
}
|
|
23280
|
-
if (
|
|
23281
|
-
|
|
23282
|
-
|
|
23283
|
-
|
|
23441
|
+
if (e.type === 'compositionstart') {
|
|
23442
|
+
e.preventDefault();
|
|
23443
|
+
e.stopPropagation();
|
|
23444
|
+
showBlockCaretContainer(editor, blockCaretContainer);
|
|
23445
|
+
return;
|
|
23284
23446
|
}
|
|
23285
|
-
|
|
23286
|
-
|
|
23287
|
-
|
|
23288
|
-
var rng = editor.selection.getRng();
|
|
23289
|
-
var body = editor.getBody();
|
|
23290
|
-
if (forward) {
|
|
23291
|
-
var from = CaretPosition.fromRangeEnd(rng);
|
|
23292
|
-
var result = getPositionsUntilNextLine(body, from);
|
|
23293
|
-
return last(result.positions);
|
|
23294
|
-
} else {
|
|
23295
|
-
var from = CaretPosition.fromRangeStart(rng);
|
|
23296
|
-
var result = getPositionsUntilPreviousLine(body, from);
|
|
23297
|
-
return head(result.positions);
|
|
23447
|
+
if (hasContent(blockCaretContainer)) {
|
|
23448
|
+
showBlockCaretContainer(editor, blockCaretContainer);
|
|
23449
|
+
editor.undoManager.add();
|
|
23298
23450
|
}
|
|
23299
23451
|
};
|
|
23300
|
-
var
|
|
23301
|
-
|
|
23302
|
-
editor.selection.setRng(pos.toRange());
|
|
23303
|
-
return true;
|
|
23304
|
-
});
|
|
23452
|
+
var setup$b = function (editor) {
|
|
23453
|
+
editor.on('keyup compositionstart', curry(handleBlockContainer, editor));
|
|
23305
23454
|
};
|
|
23306
23455
|
|
|
23307
23456
|
var isContentEditableFalse$9 = isContentEditableFalse;
|
|
@@ -23373,7 +23522,7 @@
|
|
|
23373
23522
|
return true;
|
|
23374
23523
|
});
|
|
23375
23524
|
};
|
|
23376
|
-
var moveToLineEndPoint$
|
|
23525
|
+
var moveToLineEndPoint$2 = function (editor, forward) {
|
|
23377
23526
|
var isCefPosition = forward ? isAfterContentEditableFalse : isBeforeContentEditableFalse;
|
|
23378
23527
|
return moveToLineEndPoint(editor, forward, isCefPosition);
|
|
23379
23528
|
};
|
|
@@ -23495,7 +23644,7 @@
|
|
|
23495
23644
|
return true;
|
|
23496
23645
|
});
|
|
23497
23646
|
};
|
|
23498
|
-
var moveToLineEndPoint$
|
|
23647
|
+
var moveToLineEndPoint$3 = function (editor, forward) {
|
|
23499
23648
|
var isNearMedia = forward ? isAfterMedia : isBeforeMedia;
|
|
23500
23649
|
return moveToLineEndPoint(editor, forward, isNearMedia);
|
|
23501
23650
|
};
|
|
@@ -24672,32 +24821,40 @@
|
|
|
24672
24821
|
});
|
|
24673
24822
|
};
|
|
24674
24823
|
|
|
24675
|
-
var executeKeydownOverride$2 = function (editor, evt) {
|
|
24824
|
+
var executeKeydownOverride$2 = function (editor, caret, evt) {
|
|
24676
24825
|
execute([
|
|
24677
24826
|
{
|
|
24678
24827
|
keyCode: VK.END,
|
|
24679
|
-
action: action(moveToLineEndPoint$
|
|
24828
|
+
action: action(moveToLineEndPoint$2, editor, true)
|
|
24680
24829
|
},
|
|
24681
24830
|
{
|
|
24682
24831
|
keyCode: VK.HOME,
|
|
24683
|
-
action: action(moveToLineEndPoint$
|
|
24832
|
+
action: action(moveToLineEndPoint$2, editor, false)
|
|
24684
24833
|
},
|
|
24685
24834
|
{
|
|
24686
24835
|
keyCode: VK.END,
|
|
24687
|
-
action: action(moveToLineEndPoint$
|
|
24836
|
+
action: action(moveToLineEndPoint$3, editor, true)
|
|
24688
24837
|
},
|
|
24689
24838
|
{
|
|
24690
24839
|
keyCode: VK.HOME,
|
|
24691
|
-
action: action(moveToLineEndPoint$
|
|
24840
|
+
action: action(moveToLineEndPoint$3, editor, false)
|
|
24841
|
+
},
|
|
24842
|
+
{
|
|
24843
|
+
keyCode: VK.END,
|
|
24844
|
+
action: action(moveToLineEndPoint$1, editor, true, caret)
|
|
24845
|
+
},
|
|
24846
|
+
{
|
|
24847
|
+
keyCode: VK.HOME,
|
|
24848
|
+
action: action(moveToLineEndPoint$1, editor, false, caret)
|
|
24692
24849
|
}
|
|
24693
24850
|
], evt).each(function (_) {
|
|
24694
24851
|
evt.preventDefault();
|
|
24695
24852
|
});
|
|
24696
24853
|
};
|
|
24697
|
-
var setup$f = function (editor) {
|
|
24854
|
+
var setup$f = function (editor, caret) {
|
|
24698
24855
|
editor.on('keydown', function (evt) {
|
|
24699
24856
|
if (evt.isDefaultPrevented() === false) {
|
|
24700
|
-
executeKeydownOverride$2(editor, evt);
|
|
24857
|
+
executeKeydownOverride$2(editor, caret, evt);
|
|
24701
24858
|
}
|
|
24702
24859
|
});
|
|
24703
24860
|
};
|
|
@@ -24727,6 +24884,54 @@
|
|
|
24727
24884
|
});
|
|
24728
24885
|
};
|
|
24729
24886
|
|
|
24887
|
+
var platform$2 = detect$3();
|
|
24888
|
+
var executeKeyupAction = function (editor, caret, evt) {
|
|
24889
|
+
execute([
|
|
24890
|
+
{
|
|
24891
|
+
keyCode: VK.PAGE_UP,
|
|
24892
|
+
action: action(moveToLineEndPoint$1, editor, false, caret)
|
|
24893
|
+
},
|
|
24894
|
+
{
|
|
24895
|
+
keyCode: VK.PAGE_DOWN,
|
|
24896
|
+
action: action(moveToLineEndPoint$1, editor, true, caret)
|
|
24897
|
+
}
|
|
24898
|
+
], evt);
|
|
24899
|
+
};
|
|
24900
|
+
var stopImmediatePropagation = function (e) {
|
|
24901
|
+
return e.stopImmediatePropagation();
|
|
24902
|
+
};
|
|
24903
|
+
var isPageUpDown = function (evt) {
|
|
24904
|
+
return evt.keyCode === VK.PAGE_UP || evt.keyCode === VK.PAGE_DOWN;
|
|
24905
|
+
};
|
|
24906
|
+
var setNodeChangeBlocker = function (blocked, editor, block) {
|
|
24907
|
+
if (block && !blocked.get()) {
|
|
24908
|
+
editor.on('NodeChange', stopImmediatePropagation, true);
|
|
24909
|
+
} else if (!block && blocked.get()) {
|
|
24910
|
+
editor.off('NodeChange', stopImmediatePropagation);
|
|
24911
|
+
}
|
|
24912
|
+
blocked.set(block);
|
|
24913
|
+
};
|
|
24914
|
+
var setup$h = function (editor, caret) {
|
|
24915
|
+
if (platform$2.os.isOSX()) {
|
|
24916
|
+
return;
|
|
24917
|
+
}
|
|
24918
|
+
var blocked = Cell(false);
|
|
24919
|
+
editor.on('keydown', function (evt) {
|
|
24920
|
+
if (isPageUpDown(evt)) {
|
|
24921
|
+
setNodeChangeBlocker(blocked, editor, true);
|
|
24922
|
+
}
|
|
24923
|
+
});
|
|
24924
|
+
editor.on('keyup', function (evt) {
|
|
24925
|
+
if (evt.isDefaultPrevented() === false) {
|
|
24926
|
+
executeKeyupAction(editor, caret, evt);
|
|
24927
|
+
}
|
|
24928
|
+
if (isPageUpDown(evt) && blocked.get()) {
|
|
24929
|
+
setNodeChangeBlocker(blocked, editor, false);
|
|
24930
|
+
editor.nodeChanged();
|
|
24931
|
+
}
|
|
24932
|
+
});
|
|
24933
|
+
};
|
|
24934
|
+
|
|
24730
24935
|
var insertTextAtPosition = function (text, pos) {
|
|
24731
24936
|
var container = pos.container();
|
|
24732
24937
|
var offset = pos.offset();
|
|
@@ -24793,7 +24998,7 @@
|
|
|
24793
24998
|
evt.preventDefault();
|
|
24794
24999
|
});
|
|
24795
25000
|
};
|
|
24796
|
-
var setup$
|
|
25001
|
+
var setup$i = function (editor) {
|
|
24797
25002
|
editor.on('keydown', function (evt) {
|
|
24798
25003
|
if (evt.isDefaultPrevented() === false) {
|
|
24799
25004
|
executeKeydownOverride$3(editor, evt);
|
|
@@ -24807,12 +25012,13 @@
|
|
|
24807
25012
|
setup$c(editor, caret);
|
|
24808
25013
|
setup$d(editor, caret);
|
|
24809
25014
|
setup$e(editor);
|
|
24810
|
-
setup$
|
|
25015
|
+
setup$i(editor);
|
|
24811
25016
|
setup$g(editor);
|
|
24812
|
-
setup$f(editor);
|
|
25017
|
+
setup$f(editor, caret);
|
|
25018
|
+
setup$h(editor, caret);
|
|
24813
25019
|
return caret;
|
|
24814
25020
|
};
|
|
24815
|
-
var setup$
|
|
25021
|
+
var setup$j = function (editor) {
|
|
24816
25022
|
if (!isRtc(editor)) {
|
|
24817
25023
|
return registerKeyboardOverrides(editor);
|
|
24818
25024
|
} else {
|
|
@@ -24929,7 +25135,7 @@
|
|
|
24929
25135
|
});
|
|
24930
25136
|
});
|
|
24931
25137
|
};
|
|
24932
|
-
var setup$
|
|
25138
|
+
var setup$k = function (editor) {
|
|
24933
25139
|
preventSummaryToggle(editor);
|
|
24934
25140
|
filterDetails(editor);
|
|
24935
25141
|
};
|
|
@@ -24959,7 +25165,7 @@
|
|
|
24959
25165
|
}
|
|
24960
25166
|
editor.selection.setRng(normalize$2(rng));
|
|
24961
25167
|
};
|
|
24962
|
-
var setup$
|
|
25168
|
+
var setup$l = function (editor) {
|
|
24963
25169
|
editor.on('click', function (e) {
|
|
24964
25170
|
if (e.detail >= 3) {
|
|
24965
25171
|
normalizeSelection$1(editor);
|
|
@@ -25299,7 +25505,7 @@
|
|
|
25299
25505
|
}
|
|
25300
25506
|
};
|
|
25301
25507
|
|
|
25302
|
-
var setup$
|
|
25508
|
+
var setup$m = function (editor) {
|
|
25303
25509
|
var renderFocusCaret = first(function () {
|
|
25304
25510
|
if (!editor.removed && editor.getBody().contains(document.activeElement)) {
|
|
25305
25511
|
var rng = editor.selection.getRng();
|
|
@@ -25317,7 +25523,7 @@
|
|
|
25317
25523
|
});
|
|
25318
25524
|
};
|
|
25319
25525
|
|
|
25320
|
-
var setup$
|
|
25526
|
+
var setup$n = function (editor) {
|
|
25321
25527
|
editor.on('init', function () {
|
|
25322
25528
|
editor.on('focusin', function (e) {
|
|
25323
25529
|
var target = e.target;
|
|
@@ -25536,8 +25742,8 @@
|
|
|
25536
25742
|
}
|
|
25537
25743
|
});
|
|
25538
25744
|
init(editor);
|
|
25539
|
-
setup$l(editor);
|
|
25540
25745
|
setup$m(editor);
|
|
25746
|
+
setup$n(editor);
|
|
25541
25747
|
};
|
|
25542
25748
|
var isWithinCaretContainer = function (node) {
|
|
25543
25749
|
return isCaretContainer(node) || startsWithCaretContainer(node) || endsWithCaretContainer(node);
|
|
@@ -25675,7 +25881,7 @@
|
|
|
25675
25881
|
var hideFakeCaret = function () {
|
|
25676
25882
|
fakeCaret.hide();
|
|
25677
25883
|
};
|
|
25678
|
-
if (Env.ceFalse) {
|
|
25884
|
+
if (Env.ceFalse && !isRtc(editor)) {
|
|
25679
25885
|
registerEvents();
|
|
25680
25886
|
}
|
|
25681
25887
|
return {
|
|
@@ -26067,44 +26273,69 @@
|
|
|
26067
26273
|
var sel = editor.selection.getSel();
|
|
26068
26274
|
return !sel || !sel.rangeCount || sel.rangeCount === 0;
|
|
26069
26275
|
};
|
|
26070
|
-
|
|
26071
|
-
|
|
26072
|
-
|
|
26073
|
-
|
|
26074
|
-
}
|
|
26075
|
-
if (isWebKit) {
|
|
26076
|
-
inputMethodFocus();
|
|
26077
|
-
selectControlElements();
|
|
26078
|
-
setDefaultBlockType();
|
|
26079
|
-
blockFormSubmitInsideEditor();
|
|
26080
|
-
disableBackspaceIntoATable();
|
|
26081
|
-
removeAppleInterchangeBrs();
|
|
26082
|
-
if (Env.iOS) {
|
|
26083
|
-
restoreFocusOnKeyDown();
|
|
26084
|
-
bodyHeight();
|
|
26085
|
-
tapLinksAndImages();
|
|
26086
|
-
} else {
|
|
26276
|
+
var setupRtc = function () {
|
|
26277
|
+
if (isWebKit) {
|
|
26278
|
+
selectControlElements();
|
|
26279
|
+
blockFormSubmitInsideEditor();
|
|
26087
26280
|
selectAll();
|
|
26281
|
+
if (Env.iOS) {
|
|
26282
|
+
restoreFocusOnKeyDown();
|
|
26283
|
+
bodyHeight();
|
|
26284
|
+
tapLinksAndImages();
|
|
26285
|
+
}
|
|
26088
26286
|
}
|
|
26089
|
-
|
|
26090
|
-
|
|
26091
|
-
|
|
26092
|
-
|
|
26093
|
-
|
|
26094
|
-
|
|
26095
|
-
|
|
26096
|
-
|
|
26097
|
-
|
|
26098
|
-
|
|
26099
|
-
|
|
26100
|
-
|
|
26101
|
-
|
|
26102
|
-
|
|
26103
|
-
|
|
26104
|
-
|
|
26105
|
-
|
|
26106
|
-
|
|
26107
|
-
|
|
26287
|
+
if (isGecko) {
|
|
26288
|
+
focusBody();
|
|
26289
|
+
setGeckoEditingOptions();
|
|
26290
|
+
showBrokenImageIcon();
|
|
26291
|
+
blockCmdArrowNavigation();
|
|
26292
|
+
}
|
|
26293
|
+
};
|
|
26294
|
+
var setup = function () {
|
|
26295
|
+
removeBlockQuoteOnBackSpace();
|
|
26296
|
+
emptyEditorWhenDeleting();
|
|
26297
|
+
if (!Env.windowsPhone) {
|
|
26298
|
+
normalizeSelection();
|
|
26299
|
+
}
|
|
26300
|
+
if (isWebKit) {
|
|
26301
|
+
inputMethodFocus();
|
|
26302
|
+
selectControlElements();
|
|
26303
|
+
setDefaultBlockType();
|
|
26304
|
+
blockFormSubmitInsideEditor();
|
|
26305
|
+
disableBackspaceIntoATable();
|
|
26306
|
+
removeAppleInterchangeBrs();
|
|
26307
|
+
if (Env.iOS) {
|
|
26308
|
+
restoreFocusOnKeyDown();
|
|
26309
|
+
bodyHeight();
|
|
26310
|
+
tapLinksAndImages();
|
|
26311
|
+
} else {
|
|
26312
|
+
selectAll();
|
|
26313
|
+
}
|
|
26314
|
+
}
|
|
26315
|
+
if (Env.ie >= 11) {
|
|
26316
|
+
bodyHeight();
|
|
26317
|
+
disableBackspaceIntoATable();
|
|
26318
|
+
}
|
|
26319
|
+
if (Env.ie) {
|
|
26320
|
+
selectAll();
|
|
26321
|
+
disableAutoUrlDetect();
|
|
26322
|
+
ieInternalDragAndDrop();
|
|
26323
|
+
}
|
|
26324
|
+
if (isGecko) {
|
|
26325
|
+
removeHrOnBackspace();
|
|
26326
|
+
focusBody();
|
|
26327
|
+
removeStylesWhenDeletingAcrossBlockElements();
|
|
26328
|
+
setGeckoEditingOptions();
|
|
26329
|
+
addBrAfterLastLinks();
|
|
26330
|
+
showBrokenImageIcon();
|
|
26331
|
+
blockCmdArrowNavigation();
|
|
26332
|
+
disableBackspaceIntoATable();
|
|
26333
|
+
}
|
|
26334
|
+
};
|
|
26335
|
+
if (isRtc(editor)) {
|
|
26336
|
+
setupRtc();
|
|
26337
|
+
} else {
|
|
26338
|
+
setup();
|
|
26108
26339
|
}
|
|
26109
26340
|
return {
|
|
26110
26341
|
refreshContentEditable: refreshContentEditable,
|
|
@@ -26325,7 +26556,7 @@
|
|
|
26325
26556
|
};
|
|
26326
26557
|
promiseObj.all(makeStylesheetLoadingPromises(editor, css, fontCss)).then(loaded).catch(loaded);
|
|
26327
26558
|
};
|
|
26328
|
-
var preInit = function (editor
|
|
26559
|
+
var preInit = function (editor) {
|
|
26329
26560
|
var settings = editor.settings, doc = editor.getDoc(), body = editor.getBody();
|
|
26330
26561
|
if (!settings.browser_spellcheck && !settings.gecko_spellcheck) {
|
|
26331
26562
|
doc.body.spellcheck = false;
|
|
@@ -26349,7 +26580,7 @@
|
|
|
26349
26580
|
editor.on('SetContent', function () {
|
|
26350
26581
|
editor.addVisual(editor.getBody());
|
|
26351
26582
|
});
|
|
26352
|
-
if (
|
|
26583
|
+
if (!isRtc(editor)) {
|
|
26353
26584
|
editor.load({
|
|
26354
26585
|
initial: true,
|
|
26355
26586
|
format: 'html'
|
|
@@ -26428,28 +26659,28 @@
|
|
|
26428
26659
|
editor._nodeChangeDispatcher = new NodeChange(editor);
|
|
26429
26660
|
editor._selectionOverrides = SelectionOverrides(editor);
|
|
26430
26661
|
setup$9(editor);
|
|
26431
|
-
setup$
|
|
26662
|
+
setup$k(editor);
|
|
26432
26663
|
if (!isRtc(editor)) {
|
|
26433
|
-
setup$
|
|
26664
|
+
setup$l(editor);
|
|
26434
26665
|
}
|
|
26435
|
-
var caret = setup$
|
|
26666
|
+
var caret = setup$j(editor);
|
|
26436
26667
|
setup$8(editor, caret);
|
|
26437
26668
|
setup$a(editor);
|
|
26438
26669
|
setup$7(editor);
|
|
26439
26670
|
firePreInit(editor);
|
|
26440
26671
|
setup$5(editor).fold(function () {
|
|
26441
|
-
preInit(editor
|
|
26672
|
+
preInit(editor);
|
|
26442
26673
|
}, function (loadingRtc) {
|
|
26443
26674
|
editor.setProgressState(true);
|
|
26444
|
-
loadingRtc.then(function (
|
|
26675
|
+
loadingRtc.then(function (_rtcMode) {
|
|
26445
26676
|
editor.setProgressState(false);
|
|
26446
|
-
preInit(editor
|
|
26677
|
+
preInit(editor);
|
|
26447
26678
|
}, function (err) {
|
|
26448
26679
|
editor.notificationManager.open({
|
|
26449
26680
|
type: 'error',
|
|
26450
26681
|
text: String(err)
|
|
26451
26682
|
});
|
|
26452
|
-
preInit(editor
|
|
26683
|
+
preInit(editor);
|
|
26453
26684
|
});
|
|
26454
26685
|
});
|
|
26455
26686
|
};
|
|
@@ -26992,10 +27223,8 @@
|
|
|
26992
27223
|
}).getOr('');
|
|
26993
27224
|
};
|
|
26994
27225
|
var lineHeightAction = function (editor, lineHeight) {
|
|
26995
|
-
editor.
|
|
26996
|
-
|
|
26997
|
-
editor.nodeChanged();
|
|
26998
|
-
});
|
|
27226
|
+
editor.formatter.toggle('lineheight', { value: String(lineHeight) });
|
|
27227
|
+
editor.nodeChanged();
|
|
26999
27228
|
};
|
|
27000
27229
|
|
|
27001
27230
|
var processValue = function (value) {
|
|
@@ -28829,8 +29058,8 @@
|
|
|
28829
29058
|
suffix: null,
|
|
28830
29059
|
$: DomQuery,
|
|
28831
29060
|
majorVersion: '5',
|
|
28832
|
-
minorVersion: '
|
|
28833
|
-
releaseDate: '2021-
|
|
29061
|
+
minorVersion: '8.0',
|
|
29062
|
+
releaseDate: '2021-05-06',
|
|
28834
29063
|
editors: legacyEditors,
|
|
28835
29064
|
i18n: I18n,
|
|
28836
29065
|
activeEditor: null,
|