tinymce-rails 4.0.12 → 4.0.16
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.
- data/README.md +5 -1
- data/app/assets/source/tinymce/tinymce.jquery.js +411 -62
- data/app/assets/source/tinymce/tinymce.js +411 -62
- data/lib/tinymce/rails/version.rb +2 -2
- 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/image/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/importcss/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/noneditable/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/tabfocus/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/table/plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/skins/lightgray/content.inline.min.css +1 -1
- data/vendor/assets/javascripts/tinymce/skins/lightgray/content.min.css +1 -1
- data/vendor/assets/javascripts/tinymce/skins/lightgray/skin.ie7.min.css +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 +9 -9
- data/vendor/assets/javascripts/tinymce/tinymce.js +10 -10
- metadata +2 -3
- data/vendor/assets/javascripts/tinymce/skins/lightgray/img/wline.gif +0 -0
data/README.md
CHANGED
@@ -68,7 +68,11 @@ or (2) with jQuery integration:
|
|
68
68
|
|
69
69
|
For each textarea that you want to use with TinyMCE, add the "tinymce" class and ensure it has a unique ID:
|
70
70
|
|
71
|
-
<%= text_area_tag :
|
71
|
+
<%= text_area_tag :content, "", :class => "tinymce", :rows => 40, :cols => 120 %>
|
72
|
+
|
73
|
+
or if you are using Rails' form builders:
|
74
|
+
|
75
|
+
<%= f.text_area :content, :class => "tinymce", :rows => 40, :cols => 120 %>
|
72
76
|
|
73
77
|
Then invoke the `tinymce` helper to initialize TinyMCE:
|
74
78
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
// 4.0.
|
1
|
+
// 4.0.16 (2014-01-31)
|
2
2
|
|
3
3
|
/**
|
4
4
|
* Compiled inline version. (Library mode)
|
@@ -584,7 +584,7 @@ define("tinymce/dom/EventUtils", [], function() {
|
|
584
584
|
}
|
585
585
|
|
586
586
|
function waitForDomLoaded() {
|
587
|
-
if (doc.readyState === "complete") {
|
587
|
+
if (doc.readyState === "complete" || doc.readyState === "interactive") {
|
588
588
|
removeEvent(doc, "readystatechange", waitForDomLoaded);
|
589
589
|
readyHandler();
|
590
590
|
}
|
@@ -615,7 +615,7 @@ define("tinymce/dom/EventUtils", [], function() {
|
|
615
615
|
addEvent(doc, "readystatechange", waitForDomLoaded);
|
616
616
|
|
617
617
|
// Wait until we can scroll, when we can the DOM is initialized
|
618
|
-
if (doc.documentElement.doScroll && win === win.top) {
|
618
|
+
if (doc.documentElement.doScroll && win.self === win.top) {
|
619
619
|
tryScroll();
|
620
620
|
}
|
621
621
|
}
|
@@ -2759,6 +2759,194 @@ define("tinymce/Env", [], function() {
|
|
2759
2759
|
};
|
2760
2760
|
});
|
2761
2761
|
|
2762
|
+
// Included from: js/tinymce/classes/dom/StyleSheetLoader.js
|
2763
|
+
|
2764
|
+
/**
|
2765
|
+
* StyleSheetLoader.js
|
2766
|
+
*
|
2767
|
+
* Copyright, Moxiecode Systems AB
|
2768
|
+
* Released under LGPL License.
|
2769
|
+
*
|
2770
|
+
* License: http://www.tinymce.com/license
|
2771
|
+
* Contributing: http://www.tinymce.com/contributing
|
2772
|
+
*/
|
2773
|
+
|
2774
|
+
/**
|
2775
|
+
* This class handles loading of external stylesheets and fires events when these are loaded.
|
2776
|
+
*
|
2777
|
+
* @class tinymce.dom.StyleSheetLoader
|
2778
|
+
* @private
|
2779
|
+
*/
|
2780
|
+
define("tinymce/dom/StyleSheetLoader", [], function() {
|
2781
|
+
"use strict";
|
2782
|
+
|
2783
|
+
return function(document, settings) {
|
2784
|
+
var idCount = 0, loadedStates = {}, maxLoadTime;
|
2785
|
+
|
2786
|
+
settings = settings || {};
|
2787
|
+
maxLoadTime = settings.maxLoadTime || 5000;
|
2788
|
+
|
2789
|
+
function appendToHead(node) {
|
2790
|
+
document.getElementsByTagName('head')[0].appendChild(node);
|
2791
|
+
}
|
2792
|
+
|
2793
|
+
/**
|
2794
|
+
* Loads the specified css style sheet file and call the loadedCallback once it's finished loading.
|
2795
|
+
*
|
2796
|
+
* @method load
|
2797
|
+
* @param {String} url Url to be loaded.
|
2798
|
+
* @param {Function} loadedCallback Callback to be executed when loaded.
|
2799
|
+
* @param {Function} errorCallback Callback to be executed when failed loading.
|
2800
|
+
*/
|
2801
|
+
function load(url, loadedCallback, errorCallback) {
|
2802
|
+
var link, style, startTime, state;
|
2803
|
+
|
2804
|
+
function passed() {
|
2805
|
+
var callbacks = state.passed, i = callbacks.length;
|
2806
|
+
|
2807
|
+
while (i--) {
|
2808
|
+
callbacks[i]();
|
2809
|
+
}
|
2810
|
+
|
2811
|
+
state.status = 2;
|
2812
|
+
state.passed = [];
|
2813
|
+
state.failed = [];
|
2814
|
+
}
|
2815
|
+
|
2816
|
+
function failed() {
|
2817
|
+
var callbacks = state.failed, i = callbacks.length;
|
2818
|
+
|
2819
|
+
while (i--) {
|
2820
|
+
callbacks[i]();
|
2821
|
+
}
|
2822
|
+
|
2823
|
+
state.status = 3;
|
2824
|
+
state.passed = [];
|
2825
|
+
state.failed = [];
|
2826
|
+
}
|
2827
|
+
|
2828
|
+
// Sniffs for older WebKit versions that have the link.onload but a broken one
|
2829
|
+
function isOldWebKit() {
|
2830
|
+
var webKitChunks = navigator.userAgent.match(/WebKit\/(\d*)/);
|
2831
|
+
return !!(webKitChunks && webKitChunks[1] < 536);
|
2832
|
+
}
|
2833
|
+
|
2834
|
+
// Calls the waitCallback until the test returns true or the timeout occurs
|
2835
|
+
function wait(testCallback, waitCallback) {
|
2836
|
+
if (!testCallback()) {
|
2837
|
+
// Wait for timeout
|
2838
|
+
if ((new Date().getTime()) - startTime < maxLoadTime) {
|
2839
|
+
window.setTimeout(waitCallback, 0);
|
2840
|
+
} else {
|
2841
|
+
failed();
|
2842
|
+
}
|
2843
|
+
}
|
2844
|
+
}
|
2845
|
+
|
2846
|
+
// Workaround for WebKit that doesn't properly support the onload event for link elements
|
2847
|
+
// Or WebKit that fires the onload event before the StyleSheet is added to the document
|
2848
|
+
function waitForWebKitLinkLoaded() {
|
2849
|
+
wait(function() {
|
2850
|
+
var styleSheets = document.styleSheets, styleSheet, i = styleSheets.length, owner;
|
2851
|
+
|
2852
|
+
while (i--) {
|
2853
|
+
styleSheet = styleSheets[i];
|
2854
|
+
owner = styleSheet.ownerNode ? styleSheet.ownerNode : styleSheet.owningElement;
|
2855
|
+
if (owner && owner.id === link.id) {
|
2856
|
+
passed();
|
2857
|
+
return true;
|
2858
|
+
}
|
2859
|
+
}
|
2860
|
+
}, waitForWebKitLinkLoaded);
|
2861
|
+
}
|
2862
|
+
|
2863
|
+
// Workaround for older Geckos that doesn't have any onload event for StyleSheets
|
2864
|
+
function waitForGeckoLinkLoaded() {
|
2865
|
+
wait(function() {
|
2866
|
+
try {
|
2867
|
+
// Accessing the cssRules will throw an exception until the CSS file is loaded
|
2868
|
+
var cssRules = style.sheet.cssRules;
|
2869
|
+
passed();
|
2870
|
+
return !!cssRules;
|
2871
|
+
} catch (ex) {
|
2872
|
+
// Ignore
|
2873
|
+
}
|
2874
|
+
}, waitForGeckoLinkLoaded);
|
2875
|
+
}
|
2876
|
+
|
2877
|
+
if (!loadedStates[url]) {
|
2878
|
+
state = {
|
2879
|
+
passed: [],
|
2880
|
+
failed: []
|
2881
|
+
};
|
2882
|
+
|
2883
|
+
loadedStates[url] = state;
|
2884
|
+
} else {
|
2885
|
+
state = loadedStates[url];
|
2886
|
+
}
|
2887
|
+
|
2888
|
+
if (loadedCallback) {
|
2889
|
+
state.passed.push(loadedCallback);
|
2890
|
+
}
|
2891
|
+
|
2892
|
+
if (errorCallback) {
|
2893
|
+
state.failed.push(errorCallback);
|
2894
|
+
}
|
2895
|
+
|
2896
|
+
// Is loading wait for it to pass
|
2897
|
+
if (state.status == 1) {
|
2898
|
+
return;
|
2899
|
+
}
|
2900
|
+
|
2901
|
+
// Has finished loading and was success
|
2902
|
+
if (state.status == 2) {
|
2903
|
+
passed();
|
2904
|
+
return;
|
2905
|
+
}
|
2906
|
+
|
2907
|
+
// Has finished loading and was a failure
|
2908
|
+
if (state.status == 3) {
|
2909
|
+
failed();
|
2910
|
+
return;
|
2911
|
+
}
|
2912
|
+
|
2913
|
+
// Start loading
|
2914
|
+
state.status = 1;
|
2915
|
+
link = document.createElement('link');
|
2916
|
+
link.rel = 'stylesheet';
|
2917
|
+
link.type = 'text/css';
|
2918
|
+
link.id = 'u' + (idCount++);
|
2919
|
+
link.async = false;
|
2920
|
+
link.defer = false;
|
2921
|
+
startTime = new Date().getTime();
|
2922
|
+
|
2923
|
+
// Feature detect onload on link element and sniff older webkits since it has an broken onload event
|
2924
|
+
if ("onload" in link && !isOldWebKit()) {
|
2925
|
+
link.onload = waitForWebKitLinkLoaded;
|
2926
|
+
link.onerror = failed;
|
2927
|
+
} else {
|
2928
|
+
// Sniff for old Firefox that doesn't support the onload event on link elements
|
2929
|
+
// TODO: Remove this in the future when everyone uses modern browsers
|
2930
|
+
if (navigator.userAgent.indexOf("Firefox") > 0) {
|
2931
|
+
style = document.createElement('style');
|
2932
|
+
style.textContent = '@import "' + url + '"';
|
2933
|
+
waitForGeckoLinkLoaded();
|
2934
|
+
appendToHead(style);
|
2935
|
+
return;
|
2936
|
+
} else {
|
2937
|
+
// Use the id owner on older webkits
|
2938
|
+
waitForWebKitLinkLoaded();
|
2939
|
+
}
|
2940
|
+
}
|
2941
|
+
|
2942
|
+
appendToHead(link);
|
2943
|
+
link.href = url;
|
2944
|
+
}
|
2945
|
+
|
2946
|
+
this.load = load;
|
2947
|
+
};
|
2948
|
+
});
|
2949
|
+
|
2762
2950
|
// Included from: js/tinymce/classes/dom/DOMUtils.js
|
2763
2951
|
|
2764
2952
|
/**
|
@@ -2790,8 +2978,9 @@ define("tinymce/dom/DOMUtils", [
|
|
2790
2978
|
"tinymce/dom/Range",
|
2791
2979
|
"tinymce/html/Entities",
|
2792
2980
|
"tinymce/Env",
|
2793
|
-
"tinymce/util/Tools"
|
2794
|
-
|
2981
|
+
"tinymce/util/Tools",
|
2982
|
+
"tinymce/dom/StyleSheetLoader"
|
2983
|
+
], function(Sizzle, Styles, EventUtils, TreeWalker, Range, Entities, Env, Tools, StyleSheetLoader) {
|
2795
2984
|
// Shorten names
|
2796
2985
|
var each = Tools.each, is = Tools.is, grep = Tools.grep, trim = Tools.trim, extend = Tools.extend;
|
2797
2986
|
var isWebKit = Env.webkit, isIE = Env.ie;
|
@@ -2817,6 +3006,7 @@ define("tinymce/dom/DOMUtils", [
|
|
2817
3006
|
self.stdMode = !isIE || doc.documentMode >= 8;
|
2818
3007
|
self.boxModel = !isIE || doc.compatMode == "CSS1Compat" || self.stdMode;
|
2819
3008
|
self.hasOuterHTML = "outerHTML" in doc.createElement("a");
|
3009
|
+
self.styleSheetLoader = new StyleSheetLoader(doc);
|
2820
3010
|
this.boundEvents = [];
|
2821
3011
|
|
2822
3012
|
self.settings = settings = extend({
|
@@ -3764,8 +3954,8 @@ define("tinymce/dom/DOMUtils", [
|
|
3764
3954
|
|
3765
3955
|
// Add scroll offsets from documentElement or body since IE with the wrong box model will use d.body and so do WebKit
|
3766
3956
|
// Also remove the body/documentelement clientTop/clientLeft on IE 6, 7 since they offset the position
|
3767
|
-
x = pos.left + (doc.documentElement.scrollLeft || doc.body.scrollLeft) - rootElm.
|
3768
|
-
y = pos.top + (doc.documentElement.scrollTop || doc.body.scrollTop) - rootElm.
|
3957
|
+
x = pos.left + (doc.documentElement.scrollLeft || doc.body.scrollLeft) - rootElm.clientLeft;
|
3958
|
+
y = pos.top + (doc.documentElement.scrollTop || doc.body.scrollTop) - rootElm.clientTop;
|
3769
3959
|
|
3770
3960
|
return {x: x, y: y};
|
3771
3961
|
}
|
@@ -9558,11 +9748,13 @@ define("tinymce/dom/ControlSelection", [
|
|
9558
9748
|
var controlElm;
|
9559
9749
|
|
9560
9750
|
function isChildOrEqual(node, parent) {
|
9561
|
-
|
9562
|
-
|
9563
|
-
|
9564
|
-
|
9565
|
-
|
9751
|
+
if (node) {
|
9752
|
+
do {
|
9753
|
+
if (node === parent) {
|
9754
|
+
return true;
|
9755
|
+
}
|
9756
|
+
} while ((node = node.parentNode));
|
9757
|
+
}
|
9566
9758
|
}
|
9567
9759
|
|
9568
9760
|
// Remove data-mce-selected from all elements since they might have been copied using Ctrl+c/v
|
@@ -9573,7 +9765,7 @@ define("tinymce/dom/ControlSelection", [
|
|
9573
9765
|
controlElm = e.type == 'mousedown' ? e.target : selection.getNode();
|
9574
9766
|
controlElm = dom.getParent(controlElm, isIE ? 'table' : 'table,img,hr');
|
9575
9767
|
|
9576
|
-
if (controlElm) {
|
9768
|
+
if (isChildOrEqual(controlElm, editor.getBody())) {
|
9577
9769
|
disableGeckoResize();
|
9578
9770
|
|
9579
9771
|
if (isChildOrEqual(selection.getStart(), controlElm) && isChildOrEqual(selection.getEnd(), controlElm)) {
|
@@ -9735,6 +9927,10 @@ define("tinymce/dom/ControlSelection", [
|
|
9735
9927
|
}
|
9736
9928
|
|
9737
9929
|
return {
|
9930
|
+
isResizable: isResizable,
|
9931
|
+
showResizeRect: showResizeRect,
|
9932
|
+
hideResizeRect: hideResizeRect,
|
9933
|
+
updateResizeRect: updateResizeRect,
|
9738
9934
|
controlSelect: controlSelect,
|
9739
9935
|
destroy: destroy
|
9740
9936
|
};
|
@@ -10169,7 +10365,7 @@ define("tinymce/dom/Selection", [
|
|
10169
10365
|
|
10170
10366
|
if (type == 2) {
|
10171
10367
|
element = t.getNode();
|
10172
|
-
name = element.nodeName;
|
10368
|
+
name = element ? element.nodeName : null;
|
10173
10369
|
|
10174
10370
|
if (name == 'IMG') {
|
10175
10371
|
return {name: name, index: findIndex(name, element)};
|
@@ -10553,7 +10749,8 @@ define("tinymce/dom/Selection", [
|
|
10553
10749
|
}
|
10554
10750
|
|
10555
10751
|
// We have W3C ranges and it's IE then fake control selection since IE9 doesn't handle that correctly yet
|
10556
|
-
|
10752
|
+
// IE 11 doesn't support the selection object so we check for that as well
|
10753
|
+
if (isIE && rng && rng.setStart && doc.selection) {
|
10557
10754
|
try {
|
10558
10755
|
// IE will sometimes throw an exception here
|
10559
10756
|
ieRng = doc.selection.createRange();
|
@@ -13338,7 +13535,7 @@ define("tinymce/Formatter", [
|
|
13338
13535
|
next = next ? 'nextSibling' : 'previousSibling';
|
13339
13536
|
|
13340
13537
|
for (node = inc ? node : node[next]; node; node = node[next]) {
|
13341
|
-
if (node.nodeType == 1
|
13538
|
+
if (node.nodeType == 1 && !isWhiteSpaceNode(node)) {
|
13342
13539
|
return node;
|
13343
13540
|
}
|
13344
13541
|
}
|
@@ -13396,7 +13593,7 @@ define("tinymce/Formatter", [
|
|
13396
13593
|
var name = attr.nodeName.toLowerCase();
|
13397
13594
|
|
13398
13595
|
// Don't compare internal attributes or style
|
13399
|
-
if (name.indexOf('_') !== 0 && name !== 'style') {
|
13596
|
+
if (name.indexOf('_') !== 0 && name !== 'style' && name !== 'data-mce-style') {
|
13400
13597
|
attribs[name] = dom.getAttrib(node, name);
|
13401
13598
|
}
|
13402
13599
|
});
|
@@ -15535,10 +15732,10 @@ define("tinymce/EditorCommands", [
|
|
15535
15732
|
}
|
15536
15733
|
|
15537
15734
|
each(selection.getSelectedBlocks(), function(element) {
|
15538
|
-
var indentStyleName;
|
15539
|
-
|
15540
15735
|
if (element.nodeName != "LI") {
|
15541
|
-
indentStyleName =
|
15736
|
+
var indentStyleName = editor.getParam('indent_use_margin', false) ? 'margin' : 'padding';
|
15737
|
+
|
15738
|
+
indentStyleName += dom.getStyle(element, 'direction', true) == 'rtl' ? 'Right' : 'Left';
|
15542
15739
|
|
15543
15740
|
if (command == 'outdent') {
|
15544
15741
|
value = Math.max(0, parseInt(element.style[indentStyleName] || 0, 10) - intentValue);
|
@@ -17204,7 +17401,6 @@ define("tinymce/ui/Control", [
|
|
17204
17401
|
|
17205
17402
|
var Control = Class.extend({
|
17206
17403
|
Statics: {
|
17207
|
-
controlIdLookup: {},
|
17208
17404
|
elementIdCache: elementIdCache
|
17209
17405
|
},
|
17210
17406
|
|
@@ -17326,10 +17522,10 @@ define("tinymce/ui/Control", [
|
|
17326
17522
|
* @return {tinymce.ui.Control} Control instance or undefined.
|
17327
17523
|
*/
|
17328
17524
|
getParentCtrl: function(elm) {
|
17329
|
-
var ctrl;
|
17525
|
+
var ctrl, lookup = this.getRoot().controlIdLookup;
|
17330
17526
|
|
17331
|
-
while (elm) {
|
17332
|
-
ctrl =
|
17527
|
+
while (elm && lookup) {
|
17528
|
+
ctrl = lookup[elm.id];
|
17333
17529
|
if (ctrl) {
|
17334
17530
|
break;
|
17335
17531
|
}
|
@@ -18209,7 +18405,7 @@ define("tinymce/ui/Control", [
|
|
18209
18405
|
|
18210
18406
|
if (self._rendered) {
|
18211
18407
|
if (name == 'label') {
|
18212
|
-
elm.setAttribute('aria-
|
18408
|
+
elm.setAttribute('aria-labelledby', self._id);
|
18213
18409
|
}
|
18214
18410
|
|
18215
18411
|
elm.setAttribute(name == 'role' ? name : 'aria-' + name, value);
|
@@ -18305,7 +18501,11 @@ define("tinymce/ui/Control", [
|
|
18305
18501
|
DomUtils.off(elm);
|
18306
18502
|
}
|
18307
18503
|
|
18308
|
-
|
18504
|
+
var lookup = self.getRoot().controlIdLookup;
|
18505
|
+
if (lookup) {
|
18506
|
+
delete lookup[self._id];
|
18507
|
+
}
|
18508
|
+
|
18309
18509
|
delete elementIdCache[self._id];
|
18310
18510
|
|
18311
18511
|
if (elm && elm.parentNode) {
|
@@ -18319,6 +18519,8 @@ define("tinymce/ui/Control", [
|
|
18319
18519
|
elm.parentNode.removeChild(elm);
|
18320
18520
|
}
|
18321
18521
|
|
18522
|
+
self._rendered = false;
|
18523
|
+
|
18322
18524
|
return self;
|
18323
18525
|
},
|
18324
18526
|
|
@@ -18408,7 +18610,12 @@ define("tinymce/ui/Control", [
|
|
18408
18610
|
}
|
18409
18611
|
|
18410
18612
|
// Add instance to lookup
|
18411
|
-
|
18613
|
+
var root = self.getRoot();
|
18614
|
+
if (!root.controlIdLookup) {
|
18615
|
+
root.controlIdLookup = {};
|
18616
|
+
}
|
18617
|
+
|
18618
|
+
root.controlIdLookup[self._id] = self;
|
18412
18619
|
|
18413
18620
|
for (var key in self._aria) {
|
18414
18621
|
self.aria(key, self._aria[key]);
|
@@ -18604,6 +18811,32 @@ define("tinymce/ui/Control", [
|
|
18604
18811
|
}
|
18605
18812
|
},
|
18606
18813
|
|
18814
|
+
getRoot: function() {
|
18815
|
+
var ctrl = this, rootControl, parents = [];
|
18816
|
+
|
18817
|
+
while (ctrl) {
|
18818
|
+
if (ctrl.rootControl) {
|
18819
|
+
rootControl = ctrl.rootControl;
|
18820
|
+
break;
|
18821
|
+
}
|
18822
|
+
|
18823
|
+
parents.push(ctrl);
|
18824
|
+
rootControl = ctrl;
|
18825
|
+
ctrl = ctrl.parent();
|
18826
|
+
}
|
18827
|
+
|
18828
|
+
if (!rootControl) {
|
18829
|
+
rootControl = this;
|
18830
|
+
}
|
18831
|
+
|
18832
|
+
var i = parents.length;
|
18833
|
+
while (i--) {
|
18834
|
+
parents[i].rootControl = rootControl;
|
18835
|
+
}
|
18836
|
+
|
18837
|
+
return rootControl;
|
18838
|
+
},
|
18839
|
+
|
18607
18840
|
/**
|
18608
18841
|
* Reflows the current control and it's parents.
|
18609
18842
|
* This should be used after you for example append children to the current control so
|
@@ -19152,13 +19385,13 @@ define("tinymce/ui/Container", [
|
|
19152
19385
|
* @return {String} HTML representing the control.
|
19153
19386
|
*/
|
19154
19387
|
renderHtml: function() {
|
19155
|
-
var self = this, layout = self._layout;
|
19388
|
+
var self = this, layout = self._layout, role = this.settings.role;
|
19156
19389
|
|
19157
19390
|
self.preRender();
|
19158
19391
|
layout.preRender(self);
|
19159
19392
|
|
19160
19393
|
return (
|
19161
|
-
'<div id="' + self._id + '" class="' + self.classes() + '" role="' + this.settings.role + '">' +
|
19394
|
+
'<div id="' + self._id + '" class="' + self.classes() + '"' + (role ? ' role="' + this.settings.role + '"' : '') + '>' +
|
19162
19395
|
'<div id="' + self._id + '-body" class="' + self.classes('body') + '">'+
|
19163
19396
|
(self.settings.html || '') + layout.renderHtml(self) +
|
19164
19397
|
'</div>' +
|
@@ -20037,13 +20270,11 @@ define("tinymce/ui/FloatPanel", [
|
|
20037
20270
|
if (settings.autohide) {
|
20038
20271
|
if (!documentClickHandler) {
|
20039
20272
|
documentClickHandler = function(e) {
|
20040
|
-
var i, clickCtrl = self.getParentCtrl(e.target);
|
20041
|
-
|
20042
20273
|
// Hide any float panel when a click is out side that float panel and the
|
20043
20274
|
// float panels direct parent for example a click on a menu button
|
20044
|
-
i = visiblePanels.length;
|
20275
|
+
var i = visiblePanels.length;
|
20045
20276
|
while (i--) {
|
20046
|
-
var panel = visiblePanels[i];
|
20277
|
+
var panel = visiblePanels[i], clickCtrl = panel.getParentCtrl(e.target);
|
20047
20278
|
|
20048
20279
|
if (panel.settings.autohide) {
|
20049
20280
|
if (clickCtrl) {
|
@@ -20930,7 +21161,7 @@ define("tinymce/ui/Window", [
|
|
20930
21161
|
focusCtrl = focusCtrl || ctrl;
|
20931
21162
|
|
20932
21163
|
// TODO: Figure out a better way
|
20933
|
-
if (ctrl.
|
21164
|
+
if (ctrl.subinput) {
|
20934
21165
|
items.push(ctrl.getEl('inp'));
|
20935
21166
|
|
20936
21167
|
if (ctrl.getEl('open')) {
|
@@ -21633,7 +21864,7 @@ define("tinymce/util/Quirks", [
|
|
21633
21864
|
});
|
21634
21865
|
|
21635
21866
|
editor.on('keypress', function(e) {
|
21636
|
-
if (!isDefaultPrevented(e) && !selection.isCollapsed() && e.charCode) {
|
21867
|
+
if (!isDefaultPrevented(e) && !selection.isCollapsed() && e.charCode && !VK.metaKeyPressed(e)) {
|
21637
21868
|
e.preventDefault();
|
21638
21869
|
customDelete(true);
|
21639
21870
|
editor.selection.setContent(String.fromCharCode(e.charCode));
|
@@ -21784,7 +22015,7 @@ define("tinymce/util/Quirks", [
|
|
21784
22015
|
// Case 2 IME doesn't initialize if you click the documentElement it also doesn't properly fire the focusin event
|
21785
22016
|
dom.bind(editor.getDoc(), 'mousedown', function(e) {
|
21786
22017
|
if (e.target == editor.getDoc().documentElement) {
|
21787
|
-
editor.
|
22018
|
+
editor.getBody().focus();
|
21788
22019
|
selection.setRng(selection.getRng());
|
21789
22020
|
}
|
21790
22021
|
});
|
@@ -22433,6 +22664,13 @@ define("tinymce/util/Quirks", [
|
|
22433
22664
|
}
|
22434
22665
|
}
|
22435
22666
|
|
22667
|
+
/**
|
22668
|
+
* Disables the autolinking in IE 9+ this is then re-enabled by the autolink plugin.
|
22669
|
+
*/
|
22670
|
+
function disableAutoUrlDetect() {
|
22671
|
+
setEditorCommandState("AutoUrlDetect", false);
|
22672
|
+
}
|
22673
|
+
|
22436
22674
|
// All browsers
|
22437
22675
|
disableBackspaceIntoATable();
|
22438
22676
|
removeBlockQuoteOnBackSpace();
|
@@ -22474,6 +22712,7 @@ define("tinymce/util/Quirks", [
|
|
22474
22712
|
|
22475
22713
|
if (Env.ie) {
|
22476
22714
|
selectAll();
|
22715
|
+
disableAutoUrlDetect();
|
22477
22716
|
}
|
22478
22717
|
|
22479
22718
|
// Gecko
|
@@ -22929,13 +23168,13 @@ define("tinymce/Editor", [
|
|
22929
23168
|
var isGecko = Env.gecko, ie = Env.ie;
|
22930
23169
|
|
22931
23170
|
function getEventTarget(editor, eventName) {
|
22932
|
-
if (eventName == 'selectionchange'
|
23171
|
+
if (eventName == 'selectionchange') {
|
22933
23172
|
return editor.getDoc();
|
22934
23173
|
}
|
22935
23174
|
|
22936
23175
|
// Need to bind mousedown/mouseup etc to document not body in iframe mode
|
22937
23176
|
// Since the user might click on the HTML element not the BODY
|
22938
|
-
if (!editor.inline && /^mouse|click|contextmenu/.test(eventName)) {
|
23177
|
+
if (!editor.inline && /^mouse|click|contextmenu|drop/.test(eventName)) {
|
22939
23178
|
return editor.getDoc();
|
22940
23179
|
}
|
22941
23180
|
|
@@ -23114,8 +23353,8 @@ define("tinymce/Editor", [
|
|
23114
23353
|
self.inline = settings.inline;
|
23115
23354
|
|
23116
23355
|
// Call setup
|
23117
|
-
self.execCallback('setup', self);
|
23118
23356
|
editorManager.fire('SetupEditor', self);
|
23357
|
+
self.execCallback('setup', self);
|
23119
23358
|
}
|
23120
23359
|
|
23121
23360
|
Editor.prototype = {
|
@@ -23241,7 +23480,7 @@ define("tinymce/Editor", [
|
|
23241
23480
|
function loadScripts() {
|
23242
23481
|
var scriptLoader = ScriptLoader.ScriptLoader;
|
23243
23482
|
|
23244
|
-
if (settings.language && settings.language != 'en') {
|
23483
|
+
if (settings.language && settings.language != 'en' && !settings.language_url) {
|
23245
23484
|
settings.language_url = self.editorManager.baseURL + '/langs/' + settings.language + '.js';
|
23246
23485
|
}
|
23247
23486
|
|
@@ -25286,7 +25525,11 @@ define("tinymce/FocusManager", [
|
|
25286
25525
|
if (!isUIElement(getActiveElement()) && focusedEditor == editor) {
|
25287
25526
|
editor.fire('blur', {focusedEditor: null});
|
25288
25527
|
editorManager.focusedEditor = null;
|
25289
|
-
|
25528
|
+
|
25529
|
+
// Make sure selection is valid could be invalid if the editor is blured and removed before the timeout occurs
|
25530
|
+
if (editor.selection) {
|
25531
|
+
editor.selection.lastFocusBookmark = null;
|
25532
|
+
}
|
25290
25533
|
}
|
25291
25534
|
}, 0);
|
25292
25535
|
});
|
@@ -25298,7 +25541,11 @@ define("tinymce/FocusManager", [
|
|
25298
25541
|
var activeEditor = editorManager.activeEditor;
|
25299
25542
|
|
25300
25543
|
if (activeEditor && e.target.ownerDocument == document) {
|
25301
|
-
|
25544
|
+
|
25545
|
+
// Check to make sure we have a valid selection
|
25546
|
+
if (activeEditor.selection) {
|
25547
|
+
activeEditor.selection.lastFocusBookmark = createBookmark(activeEditor.lastRng);
|
25548
|
+
}
|
25302
25549
|
|
25303
25550
|
// Fire a blur event if the element isn't a UI element
|
25304
25551
|
if (!isUIElement(e.target) && editorManager.focusedEditor == activeEditor) {
|
@@ -25376,7 +25623,7 @@ define("tinymce/EditorManager", [
|
|
25376
25623
|
* @property minorVersion
|
25377
25624
|
* @type String
|
25378
25625
|
*/
|
25379
|
-
minorVersion : '0.
|
25626
|
+
minorVersion : '0.16',
|
25380
25627
|
|
25381
25628
|
/**
|
25382
25629
|
* Release date of TinyMCE build.
|
@@ -25384,7 +25631,7 @@ define("tinymce/EditorManager", [
|
|
25384
25631
|
* @property releaseDate
|
25385
25632
|
* @type String
|
25386
25633
|
*/
|
25387
|
-
releaseDate: '
|
25634
|
+
releaseDate: '2014-01-31',
|
25388
25635
|
|
25389
25636
|
/**
|
25390
25637
|
* Collection of editor instances.
|
@@ -27392,7 +27639,7 @@ define("tinymce/ui/Checkbox", [
|
|
27392
27639
|
var self = this, id = self._id, prefix = self.classPrefix;
|
27393
27640
|
|
27394
27641
|
return (
|
27395
|
-
'<div id="' + id + '" class="' + self.classes() + '" unselectable="on" aria-
|
27642
|
+
'<div id="' + id + '" class="' + self.classes() + '" unselectable="on" aria-labelledby="' + id + '-al" tabindex="-1">' +
|
27396
27643
|
'<i class="' + prefix + 'ico ' + prefix + 'i-checkbox"></i>' +
|
27397
27644
|
'<span id="' + id +'-al" class="' + prefix + 'label">' + self.encode(self._text) + '</span>' +
|
27398
27645
|
'</div>'
|
@@ -27627,8 +27874,9 @@ define("tinymce/ui/ColorButton", [
|
|
27627
27874
|
*/
|
27628
27875
|
define("tinymce/ui/ComboBox", [
|
27629
27876
|
"tinymce/ui/Widget",
|
27877
|
+
"tinymce/ui/Factory",
|
27630
27878
|
"tinymce/ui/DomUtils"
|
27631
|
-
], function(Widget, DomUtils) {
|
27879
|
+
], function(Widget, Factory, DomUtils) {
|
27632
27880
|
"use strict";
|
27633
27881
|
|
27634
27882
|
return Widget.extend({
|
@@ -27644,6 +27892,14 @@ define("tinymce/ui/ComboBox", [
|
|
27644
27892
|
|
27645
27893
|
self._super(settings);
|
27646
27894
|
self.addClass('combobox');
|
27895
|
+
self.subinput = true;
|
27896
|
+
|
27897
|
+
settings = self.settings;
|
27898
|
+
settings.menu = settings.menu || settings.values;
|
27899
|
+
|
27900
|
+
if (settings.menu) {
|
27901
|
+
settings.icon = 'caret';
|
27902
|
+
}
|
27647
27903
|
|
27648
27904
|
self.on('click', function(e) {
|
27649
27905
|
var elm = e.target;
|
@@ -27651,6 +27907,14 @@ define("tinymce/ui/ComboBox", [
|
|
27651
27907
|
while (elm) {
|
27652
27908
|
if (elm.id && elm.id.indexOf('-open') != -1) {
|
27653
27909
|
self.fire('action');
|
27910
|
+
|
27911
|
+
if (settings.menu) {
|
27912
|
+
self.showMenu();
|
27913
|
+
|
27914
|
+
if (e.keyboard) {
|
27915
|
+
self.menu.items()[0].focus();
|
27916
|
+
}
|
27917
|
+
}
|
27654
27918
|
}
|
27655
27919
|
|
27656
27920
|
elm = elm.parentNode;
|
@@ -27699,6 +27963,55 @@ define("tinymce/ui/ComboBox", [
|
|
27699
27963
|
}
|
27700
27964
|
},
|
27701
27965
|
|
27966
|
+
showMenu: function() {
|
27967
|
+
var self = this, settings = self.settings, menu;
|
27968
|
+
|
27969
|
+
if (!self.menu) {
|
27970
|
+
menu = settings.menu || [];
|
27971
|
+
|
27972
|
+
// Is menu array then auto constuct menu control
|
27973
|
+
if (menu.length) {
|
27974
|
+
menu = {
|
27975
|
+
type: 'menu',
|
27976
|
+
items: menu
|
27977
|
+
};
|
27978
|
+
} else {
|
27979
|
+
menu.type = menu.type || 'menu';
|
27980
|
+
}
|
27981
|
+
|
27982
|
+
self.menu = Factory.create(menu).parent(self).renderTo(self.getContainerElm());
|
27983
|
+
self.fire('createmenu');
|
27984
|
+
self.menu.reflow();
|
27985
|
+
self.menu.on('cancel', function(e) {
|
27986
|
+
if (e.control === self.menu) {
|
27987
|
+
self.focus();
|
27988
|
+
}
|
27989
|
+
});
|
27990
|
+
|
27991
|
+
self.menu.on('show hide', function(e) {
|
27992
|
+
e.control.items().each(function(ctrl) {
|
27993
|
+
ctrl.active(ctrl.value() == self.value());
|
27994
|
+
});
|
27995
|
+
}).fire('show');
|
27996
|
+
|
27997
|
+
self.menu.on('select', function(e) {
|
27998
|
+
self.value(e.control.value());
|
27999
|
+
});
|
28000
|
+
|
28001
|
+
self.on('focusin', function(e) {
|
28002
|
+
if (e.target.tagName == 'INPUT') {
|
28003
|
+
self.menu.hide();
|
28004
|
+
}
|
28005
|
+
});
|
28006
|
+
|
28007
|
+
self.aria('expanded', true);
|
28008
|
+
}
|
28009
|
+
|
28010
|
+
self.menu.show();
|
28011
|
+
self.menu.layoutRect({w: self.layoutRect().w});
|
28012
|
+
self.menu.moveRel(self.getEl(), self.isRtl() ? ['br-tr', 'tr-br'] : ['bl-tl', 'tl-bl']);
|
28013
|
+
},
|
28014
|
+
|
27702
28015
|
/**
|
27703
28016
|
* Getter/setter function for the control value.
|
27704
28017
|
*
|
@@ -27820,16 +28133,40 @@ define("tinymce/ui/ComboBox", [
|
|
27820
28133
|
renderHtml: function() {
|
27821
28134
|
var self = this, id = self._id, settings = self.settings, prefix = self.classPrefix;
|
27822
28135
|
var value = settings.value || settings.placeholder || '';
|
27823
|
-
var icon, text, openBtnHtml = '';
|
28136
|
+
var icon, text, openBtnHtml = '', extraAttrs = '';
|
28137
|
+
|
28138
|
+
if ("spellcheck" in settings) {
|
28139
|
+
extraAttrs += ' spellcheck="' + settings.spellcheck + '"';
|
28140
|
+
}
|
28141
|
+
|
28142
|
+
if (settings.maxLength) {
|
28143
|
+
extraAttrs += ' maxlength="' + settings.maxLength + '"';
|
28144
|
+
}
|
28145
|
+
|
28146
|
+
if (settings.size) {
|
28147
|
+
extraAttrs += ' size="' + settings.size + '"';
|
28148
|
+
}
|
28149
|
+
|
28150
|
+
if (settings.subtype) {
|
28151
|
+
extraAttrs += ' type="' + settings.subtype + '"';
|
28152
|
+
}
|
28153
|
+
|
28154
|
+
if (self.disabled()) {
|
28155
|
+
extraAttrs += ' disabled="disabled"';
|
28156
|
+
}
|
28157
|
+
|
28158
|
+
icon = settings.icon;
|
28159
|
+
if (icon && icon != 'caret') {
|
28160
|
+
icon = prefix + 'ico ' + prefix + 'i-' + settings.icon;
|
28161
|
+
}
|
27824
28162
|
|
27825
|
-
icon = settings.icon ? prefix + 'ico ' + prefix + 'i-' + settings.icon : '';
|
27826
28163
|
text = self._text;
|
27827
28164
|
|
27828
28165
|
if (icon || text) {
|
27829
28166
|
openBtnHtml = (
|
27830
28167
|
'<div id="' + id + '-open" class="' + prefix + 'btn ' + prefix + 'open" tabIndex="-1">' +
|
27831
28168
|
'<button id="' + id + '-action" type="button" hidefocus tabindex="-1">' +
|
27832
|
-
(icon ? '<i class="' + icon + '"></i>' : '<i class="' + prefix + 'caret"></i>') +
|
28169
|
+
(icon != 'caret' ? '<i class="' + icon + '"></i>' : '<i class="' + prefix + 'caret"></i>') +
|
27833
28170
|
(text ? (icon ? ' ' : '') + text : '') +
|
27834
28171
|
'</button>' +
|
27835
28172
|
'</div>'
|
@@ -27841,7 +28178,7 @@ define("tinymce/ui/ComboBox", [
|
|
27841
28178
|
return (
|
27842
28179
|
'<div id="' + id + '" class="' + self.classes() + '">' +
|
27843
28180
|
'<input id="' + id + '-inp" class="' + prefix + 'textbox ' + prefix + 'placeholder" value="' +
|
27844
|
-
value + '" hidefocus="true"' +
|
28181
|
+
value + '" hidefocus="true"' + extraAttrs + '>' +
|
27845
28182
|
openBtnHtml +
|
27846
28183
|
'</div>'
|
27847
28184
|
);
|
@@ -28213,7 +28550,7 @@ define("tinymce/ui/Form", [
|
|
28213
28550
|
autoResize: "overflow",
|
28214
28551
|
defaults: {flex: 1},
|
28215
28552
|
items: [
|
28216
|
-
{type: 'label', text: label, flex: 0, forId: ctrl._id}
|
28553
|
+
{type: 'label', text: label, flex: 0, forId: ctrl._id, disabled: ctrl.disabled()}
|
28217
28554
|
]
|
28218
28555
|
});
|
28219
28556
|
|
@@ -28826,7 +29163,7 @@ define("tinymce/ui/FormatControls", [
|
|
28826
29163
|
// Default preview
|
28827
29164
|
if (!previewStyles) {
|
28828
29165
|
previewStyles = 'font-family font-size font-weight font-style text-decoration ' +
|
28829
|
-
'text-transform color background-color border border-radius';
|
29166
|
+
'text-transform color background-color border border-radius outline text-shadow';
|
28830
29167
|
}
|
28831
29168
|
|
28832
29169
|
// Removes any variables since these can't be previewed
|
@@ -29048,17 +29385,31 @@ define("tinymce/ui/FormatControls", [
|
|
29048
29385
|
return menu;
|
29049
29386
|
}
|
29050
29387
|
|
29388
|
+
function createStylesMenu() {
|
29389
|
+
var menu;
|
29390
|
+
|
29391
|
+
if (editor.settings.style_formats_merge) {
|
29392
|
+
if (editor.settings.style_formats) {
|
29393
|
+
menu = createMenu(defaultStyleFormats.concat(editor.settings.style_formats));
|
29394
|
+
} else {
|
29395
|
+
menu = createMenu(defaultStyleFormats);
|
29396
|
+
}
|
29397
|
+
} else {
|
29398
|
+
menu = createMenu(editor.settings.style_formats || defaultStyleFormats);
|
29399
|
+
}
|
29400
|
+
|
29401
|
+
return menu;
|
29402
|
+
}
|
29403
|
+
|
29051
29404
|
editor.on('init', function() {
|
29052
29405
|
each(newFormats, function(format) {
|
29053
29406
|
editor.formatter.register(format.name, format);
|
29054
29407
|
});
|
29055
29408
|
});
|
29056
29409
|
|
29057
|
-
|
29058
|
-
|
29059
|
-
menu = {
|
29410
|
+
return {
|
29060
29411
|
type: 'menu',
|
29061
|
-
items:
|
29412
|
+
items: createStylesMenu(),
|
29062
29413
|
onPostRender: function(e) {
|
29063
29414
|
editor.fire('renderFormatsMenu', {control: e.control});
|
29064
29415
|
},
|
@@ -29089,8 +29440,6 @@ define("tinymce/ui/FormatControls", [
|
|
29089
29440
|
}
|
29090
29441
|
}
|
29091
29442
|
};
|
29092
|
-
|
29093
|
-
return menu;
|
29094
29443
|
}
|
29095
29444
|
|
29096
29445
|
formatMenu = createFormatMenu();
|
@@ -29150,7 +29499,7 @@ define("tinymce/ui/FormatControls", [
|
|
29150
29499
|
|
29151
29500
|
// Simple command controls with format state
|
29152
29501
|
each({
|
29153
|
-
blockquote: ['
|
29502
|
+
blockquote: ['Blockquote', 'mceBlockQuote'],
|
29154
29503
|
numlist: ['Numbered list', 'InsertOrderedList'],
|
29155
29504
|
bullist: ['Bullet list', 'InsertUnorderedList'],
|
29156
29505
|
subscript: ['Subscript', 'Subscript'],
|
@@ -29845,7 +30194,7 @@ define("tinymce/ui/Label", [
|
|
29845
30194
|
var self = this, forId = self.settings.forId;
|
29846
30195
|
|
29847
30196
|
return (
|
29848
|
-
'<label id="' + self._id + '" class="' + self.classes() + '"' + (forId ? ' for="' + forId : '') + '
|
30197
|
+
'<label id="' + self._id + '" class="' + self.classes() + '"' + (forId ? ' for="' + forId +'"' : '') + '>' +
|
29849
30198
|
self.encode(self._text) +
|
29850
30199
|
'</label>'
|
29851
30200
|
);
|
@@ -30847,7 +31196,7 @@ define("tinymce/ui/ResizeHandle", [
|
|
30847
31196
|
self.fire('Resize', e);
|
30848
31197
|
},
|
30849
31198
|
|
30850
|
-
|
31199
|
+
stop: function() {
|
30851
31200
|
self.fire('ResizeEnd');
|
30852
31201
|
}
|
30853
31202
|
});
|
@@ -31521,5 +31870,5 @@ define("tinymce/ui/Throbber", [
|
|
31521
31870
|
};
|
31522
31871
|
});
|
31523
31872
|
|
31524
|
-
expose(["tinymce/dom/Sizzle","tinymce/html/Styles","tinymce/dom/EventUtils","tinymce/dom/TreeWalker","tinymce/util/Tools","tinymce/dom/Range","tinymce/html/Entities","tinymce/Env","tinymce/dom/DOMUtils","tinymce/dom/ScriptLoader","tinymce/AddOnManager","tinymce/html/Node","tinymce/html/Schema","tinymce/html/SaxParser","tinymce/html/DomParser","tinymce/html/Writer","tinymce/html/Serializer","tinymce/dom/Serializer","tinymce/dom/TridentSelection","tinymce/util/VK","tinymce/dom/ControlSelection","tinymce/dom/Selection","tinymce/dom/RangeUtils","tinymce/Formatter","tinymce/UndoManager","tinymce/EnterKey","tinymce/ForceBlocks","tinymce/EditorCommands","tinymce/util/URI","tinymce/util/Class","tinymce/ui/Selector","tinymce/ui/Collection","tinymce/ui/DomUtils","tinymce/ui/Control","tinymce/ui/Factory","tinymce/ui/Container","tinymce/ui/DragHelper","tinymce/ui/Scrollable","tinymce/ui/Panel","tinymce/ui/Movable","tinymce/ui/Resizable","tinymce/ui/FloatPanel","tinymce/ui/KeyboardNavigation","tinymce/ui/Window","tinymce/ui/MessageBox","tinymce/WindowManager","tinymce/util/Quirks","tinymce/util/Observable","tinymce/Shortcuts","tinymce/Editor","tinymce/util/I18n","tinymce/FocusManager","tinymce/EditorManager","tinymce/LegacyInput","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/PanelButton","tinymce/ui/ColorButton","tinymce/ui/ComboBox","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/ListBox","tinymce/ui/MenuItem","tinymce/ui/Menu","tinymce/ui/Radio","tinymce/ui/ResizeHandle","tinymce/ui/Spacer","tinymce/ui/SplitButton","tinymce/ui/StackLayout","tinymce/ui/TabPanel","tinymce/ui/TextBox","tinymce/ui/Throbber"]);
|
31873
|
+
expose(["tinymce/dom/Sizzle","tinymce/html/Styles","tinymce/dom/EventUtils","tinymce/dom/TreeWalker","tinymce/util/Tools","tinymce/dom/Range","tinymce/html/Entities","tinymce/Env","tinymce/dom/StyleSheetLoader","tinymce/dom/DOMUtils","tinymce/dom/ScriptLoader","tinymce/AddOnManager","tinymce/html/Node","tinymce/html/Schema","tinymce/html/SaxParser","tinymce/html/DomParser","tinymce/html/Writer","tinymce/html/Serializer","tinymce/dom/Serializer","tinymce/dom/TridentSelection","tinymce/util/VK","tinymce/dom/ControlSelection","tinymce/dom/Selection","tinymce/dom/RangeUtils","tinymce/Formatter","tinymce/UndoManager","tinymce/EnterKey","tinymce/ForceBlocks","tinymce/EditorCommands","tinymce/util/URI","tinymce/util/Class","tinymce/ui/Selector","tinymce/ui/Collection","tinymce/ui/DomUtils","tinymce/ui/Control","tinymce/ui/Factory","tinymce/ui/Container","tinymce/ui/DragHelper","tinymce/ui/Scrollable","tinymce/ui/Panel","tinymce/ui/Movable","tinymce/ui/Resizable","tinymce/ui/FloatPanel","tinymce/ui/KeyboardNavigation","tinymce/ui/Window","tinymce/ui/MessageBox","tinymce/WindowManager","tinymce/util/Quirks","tinymce/util/Observable","tinymce/Shortcuts","tinymce/Editor","tinymce/util/I18n","tinymce/FocusManager","tinymce/EditorManager","tinymce/LegacyInput","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/PanelButton","tinymce/ui/ColorButton","tinymce/ui/ComboBox","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/ListBox","tinymce/ui/MenuItem","tinymce/ui/Menu","tinymce/ui/Radio","tinymce/ui/ResizeHandle","tinymce/ui/Spacer","tinymce/ui/SplitButton","tinymce/ui/StackLayout","tinymce/ui/TabPanel","tinymce/ui/TextBox","tinymce/ui/Throbber"]);
|
31525
31874
|
})(this);
|