tinymce-rails 4.2.4 → 4.2.5
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.jquery.js +500 -323
- data/app/assets/source/tinymce/tinymce.js +500 -323
- data/lib/tinymce/rails/version.rb +2 -2
- data/vendor/assets/javascripts/tinymce/plugins/charmap/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/image/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/imagetools/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/media/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/pagebreak/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/paste/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/spellchecker/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/table/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/skins/lightgray/skin.min.css +1 -1
- data/vendor/assets/javascripts/tinymce/themes/modern/theme.js +1 -1
- data/vendor/assets/javascripts/tinymce/tinymce.jquery.js +11 -11
- data/vendor/assets/javascripts/tinymce/tinymce.js +12 -12
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3858cb936d4e85659b5facc333f2cc0fa4675043
|
4
|
+
data.tar.gz: a081a6dc4f51d3e344f323e3741622005151c0c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d660acc652e20e046697d1a54ca580f988827d07090ca502dd2c1aafa427d569b536eeac446fecb9718db4b02f1be9799f2ec4fb95603bdd0253e7b2a234a57
|
7
|
+
data.tar.gz: 570e2829d350c7fa44164b0299667dbf76d1ef8e04665cc59f1532f9eaba8a5180164b3be7a1eb6e58462cd6c2482f93b5c361d316c5370d1591850a919d4e40
|
@@ -1,4 +1,4 @@
|
|
1
|
-
// 4.2.
|
1
|
+
// 4.2.5 (2015-08-31)
|
2
2
|
|
3
3
|
/**
|
4
4
|
* Compiled inline version. (Library mode)
|
@@ -65,10 +65,12 @@
|
|
65
65
|
}
|
66
66
|
|
67
67
|
function expose(ids) {
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
68
|
+
var i, target, id, fragments, privateModules;
|
69
|
+
|
70
|
+
for (i = 0; i < ids.length; i++) {
|
71
|
+
target = exports;
|
72
|
+
id = ids[i];
|
73
|
+
fragments = id.split(/[.\/]/);
|
72
74
|
|
73
75
|
for (var fi = 0; fi < fragments.length - 1; ++fi) {
|
74
76
|
if (target[fragments[fi]] === undefined) {
|
@@ -80,6 +82,21 @@
|
|
80
82
|
|
81
83
|
target[fragments[fragments.length - 1]] = modules[id];
|
82
84
|
}
|
85
|
+
|
86
|
+
// Expose private modules for unit tests
|
87
|
+
if (exports.AMDLC_TESTS) {
|
88
|
+
privateModules = exports.privateModules || {};
|
89
|
+
|
90
|
+
for (id in modules) {
|
91
|
+
privateModules[id] = modules[id];
|
92
|
+
}
|
93
|
+
|
94
|
+
for (i = 0; i < ids.length; i++) {
|
95
|
+
delete privateModules[ids[i]];
|
96
|
+
}
|
97
|
+
|
98
|
+
exports.privateModules = privateModules;
|
99
|
+
}
|
83
100
|
}
|
84
101
|
|
85
102
|
// Included from: js/tinymce/classes/dom/EventUtils.js
|
@@ -841,6 +858,134 @@ define("tinymce/Env", [], function() {
|
|
841
858
|
};
|
842
859
|
});
|
843
860
|
|
861
|
+
// Included from: js/tinymce/classes/util/Arr.js
|
862
|
+
|
863
|
+
/**
|
864
|
+
* Arr.js
|
865
|
+
*
|
866
|
+
* Released under LGPL License.
|
867
|
+
* Copyright (c) 1999-2015 Ephox Corp. All rights reserved
|
868
|
+
*
|
869
|
+
* License: http://www.tinymce.com/license
|
870
|
+
* Contributing: http://www.tinymce.com/contributing
|
871
|
+
*/
|
872
|
+
|
873
|
+
/**
|
874
|
+
* Array utility class.
|
875
|
+
*
|
876
|
+
* @private
|
877
|
+
* @class tinymce.util.Arr
|
878
|
+
*/
|
879
|
+
define("tinymce/util/Arr", [], function() {
|
880
|
+
var isArray = Array.isArray || function(obj) {
|
881
|
+
return Object.prototype.toString.call(obj) === "[object Array]";
|
882
|
+
};
|
883
|
+
|
884
|
+
function toArray(obj) {
|
885
|
+
var array = obj, i, l;
|
886
|
+
|
887
|
+
if (!isArray(obj)) {
|
888
|
+
array = [];
|
889
|
+
for (i = 0, l = obj.length; i < l; i++) {
|
890
|
+
array[i] = obj[i];
|
891
|
+
}
|
892
|
+
}
|
893
|
+
|
894
|
+
return array;
|
895
|
+
}
|
896
|
+
|
897
|
+
function each(o, cb, s) {
|
898
|
+
var n, l;
|
899
|
+
|
900
|
+
if (!o) {
|
901
|
+
return 0;
|
902
|
+
}
|
903
|
+
|
904
|
+
s = s || o;
|
905
|
+
|
906
|
+
if (o.length !== undefined) {
|
907
|
+
// Indexed arrays, needed for Safari
|
908
|
+
for (n = 0, l = o.length; n < l; n++) {
|
909
|
+
if (cb.call(s, o[n], n, o) === false) {
|
910
|
+
return 0;
|
911
|
+
}
|
912
|
+
}
|
913
|
+
} else {
|
914
|
+
// Hashtables
|
915
|
+
for (n in o) {
|
916
|
+
if (o.hasOwnProperty(n)) {
|
917
|
+
if (cb.call(s, o[n], n, o) === false) {
|
918
|
+
return 0;
|
919
|
+
}
|
920
|
+
}
|
921
|
+
}
|
922
|
+
}
|
923
|
+
|
924
|
+
return 1;
|
925
|
+
}
|
926
|
+
|
927
|
+
function map(array, callback) {
|
928
|
+
var out = [];
|
929
|
+
|
930
|
+
each(array, function(item, index) {
|
931
|
+
out.push(callback(item, index, array));
|
932
|
+
});
|
933
|
+
|
934
|
+
return out;
|
935
|
+
}
|
936
|
+
|
937
|
+
function filter(a, f) {
|
938
|
+
var o = [];
|
939
|
+
|
940
|
+
each(a, function(v) {
|
941
|
+
if (!f || f(v)) {
|
942
|
+
o.push(v);
|
943
|
+
}
|
944
|
+
});
|
945
|
+
|
946
|
+
return o;
|
947
|
+
}
|
948
|
+
|
949
|
+
function indexOf(a, v) {
|
950
|
+
var i, l;
|
951
|
+
|
952
|
+
if (a) {
|
953
|
+
for (i = 0, l = a.length; i < l; i++) {
|
954
|
+
if (a[i] === v) {
|
955
|
+
return i;
|
956
|
+
}
|
957
|
+
}
|
958
|
+
}
|
959
|
+
|
960
|
+
return -1;
|
961
|
+
}
|
962
|
+
|
963
|
+
function reduce(collection, iteratee, accumulator, thisArg) {
|
964
|
+
var i = 0;
|
965
|
+
|
966
|
+
if (arguments.length < 3) {
|
967
|
+
accumulator = collection[0];
|
968
|
+
i = 1;
|
969
|
+
}
|
970
|
+
|
971
|
+
for (; i < collection.length; i++) {
|
972
|
+
accumulator = iteratee.call(thisArg, accumulator, collection[i], i);
|
973
|
+
}
|
974
|
+
|
975
|
+
return accumulator;
|
976
|
+
}
|
977
|
+
|
978
|
+
return {
|
979
|
+
isArray: isArray,
|
980
|
+
toArray: toArray,
|
981
|
+
each: each,
|
982
|
+
map: map,
|
983
|
+
filter: filter,
|
984
|
+
indexOf: indexOf,
|
985
|
+
reduce: reduce
|
986
|
+
};
|
987
|
+
});
|
988
|
+
|
844
989
|
// Included from: js/tinymce/classes/util/Tools.js
|
845
990
|
|
846
991
|
/**
|
@@ -860,8 +1005,9 @@ define("tinymce/Env", [], function() {
|
|
860
1005
|
* @class tinymce.util.Tools
|
861
1006
|
*/
|
862
1007
|
define("tinymce/util/Tools", [
|
863
|
-
"tinymce/Env"
|
864
|
-
|
1008
|
+
"tinymce/Env",
|
1009
|
+
"tinymce/util/Arr"
|
1010
|
+
], function(Env, Arr) {
|
865
1011
|
/**
|
866
1012
|
* Removes whitespace from the beginning and end of a string.
|
867
1013
|
*
|
@@ -875,17 +1021,6 @@ define("tinymce/util/Tools", [
|
|
875
1021
|
return (str === null || str === undefined) ? '' : ("" + str).replace(whiteSpaceRegExp, '');
|
876
1022
|
}
|
877
1023
|
|
878
|
-
/**
|
879
|
-
* Returns true/false if the object is an array or not.
|
880
|
-
*
|
881
|
-
* @method isArray
|
882
|
-
* @param {Object} obj Object to check.
|
883
|
-
* @return {boolean} true/false state if the object is an array or not.
|
884
|
-
*/
|
885
|
-
var isArray = Array.isArray || function(obj) {
|
886
|
-
return Object.prototype.toString.call(obj) === "[object Array]";
|
887
|
-
};
|
888
|
-
|
889
1024
|
/**
|
890
1025
|
* Checks if a object is of a specific type for example an array.
|
891
1026
|
*
|
@@ -899,33 +1034,13 @@ define("tinymce/util/Tools", [
|
|
899
1034
|
return obj !== undefined;
|
900
1035
|
}
|
901
1036
|
|
902
|
-
if (type == 'array' && isArray(obj)) {
|
1037
|
+
if (type == 'array' && Arr.isArray(obj)) {
|
903
1038
|
return true;
|
904
1039
|
}
|
905
1040
|
|
906
1041
|
return typeof obj == type;
|
907
1042
|
}
|
908
1043
|
|
909
|
-
/**
|
910
|
-
* Converts the specified object into a real JavaScript array.
|
911
|
-
*
|
912
|
-
* @method toArray
|
913
|
-
* @param {Object} obj Object to convert into array.
|
914
|
-
* @return {Array} Array object based in input.
|
915
|
-
*/
|
916
|
-
function toArray(obj) {
|
917
|
-
var array = obj, i, l;
|
918
|
-
|
919
|
-
if (!isArray(obj)) {
|
920
|
-
array = [];
|
921
|
-
for (i = 0, l = obj.length; i < l; i++) {
|
922
|
-
array[i] = obj[i];
|
923
|
-
}
|
924
|
-
}
|
925
|
-
|
926
|
-
return array;
|
927
|
-
}
|
928
|
-
|
929
1044
|
/**
|
930
1045
|
* Makes a name/object map out of an array with names.
|
931
1046
|
*
|
@@ -955,99 +1070,6 @@ define("tinymce/util/Tools", [
|
|
955
1070
|
return map;
|
956
1071
|
}
|
957
1072
|
|
958
|
-
/**
|
959
|
-
* Performs an iteration of all items in a collection such as an object or array. This method will execure the
|
960
|
-
* callback function for each item in the collection, if the callback returns false the iteration will terminate.
|
961
|
-
* The callback has the following format: cb(value, key_or_index).
|
962
|
-
*
|
963
|
-
* @method each
|
964
|
-
* @param {Object} o Collection to iterate.
|
965
|
-
* @param {function} cb Callback function to execute for each item.
|
966
|
-
* @param {Object} s Optional scope to execute the callback in.
|
967
|
-
* @example
|
968
|
-
* // Iterate an array
|
969
|
-
* tinymce.each([1,2,3], function(v, i) {
|
970
|
-
* console.debug("Value: " + v + ", Index: " + i);
|
971
|
-
* });
|
972
|
-
*
|
973
|
-
* // Iterate an object
|
974
|
-
* tinymce.each({a: 1, b: 2, c: 3], function(v, k) {
|
975
|
-
* console.debug("Value: " + v + ", Key: " + k);
|
976
|
-
* });
|
977
|
-
*/
|
978
|
-
function each(o, cb, s) {
|
979
|
-
var n, l;
|
980
|
-
|
981
|
-
if (!o) {
|
982
|
-
return 0;
|
983
|
-
}
|
984
|
-
|
985
|
-
s = s || o;
|
986
|
-
|
987
|
-
if (o.length !== undefined) {
|
988
|
-
// Indexed arrays, needed for Safari
|
989
|
-
for (n = 0, l = o.length; n < l; n++) {
|
990
|
-
if (cb.call(s, o[n], n, o) === false) {
|
991
|
-
return 0;
|
992
|
-
}
|
993
|
-
}
|
994
|
-
} else {
|
995
|
-
// Hashtables
|
996
|
-
for (n in o) {
|
997
|
-
if (o.hasOwnProperty(n)) {
|
998
|
-
if (cb.call(s, o[n], n, o) === false) {
|
999
|
-
return 0;
|
1000
|
-
}
|
1001
|
-
}
|
1002
|
-
}
|
1003
|
-
}
|
1004
|
-
|
1005
|
-
return 1;
|
1006
|
-
}
|
1007
|
-
|
1008
|
-
/**
|
1009
|
-
* Creates a new array by the return value of each iteration function call. This enables you to convert
|
1010
|
-
* one array list into another.
|
1011
|
-
*
|
1012
|
-
* @method map
|
1013
|
-
* @param {Array} array Array of items to iterate.
|
1014
|
-
* @param {function} callback Function to call for each item. It's return value will be the new value.
|
1015
|
-
* @return {Array} Array with new values based on function return values.
|
1016
|
-
*/
|
1017
|
-
function map(array, callback) {
|
1018
|
-
var out = [];
|
1019
|
-
|
1020
|
-
each(array, function(item) {
|
1021
|
-
out.push(callback(item));
|
1022
|
-
});
|
1023
|
-
|
1024
|
-
return out;
|
1025
|
-
}
|
1026
|
-
|
1027
|
-
/**
|
1028
|
-
* Filters out items from the input array by calling the specified function for each item.
|
1029
|
-
* If the function returns false the item will be excluded if it returns true it will be included.
|
1030
|
-
*
|
1031
|
-
* @method grep
|
1032
|
-
* @param {Array} a Array of items to loop though.
|
1033
|
-
* @param {function} f Function to call for each item. Include/exclude depends on it's return value.
|
1034
|
-
* @return {Array} New array with values imported and filtered based in input.
|
1035
|
-
* @example
|
1036
|
-
* // Filter out some items, this will return an array with 4 and 5
|
1037
|
-
* var items = tinymce.grep([1,2,3,4,5], function(v) {return v > 3;});
|
1038
|
-
*/
|
1039
|
-
function grep(a, f) {
|
1040
|
-
var o = [];
|
1041
|
-
|
1042
|
-
each(a, function(v) {
|
1043
|
-
if (!f || f(v)) {
|
1044
|
-
o.push(v);
|
1045
|
-
}
|
1046
|
-
});
|
1047
|
-
|
1048
|
-
return o;
|
1049
|
-
}
|
1050
|
-
|
1051
1073
|
/**
|
1052
1074
|
* Creates a class, subclass or static singleton.
|
1053
1075
|
* More details on this method can be found in the Wiki.
|
@@ -1180,31 +1202,6 @@ define("tinymce/util/Tools", [
|
|
1180
1202
|
});
|
1181
1203
|
}
|
1182
1204
|
|
1183
|
-
/**
|
1184
|
-
* Returns the index of a value in an array, this method will return -1 if the item wasn't found.
|
1185
|
-
*
|
1186
|
-
* @method inArray
|
1187
|
-
* @param {Array} a Array/Object to search for value in.
|
1188
|
-
* @param {Object} v Value to check for inside the array.
|
1189
|
-
* @return {Number/String} Index of item inside the array inside an object. Or -1 if it wasn't found.
|
1190
|
-
* @example
|
1191
|
-
* // Get index of value in array this will alert 1 since 2 is at that index
|
1192
|
-
* alert(tinymce.inArray([1,2,3], 2));
|
1193
|
-
*/
|
1194
|
-
function inArray(a, v) {
|
1195
|
-
var i, l;
|
1196
|
-
|
1197
|
-
if (a) {
|
1198
|
-
for (i = 0, l = a.length; i < l; i++) {
|
1199
|
-
if (a[i] === v) {
|
1200
|
-
return i;
|
1201
|
-
}
|
1202
|
-
}
|
1203
|
-
}
|
1204
|
-
|
1205
|
-
return -1;
|
1206
|
-
}
|
1207
|
-
|
1208
1205
|
function extend(obj, ext) {
|
1209
1206
|
var i, l, name, args = arguments, value;
|
1210
1207
|
|
@@ -1241,7 +1238,7 @@ define("tinymce/util/Tools", [
|
|
1241
1238
|
o = o[n];
|
1242
1239
|
}
|
1243
1240
|
|
1244
|
-
each(o, function(o, i) {
|
1241
|
+
Arr.each(o, function(o, i) {
|
1245
1242
|
if (f.call(s, o, i, n) === false) {
|
1246
1243
|
return false;
|
1247
1244
|
}
|
@@ -1331,28 +1328,7 @@ define("tinymce/util/Tools", [
|
|
1331
1328
|
return s;
|
1332
1329
|
}
|
1333
1330
|
|
1334
|
-
return map(s.split(d || ','), trim);
|
1335
|
-
}
|
1336
|
-
|
1337
|
-
function constant(value) {
|
1338
|
-
return function() {
|
1339
|
-
return value;
|
1340
|
-
};
|
1341
|
-
}
|
1342
|
-
|
1343
|
-
function reduce(collection, iteratee, accumulator, thisArg) {
|
1344
|
-
var i = 0;
|
1345
|
-
|
1346
|
-
if (arguments.length < 3) {
|
1347
|
-
accumulator = collection[0];
|
1348
|
-
i = 1;
|
1349
|
-
}
|
1350
|
-
|
1351
|
-
for (; i < collection.length; i++) {
|
1352
|
-
accumulator = iteratee.call(thisArg, accumulator, collection[i], i);
|
1353
|
-
}
|
1354
|
-
|
1355
|
-
return accumulator;
|
1331
|
+
return Arr.map(s.split(d || ','), trim);
|
1356
1332
|
}
|
1357
1333
|
|
1358
1334
|
function _addCacheSuffix(url) {
|
@@ -1367,23 +1343,90 @@ define("tinymce/util/Tools", [
|
|
1367
1343
|
|
1368
1344
|
return {
|
1369
1345
|
trim: trim,
|
1370
|
-
|
1346
|
+
|
1347
|
+
/**
|
1348
|
+
* Returns true/false if the object is an array or not.
|
1349
|
+
*
|
1350
|
+
* @method isArray
|
1351
|
+
* @param {Object} obj Object to check.
|
1352
|
+
* @return {boolean} true/false state if the object is an array or not.
|
1353
|
+
*/
|
1354
|
+
isArray: Arr.isArray,
|
1355
|
+
|
1371
1356
|
is: is,
|
1372
|
-
|
1357
|
+
|
1358
|
+
/**
|
1359
|
+
* Converts the specified object into a real JavaScript array.
|
1360
|
+
*
|
1361
|
+
* @method toArray
|
1362
|
+
* @param {Object} obj Object to convert into array.
|
1363
|
+
* @return {Array} Array object based in input.
|
1364
|
+
*/
|
1365
|
+
toArray: Arr.toArray,
|
1373
1366
|
makeMap: makeMap,
|
1374
|
-
|
1375
|
-
|
1376
|
-
|
1377
|
-
|
1378
|
-
|
1367
|
+
|
1368
|
+
/**
|
1369
|
+
* Performs an iteration of all items in a collection such as an object or array. This method will execure the
|
1370
|
+
* callback function for each item in the collection, if the callback returns false the iteration will terminate.
|
1371
|
+
* The callback has the following format: cb(value, key_or_index).
|
1372
|
+
*
|
1373
|
+
* @method each
|
1374
|
+
* @param {Object} o Collection to iterate.
|
1375
|
+
* @param {function} cb Callback function to execute for each item.
|
1376
|
+
* @param {Object} s Optional scope to execute the callback in.
|
1377
|
+
* @example
|
1378
|
+
* // Iterate an array
|
1379
|
+
* tinymce.each([1,2,3], function(v, i) {
|
1380
|
+
* console.debug("Value: " + v + ", Index: " + i);
|
1381
|
+
* });
|
1382
|
+
*
|
1383
|
+
* // Iterate an object
|
1384
|
+
* tinymce.each({a: 1, b: 2, c: 3], function(v, k) {
|
1385
|
+
* console.debug("Value: " + v + ", Key: " + k);
|
1386
|
+
* });
|
1387
|
+
*/
|
1388
|
+
each: Arr.each,
|
1389
|
+
|
1390
|
+
/**
|
1391
|
+
* Creates a new array by the return value of each iteration function call. This enables you to convert
|
1392
|
+
* one array list into another.
|
1393
|
+
*
|
1394
|
+
* @method map
|
1395
|
+
* @param {Array} array Array of items to iterate.
|
1396
|
+
* @param {function} callback Function to call for each item. It's return value will be the new value.
|
1397
|
+
* @return {Array} Array with new values based on function return values.
|
1398
|
+
*/
|
1399
|
+
map: Arr.map,
|
1400
|
+
|
1401
|
+
/**
|
1402
|
+
* Filters out items from the input array by calling the specified function for each item.
|
1403
|
+
* If the function returns false the item will be excluded if it returns true it will be included.
|
1404
|
+
*
|
1405
|
+
* @method grep
|
1406
|
+
* @param {Array} a Array of items to loop though.
|
1407
|
+
* @param {function} f Function to call for each item. Include/exclude depends on it's return value.
|
1408
|
+
* @return {Array} New array with values imported and filtered based in input.
|
1409
|
+
* @example
|
1410
|
+
* // Filter out some items, this will return an array with 4 and 5
|
1411
|
+
* var items = tinymce.grep([1,2,3,4,5], function(v) {return v > 3;});
|
1412
|
+
*/
|
1413
|
+
grep: Arr.filter,
|
1414
|
+
|
1415
|
+
/**
|
1416
|
+
* Returns true/false if the object is an array or not.
|
1417
|
+
*
|
1418
|
+
* @method isArray
|
1419
|
+
* @param {Object} obj Object to check.
|
1420
|
+
* @return {boolean} true/false state if the object is an array or not.
|
1421
|
+
*/
|
1422
|
+
inArray: Arr.indexOf,
|
1423
|
+
|
1379
1424
|
extend: extend,
|
1380
1425
|
create: create,
|
1381
1426
|
walk: walk,
|
1382
1427
|
createNS: createNS,
|
1383
1428
|
resolve: resolve,
|
1384
1429
|
explode: explode,
|
1385
|
-
constant: constant,
|
1386
|
-
reduce: reduce,
|
1387
1430
|
_addCacheSuffix: _addCacheSuffix
|
1388
1431
|
};
|
1389
1432
|
});
|
@@ -3433,6 +3476,12 @@ define("tinymce/dom/TreeWalker", [], function() {
|
|
3433
3476
|
* Contributing: http://www.tinymce.com/contributing
|
3434
3477
|
*/
|
3435
3478
|
|
3479
|
+
/**
|
3480
|
+
* Old IE Range.
|
3481
|
+
*
|
3482
|
+
* @private
|
3483
|
+
* @class tinymce.dom.Range
|
3484
|
+
*/
|
3436
3485
|
define("tinymce/dom/Range", [
|
3437
3486
|
"tinymce/util/Tools"
|
3438
3487
|
], function(Tools) {
|
@@ -7585,7 +7634,7 @@ define("tinymce/dom/RangeUtils", [
|
|
7585
7634
|
*/
|
7586
7635
|
|
7587
7636
|
/**
|
7588
|
-
* This class handles the nodechange event dispatching both manual and
|
7637
|
+
* This class handles the nodechange event dispatching both manual and through selection change events.
|
7589
7638
|
*
|
7590
7639
|
* @class tinymce.NodeChange
|
7591
7640
|
* @private
|
@@ -7687,7 +7736,7 @@ define("tinymce/NodeChange", [
|
|
7687
7736
|
});
|
7688
7737
|
|
7689
7738
|
/**
|
7690
|
-
*
|
7739
|
+
* Dispatches out a onNodeChange event to all observers. This method should be called when you
|
7691
7740
|
* need to update the UI states or element path etc.
|
7692
7741
|
*
|
7693
7742
|
* @method nodeChanged
|
@@ -11318,6 +11367,7 @@ define("tinymce/dom/Serializer", [
|
|
11318
11367
|
* Selection class for old explorer versions. This one fakes the
|
11319
11368
|
* native selection object available on modern browsers.
|
11320
11369
|
*
|
11370
|
+
* @private
|
11321
11371
|
* @class tinymce.dom.TridentSelection
|
11322
11372
|
*/
|
11323
11373
|
define("tinymce/dom/TridentSelection", [], function() {
|
@@ -13289,7 +13339,7 @@ define("tinymce/dom/Selection", [
|
|
13289
13339
|
* Collapse the selection to start or end of range.
|
13290
13340
|
*
|
13291
13341
|
* @method collapse
|
13292
|
-
* @param {Boolean} toStart Optional boolean state if to collapse to end or not. Defaults to
|
13342
|
+
* @param {Boolean} toStart Optional boolean state if to collapse to end or not. Defaults to false.
|
13293
13343
|
*/
|
13294
13344
|
collapse: function(toStart) {
|
13295
13345
|
var self = this, rng = self.getRng(), node;
|
@@ -13870,6 +13920,7 @@ define("tinymce/dom/Selection", [
|
|
13870
13920
|
* Utility class for various element specific functions.
|
13871
13921
|
*
|
13872
13922
|
* @private
|
13923
|
+
* @class tinymce.dom.ElementUtils
|
13873
13924
|
*/
|
13874
13925
|
define("tinymce/dom/ElementUtils", [
|
13875
13926
|
"tinymce/dom/BookmarkManager",
|
@@ -13992,8 +14043,8 @@ define("tinymce/dom/ElementUtils", [
|
|
13992
14043
|
* Example:
|
13993
14044
|
* Preview.getCssText(editor, 'bold');
|
13994
14045
|
*
|
13995
|
-
* @class tinymce.fmt.Preview
|
13996
14046
|
* @private
|
14047
|
+
* @class tinymce.fmt.Preview
|
13997
14048
|
*/
|
13998
14049
|
define("tinymce/fmt/Preview", [
|
13999
14050
|
"tinymce/util/Tools"
|
@@ -14142,8 +14193,8 @@ define("tinymce/fmt/Preview", [
|
|
14142
14193
|
|
14143
14194
|
/**
|
14144
14195
|
* Text formatter engine class. This class is used to apply formats like bold, italic, font size
|
14145
|
-
* etc to the current selection or specific nodes. This engine was
|
14146
|
-
* default formatting logic for execCommand due to
|
14196
|
+
* etc to the current selection or specific nodes. This engine was built to replace the browser's
|
14197
|
+
* default formatting logic for execCommand due to its inconsistent and buggy behavior.
|
14147
14198
|
*
|
14148
14199
|
* @class tinymce.Formatter
|
14149
14200
|
* @example
|
@@ -16485,7 +16536,7 @@ define("tinymce/Formatter", [
|
|
16485
16536
|
*/
|
16486
16537
|
|
16487
16538
|
/**
|
16488
|
-
* This class handles the undo/redo history levels for the editor. Since the
|
16539
|
+
* This class handles the undo/redo history levels for the editor. Since the built-in undo/redo has major drawbacks a custom one was needed.
|
16489
16540
|
*
|
16490
16541
|
* @class tinymce.UndoManager
|
16491
16542
|
*/
|
@@ -16868,6 +16919,9 @@ define("tinymce/UndoManager", [
|
|
16868
16919
|
|
16869
16920
|
/**
|
16870
16921
|
* Contains logic for handling the enter key to split/generate block elements.
|
16922
|
+
*
|
16923
|
+
* @private
|
16924
|
+
* @class tinymce.EnterKey
|
16871
16925
|
*/
|
16872
16926
|
define("tinymce/EnterKey", [
|
16873
16927
|
"tinymce/dom/TreeWalker",
|
@@ -17518,6 +17572,12 @@ define("tinymce/EnterKey", [
|
|
17518
17572
|
* Contributing: http://www.tinymce.com/contributing
|
17519
17573
|
*/
|
17520
17574
|
|
17575
|
+
/**
|
17576
|
+
* Makes sure that everything gets wrapped in paragraphs.
|
17577
|
+
*
|
17578
|
+
* @private
|
17579
|
+
* @class tinymce.ForceBlocks
|
17580
|
+
*/
|
17521
17581
|
define("tinymce/ForceBlocks", [], function() {
|
17522
17582
|
return function(editor) {
|
17523
17583
|
var settings = editor.settings, dom = editor.dom, selection = editor.selection;
|
@@ -19545,6 +19605,7 @@ define("tinymce/util/EventDispatcher", [
|
|
19545
19605
|
* This class gets dynamically extended to provide a binding between two models. This makes it possible to
|
19546
19606
|
* sync the state of two properties in two models by a layer of abstraction.
|
19547
19607
|
*
|
19608
|
+
* @private
|
19548
19609
|
* @class tinymce.data.Binding
|
19549
19610
|
*/
|
19550
19611
|
define("tinymce/data/Binding", [], function() {
|
@@ -19757,6 +19818,7 @@ define("tinymce/util/Observable", [
|
|
19757
19818
|
/**
|
19758
19819
|
* This class is a object that is observable when properties changes a change event gets emitted.
|
19759
19820
|
*
|
19821
|
+
* @private
|
19760
19822
|
* @class tinymce.data.ObservableObject
|
19761
19823
|
*/
|
19762
19824
|
define("tinymce/data/ObservableObject", [
|
@@ -19765,6 +19827,11 @@ define("tinymce/data/ObservableObject", [
|
|
19765
19827
|
"tinymce/util/Class",
|
19766
19828
|
"tinymce/util/Tools"
|
19767
19829
|
], function(Binding, Observable, Class, Tools) {
|
19830
|
+
function isNode(node) {
|
19831
|
+
return node.nodeType > 0;
|
19832
|
+
}
|
19833
|
+
|
19834
|
+
// Todo: Maybe this should be shallow compare since it might be huge object references
|
19768
19835
|
function isEqual(a, b) {
|
19769
19836
|
var k, checked;
|
19770
19837
|
|
@@ -19797,6 +19864,11 @@ define("tinymce/data/ObservableObject", [
|
|
19797
19864
|
}
|
19798
19865
|
}
|
19799
19866
|
|
19867
|
+
// Shallow compare nodes
|
19868
|
+
if (isNode(a) || isNode(b)) {
|
19869
|
+
return a === b;
|
19870
|
+
}
|
19871
|
+
|
19800
19872
|
// Compare objects
|
19801
19873
|
checked = {};
|
19802
19874
|
for (k in b) {
|
@@ -20753,6 +20825,12 @@ define("tinymce/ui/Collection", [
|
|
20753
20825
|
* Contributing: http://www.tinymce.com/contributing
|
20754
20826
|
*/
|
20755
20827
|
|
20828
|
+
/**
|
20829
|
+
* Private UI DomUtils proxy.
|
20830
|
+
*
|
20831
|
+
* @private
|
20832
|
+
* @class tinymce.ui.DomUtils
|
20833
|
+
*/
|
20756
20834
|
define("tinymce/ui/DomUtils", [
|
20757
20835
|
"tinymce/util/Tools",
|
20758
20836
|
"tinymce/dom/DOMUtils"
|
@@ -20860,6 +20938,7 @@ define("tinymce/ui/DomUtils", [
|
|
20860
20938
|
/**
|
20861
20939
|
* Utility class for box parsing and measuing.
|
20862
20940
|
*
|
20941
|
+
* @private
|
20863
20942
|
* @class tinymce.ui.BoxUtils
|
20864
20943
|
*/
|
20865
20944
|
define("tinymce/ui/BoxUtils", [
|
@@ -20960,6 +21039,7 @@ define("tinymce/ui/BoxUtils", [
|
|
20960
21039
|
/**
|
20961
21040
|
* Handles adding and removal of classes.
|
20962
21041
|
*
|
21042
|
+
* @private
|
20963
21043
|
* @class tinymce.ui.ClassList
|
20964
21044
|
*/
|
20965
21045
|
define("tinymce/ui/ClassList", [
|
@@ -25495,6 +25575,7 @@ define("tinymce/WindowManager", [
|
|
25495
25575
|
/**
|
25496
25576
|
* This file includes fixes for various browser quirks it's made to make it easy to add/remove browser specific fixes.
|
25497
25577
|
*
|
25578
|
+
* @private
|
25498
25579
|
* @class tinymce.util.Quirks
|
25499
25580
|
*/
|
25500
25581
|
define("tinymce/util/Quirks", [
|
@@ -27659,6 +27740,36 @@ define("tinymce/util/Promise", [], function() {
|
|
27659
27740
|
/* jshint ignore:end */
|
27660
27741
|
/* eslint-enable */
|
27661
27742
|
|
27743
|
+
// Included from: js/tinymce/classes/util/Fun.js
|
27744
|
+
|
27745
|
+
/**
|
27746
|
+
* Fun.js
|
27747
|
+
*
|
27748
|
+
* Released under LGPL License.
|
27749
|
+
* Copyright (c) 1999-2015 Ephox Corp. All rights reserved
|
27750
|
+
*
|
27751
|
+
* License: http://www.tinymce.com/license
|
27752
|
+
* Contributing: http://www.tinymce.com/contributing
|
27753
|
+
*/
|
27754
|
+
|
27755
|
+
/**
|
27756
|
+
* Functional utility class.
|
27757
|
+
*
|
27758
|
+
* @private
|
27759
|
+
* @class tinymce.util.Fun
|
27760
|
+
*/
|
27761
|
+
define("tinymce/util/Fun", [], function() {
|
27762
|
+
function constant(value) {
|
27763
|
+
return function() {
|
27764
|
+
return value;
|
27765
|
+
};
|
27766
|
+
}
|
27767
|
+
|
27768
|
+
return {
|
27769
|
+
constant: constant
|
27770
|
+
};
|
27771
|
+
});
|
27772
|
+
|
27662
27773
|
// Included from: js/tinymce/classes/file/Uploader.js
|
27663
27774
|
|
27664
27775
|
/**
|
@@ -27692,9 +27803,12 @@ define("tinymce/util/Promise", [], function() {
|
|
27692
27803
|
*/
|
27693
27804
|
define("tinymce/file/Uploader", [
|
27694
27805
|
"tinymce/util/Promise",
|
27695
|
-
"tinymce/util/Tools"
|
27696
|
-
|
27806
|
+
"tinymce/util/Tools",
|
27807
|
+
"tinymce/util/Fun"
|
27808
|
+
], function(Promise, Tools, Fun) {
|
27697
27809
|
return function(settings) {
|
27810
|
+
var cachedPromises = {};
|
27811
|
+
|
27698
27812
|
function fileName(blobInfo) {
|
27699
27813
|
var ext, extensions;
|
27700
27814
|
|
@@ -27723,7 +27837,7 @@ define("tinymce/file/Uploader", [
|
|
27723
27837
|
id: blobInfo.id,
|
27724
27838
|
blob: blobInfo.blob,
|
27725
27839
|
base64: blobInfo.base64,
|
27726
|
-
filename:
|
27840
|
+
filename: Fun.constant(fileName(blobInfo))
|
27727
27841
|
};
|
27728
27842
|
}
|
27729
27843
|
|
@@ -27731,8 +27845,8 @@ define("tinymce/file/Uploader", [
|
|
27731
27845
|
var xhr, formData;
|
27732
27846
|
|
27733
27847
|
xhr = new XMLHttpRequest();
|
27734
|
-
xhr.withCredentials = settings.credentials;
|
27735
27848
|
xhr.open('POST', settings.url);
|
27849
|
+
xhr.withCredentials = settings.credentials;
|
27736
27850
|
|
27737
27851
|
xhr.onload = function() {
|
27738
27852
|
var json;
|
@@ -27759,53 +27873,57 @@ define("tinymce/file/Uploader", [
|
|
27759
27873
|
}
|
27760
27874
|
|
27761
27875
|
function upload(blobInfos) {
|
27762
|
-
|
27763
|
-
var handler = settings.handler, queue, index = 0, uploadedIdMap = {};
|
27876
|
+
var promises;
|
27764
27877
|
|
27765
|
-
|
27766
|
-
|
27878
|
+
// If no url is configured then resolve
|
27879
|
+
if (!settings.url && settings.handler === defaultHandler) {
|
27880
|
+
return new Promise(function(resolve) {
|
27767
27881
|
resolve([]);
|
27768
|
-
return;
|
27769
|
-
}
|
27770
|
-
|
27771
|
-
queue = Tools.map(blobInfos, function(blobInfo) {
|
27772
|
-
return {
|
27773
|
-
status: false,
|
27774
|
-
blobInfo: blobInfo,
|
27775
|
-
url: ''
|
27776
|
-
};
|
27777
27882
|
});
|
27883
|
+
}
|
27778
27884
|
|
27779
|
-
|
27780
|
-
|
27781
|
-
|
27782
|
-
if (!queueItem) {
|
27783
|
-
resolve(queue);
|
27784
|
-
return;
|
27785
|
-
}
|
27786
|
-
|
27787
|
-
// Only upload unique blob once
|
27788
|
-
previousResult = uploadedIdMap[queueItem.blobInfo.id()];
|
27789
|
-
if (previousResult) {
|
27790
|
-
queueItem.url = previousResult;
|
27791
|
-
queueItem.status = true;
|
27792
|
-
uploadNext();
|
27793
|
-
return;
|
27794
|
-
}
|
27885
|
+
function uploadBlobInfo(blobInfo) {
|
27886
|
+
return new Promise(function(resolve) {
|
27887
|
+
var handler = settings.handler;
|
27795
27888
|
|
27796
|
-
handler(blobInfoToData(
|
27797
|
-
|
27798
|
-
|
27799
|
-
|
27800
|
-
|
27889
|
+
handler(blobInfoToData(blobInfo), function(url) {
|
27890
|
+
resolve({
|
27891
|
+
url: url,
|
27892
|
+
blobInfo: blobInfo,
|
27893
|
+
status: true
|
27894
|
+
});
|
27801
27895
|
}, function(failure) {
|
27802
|
-
|
27803
|
-
|
27896
|
+
resolve({
|
27897
|
+
url: '',
|
27898
|
+
blobInfo: blobInfo,
|
27899
|
+
status: false,
|
27900
|
+
error: failure
|
27901
|
+
});
|
27804
27902
|
});
|
27903
|
+
});
|
27904
|
+
}
|
27905
|
+
|
27906
|
+
promises = Tools.map(blobInfos, function(blobInfo) {
|
27907
|
+
var newPromise, id = blobInfo.id();
|
27908
|
+
|
27909
|
+
if (cachedPromises[id]) {
|
27910
|
+
return cachedPromises[id];
|
27805
27911
|
}
|
27806
27912
|
|
27807
|
-
|
27913
|
+
newPromise = uploadBlobInfo(blobInfo).then(function(result) {
|
27914
|
+
delete cachedPromises[id];
|
27915
|
+
return result;
|
27916
|
+
})['catch'](function(error) {
|
27917
|
+
delete cachedPromises[id];
|
27918
|
+
return error;
|
27919
|
+
});
|
27920
|
+
|
27921
|
+
cachedPromises[id] = newPromise;
|
27922
|
+
|
27923
|
+
return newPromise;
|
27808
27924
|
});
|
27925
|
+
|
27926
|
+
return Promise.all(promises);
|
27809
27927
|
}
|
27810
27928
|
|
27811
27929
|
settings = Tools.extend({
|
@@ -27833,6 +27951,9 @@ define("tinymce/file/Uploader", [
|
|
27833
27951
|
|
27834
27952
|
/**
|
27835
27953
|
* Converts blob/uris back and forth.
|
27954
|
+
*
|
27955
|
+
* @private
|
27956
|
+
* @class tinymce.file.Conversions
|
27836
27957
|
*/
|
27837
27958
|
define("tinymce/file/Conversions", [
|
27838
27959
|
"tinymce/util/Promise"
|
@@ -27945,39 +28066,20 @@ define("tinymce/file/Conversions", [
|
|
27945
28066
|
*/
|
27946
28067
|
define("tinymce/file/ImageScanner", [
|
27947
28068
|
"tinymce/util/Promise",
|
27948
|
-
"tinymce/util/
|
27949
|
-
"tinymce/file/Conversions"
|
27950
|
-
|
28069
|
+
"tinymce/util/Arr",
|
28070
|
+
"tinymce/file/Conversions",
|
28071
|
+
"tinymce/Env"
|
28072
|
+
], function(Promise, Arr, Conversions, Env) {
|
27951
28073
|
var count = 0;
|
27952
28074
|
|
27953
|
-
function
|
27954
|
-
|
27955
|
-
var result = [];
|
27956
|
-
|
27957
|
-
function next(index) {
|
27958
|
-
fn(array[index], function(value) {
|
27959
|
-
result.push(value);
|
28075
|
+
return function(blobCache) {
|
28076
|
+
var cachedPromises = {};
|
27960
28077
|
|
27961
|
-
|
27962
|
-
|
27963
|
-
} else {
|
27964
|
-
resolve(result);
|
27965
|
-
}
|
27966
|
-
});
|
27967
|
-
}
|
27968
|
-
|
27969
|
-
if (array.length === 0) {
|
27970
|
-
resolve(result);
|
27971
|
-
} else {
|
27972
|
-
next(0);
|
27973
|
-
}
|
27974
|
-
});
|
27975
|
-
}
|
28078
|
+
function findAll(elm) {
|
28079
|
+
var images, promises;
|
27976
28080
|
|
27977
|
-
return {
|
27978
|
-
findAll: function(elm, blobCache) {
|
27979
28081
|
function imageToBlobInfo(img, resolve) {
|
27980
|
-
var base64, blobInfo
|
28082
|
+
var base64, blobInfo;
|
27981
28083
|
|
27982
28084
|
if (img.src.indexOf('blob:') === 0) {
|
27983
28085
|
blobInfo = blobCache.getByUri(img.src);
|
@@ -27992,7 +28094,6 @@ define("tinymce/file/ImageScanner", [
|
|
27992
28094
|
return;
|
27993
28095
|
}
|
27994
28096
|
|
27995
|
-
blobInfoId = 'blobid' + (count++);
|
27996
28097
|
base64 = Conversions.parseDataUri(img.src).data;
|
27997
28098
|
blobInfo = blobCache.findFirst(function(cachedBlobInfo) {
|
27998
28099
|
return cachedBlobInfo.base64() === base64;
|
@@ -28005,7 +28106,8 @@ define("tinymce/file/ImageScanner", [
|
|
28005
28106
|
});
|
28006
28107
|
} else {
|
28007
28108
|
Conversions.uriToBlob(img.src).then(function(blob) {
|
28008
|
-
var
|
28109
|
+
var blobInfoId = 'blobid' + (count++),
|
28110
|
+
blobInfo = blobCache.create(blobInfoId, blob, base64);
|
28009
28111
|
|
28010
28112
|
blobCache.add(blobInfo);
|
28011
28113
|
|
@@ -28017,10 +28119,65 @@ define("tinymce/file/ImageScanner", [
|
|
28017
28119
|
}
|
28018
28120
|
}
|
28019
28121
|
|
28020
|
-
|
28021
|
-
|
28022
|
-
|
28122
|
+
images = Arr.filter(elm.getElementsByTagName('img'), function(img) {
|
28123
|
+
var src = img.src;
|
28124
|
+
|
28125
|
+
if (!Env.fileApi) {
|
28126
|
+
return false;
|
28127
|
+
}
|
28128
|
+
|
28129
|
+
if (img.hasAttribute('data-mce-bogus')) {
|
28130
|
+
return false;
|
28131
|
+
}
|
28132
|
+
|
28133
|
+
if (img.hasAttribute('data-mce-placeholder')) {
|
28134
|
+
return false;
|
28135
|
+
}
|
28136
|
+
|
28137
|
+
if (!src || src == Env.transparentSrc) {
|
28138
|
+
return false;
|
28139
|
+
}
|
28140
|
+
|
28141
|
+
return src.indexOf('data:') === 0 || src.indexOf('blob:') === 0;
|
28142
|
+
});
|
28143
|
+
|
28144
|
+
promises = Arr.map(images, function(img) {
|
28145
|
+
var newPromise;
|
28146
|
+
|
28147
|
+
if (cachedPromises[img.src]) {
|
28148
|
+
// Since the cached promise will return the cached image
|
28149
|
+
// We need to wrap it and resolve with the actual image
|
28150
|
+
return new Promise(function(resolve) {
|
28151
|
+
cachedPromises[img.src].then(function(imageInfo) {
|
28152
|
+
resolve({
|
28153
|
+
image: img,
|
28154
|
+
blobInfo: imageInfo.blobInfo
|
28155
|
+
});
|
28156
|
+
});
|
28157
|
+
});
|
28158
|
+
}
|
28159
|
+
|
28160
|
+
newPromise = new Promise(function(resolve) {
|
28161
|
+
imageToBlobInfo(img, resolve);
|
28162
|
+
}).then(function(result) {
|
28163
|
+
delete cachedPromises[result.image.src];
|
28164
|
+
return result;
|
28165
|
+
})['catch'](function(error) {
|
28166
|
+
delete cachedPromises[img.src];
|
28167
|
+
return error;
|
28168
|
+
});
|
28169
|
+
|
28170
|
+
cachedPromises[img.src] = newPromise;
|
28171
|
+
|
28172
|
+
return newPromise;
|
28173
|
+
});
|
28174
|
+
|
28175
|
+
return Promise.all(promises);
|
28023
28176
|
}
|
28177
|
+
|
28178
|
+
return {
|
28179
|
+
findAll: findAll
|
28180
|
+
};
|
28024
28181
|
};
|
28025
28182
|
});
|
28026
28183
|
|
@@ -28043,10 +28200,11 @@ define("tinymce/file/ImageScanner", [
|
|
28043
28200
|
* @class tinymce.file.BlobCache
|
28044
28201
|
*/
|
28045
28202
|
define("tinymce/file/BlobCache", [
|
28046
|
-
"tinymce/util/
|
28047
|
-
|
28203
|
+
"tinymce/util/Arr",
|
28204
|
+
"tinymce/util/Fun"
|
28205
|
+
], function(Arr, Fun) {
|
28048
28206
|
return function() {
|
28049
|
-
var cache = [], constant =
|
28207
|
+
var cache = [], constant = Fun.constant;
|
28050
28208
|
|
28051
28209
|
function create(id, blob, base64) {
|
28052
28210
|
return {
|
@@ -28070,7 +28228,7 @@ define("tinymce/file/BlobCache", [
|
|
28070
28228
|
}
|
28071
28229
|
|
28072
28230
|
function findFirst(predicate) {
|
28073
|
-
return
|
28231
|
+
return Arr.filter(cache, predicate)[0];
|
28074
28232
|
}
|
28075
28233
|
|
28076
28234
|
function getByUri(blobUri) {
|
@@ -28080,7 +28238,7 @@ define("tinymce/file/BlobCache", [
|
|
28080
28238
|
}
|
28081
28239
|
|
28082
28240
|
function destroy() {
|
28083
|
-
|
28241
|
+
Arr.each(cache, function(cachedBlobInfo) {
|
28084
28242
|
URL.revokeObjectURL(cachedBlobInfo.blobUri());
|
28085
28243
|
});
|
28086
28244
|
|
@@ -28117,13 +28275,13 @@ define("tinymce/file/BlobCache", [
|
|
28117
28275
|
* @class tinymce.EditorUpload
|
28118
28276
|
*/
|
28119
28277
|
define("tinymce/EditorUpload", [
|
28120
|
-
"tinymce/util/
|
28278
|
+
"tinymce/util/Arr",
|
28121
28279
|
"tinymce/file/Uploader",
|
28122
28280
|
"tinymce/file/ImageScanner",
|
28123
28281
|
"tinymce/file/BlobCache"
|
28124
|
-
], function(
|
28282
|
+
], function(Arr, Uploader, ImageScanner, BlobCache) {
|
28125
28283
|
return function(editor) {
|
28126
|
-
var blobCache = new BlobCache();
|
28284
|
+
var blobCache = new BlobCache(), uploader, imageScanner;
|
28127
28285
|
|
28128
28286
|
// Replaces strings without regexps to avoid FF regexp to big issue
|
28129
28287
|
function replaceString(content, search, replace) {
|
@@ -28149,60 +28307,61 @@ define("tinymce/EditorUpload", [
|
|
28149
28307
|
}
|
28150
28308
|
|
28151
28309
|
function replaceUrlInUndoStack(targetUrl, replacementUrl) {
|
28152
|
-
|
28310
|
+
Arr.each(editor.undoManager.data, function(level) {
|
28153
28311
|
level.content = replaceImageUrl(level.content, targetUrl, replacementUrl);
|
28154
28312
|
});
|
28155
28313
|
}
|
28156
28314
|
|
28157
28315
|
function uploadImages(callback) {
|
28158
|
-
|
28159
|
-
|
28160
|
-
|
28161
|
-
|
28162
|
-
|
28163
|
-
|
28164
|
-
|
28165
|
-
function imageInfosToBlobInfos(imageInfos) {
|
28166
|
-
return Tools.map(imageInfos, function(imageInfo) {
|
28167
|
-
return imageInfo.blobInfo;
|
28316
|
+
if (!uploader) {
|
28317
|
+
uploader = new Uploader({
|
28318
|
+
url: editor.settings.images_upload_url,
|
28319
|
+
basePath: editor.settings.images_upload_base_path,
|
28320
|
+
credentials: editor.settings.images_upload_credentials,
|
28321
|
+
handler: editor.settings.images_upload_handler
|
28168
28322
|
});
|
28169
28323
|
}
|
28170
28324
|
|
28171
|
-
return scanForImages().then(
|
28172
|
-
|
28173
|
-
var image;
|
28325
|
+
return scanForImages().then(function(imageInfos) {
|
28326
|
+
var blobInfos;
|
28174
28327
|
|
28175
|
-
|
28328
|
+
blobInfos = Arr.map(imageInfos, function(imageInfo) {
|
28329
|
+
return imageInfo.blobInfo;
|
28330
|
+
});
|
28331
|
+
|
28332
|
+
return uploader.upload(blobInfos).then(function(result) {
|
28333
|
+
result = Arr.map(result, function(uploadInfo, index) {
|
28334
|
+
var image = imageInfos[index].image;
|
28176
28335
|
|
28177
|
-
if (image) {
|
28178
28336
|
replaceUrlInUndoStack(image.src, uploadInfo.url);
|
28179
28337
|
|
28180
28338
|
editor.$(image).attr({
|
28181
28339
|
src: uploadInfo.url,
|
28182
28340
|
'data-mce-src': editor.convertURL(uploadInfo.url, 'src')
|
28183
28341
|
});
|
28184
|
-
}
|
28185
28342
|
|
28186
|
-
|
28187
|
-
|
28188
|
-
|
28189
|
-
|
28190
|
-
|
28343
|
+
return {
|
28344
|
+
element: image,
|
28345
|
+
status: uploadInfo.status
|
28346
|
+
};
|
28347
|
+
});
|
28191
28348
|
|
28192
|
-
|
28193
|
-
|
28194
|
-
|
28349
|
+
if (callback) {
|
28350
|
+
callback(result);
|
28351
|
+
}
|
28195
28352
|
|
28196
|
-
|
28197
|
-
|
28198
|
-
// Silent
|
28199
|
-
// TODO: Maybe execute some failure callback here?
|
28353
|
+
return result;
|
28354
|
+
});
|
28200
28355
|
});
|
28201
28356
|
}
|
28202
28357
|
|
28203
28358
|
function scanForImages() {
|
28204
|
-
|
28205
|
-
|
28359
|
+
if (!imageScanner) {
|
28360
|
+
imageScanner = new ImageScanner(blobCache);
|
28361
|
+
}
|
28362
|
+
|
28363
|
+
return imageScanner.findAll(editor.getBody()).then(function(result) {
|
28364
|
+
Arr.each(result, function(resultItem) {
|
28206
28365
|
replaceUrlInUndoStack(resultItem.image.src, resultItem.blobInfo.blobUri());
|
28207
28366
|
resultItem.image.src = resultItem.blobInfo.blobUri();
|
28208
28367
|
});
|
@@ -28213,6 +28372,7 @@ define("tinymce/EditorUpload", [
|
|
28213
28372
|
|
28214
28373
|
function destroy() {
|
28215
28374
|
blobCache.destroy();
|
28375
|
+
imageScanner = uploader = null;
|
28216
28376
|
}
|
28217
28377
|
|
28218
28378
|
function replaceBlobWithBase64(content) {
|
@@ -28220,7 +28380,7 @@ define("tinymce/EditorUpload", [
|
|
28220
28380
|
var blobInfo = blobCache.getByUri(blobUri);
|
28221
28381
|
|
28222
28382
|
if (!blobInfo) {
|
28223
|
-
blobInfo =
|
28383
|
+
blobInfo = Arr.reduce(editor.editorManager.editors, function(result, editor) {
|
28224
28384
|
return result || editor.editorUpload.blobCache.getByUri(blobUri);
|
28225
28385
|
}, null);
|
28226
28386
|
}
|
@@ -28979,8 +29139,8 @@ define("tinymce/Editor", [
|
|
28979
29139
|
},
|
28980
29140
|
|
28981
29141
|
/**
|
28982
|
-
* This method get called by the init method
|
28983
|
-
* It will fill the iframe with contents,
|
29142
|
+
* This method get called by the init method once the iframe is loaded.
|
29143
|
+
* It will fill the iframe with contents, sets up DOM and selection objects for the iframe.
|
28984
29144
|
*
|
28985
29145
|
* @method initContentBody
|
28986
29146
|
* @private
|
@@ -29038,7 +29198,7 @@ define("tinymce/Editor", [
|
|
29038
29198
|
self.editorUpload = new EditorUpload(self);
|
29039
29199
|
|
29040
29200
|
/**
|
29041
|
-
* Schema instance, enables you to validate elements and
|
29201
|
+
* Schema instance, enables you to validate elements and its children.
|
29042
29202
|
*
|
29043
29203
|
* @property schema
|
29044
29204
|
* @type tinymce.html.Schema
|
@@ -29470,7 +29630,7 @@ define("tinymce/Editor", [
|
|
29470
29630
|
},
|
29471
29631
|
|
29472
29632
|
/**
|
29473
|
-
*
|
29633
|
+
* Dispatches out a onNodeChange event to all observers. This method should be called when you
|
29474
29634
|
* need to update the UI states or element path etc.
|
29475
29635
|
*
|
29476
29636
|
* @method nodeChanged
|
@@ -29625,7 +29785,7 @@ define("tinymce/Editor", [
|
|
29625
29785
|
*
|
29626
29786
|
* @method addQueryStateHandler
|
29627
29787
|
* @param {String} name Command name to add/override.
|
29628
|
-
* @param {addQueryStateHandlerCallback} callback Function to execute when the command state
|
29788
|
+
* @param {addQueryStateHandlerCallback} callback Function to execute when the command state retrieval occurs.
|
29629
29789
|
* @param {Object} scope Optional scope to execute the function in.
|
29630
29790
|
*/
|
29631
29791
|
addQueryStateHandler: function(name, callback, scope) {
|
@@ -29644,7 +29804,7 @@ define("tinymce/Editor", [
|
|
29644
29804
|
*
|
29645
29805
|
* @method addQueryValueHandler
|
29646
29806
|
* @param {String} name Command name to add/override.
|
29647
|
-
* @param {addQueryValueHandlerCallback} callback Function to execute when the command value
|
29807
|
+
* @param {addQueryValueHandlerCallback} callback Function to execute when the command value retrieval occurs.
|
29648
29808
|
* @param {Object} scope Optional scope to execute the function in.
|
29649
29809
|
*/
|
29650
29810
|
addQueryValueHandler: function(name, callback, scope) {
|
@@ -29789,7 +29949,7 @@ define("tinymce/Editor", [
|
|
29789
29949
|
|
29790
29950
|
/**
|
29791
29951
|
* Sets the progress state, this will display a throbber/progess for the editor.
|
29792
|
-
* This is ideal for
|
29952
|
+
* This is ideal for asynchronous operations like an AJAX save call.
|
29793
29953
|
*
|
29794
29954
|
* @method setProgressState
|
29795
29955
|
* @param {Boolean} state Boolean state if the progress should be shown or hidden.
|
@@ -30889,7 +31049,7 @@ define("tinymce/EditorManager", [
|
|
30889
31049
|
* @property minorVersion
|
30890
31050
|
* @type String
|
30891
31051
|
*/
|
30892
|
-
minorVersion: '2.
|
31052
|
+
minorVersion: '2.5',
|
30893
31053
|
|
30894
31054
|
/**
|
30895
31055
|
* Release date of TinyMCE build.
|
@@ -30897,7 +31057,7 @@ define("tinymce/EditorManager", [
|
|
30897
31057
|
* @property releaseDate
|
30898
31058
|
* @type String
|
30899
31059
|
*/
|
30900
|
-
releaseDate: '2015-08-
|
31060
|
+
releaseDate: '2015-08-31',
|
30901
31061
|
|
30902
31062
|
/**
|
30903
31063
|
* Collection of editor instances.
|
@@ -30960,8 +31120,9 @@ define("tinymce/EditorManager", [
|
|
30960
31120
|
// tinymce.js tinymce.min.js tinymce.dev.js
|
30961
31121
|
// tinymce.jquery.js tinymce.jquery.min.js tinymce.jquery.dev.js
|
30962
31122
|
// tinymce.full.js tinymce.full.min.js tinymce.full.dev.js
|
31123
|
+
var srcScript = src.substring(src.lastIndexOf('/'));
|
30963
31124
|
if (/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(src)) {
|
30964
|
-
if (
|
31125
|
+
if (srcScript.indexOf('.min') != -1) {
|
30965
31126
|
suffix = '.min';
|
30966
31127
|
}
|
30967
31128
|
|
@@ -31464,6 +31625,12 @@ define("tinymce/EditorManager", [
|
|
31464
31625
|
* Contributing: http://www.tinymce.com/contributing
|
31465
31626
|
*/
|
31466
31627
|
|
31628
|
+
/**
|
31629
|
+
* Converts legacy input to modern HTML.
|
31630
|
+
*
|
31631
|
+
* @class tinymce.LegacyInput
|
31632
|
+
* @private
|
31633
|
+
*/
|
31467
31634
|
define("tinymce/LegacyInput", [
|
31468
31635
|
"tinymce/EditorManager",
|
31469
31636
|
"tinymce/util/Tools"
|
@@ -32205,6 +32372,12 @@ define("tinymce/Compat", [
|
|
32205
32372
|
* @namespace tinymce.util
|
32206
32373
|
*/
|
32207
32374
|
|
32375
|
+
/**
|
32376
|
+
* Contains modules to handle data binding.
|
32377
|
+
*
|
32378
|
+
* @namespace tinymce.data
|
32379
|
+
*/
|
32380
|
+
|
32208
32381
|
// Included from: js/tinymce/classes/ui/Layout.js
|
32209
32382
|
|
32210
32383
|
/**
|
@@ -32723,9 +32896,13 @@ define("tinymce/ui/Button", [
|
|
32723
32896
|
* @method repaint
|
32724
32897
|
*/
|
32725
32898
|
repaint: function() {
|
32726
|
-
var
|
32899
|
+
var btnElm = this.getEl().firstChild,
|
32900
|
+
btnStyle;
|
32727
32901
|
|
32728
|
-
|
32902
|
+
if (btnElm) {
|
32903
|
+
btnStyle = btnElm.style;
|
32904
|
+
btnStyle.width = btnStyle.height = "100%";
|
32905
|
+
}
|
32729
32906
|
|
32730
32907
|
this._super();
|
32731
32908
|
},
|
@@ -38174,5 +38351,5 @@ define("tinymce/ui/Throbber", [
|
|
38174
38351
|
};
|
38175
38352
|
});
|
38176
38353
|
|
38177
|
-
expose(["tinymce/dom/EventUtils","tinymce/dom/Sizzle","tinymce/Env","tinymce/util/Tools","tinymce/dom/DomQuery","tinymce/html/Styles","tinymce/dom/TreeWalker","tinymce/
|
38354
|
+
expose(["tinymce/dom/EventUtils","tinymce/dom/Sizzle","tinymce/Env","tinymce/util/Tools","tinymce/dom/DomQuery","tinymce/html/Styles","tinymce/dom/TreeWalker","tinymce/html/Entities","tinymce/dom/DOMUtils","tinymce/dom/ScriptLoader","tinymce/AddOnManager","tinymce/dom/RangeUtils","tinymce/html/Node","tinymce/html/Schema","tinymce/html/SaxParser","tinymce/html/DomParser","tinymce/html/Writer","tinymce/html/Serializer","tinymce/dom/Serializer","tinymce/util/VK","tinymce/dom/ControlSelection","tinymce/dom/BookmarkManager","tinymce/dom/Selection","tinymce/Formatter","tinymce/UndoManager","tinymce/EditorCommands","tinymce/util/URI","tinymce/util/Class","tinymce/util/EventDispatcher","tinymce/util/Observable","tinymce/ui/Selector","tinymce/ui/Collection","tinymce/ui/ReflowQueue","tinymce/ui/Control","tinymce/ui/Factory","tinymce/ui/KeyboardNavigation","tinymce/ui/Container","tinymce/ui/DragHelper","tinymce/ui/Scrollable","tinymce/ui/Panel","tinymce/ui/Movable","tinymce/ui/Resizable","tinymce/ui/FloatPanel","tinymce/ui/Window","tinymce/ui/MessageBox","tinymce/WindowManager","tinymce/EditorObservable","tinymce/Shortcuts","tinymce/util/Promise","tinymce/Editor","tinymce/util/I18n","tinymce/FocusManager","tinymce/EditorManager","tinymce/util/XHR","tinymce/util/JSON","tinymce/util/JSONRequest","tinymce/util/JSONP","tinymce/util/LocalStorage","tinymce/Compat","tinymce/ui/Layout","tinymce/ui/AbsoluteLayout","tinymce/ui/Tooltip","tinymce/ui/Widget","tinymce/ui/Button","tinymce/ui/ButtonGroup","tinymce/ui/Checkbox","tinymce/ui/ComboBox","tinymce/ui/ColorBox","tinymce/ui/PanelButton","tinymce/ui/ColorButton","tinymce/util/Color","tinymce/ui/ColorPicker","tinymce/ui/Path","tinymce/ui/ElementPath","tinymce/ui/FormItem","tinymce/ui/Form","tinymce/ui/FieldSet","tinymce/ui/FilePicker","tinymce/ui/FitLayout","tinymce/ui/FlexLayout","tinymce/ui/FlowLayout","tinymce/ui/FormatControls","tinymce/ui/GridLayout","tinymce/ui/Iframe","tinymce/ui/Label","tinymce/ui/Toolbar","tinymce/ui/MenuBar","tinymce/ui/MenuButton","tinymce/ui/MenuItem","tinymce/ui/Menu","tinymce/ui/ListBox","tinymce/ui/Radio","tinymce/ui/Rect","tinymce/ui/ResizeHandle","tinymce/ui/Slider","tinymce/ui/Spacer","tinymce/ui/SplitButton","tinymce/ui/StackLayout","tinymce/ui/TabPanel","tinymce/ui/TextBox","tinymce/ui/Throbber"]);
|
38178
38355
|
})(this);
|