tinymce-rails 4.2.3 → 4.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 707da6d71e7ab64409eeacc8b5a31bb69595641a
4
- data.tar.gz: 932c7d3bb93e728f5e4818a3025d12738423a230
3
+ metadata.gz: 4260a97f4c21578d77fc5a3bbfc82ed5f269ecf2
4
+ data.tar.gz: 787019224469d4c2d04465060cd78bc1e4578b85
5
5
  SHA512:
6
- metadata.gz: 1401bddb5f1fcdb32348d71827db3130053298cceecdf64160ba17dafba7c7e42df3936d26ab5741c0de9305ef6a42ff5d704ad7b720e6be68ace71d9bf640ef
7
- data.tar.gz: 3f0499f90bfc3c55fb6b0f7ee690724ba7386bc46e05efd93b6222b2adca563ac397859d171cb3a46a3b20923525c95ce6899a7a700812a1600098b5b411c92f
6
+ metadata.gz: ff2b622fd5825439cb1f1baa20d72e8a24e48626934b00a6ca68b01bfb1b441dc9c6233cb51e31528f8b25d045d2d481f5cff5f9a63da365c0bca1bd2f8f2d0a
7
+ data.tar.gz: 21c11ff376e84604acaca6c002d56982b996871023bf35329e40a4226cf142e5b9d70c2297bdfbc9f110369ab7ba06dddd325df96fbd23369a94771694907e63
@@ -1,4 +1,4 @@
1
- // 4.2.3 (2015-07-30)
1
+ // 4.2.4 (2015-08-17)
2
2
 
3
3
  /**
4
4
  * Compiled inline version. (Library mode)
@@ -709,7 +709,7 @@ define("tinymce/Env", [], function() {
709
709
  ie = !webkit && !opera && (/MSIE/gi).test(userAgent) && (/Explorer/gi).test(nav.appName);
710
710
  ie = ie && /MSIE (\w+)\./.exec(userAgent)[1];
711
711
  ie11 = userAgent.indexOf('Trident/') != -1 && (userAgent.indexOf('rv:') != -1 || nav.appName.indexOf('Netscape') != -1) ? 11 : false;
712
- ie12 = (document.msElementsFromPoint && !ie && !ie11) ? 12 : false;
712
+ ie12 = (userAgent.indexOf('Edge/') != -1 && !ie && !ie11) ? 12 : false;
713
713
  ie = ie || ie11 || ie12;
714
714
  gecko = !webkit && !ie11 && /Gecko/.test(userAgent);
715
715
  mac = userAgent.indexOf('Mac') != -1;
@@ -1340,6 +1340,21 @@ define("tinymce/util/Tools", [
1340
1340
  };
1341
1341
  }
1342
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;
1356
+ }
1357
+
1343
1358
  function _addCacheSuffix(url) {
1344
1359
  var cacheSuffix = Env.cacheSuffix;
1345
1360
 
@@ -1368,6 +1383,7 @@ define("tinymce/util/Tools", [
1368
1383
  resolve: resolve,
1369
1384
  explode: explode,
1370
1385
  constant: constant,
1386
+ reduce: reduce,
1371
1387
  _addCacheSuffix: _addCacheSuffix
1372
1388
  };
1373
1389
  });
@@ -1647,9 +1663,9 @@ define("tinymce/dom/DomQuery", [
1647
1663
  } else {
1648
1664
  if (context) {
1649
1665
  return DomQuery(selector).attr(context);
1650
- } else {
1651
- self.context = context = document;
1652
1666
  }
1667
+
1668
+ self.context = context = document;
1653
1669
  }
1654
1670
 
1655
1671
  if (isString(selector)) {
@@ -4443,9 +4459,9 @@ define("tinymce/html/Entities", [
4443
4459
  numeric -= 0x10000;
4444
4460
 
4445
4461
  return String.fromCharCode(0xD800 + (numeric >> 10), 0xDC00 + (numeric & 0x3FF));
4446
- } else {
4447
- return asciiMap[numeric] || String.fromCharCode(numeric);
4448
4462
  }
4463
+
4464
+ return asciiMap[numeric] || String.fromCharCode(numeric);
4449
4465
  }
4450
4466
 
4451
4467
  return reverseEntities[all] || namedEntities[all] || nativeDecode(all);
@@ -4634,10 +4650,10 @@ define("tinymce/dom/StyleSheetLoader", [
4634
4650
  waitForGeckoLinkLoaded();
4635
4651
  appendToHead(style);
4636
4652
  return;
4637
- } else {
4638
- // Use the id owner on older webkits
4639
- waitForWebKitLinkLoaded();
4640
4653
  }
4654
+
4655
+ // Use the id owner on older webkits
4656
+ waitForWebKitLinkLoaded();
4641
4657
  }
4642
4658
 
4643
4659
  appendToHead(link);
@@ -5318,7 +5334,7 @@ define("tinymce/dom/DOMUtils", [
5318
5334
  });
5319
5335
 
5320
5336
  if (name == 'float') {
5321
- name = isIE ? 'styleFloat' : 'cssFloat';
5337
+ name = Env.ie && Env.ie < 12 ? 'styleFloat' : 'cssFloat';
5322
5338
  }
5323
5339
 
5324
5340
  return elm[0] && elm[0].style ? elm[0].style[name] : undefined;
@@ -6786,9 +6802,9 @@ define("tinymce/AddOnManager", [
6786
6802
  get: function(name) {
6787
6803
  if (this.lookup[name]) {
6788
6804
  return this.lookup[name].instance;
6789
- } else {
6790
- return undefined;
6791
6805
  }
6806
+
6807
+ return undefined;
6792
6808
  },
6793
6809
 
6794
6810
  dependencies: function(name) {
@@ -6863,9 +6879,9 @@ define("tinymce/AddOnManager", [
6863
6879
  createUrl: function(baseUrl, dep) {
6864
6880
  if (typeof dep === "object") {
6865
6881
  return dep;
6866
- } else {
6867
- return {prefix: baseUrl.prefix, resource: dep, suffix: baseUrl.suffix};
6868
6882
  }
6883
+
6884
+ return {prefix: baseUrl.prefix, resource: dep, suffix: baseUrl.suffix};
6869
6885
  },
6870
6886
 
6871
6887
  /**
@@ -7874,9 +7890,9 @@ define("tinymce/html/Node", [], function() {
7874
7890
  attrs.map[name] = value;
7875
7891
 
7876
7892
  return self;
7877
- } else {
7878
- return attrs.map[name];
7879
7893
  }
7894
+
7895
+ return attrs.map[name];
7880
7896
  }
7881
7897
  },
7882
7898
 
@@ -8348,8 +8364,8 @@ define("tinymce/html/Schema", [
8348
8364
  globalAttributes.push.apply(globalAttributes, split("contenteditable contextmenu draggable dropzone " +
8349
8365
  "hidden spellcheck translate"));
8350
8366
  blockContent.push.apply(blockContent, split("article aside details dialog figure header footer hgroup section nav"));
8351
- phrasingContent.push.apply(phrasingContent, split("audio canvas command datalist mark meter output progress time wbr " +
8352
- "video ruby bdi keygen"));
8367
+ phrasingContent.push.apply(phrasingContent, split("audio canvas command datalist mark meter output picture " +
8368
+ "progress time wbr video ruby bdi keygen"));
8353
8369
  }
8354
8370
 
8355
8371
  // Add HTML4 elements unless it's html5-strict
@@ -8838,6 +8854,9 @@ define("tinymce/html/Schema", [
8838
8854
  function addValidChildren(validChildren) {
8839
8855
  var childRuleRegExp = /^([+\-]?)(\w+)\[([^\]]+)\]$/;
8840
8856
 
8857
+ // Invalidate the schema cache if the schema is mutated
8858
+ mapCache[settings.schema] = null;
8859
+
8841
8860
  if (validChildren) {
8842
8861
  each(split(validChildren, ','), function(rule) {
8843
8862
  var matches = childRuleRegExp.exec(rule), parent, prefix;
@@ -8856,10 +8875,6 @@ define("tinymce/html/Schema", [
8856
8875
 
8857
8876
  each(split(matches[3], '|'), function(child) {
8858
8877
  if (prefix === '-') {
8859
- // Clone the element before we delete
8860
- // things in it to not mess up default schemas
8861
- children[matches[2]] = parent = extend({}, children[matches[2]]);
8862
-
8863
8878
  delete parent[child];
8864
8879
  } else {
8865
8880
  parent[child] = {};
@@ -9746,11 +9761,12 @@ define("tinymce/html/DomParser", [
9746
9761
 
9747
9762
  function fixInvalidChildren(nodes) {
9748
9763
  var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i;
9749
- var nonEmptyElements, nonSplitableElements, textBlockElements, sibling, nextNode;
9764
+ var nonEmptyElements, nonSplitableElements, textBlockElements, specialElements, sibling, nextNode;
9750
9765
 
9751
9766
  nonSplitableElements = makeMap('tr,td,th,tbody,thead,tfoot,table');
9752
9767
  nonEmptyElements = schema.getNonEmptyElements();
9753
9768
  textBlockElements = schema.getTextBlockElements();
9769
+ specialElements = schema.getSpecialElements();
9754
9770
 
9755
9771
  for (ni = 0; ni < nodes.length; ni++) {
9756
9772
  node = nodes[ni];
@@ -9851,7 +9867,7 @@ define("tinymce/html/DomParser", [
9851
9867
  node.wrap(self.filterNode(new Node('div', 1)));
9852
9868
  } else {
9853
9869
  // We failed wrapping it, then remove or unwrap it
9854
- if (node.name === 'style' || node.name === 'script') {
9870
+ if (specialElements[node.name]) {
9855
9871
  node.empty().remove();
9856
9872
  } else {
9857
9873
  node.unwrap();
@@ -11755,10 +11771,10 @@ define("tinymce/dom/TridentSelection", [], function() {
11755
11771
  sibling.innerHTML = '';
11756
11772
  }
11757
11773
  return;
11758
- } else {
11759
- startOffset = dom.nodeIndex(startContainer);
11760
- startContainer = startContainer.parentNode;
11761
11774
  }
11775
+
11776
+ startOffset = dom.nodeIndex(startContainer);
11777
+ startContainer = startContainer.parentNode;
11762
11778
  }
11763
11779
 
11764
11780
  if (startOffset == endOffset - 1) {
@@ -12363,14 +12379,20 @@ define("tinymce/dom/ControlSelection", [
12363
12379
  } else {
12364
12380
  disableGeckoResize();
12365
12381
 
12382
+ // Sniff sniff, hard to feature detect this stuff
12366
12383
  if (Env.ie >= 11) {
12367
- // TODO: Drag/drop doesn't work
12368
- editor.on('mouseup', function(e) {
12384
+ // Needs to be mousedown for drag/drop to work on IE 11
12385
+ // Needs to be click on Edge to properly select images
12386
+ editor.on('mousedown click', function(e) {
12369
12387
  var nodeName = e.target.nodeName;
12370
12388
 
12371
12389
  if (!resizeStarted && /^(TABLE|IMG|HR)$/.test(nodeName)) {
12372
12390
  editor.selection.select(e.target, nodeName == 'TABLE');
12373
- editor.nodeChanged();
12391
+
12392
+ // Only fire once since nodeChange is expensive
12393
+ if (e.type == 'mousedown') {
12394
+ editor.nodeChanged();
12395
+ }
12374
12396
  }
12375
12397
  });
12376
12398
 
@@ -12390,7 +12412,7 @@ define("tinymce/dom/ControlSelection", [
12390
12412
  }
12391
12413
  }
12392
12414
 
12393
- editor.on('nodechange ResizeEditor ResizeWindow', function(e) {
12415
+ editor.on('nodechange ResizeEditor ResizeWindow drop', function(e) {
12394
12416
  if (window.requestAnimationFrame) {
12395
12417
  window.requestAnimationFrame(function() {
12396
12418
  updateResizeRect(e);
@@ -13101,21 +13123,21 @@ define("tinymce/dom/Selection", [
13101
13123
  }
13102
13124
 
13103
13125
  return startElement;
13104
- } else {
13105
- startElement = rng.startContainer;
13126
+ }
13106
13127
 
13107
- if (startElement.nodeType == 1 && startElement.hasChildNodes()) {
13108
- if (!real || !rng.collapsed) {
13109
- startElement = startElement.childNodes[Math.min(startElement.childNodes.length - 1, rng.startOffset)];
13110
- }
13111
- }
13128
+ startElement = rng.startContainer;
13112
13129
 
13113
- if (startElement && startElement.nodeType == 3) {
13114
- return startElement.parentNode;
13130
+ if (startElement.nodeType == 1 && startElement.hasChildNodes()) {
13131
+ if (!real || !rng.collapsed) {
13132
+ startElement = startElement.childNodes[Math.min(startElement.childNodes.length - 1, rng.startOffset)];
13115
13133
  }
13134
+ }
13116
13135
 
13117
- return startElement;
13136
+ if (startElement && startElement.nodeType == 3) {
13137
+ return startElement.parentNode;
13118
13138
  }
13139
+
13140
+ return startElement;
13119
13141
  },
13120
13142
 
13121
13143
  /**
@@ -13146,22 +13168,22 @@ define("tinymce/dom/Selection", [
13146
13168
  }
13147
13169
 
13148
13170
  return endElement;
13149
- } else {
13150
- endElement = rng.endContainer;
13151
- endOffset = rng.endOffset;
13171
+ }
13152
13172
 
13153
- if (endElement.nodeType == 1 && endElement.hasChildNodes()) {
13154
- if (!real || !rng.collapsed) {
13155
- endElement = endElement.childNodes[endOffset > 0 ? endOffset - 1 : endOffset];
13156
- }
13157
- }
13173
+ endElement = rng.endContainer;
13174
+ endOffset = rng.endOffset;
13158
13175
 
13159
- if (endElement && endElement.nodeType == 3) {
13160
- return endElement.parentNode;
13176
+ if (endElement.nodeType == 1 && endElement.hasChildNodes()) {
13177
+ if (!real || !rng.collapsed) {
13178
+ endElement = endElement.childNodes[endOffset > 0 ? endOffset - 1 : endOffset];
13161
13179
  }
13180
+ }
13162
13181
 
13163
- return endElement;
13182
+ if (endElement && endElement.nodeType == 3) {
13183
+ return endElement.parentNode;
13164
13184
  }
13185
+
13186
+ return endElement;
13165
13187
  },
13166
13188
 
13167
13189
  /**
@@ -13361,7 +13383,7 @@ define("tinymce/dom/Selection", [
13361
13383
  // IE will sometimes throw an exception here
13362
13384
  ieRng = doc.selection.createRange();
13363
13385
  } catch (ex) {
13364
-
13386
+ // Ignore
13365
13387
  }
13366
13388
 
13367
13389
  if (ieRng && ieRng.item) {
@@ -14929,19 +14951,19 @@ define("tinymce/Formatter", [
14929
14951
  splitToFormatRoot(startContainer);
14930
14952
  startContainer = unwrap(TRUE);
14931
14953
  return;
14932
- } else {
14933
- // Wrap start/end nodes in span element since these might be cloned/moved
14934
- startContainer = wrap(startContainer, 'span', {id: '_start', 'data-mce-type': 'bookmark'});
14935
- endContainer = wrap(endContainer, 'span', {id: '_end', 'data-mce-type': 'bookmark'});
14954
+ }
14936
14955
 
14937
- // Split start/end
14938
- splitToFormatRoot(startContainer);
14939
- splitToFormatRoot(endContainer);
14956
+ // Wrap start/end nodes in span element since these might be cloned/moved
14957
+ startContainer = wrap(startContainer, 'span', {id: '_start', 'data-mce-type': 'bookmark'});
14958
+ endContainer = wrap(endContainer, 'span', {id: '_end', 'data-mce-type': 'bookmark'});
14940
14959
 
14941
- // Unwrap start/end to get real elements again
14942
- startContainer = unwrap(TRUE);
14943
- endContainer = unwrap();
14944
- }
14960
+ // Split start/end
14961
+ splitToFormatRoot(startContainer);
14962
+ splitToFormatRoot(endContainer);
14963
+
14964
+ // Unwrap start/end to get real elements again
14965
+ startContainer = unwrap(TRUE);
14966
+ endContainer = unwrap();
14945
14967
  } else {
14946
14968
  startContainer = endContainer = splitToFormatRoot(startContainer);
14947
14969
  }
@@ -17309,6 +17331,25 @@ define("tinymce/EnterKey", [
17309
17331
  }
17310
17332
  }
17311
17333
 
17334
+ function insertNewBlockAfter() {
17335
+ // If the caret is at the end of a header we produce a P tag after it similar to Word unless we are in a hgroup
17336
+ if (/^(H[1-6]|PRE|FIGURE)$/.test(parentBlockName) && containerBlockName != 'HGROUP') {
17337
+ newBlock = createNewBlock(newBlockName);
17338
+ } else {
17339
+ newBlock = createNewBlock();
17340
+ }
17341
+
17342
+ // Split the current container block element if enter is pressed inside an empty inner block element
17343
+ if (settings.end_container_on_empty_block && canSplitBlock(containerBlock) && dom.isEmpty(parentBlock)) {
17344
+ // Split container block for example a BLOCKQUOTE at the current blockParent location for example a P
17345
+ newBlock = dom.split(containerBlock, parentBlock);
17346
+ } else {
17347
+ dom.insertAfter(newBlock, parentBlock);
17348
+ }
17349
+
17350
+ moveToCaretPosition(newBlock);
17351
+ }
17352
+
17312
17353
  rng = selection.getRng(true);
17313
17354
 
17314
17355
  // Event is blocked by some other handler for example the lists plugin
@@ -17421,22 +17462,7 @@ define("tinymce/EnterKey", [
17421
17462
 
17422
17463
  // Insert new block before/after the parent block depending on caret location
17423
17464
  if (isCaretAtStartOrEndOfBlock()) {
17424
- // If the caret is at the end of a header we produce a P tag after it similar to Word unless we are in a hgroup
17425
- if (/^(H[1-6]|PRE|FIGURE)$/.test(parentBlockName) && containerBlockName != 'HGROUP') {
17426
- newBlock = createNewBlock(newBlockName);
17427
- } else {
17428
- newBlock = createNewBlock();
17429
- }
17430
-
17431
- // Split the current container block element if enter is pressed inside an empty inner block element
17432
- if (settings.end_container_on_empty_block && canSplitBlock(containerBlock) && dom.isEmpty(parentBlock)) {
17433
- // Split container block for example a BLOCKQUOTE at the current blockParent location for example a P
17434
- newBlock = dom.split(containerBlock, parentBlock);
17435
- } else {
17436
- dom.insertAfter(newBlock, parentBlock);
17437
- }
17438
-
17439
- moveToCaretPosition(newBlock);
17465
+ insertNewBlockAfter();
17440
17466
  } else if (isCaretAtStartOrEndOfBlock(true)) {
17441
17467
  // Insert new block before
17442
17468
  newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock);
@@ -17452,7 +17478,14 @@ define("tinymce/EnterKey", [
17452
17478
  dom.insertAfter(fragment, parentBlock);
17453
17479
  trimInlineElementsOnLeftSideOfBlock(newBlock);
17454
17480
  addBrToBlockIfNeeded(parentBlock);
17455
- moveToCaretPosition(newBlock);
17481
+
17482
+ // New block might become empty if it's <p><b>a |</b></p>
17483
+ if (dom.isEmpty(newBlock)) {
17484
+ dom.remove(newBlock);
17485
+ insertNewBlockAfter();
17486
+ } else {
17487
+ moveToCaretPosition(newBlock);
17488
+ }
17456
17489
  }
17457
17490
 
17458
17491
  dom.setAttrib(newBlock, 'id', ''); // Remove ID since it needs to be document unique
@@ -20059,14 +20092,14 @@ define("tinymce/ui/Selector", [
20059
20092
  item[name] ? item[name]() :
20060
20093
  false;
20061
20094
  };
20062
- } else {
20063
- // Compile not expression
20064
- notSelectors = parseChunks(name[1], []);
20065
-
20066
- return function(item) {
20067
- return !match(item, notSelectors);
20068
- };
20069
20095
  }
20096
+
20097
+ // Compile not expression
20098
+ notSelectors = parseChunks(name[1], []);
20099
+
20100
+ return function(item) {
20101
+ return !match(item, notSelectors);
20102
+ };
20070
20103
  }
20071
20104
  }
20072
20105
 
@@ -21853,10 +21886,10 @@ define("tinymce/ui/Control", [
21853
21886
 
21854
21887
  if (typeof value === "undefined") {
21855
21888
  return self._aria[name];
21856
- } else {
21857
- self._aria[name] = value;
21858
21889
  }
21859
21890
 
21891
+ self._aria[name] = value;
21892
+
21860
21893
  if (self.state.get('rendered')) {
21861
21894
  elm.setAttribute(name == 'role' ? name : 'aria-' + name, value);
21862
21895
  }
@@ -25521,7 +25554,7 @@ define("tinymce/util/Quirks", [
25521
25554
  * @param {DragEvent} e Event object
25522
25555
  */
25523
25556
  function setMceInteralContent(e) {
25524
- var selectionHtml;
25557
+ var selectionHtml, internalContent;
25525
25558
 
25526
25559
  if (e.dataTransfer) {
25527
25560
  if (editor.selection.isCollapsed() && e.target.tagName == 'IMG') {
@@ -25532,7 +25565,8 @@ define("tinymce/util/Quirks", [
25532
25565
 
25533
25566
  // Safari/IE doesn't support custom dataTransfer items so we can only use URL and Text
25534
25567
  if (selectionHtml.length > 0) {
25535
- e.dataTransfer.setData(mceInternalDataType, mceInternalUrlPrefix + escape(selectionHtml));
25568
+ internalContent = mceInternalUrlPrefix + escape(editor.id) + ',' + escape(selectionHtml);
25569
+ e.dataTransfer.setData(mceInternalDataType, internalContent);
25536
25570
  }
25537
25571
  }
25538
25572
  }
@@ -25547,17 +25581,22 @@ define("tinymce/util/Quirks", [
25547
25581
  * @returns {String} mce-internal content
25548
25582
  */
25549
25583
  function getMceInternalContent(e) {
25550
- var internalContent, content;
25584
+ var internalContent;
25551
25585
 
25552
25586
  if (e.dataTransfer) {
25553
25587
  internalContent = e.dataTransfer.getData(mceInternalDataType);
25554
25588
 
25555
25589
  if (internalContent && internalContent.indexOf(mceInternalUrlPrefix) >= 0) {
25556
- content = unescape(internalContent.substr(mceInternalUrlPrefix.length));
25590
+ internalContent = internalContent.substr(mceInternalUrlPrefix.length).split(',');
25591
+
25592
+ return {
25593
+ id: unescape(internalContent[0]),
25594
+ html: unescape(internalContent[1])
25595
+ };
25557
25596
  }
25558
25597
  }
25559
25598
 
25560
- return content;
25599
+ return null;
25561
25600
  }
25562
25601
 
25563
25602
  /**
@@ -26025,6 +26064,7 @@ define("tinymce/util/Quirks", [
26025
26064
  editor.on('drop', function(e) {
26026
26065
  if (!isDefaultPrevented(e)) {
26027
26066
  var internalContent = getMceInternalContent(e);
26067
+
26028
26068
  if (internalContent) {
26029
26069
  e.preventDefault();
26030
26070
 
@@ -26042,7 +26082,7 @@ define("tinymce/util/Quirks", [
26042
26082
 
26043
26083
  customDelete();
26044
26084
  selection.setRng(pointRng);
26045
- insertClipboardContents(internalContent);
26085
+ insertClipboardContents(internalContent.html);
26046
26086
  }, 0);
26047
26087
  }
26048
26088
  }
@@ -26957,12 +26997,13 @@ define("tinymce/util/Quirks", [
26957
26997
  editor.on('drop', function(e) {
26958
26998
  if (!isDefaultPrevented(e)) {
26959
26999
  var internalContent = getMceInternalContent(e);
26960
- if (internalContent) {
27000
+
27001
+ if (internalContent && internalContent.id != editor.id) {
26961
27002
  e.preventDefault();
26962
27003
 
26963
27004
  var rng = RangeUtils.getCaretRangeFromPoint(e.x, e.y, editor.getDoc());
26964
27005
  selection.setRng(rng);
26965
- insertClipboardContents(internalContent);
27006
+ insertClipboardContents(internalContent.html);
26966
27007
  }
26967
27008
  }
26968
27009
  });
@@ -28178,7 +28219,17 @@ define("tinymce/EditorUpload", [
28178
28219
  return content.replace(/src="(blob:[^"]+)"/g, function(match, blobUri) {
28179
28220
  var blobInfo = blobCache.getByUri(blobUri);
28180
28221
 
28181
- return 'src="data:' + blobInfo.blob().type + ';base64,' + blobInfo.base64() + '"';
28222
+ if (!blobInfo) {
28223
+ blobInfo = Tools.reduce(editor.editorManager.editors, function(result, editor) {
28224
+ return result || editor.editorUpload.blobCache.getByUri(blobUri);
28225
+ }, null);
28226
+ }
28227
+
28228
+ if (blobInfo) {
28229
+ return 'src="data:' + blobInfo.blob().type + ';base64,' + blobInfo.base64() + '"';
28230
+ }
28231
+
28232
+ return match[0];
28182
28233
  });
28183
28234
  }
28184
28235
 
@@ -30838,7 +30889,7 @@ define("tinymce/EditorManager", [
30838
30889
  * @property minorVersion
30839
30890
  * @type String
30840
30891
  */
30841
- minorVersion: '2.3',
30892
+ minorVersion: '2.4',
30842
30893
 
30843
30894
  /**
30844
30895
  * Release date of TinyMCE build.
@@ -30846,7 +30897,7 @@ define("tinymce/EditorManager", [
30846
30897
  * @property releaseDate
30847
30898
  * @type String
30848
30899
  */
30849
- releaseDate: '2015-07-30',
30900
+ releaseDate: '2015-08-17',
30850
30901
 
30851
30902
  /**
30852
30903
  * Collection of editor instances.