tinymce-rails 4.1.3 → 4.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7b10bebdbdb38594580eae5b6efb7779ccbf7d90
4
- data.tar.gz: 8f272bf38e6f925f8b7f661e78bd94322fbd5146
3
+ metadata.gz: bd66fea9a1e427a976f204236381836e8d9b43a5
4
+ data.tar.gz: 7d482f906a0324485ecb1d62ace6e68c348b62ff
5
5
  SHA512:
6
- metadata.gz: d6c327d32ff8d7a2e7ab86f87870a35d46359a31bcfa4244e106f17ab3903e43dc50c24dc9937b3e7edd6b7ca4bf44784c9b8ae8c7ea76481d1689d1f6ed8e28
7
- data.tar.gz: 46b11c4ac4f498ce446b35b9763f514fc693d36a5753415af8accc2008079e161bb84c508a1a3af0499891f1d1d3d6244c95855d200d58f80e47e5c7fc62011b
6
+ metadata.gz: 060349ddf2b7d47d47f180cb777b5c62fb2801dcd597b9c5fb7ffb51c6aa5fa9096cb2992d583ceeff683b0ab56298843c11ae943fa56e323dd8ace5a6c446c2
7
+ data.tar.gz: a6541df63a955101ec3248ef0f4c62e1917393fc79e8f9b94d0f85f2b740d3fbd2111f8dd21a7da0b3442a399da8063a6f5712fb38cc533d595f9bc775486171
@@ -1,4 +1,4 @@
1
- // 4.1.3 (2014-07-29)
1
+ // 4.1.4 (2014-08-21)
2
2
 
3
3
  /**
4
4
  * Compiled inline version. (Library mode)
@@ -192,11 +192,11 @@ define("tinymce/dom/EventUtils", [], function() {
192
192
  var doc = eventDoc.documentElement;
193
193
  var body = eventDoc.body;
194
194
 
195
- event.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -
196
- ( doc && doc.clientLeft || body && body.clientLeft || 0);
195
+ event.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) -
196
+ (doc && doc.clientLeft || body && body.clientLeft || 0);
197
197
 
198
- event.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0 ) -
199
- ( doc && doc.clientTop || body && body.clientTop || 0);
198
+ event.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) -
199
+ (doc && doc.clientTop || body && body.clientTop || 0);
200
200
  }
201
201
 
202
202
  // Add preventDefault method
@@ -1921,7 +1921,7 @@ define("tinymce/dom/DomQuery", [
1921
1921
  self[i].innerHTML = value;
1922
1922
  }
1923
1923
  } catch (ex) {
1924
- // Workaround for "Unkown runtime error" when DIV is added to P on IE
1924
+ // Workaround for "Unknown runtime error" when DIV is added to P on IE
1925
1925
  DomQuery(self[i]).empty().append(value);
1926
1926
  }
1927
1927
 
@@ -2512,10 +2512,18 @@ define("tinymce/dom/DomQuery", [
2512
2512
  text: Sizzle.getText,
2513
2513
  contains: Sizzle.contains,
2514
2514
  filter: function(expr, elems, not) {
2515
+ var i = elems.length;
2516
+
2515
2517
  if (not) {
2516
2518
  expr = ":not(" + expr + ")";
2517
2519
  }
2518
2520
 
2521
+ while (i--) {
2522
+ if (elems[i].nodeType != 1) {
2523
+ elems.splice(i, 1);
2524
+ }
2525
+ }
2526
+
2519
2527
  if (elems.length === 1) {
2520
2528
  elems = DomQuery.find.matchesSelector(elems[0], expr) ? [elems[0]] : [];
2521
2529
  } else {
@@ -7508,8 +7516,8 @@ define("tinymce/NodeChange", [
7508
7516
  editor.on('SelectionChange', function() {
7509
7517
  var startElm = editor.selection.getStart(true);
7510
7518
 
7511
- // Selection change might fire when focus is lost so check if the start is still within the body
7512
- if (!isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) {
7519
+ // Fire a nodechange only when the selection isn't collapsed since focusout will collapse and remove the selection
7520
+ if (!editor.selection.isCollapsed() && !isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) {
7513
7521
  editor.nodeChanged({selectionChange: true});
7514
7522
  }
7515
7523
  });
@@ -7796,7 +7804,7 @@ define("tinymce/html/Node", [], function() {
7796
7804
  unwrap: function() {
7797
7805
  var self = this, node, next;
7798
7806
 
7799
- for (node = self.firstChild; node; ) {
7807
+ for (node = self.firstChild; node;) {
7800
7808
  next = node.next;
7801
7809
  self.insert(node, self, true);
7802
7810
  node = next;
@@ -7998,11 +8006,11 @@ define("tinymce/html/Node", [], function() {
7998
8006
  return false;
7999
8007
  }
8000
8008
 
8001
- // Keep elements with data attributes or name attribute like <a name="1"></a>
8009
+ // Keep bookmark nodes and name attribute like <a name="1"></a>
8002
8010
  i = node.attributes.length;
8003
8011
  while (i--) {
8004
8012
  name = node.attributes[i].name;
8005
- if (name === "name" || name.indexOf('data-mce-') === 0) {
8013
+ if (name === "name" || name.indexOf('data-mce-bookmark') === 0) {
8006
8014
  return false;
8007
8015
  }
8008
8016
  }
@@ -9641,7 +9649,7 @@ define("tinymce/html/DomParser", [
9641
9649
  tempNode = currentNode;
9642
9650
  }
9643
9651
 
9644
- for (childNode = parents[i].firstChild; childNode && childNode != parents[i + 1]; ) {
9652
+ for (childNode = parents[i].firstChild; childNode && childNode != parents[i + 1];) {
9645
9653
  nextNode = childNode.next;
9646
9654
  tempNode.append(childNode);
9647
9655
  childNode = nextNode;
@@ -9890,7 +9898,7 @@ define("tinymce/html/DomParser", [
9890
9898
  function removeWhitespaceBefore(node) {
9891
9899
  var textNode, textVal, sibling;
9892
9900
 
9893
- for (textNode = node.prev; textNode && textNode.type === 3; ) {
9901
+ for (textNode = node.prev; textNode && textNode.type === 3;) {
9894
9902
  textVal = textNode.value.replace(endWhiteSpaceRegExp, '');
9895
9903
 
9896
9904
  if (textVal.length > 0) {
@@ -11717,8 +11725,8 @@ define("tinymce/dom/ControlSelection", [
11717
11725
  'z-index: 10000' +
11718
11726
  '}' +
11719
11727
  rootClass + ' .mce-resize-helper {' +
11720
- 'background-color: #555;' +
11721
- 'background-color: rgba(0,0,0,0.75);' +
11728
+ 'background: #555;' +
11729
+ 'background: rgba(0,0,0,0.75);' +
11722
11730
  'border-radius: 3px;' +
11723
11731
  'border: 1px;' +
11724
11732
  'color: white;' +
@@ -12028,6 +12036,11 @@ define("tinymce/dom/ControlSelection", [
12028
12036
  }
12029
12037
  }
12030
12038
 
12039
+ // Ignore all events while resizing
12040
+ if (resizeStarted) {
12041
+ return;
12042
+ }
12043
+
12031
12044
  // Remove data-mce-selected from all elements since they might have been copied using Ctrl+c/v
12032
12045
  each(dom.select('img[data-mce-selected],hr[data-mce-selected]'), function(img) {
12033
12046
  img.removeAttribute('data-mce-selected');
@@ -13110,7 +13123,7 @@ define("tinymce/dom/Selection", [
13110
13123
  getRng: function(w3c) {
13111
13124
  var self = this, selection, rng, elm, doc = self.win.document, ieRng;
13112
13125
 
13113
- function tryCompareBounderyPoints(how, sourceRange, destinationRange) {
13126
+ function tryCompareBoundaryPoints(how, sourceRange, destinationRange) {
13114
13127
  try {
13115
13128
  return sourceRange.compareBoundaryPoints(how, destinationRange);
13116
13129
  } catch (ex) {
@@ -13190,8 +13203,8 @@ define("tinymce/dom/Selection", [
13190
13203
  }
13191
13204
 
13192
13205
  if (self.selectedRange && self.explicitRange) {
13193
- if (tryCompareBounderyPoints(rng.START_TO_START, rng, self.selectedRange) === 0 &&
13194
- tryCompareBounderyPoints(rng.END_TO_END, rng, self.selectedRange) === 0) {
13206
+ if (tryCompareBoundaryPoints(rng.START_TO_START, rng, self.selectedRange) === 0 &&
13207
+ tryCompareBoundaryPoints(rng.END_TO_END, rng, self.selectedRange) === 0) {
13195
13208
  // Safari, Opera and Chrome only ever select text which causes the range to change.
13196
13209
  // This lets us use the originally set range if the selection hasn't been changed by the user.
13197
13210
  rng = self.explicitRange;
@@ -13532,6 +13545,30 @@ define("tinymce/dom/Selection", [
13532
13545
  }
13533
13546
  },
13534
13547
 
13548
+ placeCaretAt: function(clientX, clientY) {
13549
+ var doc = this.editor.getDoc(), rng, point;
13550
+
13551
+ if (doc.caretPositionFromPoint) {
13552
+ point = doc.caretPositionFromPoint(clientX, clientY);
13553
+ rng = doc.createRange();
13554
+ rng.setStart(point.offsetNode, point.offset);
13555
+ rng.collapse(true);
13556
+ } else if (doc.caretRangeFromPoint) {
13557
+ rng = doc.caretRangeFromPoint(clientX, clientY);
13558
+ } else if (doc.body.createTextRange) {
13559
+ rng = doc.body.createTextRange();
13560
+
13561
+ try {
13562
+ rng.moveToPoint(clientX, clientY);
13563
+ rng.collapse(true);
13564
+ } catch (ex) {
13565
+ rng.collapse(clientY < doc.body.clientHeight);
13566
+ }
13567
+ }
13568
+
13569
+ this.setRng(rng);
13570
+ },
13571
+
13535
13572
  _moveEndPoint: function(rng, node, start) {
13536
13573
  var root = node, walker = new TreeWalker(node, root);
13537
13574
  var nonEmptyElementsMap = this.dom.schema.getNonEmptyElements();
@@ -15248,7 +15285,7 @@ define("tinymce/Formatter", [
15248
15285
  offset = node.nodeType === 3 ? node.length : node.childNodes.length;
15249
15286
  }
15250
15287
  }
15251
- return { node: node, offset: offset };
15288
+ return {node: node, offset: offset};
15252
15289
  }
15253
15290
 
15254
15291
  // If index based start position then resolve it
@@ -16212,7 +16249,7 @@ define("tinymce/UndoManager", [
16212
16249
  * @return {String} HTML contents of the editor excluding some internal bogus elements.
16213
16250
  */
16214
16251
  function getContent() {
16215
- var content = trim(editor.getContent({format: 'raw', no_events: 1}));
16252
+ var content = editor.getContent({format: 'raw', no_events: 1});
16216
16253
  var bogusAllRegExp = /<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g;
16217
16254
  var endTagIndex, index, matchLength, matches, shortEndedElements, schema = editor.schema;
16218
16255
 
@@ -16234,7 +16271,7 @@ define("tinymce/UndoManager", [
16234
16271
  bogusAllRegExp.lastIndex = index - matchLength;
16235
16272
  }
16236
16273
 
16237
- return content;
16274
+ return trim(content);
16238
16275
  }
16239
16276
 
16240
16277
  function addNonTypingUndoLevel(e) {
@@ -17169,7 +17206,7 @@ define("tinymce/EnterKey", [
17169
17206
  dom.setAttrib(newBlock, 'id', ''); // Remove ID since it needs to be document unique
17170
17207
 
17171
17208
  // Allow custom handling of new blocks
17172
- editor.fire('NewBlock', { newBlock: newBlock });
17209
+ editor.fire('NewBlock', {newBlock: newBlock});
17173
17210
 
17174
17211
  undoManager.add();
17175
17212
  }
@@ -17709,7 +17746,7 @@ define("tinymce/EditorCommands", [
17709
17746
  // Setup parser and serializer
17710
17747
  parser = editor.parser;
17711
17748
  serializer = new Serializer({}, editor.schema);
17712
- bookmarkHtml = '<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#200B;</span>';
17749
+ bookmarkHtml = '<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#x200B;</span>';
17713
17750
 
17714
17751
  // Run beforeSetContent handlers on the HTML to be inserted
17715
17752
  args = {content: value, format: 'html', selection: true};
@@ -17757,7 +17794,9 @@ define("tinymce/EditorCommands", [
17757
17794
 
17758
17795
  for (node = node.prev; node; node = node.walk(true)) {
17759
17796
  if (node.type == 3 || !dom.isBlock(node.name)) {
17760
- node.parent.insert(marker, node, node.name === 'br');
17797
+ if (editor.schema.isValidChild(node.parent.name, 'span')) {
17798
+ node.parent.insert(marker, node, node.name === 'br');
17799
+ }
17761
17800
  break;
17762
17801
  }
17763
17802
  }
@@ -21672,7 +21711,7 @@ define("tinymce/ui/KeyboardNavigation", [
21672
21711
  /**
21673
21712
  * Returns the navigation root control for the specified control. The navigation root
21674
21713
  * is the control that the keyboard navigation gets scoped to for example a menubar or toolbar group.
21675
- * It will look for parents of the specified target control or the currenty focused control if this option is omitted.
21714
+ * It will look for parents of the specified target control or the currently focused control if this option is omitted.
21676
21715
  *
21677
21716
  * @private
21678
21717
  * @param {tinymce.ui.Control} targetControl Optional target control to find root of.
@@ -24124,7 +24163,7 @@ define("tinymce/WindowManager", [
24124
24163
  self.open = function(args, params) {
24125
24164
  var win;
24126
24165
 
24127
- editor.editorManager.activeEditor = editor;
24166
+ editor.editorManager.setActive(editor);
24128
24167
 
24129
24168
  args.title = args.title || ' ';
24130
24169
 
@@ -24781,17 +24820,19 @@ define("tinymce/util/Quirks", [
24781
24820
  */
24782
24821
  function selectControlElements() {
24783
24822
  editor.on('click', function(e) {
24784
- e = e.target;
24823
+ var target = e.target;
24785
24824
 
24786
24825
  // Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250
24787
24826
  // WebKit can't even do simple things like selecting an image
24788
24827
  // Needs tobe the setBaseAndExtend or it will fail to select floated images
24789
- if (/^(IMG|HR)$/.test(e.nodeName)) {
24790
- selection.getSel().setBaseAndExtent(e, 0, e, 1);
24828
+ if (/^(IMG|HR)$/.test(target.nodeName)) {
24829
+ e.preventDefault();
24830
+ selection.getSel().setBaseAndExtent(target, 0, target, 1);
24791
24831
  }
24792
24832
 
24793
- if (e.nodeName == 'A' && dom.hasClass(e, 'mce-item-anchor')) {
24794
- selection.select(e);
24833
+ if (target.nodeName == 'A' && dom.hasClass(target, 'mce-item-anchor')) {
24834
+ e.preventDefault();
24835
+ selection.select(target);
24795
24836
  }
24796
24837
  });
24797
24838
  }
@@ -25424,6 +25465,13 @@ define("tinymce/util/Quirks", [
25424
25465
  });
25425
25466
 
25426
25467
  args = editor.fire('click', args);
25468
+
25469
+ if (!args.isDefaultPrevented()) {
25470
+ // iOS WebKit can't place the caret properly once
25471
+ // you bind touch events so we need to do this manually
25472
+ // TODO: Expand to the closest word? Touble tap still works.
25473
+ editor.selection.placeCaretAt(endTouch.clientX, endTouch.clientY);
25474
+ }
25427
25475
  });
25428
25476
  });
25429
25477
  }
@@ -26621,6 +26669,10 @@ define("tinymce/Editor", [
26621
26669
  bodyClass = bodyClass[self.id] || '';
26622
26670
  }
26623
26671
 
26672
+ if (settings.content_security_policy) {
26673
+ self.iframeHTML += '<meta http-equiv="Content-Security-Policy" content="' + settings.content_security_policy + '" />';
26674
+ }
26675
+
26624
26676
  self.iframeHTML += '</head><body id="' + bodyId +
26625
26677
  '" class="mce-content-body ' + bodyClass +
26626
26678
  '" data-id="' + self.id + '"><br></body></html>';
@@ -26659,7 +26711,7 @@ define("tinymce/Editor", [
26659
26711
  self.fire("load");
26660
26712
  };
26661
26713
 
26662
- DOM.setAttrib("src", url || 'javascript:""');
26714
+ DOM.setAttrib(ifr, "src", url || 'javascript:""');
26663
26715
 
26664
26716
  self.contentAreaContainer = o.iframeContainer;
26665
26717
  self.iframeElement = ifr;
@@ -27010,7 +27062,7 @@ define("tinymce/Editor", [
27010
27062
  * @param {Boolean} skipFocus Skip DOM focus. Just set is as the active editor.
27011
27063
  */
27012
27064
  focus: function(skipFocus) {
27013
- var oed, self = this, selection = self.selection, contentEditable = self.settings.content_editable, rng;
27065
+ var self = this, selection = self.selection, contentEditable = self.settings.content_editable, rng;
27014
27066
  var controlElm, doc = self.getDoc(), body;
27015
27067
 
27016
27068
  if (!skipFocus) {
@@ -27064,15 +27116,7 @@ define("tinymce/Editor", [
27064
27116
  }
27065
27117
  }
27066
27118
 
27067
- if (self.editorManager.activeEditor != self) {
27068
- if ((oed = self.editorManager.activeEditor)) {
27069
- oed.fire('deactivate', {relatedTarget: self});
27070
- }
27071
-
27072
- self.fire('activate', {relatedTarget: oed});
27073
- }
27074
-
27075
- self.editorManager.activeEditor = self;
27119
+ self.editorManager.setActive(self);
27076
27120
  },
27077
27121
 
27078
27122
  /**
@@ -28328,7 +28372,11 @@ define("tinymce/FocusManager", [
28328
28372
  if (editor.inline || Env.ie) {
28329
28373
  // Use the onbeforedeactivate event when available since it works better see #7023
28330
28374
  if ("onbeforedeactivate" in document && Env.ie < 9) {
28331
- editor.dom.bind(editor.getBody(), 'beforedeactivate', function() {
28375
+ editor.dom.bind(editor.getBody(), 'beforedeactivate', function(e) {
28376
+ if (e.target != editor.getBody()) {
28377
+ return;
28378
+ }
28379
+
28332
28380
  try {
28333
28381
  editor.lastRng = editor.selection.getRng();
28334
28382
  } catch (ex) {
@@ -28399,7 +28447,7 @@ define("tinymce/FocusManager", [
28399
28447
  focusedEditor.fire('blur', {focusedEditor: editor});
28400
28448
  }
28401
28449
 
28402
- editorManager.activeEditor = editor;
28450
+ editorManager.setActive(editor);
28403
28451
  editorManager.focusedEditor = editor;
28404
28452
  editor.fire('focus', {blurredEditor: focusedEditor});
28405
28453
  editor.focus(true);
@@ -28439,7 +28487,7 @@ define("tinymce/FocusManager", [
28439
28487
  }
28440
28488
 
28441
28489
  // Fire a blur event if the element isn't a UI element
28442
- if (!isUIElement(e.target) && editorManager.focusedEditor == activeEditor) {
28490
+ if (e.target != document.body && !isUIElement(e.target) && editorManager.focusedEditor == activeEditor) {
28443
28491
  activeEditor.fire('blur', {focusedEditor: null});
28444
28492
  editorManager.focusedEditor = null;
28445
28493
  }
@@ -28599,7 +28647,7 @@ define("tinymce/EditorManager", [
28599
28647
  * @property minorVersion
28600
28648
  * @type String
28601
28649
  */
28602
- minorVersion: '1.3',
28650
+ minorVersion: '1.4',
28603
28651
 
28604
28652
  /**
28605
28653
  * Release date of TinyMCE build.
@@ -28607,7 +28655,7 @@ define("tinymce/EditorManager", [
28607
28655
  * @property releaseDate
28608
28656
  * @type String
28609
28657
  */
28610
- releaseDate: '2014-07-29',
28658
+ releaseDate: '2014-08-21',
28611
28659
 
28612
28660
  /**
28613
28661
  * Collection of editor instances.
@@ -28745,7 +28793,7 @@ define("tinymce/EditorManager", [
28745
28793
  * });
28746
28794
  */
28747
28795
  init: function(settings) {
28748
- var self = this, editors = [], editor;
28796
+ var self = this, editors = [];
28749
28797
 
28750
28798
  function createId(elm) {
28751
28799
  var id = elm.id;
@@ -28770,6 +28818,7 @@ define("tinymce/EditorManager", [
28770
28818
  function createEditor(id, settings, targetElm) {
28771
28819
  if (!purgeDestroyedEditor(self.get(id))) {
28772
28820
  var editor = new Editor(id, settings, self);
28821
+
28773
28822
  editor.targetElm = editor.targetElm || targetElm;
28774
28823
  editors.push(editor);
28775
28824
  editor.render();
@@ -28823,18 +28872,18 @@ define("tinymce/EditorManager", [
28823
28872
  l = settings.elements || '';
28824
28873
 
28825
28874
  if (l.length > 0) {
28826
- each(explode(l), function(v) {
28827
- if (DOM.get(v)) {
28828
- editor = new Editor(v, settings, self);
28829
- editors.push(editor);
28830
- editor.render();
28875
+ each(explode(l), function(id) {
28876
+ var elm;
28877
+
28878
+ if ((elm = DOM.get(id))) {
28879
+ createEditor(id, settings, elm);
28831
28880
  } else {
28832
28881
  each(document.forms, function(f) {
28833
28882
  each(f.elements, function(e) {
28834
- if (e.name === v) {
28835
- v = 'mce_editor_' + instanceCounter++;
28836
- DOM.setAttrib(e, 'id', v);
28837
- createEditor(v, settings, e);
28883
+ if (e.name === id) {
28884
+ id = 'mce_editor_' + instanceCounter++;
28885
+ DOM.setAttrib(e, 'id', id);
28886
+ createEditor(id, settings, e);
28838
28887
  }
28839
28888
  });
28840
28889
  });
@@ -28930,6 +28979,8 @@ define("tinymce/EditorManager", [
28930
28979
  editors[editor.id] = editor;
28931
28980
  editors.push(editor);
28932
28981
 
28982
+ // Doesn't call setActive method since we don't want
28983
+ // to fire a bunch of activate/deactivate calls while initializing
28933
28984
  self.activeEditor = editor;
28934
28985
 
28935
28986
  /**
@@ -29122,6 +29173,26 @@ define("tinymce/EditorManager", [
29122
29173
  */
29123
29174
  translate: function(text) {
29124
29175
  return I18n.translate(text);
29176
+ },
29177
+
29178
+ /**
29179
+ * Sets the active editor instance and fires the deactivate/activate events.
29180
+ *
29181
+ * @method setActive
29182
+ * @param {tinymce.Editor} editor Editor instance to set as the active instance.
29183
+ */
29184
+ setActive: function(editor) {
29185
+ var activeEditor = this.activeEditor;
29186
+
29187
+ if (this.activeEditor != editor) {
29188
+ if (activeEditor) {
29189
+ activeEditor.fire('deactivate', {relatedTarget: editor});
29190
+ }
29191
+
29192
+ editor.fire('activate', {relatedTarget: activeEditor});
29193
+ }
29194
+
29195
+ this.activeEditor = editor;
29125
29196
  }
29126
29197
  };
29127
29198
 
@@ -31048,7 +31119,10 @@ define("tinymce/ui/ColorBox", [
31048
31119
  var self = this;
31049
31120
 
31050
31121
  settings.spellcheck = false;
31051
- settings.icon = 'none';
31122
+
31123
+ if (settings.onaction) {
31124
+ settings.icon = 'none';
31125
+ }
31052
31126
 
31053
31127
  self._super(settings);
31054
31128
 
@@ -31059,7 +31133,15 @@ define("tinymce/ui/ColorBox", [
31059
31133
  },
31060
31134
 
31061
31135
  repaintColor: function(value) {
31062
- this.getEl().getElementsByTagName('i')[0].style.background = value;
31136
+ var elm = this.getEl().getElementsByTagName('i')[0];
31137
+
31138
+ if (elm) {
31139
+ try {
31140
+ elm.style.background = value;
31141
+ } catch (ex) {
31142
+ // Ignore
31143
+ }
31144
+ }
31063
31145
  },
31064
31146
 
31065
31147
  value: function(value) {