tinymce-rails 4.9.1 → 4.9.2

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
  SHA256:
3
- metadata.gz: 3079c9866499fc43b5bf43774db579270baac6e0fa856b3d1d835650aec27601
4
- data.tar.gz: da19e8bb905cde58f2374cc18176f79fb2e77e2cbf0f57be1f2a0c5d9160f202
3
+ metadata.gz: 62c0d0894eb083b9ea5d18b901aa92845f57f6cb21f893d691058b2fe105bd02
4
+ data.tar.gz: 931fe3122860185e6bb505043351a2288f5f0c7c184f31f8c50e5aedb3ca39a2
5
5
  SHA512:
6
- metadata.gz: 9d957020bd612073d5fd41676466b885e1f0dda1d3f46a5b8239229e385e0f35eda4899a89aed13bf81486168c0e7bcfdcf439bb9dcf1a3767ee87291a3d4ebe
7
- data.tar.gz: 9199afbfd057b4b824b902387a7dc71ae834277fb185c6610cd84df39d627f8c2afd026a6bcb44fb672d265d14ba43f711f124985448cd2cda71e89e49e8dad0
6
+ metadata.gz: 846e670a022114035cd5c8b95aaf2eebd8db1235ca9bb6264dc1a1178d0b4bd3ad4a34e0f97eb669985f6006e50095e5b1f6daf134136862334bfc1ebe08c68f
7
+ data.tar.gz: 9ca36f46e47ba9689fe1f7607ed43f11287e1c068bd508e07783409c07679ec8430ce565401a4c7a1cb32e7af187850f0b83cd75585cb7cbe46e7711f5f5e048
@@ -1,4 +1,4 @@
1
- // 4.9.1 (2018-12-04)
1
+ // 4.9.2 (2018-12-17)
2
2
  (function () {
3
3
  (function () {
4
4
  'use strict';
@@ -6901,6 +6901,14 @@
6901
6901
  before(v, element);
6902
6902
  });
6903
6903
  };
6904
+ var prepend = function (parent$$1, element) {
6905
+ var firstChild$$1 = firstChild(parent$$1);
6906
+ firstChild$$1.fold(function () {
6907
+ append(parent$$1, element);
6908
+ }, function (v) {
6909
+ parent$$1.dom().insertBefore(element.dom(), v.dom());
6910
+ });
6911
+ };
6904
6912
  var append = function (parent$$1, element) {
6905
6913
  parent$$1.dom().appendChild(element.dom());
6906
6914
  };
@@ -7065,6 +7073,17 @@
7065
7073
  return supports(element) && element.dom().classList.contains(clazz);
7066
7074
  };
7067
7075
 
7076
+ var descendants = function (scope, predicate) {
7077
+ var result = [];
7078
+ each(children(scope), function (x) {
7079
+ if (predicate(x)) {
7080
+ result = result.concat([x]);
7081
+ }
7082
+ result = result.concat(descendants(x, predicate));
7083
+ });
7084
+ return result;
7085
+ };
7086
+
7068
7087
  var descendants$1 = function (scope, selector) {
7069
7088
  return all(selector, scope);
7070
7089
  };
@@ -8799,19 +8818,17 @@
8799
8818
  }
8800
8819
  return CaretPosition$1.before(node);
8801
8820
  };
8802
- var isBrBeforeBlock = function (node, root) {
8803
- var next;
8804
- if (!NodeType.isBr(node)) {
8805
- return false;
8806
- }
8807
- if (isAtomic(node.nextSibling)) {
8808
- return false;
8809
- }
8810
- next = findCaretPosition(HDirection.Forwards, CaretPosition$1.after(node), root);
8811
- if (!next) {
8812
- return false;
8821
+ var moveForwardFromBr = function (root, nextNode) {
8822
+ var nextSibling = nextNode.nextSibling;
8823
+ if (nextSibling && isCaretCandidate$3(nextSibling)) {
8824
+ if (isText$7(nextSibling)) {
8825
+ return CaretPosition$1(nextSibling, 0);
8826
+ } else {
8827
+ return CaretPosition$1.before(nextSibling);
8828
+ }
8829
+ } else {
8830
+ return findCaretPosition(HDirection.Forwards, CaretPosition$1.after(nextNode), root);
8813
8831
  }
8814
- return !isInSameBlock(CaretPosition$1.before(node), CaretPosition$1.before(next), root);
8815
8832
  };
8816
8833
  var findCaretPosition = function (direction, startPos, root) {
8817
8834
  var node, nextNode, innerNode;
@@ -8859,11 +8876,8 @@
8859
8876
  if (isForwards(direction) && offset < container.childNodes.length) {
8860
8877
  nextNode = nodeAtIndex(container, offset);
8861
8878
  if (isCaretCandidate$3(nextNode)) {
8862
- if (isBr$4(nextNode) && root.lastChild === nextNode) {
8863
- return null;
8864
- }
8865
- if (isBrBeforeBlock(nextNode, root)) {
8866
- return findCaretPosition(direction, CaretPosition$1.after(nextNode), root);
8879
+ if (isBr$4(nextNode)) {
8880
+ return moveForwardFromBr(root, nextNode);
8867
8881
  }
8868
8882
  if (!isAtomic$1(nextNode)) {
8869
8883
  innerNode = findNode(nextNode, direction, isEditableCaretCandidate$1, nextNode);
@@ -12924,6 +12938,9 @@
12924
12938
  }
12925
12939
  ]);
12926
12940
  var range$1 = Immutable('start', 'soffset', 'finish', 'foffset');
12941
+ var domRange = type$1.domRange;
12942
+ var relative = type$1.relative;
12943
+ var exact = type$1.exact;
12927
12944
 
12928
12945
  var browser$3 = PlatformDetection$1.detect().browser;
12929
12946
  var clamp = function (offset, element) {
@@ -17594,6 +17611,9 @@
17594
17611
  var isTableCell$4 = function (node) {
17595
17612
  return /^(TH|TD)$/.test(node.nodeName);
17596
17613
  };
17614
+ var isChildOfInlineParent = function (dom, node, parent$$1) {
17615
+ return dom.isChildOf(node, parent$$1) && node !== parent$$1 && !dom.isBlock(parent$$1);
17616
+ };
17597
17617
  var getContainer = function (ed, rng, start) {
17598
17618
  var container, offset, lastIdx;
17599
17619
  container = rng[start ? 'startContainer' : 'endContainer'];
@@ -17619,19 +17639,19 @@
17619
17639
  wrapper.appendChild(node);
17620
17640
  return wrapper;
17621
17641
  };
17622
- var wrapWithSiblings = function (dom, startNode, name, next, attrs) {
17623
- var direction = (next ? 'next' : 'previous') + 'Sibling';
17624
- var wrapper = dom.create(name, attrs);
17625
- startNode.parentNode.insertBefore(wrapper, startNode);
17626
- var nodesToWrap = [startNode];
17627
- var currNode = startNode;
17628
- while (currNode = currNode[direction]) {
17629
- nodesToWrap.push(currNode);
17642
+ var wrapWithSiblings = function (dom, node, next, name, attrs) {
17643
+ var start = Element$$1.fromDom(node);
17644
+ var wrapper = Element$$1.fromDom(dom.create(name, attrs));
17645
+ var siblings$$1 = next ? nextSiblings(start) : prevSiblings(start);
17646
+ append$1(wrapper, siblings$$1);
17647
+ if (next) {
17648
+ before(start, wrapper);
17649
+ prepend(wrapper, start);
17650
+ } else {
17651
+ after(start, wrapper);
17652
+ append(wrapper, start);
17630
17653
  }
17631
- nodesToWrap.forEach(function (node) {
17632
- return wrapper.appendChild(node);
17633
- });
17634
- return wrapper;
17654
+ return wrapper.dom();
17635
17655
  };
17636
17656
  var matchName$1 = function (dom, node, format) {
17637
17657
  if (isEq$5(node, format.inline)) {
@@ -17764,24 +17784,24 @@
17764
17784
  };
17765
17785
  var findFormatRoot = function (editor, container, name, vars, similar) {
17766
17786
  var formatRoot;
17767
- each$d(FormatUtils.getParents(editor.dom, container.parentNode).reverse(), function (parent) {
17787
+ each$d(FormatUtils.getParents(editor.dom, container.parentNode).reverse(), function (parent$$1) {
17768
17788
  var format;
17769
- if (!formatRoot && parent.id !== '_start' && parent.id !== '_end') {
17770
- format = MatchFormat.matchNode(editor, parent, name, vars, similar);
17789
+ if (!formatRoot && parent$$1.id !== '_start' && parent$$1.id !== '_end') {
17790
+ format = MatchFormat.matchNode(editor, parent$$1, name, vars, similar);
17771
17791
  if (format && format.split !== false) {
17772
- formatRoot = parent;
17792
+ formatRoot = parent$$1;
17773
17793
  }
17774
17794
  }
17775
17795
  });
17776
17796
  return formatRoot;
17777
17797
  };
17778
17798
  var wrapAndSplit = function (editor, formatList, formatRoot, container, target, split, format, vars) {
17779
- var parent, clone, lastClone, firstClone, i, formatRootParent;
17799
+ var parent$$1, clone, lastClone, firstClone, i, formatRootParent;
17780
17800
  var dom = editor.dom;
17781
17801
  if (formatRoot) {
17782
17802
  formatRootParent = formatRoot.parentNode;
17783
- for (parent = container.parentNode; parent && parent !== formatRootParent; parent = parent.parentNode) {
17784
- clone = dom.clone(parent, false);
17803
+ for (parent$$1 = container.parentNode; parent$$1 && parent$$1 !== formatRootParent; parent$$1 = parent$$1.parentNode) {
17804
+ clone = dom.clone(parent$$1, false);
17785
17805
  for (i = 0; i < formatList.length; i++) {
17786
17806
  if (removeFormat(editor, formatList[i], vars, clone, clone)) {
17787
17807
  clone = 0;
@@ -17821,13 +17841,13 @@
17821
17841
  return Bookmarks.isBookmarkNode(node) && NodeType.isElement(node) && (node.id === '_start' || node.id === '_end');
17822
17842
  };
17823
17843
  var process = function (node) {
17824
- var children, i, l, lastContentEditable, hasContentEditableState;
17844
+ var children$$1, i, l, lastContentEditable, hasContentEditableState;
17825
17845
  if (NodeType.isElement(node) && dom.getContentEditable(node)) {
17826
17846
  lastContentEditable = contentEditable;
17827
17847
  contentEditable = dom.getContentEditable(node) === 'true';
17828
17848
  hasContentEditableState = true;
17829
17849
  }
17830
- children = Tools.grep(node.childNodes);
17850
+ children$$1 = Tools.grep(node.childNodes);
17831
17851
  if (contentEditable && !hasContentEditableState) {
17832
17852
  for (i = 0, l = formatList.length; i < l; i++) {
17833
17853
  if (removeFormat(ed, formatList[i], vars, node, node)) {
@@ -17836,9 +17856,9 @@
17836
17856
  }
17837
17857
  }
17838
17858
  if (format.deep) {
17839
- if (children.length) {
17840
- for (i = 0, l = children.length; i < l; i++) {
17841
- process(children[i]);
17859
+ if (children$$1.length) {
17860
+ for (i = 0, l = children$$1.length; i < l; i++) {
17861
+ process(children$$1[i]);
17842
17862
  }
17843
17863
  if (hasContentEditableState) {
17844
17864
  contentEditable = lastContentEditable;
@@ -17877,13 +17897,22 @@
17877
17897
  if (commonAncestorContainer && /^T(HEAD|BODY|FOOT|R)$/.test(commonAncestorContainer.nodeName) && isTableCell$4(endContainer) && endContainer.firstChild) {
17878
17898
  endContainer = endContainer.firstChild || endContainer;
17879
17899
  }
17880
- if (dom.isChildOf(startContainer, endContainer) && startContainer !== endContainer && !dom.isBlock(endContainer) && !isTableCell$4(startContainer) && !isTableCell$4(endContainer)) {
17881
- var wrappedContent = wrapWithSiblings(dom, startContainer, 'span', true, {
17900
+ if (isChildOfInlineParent(dom, startContainer, endContainer)) {
17901
+ var marker = Option.from(startContainer.firstChild).getOr(startContainer);
17902
+ splitToFormatRoot(wrapWithSiblings(dom, marker, true, 'span', {
17882
17903
  'id': '_start',
17883
17904
  'data-mce-type': 'bookmark'
17884
- });
17885
- splitToFormatRoot(wrappedContent);
17886
- startContainer = unwrap(true);
17905
+ }));
17906
+ unwrap(true);
17907
+ return;
17908
+ }
17909
+ if (isChildOfInlineParent(dom, endContainer, startContainer)) {
17910
+ var marker = Option.from(endContainer.lastChild).getOr(endContainer);
17911
+ splitToFormatRoot(wrapWithSiblings(dom, marker, false, 'span', {
17912
+ 'id': '_end',
17913
+ 'data-mce-type': 'bookmark'
17914
+ }));
17915
+ unwrap(false);
17887
17916
  return;
17888
17917
  }
17889
17918
  startContainer = wrap$2(dom, startContainer, 'span', {
@@ -19801,6 +19830,7 @@
19801
19830
  };
19802
19831
  var filterNode = function (node) {
19803
19832
  var i, name, list;
19833
+ name = node.name;
19804
19834
  if (name in nodeFilters) {
19805
19835
  list = matchedNodes[name];
19806
19836
  if (list) {
@@ -21806,6 +21836,12 @@
21806
21836
  };
21807
21837
  var getPositionsUntilPreviousLine = curry(getPositionsUntil, CaretPosition.isAbove, -1);
21808
21838
  var getPositionsUntilNextLine = curry(getPositionsUntil, CaretPosition.isBelow, 1);
21839
+ var isAtFirstLine = function (scope, pos) {
21840
+ return getPositionsUntilPreviousLine(scope, pos).breakAt.isNone();
21841
+ };
21842
+ var isAtLastLine = function (scope, pos) {
21843
+ return getPositionsUntilNextLine(scope, pos).breakAt.isNone();
21844
+ };
21809
21845
  var getPositionsAbove = curry(getAdjacentLinePositions, -1, getPositionsUntilPreviousLine);
21810
21846
  var getPositionsBelow = curry(getAdjacentLinePositions, 1, getPositionsUntilNextLine);
21811
21847
  var getFirstLinePositions = function (scope) {
@@ -22027,6 +22063,74 @@
22027
22063
  };
22028
22064
  };
22029
22065
 
22066
+ var isTarget = function (node) {
22067
+ return contains(['figcaption'], name(node));
22068
+ };
22069
+ var rangeBefore = function (target) {
22070
+ var rng = document.createRange();
22071
+ rng.setStartBefore(target.dom());
22072
+ rng.setEndBefore(target.dom());
22073
+ return rng;
22074
+ };
22075
+ var insertElement = function (root, elm, forward) {
22076
+ if (forward) {
22077
+ append(root, elm);
22078
+ } else {
22079
+ prepend(root, elm);
22080
+ }
22081
+ };
22082
+ var insertBr = function (root, forward) {
22083
+ var br = Element$$1.fromTag('br');
22084
+ insertElement(root, br, forward);
22085
+ return rangeBefore(br);
22086
+ };
22087
+ var insertBlock$1 = function (root, forward, blockName, attrs) {
22088
+ var block = Element$$1.fromTag(blockName);
22089
+ var br = Element$$1.fromTag('br');
22090
+ setAll(block, attrs);
22091
+ append(block, br);
22092
+ insertElement(root, block, forward);
22093
+ return rangeBefore(br);
22094
+ };
22095
+ var insertEmptyLine = function (root, rootBlockName, attrs, forward) {
22096
+ if (rootBlockName === '') {
22097
+ return insertBr(root, forward);
22098
+ } else {
22099
+ return insertBlock$1(root, forward, rootBlockName, attrs);
22100
+ }
22101
+ };
22102
+ var getClosestTargetBlock = function (pos, root) {
22103
+ var isRoot = curry(eq, root);
22104
+ return closest(Element$$1.fromDom(pos.container()), isBlock, isRoot).filter(isTarget);
22105
+ };
22106
+ var isAtFirstOrLastLine = function (root, forward, pos) {
22107
+ return forward ? isAtLastLine(root.dom(), pos) : isAtFirstLine(root.dom(), pos);
22108
+ };
22109
+ var moveCaretToNewEmptyLine = function (editor, forward) {
22110
+ var root = Element$$1.fromDom(editor.getBody());
22111
+ var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());
22112
+ var rootBlock = Settings.getForcedRootBlock(editor);
22113
+ var rootBlockAttrs = Settings.getForcedRootBlockAttrs(editor);
22114
+ return getClosestTargetBlock(pos, root).exists(function () {
22115
+ if (isAtFirstOrLastLine(root, forward, pos)) {
22116
+ var rng = insertEmptyLine(root, rootBlock, rootBlockAttrs, forward);
22117
+ editor.selection.setRng(rng);
22118
+ return true;
22119
+ } else {
22120
+ return false;
22121
+ }
22122
+ });
22123
+ };
22124
+ var moveV$2 = function (editor, forward) {
22125
+ return function () {
22126
+ if (editor.selection.isCollapsed()) {
22127
+ return moveCaretToNewEmptyLine(editor, forward);
22128
+ } else {
22129
+ return false;
22130
+ }
22131
+ };
22132
+ };
22133
+
22030
22134
  var defaultPatterns = function (patterns) {
22031
22135
  return map(patterns, function (pattern) {
22032
22136
  return merge({
@@ -22122,6 +22226,14 @@
22122
22226
  ctrlKey: !os.isOSX(),
22123
22227
  altKey: os.isOSX(),
22124
22228
  action: BoundarySelection.movePrevWord(editor, caret)
22229
+ },
22230
+ {
22231
+ keyCode: VK.UP,
22232
+ action: moveV$2(editor, false)
22233
+ },
22234
+ {
22235
+ keyCode: VK.DOWN,
22236
+ action: moveV$2(editor, true)
22125
22237
  }
22126
22238
  ], evt).each(function (_) {
22127
22239
  evt.preventDefault();
@@ -22424,8 +22536,14 @@
22424
22536
  };
22425
22537
  var InsertLi = { insert: insert$1 };
22426
22538
 
22427
- var isEmptyAnchor = function (elm) {
22428
- return elm && elm.nodeName === 'A' && Tools.trim(Zwsp.trim(elm.innerText || elm.textContent)).length === 0;
22539
+ var trimZwsp = function (fragment) {
22540
+ each(descendants(Element$$1.fromDom(fragment), isText), function (text) {
22541
+ var rawNode = text.dom();
22542
+ rawNode.nodeValue = Zwsp.trim(rawNode.nodeValue);
22543
+ });
22544
+ };
22545
+ var isEmptyAnchor = function (dom, elm) {
22546
+ return elm && elm.nodeName === 'A' && dom.isEmpty(elm);
22429
22547
  };
22430
22548
  var isTableCell$5 = function (node) {
22431
22549
  return node && /^(TD|TH|CAPTION)$/.test(node.nodeName);
@@ -22460,7 +22578,7 @@
22460
22578
  if (!node.hasChildNodes() || node.firstChild === node.lastChild && node.firstChild.nodeValue === '') {
22461
22579
  dom.remove(node);
22462
22580
  } else {
22463
- if (isEmptyAnchor(node)) {
22581
+ if (isEmptyAnchor(dom, node)) {
22464
22582
  dom.remove(node);
22465
22583
  }
22466
22584
  }
@@ -22565,11 +22683,11 @@
22565
22683
  var dom = editor.dom;
22566
22684
  var schema = editor.schema, nonEmptyElementsMap = schema.getNonEmptyElements();
22567
22685
  var rng = editor.selection.getRng();
22568
- var createNewBlock = function (name) {
22686
+ var createNewBlock = function (name$$1) {
22569
22687
  var node = container, block, clonedNode, caretNode;
22570
22688
  var textInlineElements = schema.getTextInlineElements();
22571
- if (name || parentBlockName === 'TABLE' || parentBlockName === 'HR') {
22572
- block = dom.create(name || newBlockName);
22689
+ if (name$$1 || parentBlockName === 'TABLE' || parentBlockName === 'HR') {
22690
+ block = dom.create(name$$1 || newBlockName);
22573
22691
  setForcedBlockAttrs(editor, block);
22574
22692
  } else {
22575
22693
  block = parentBlock.cloneNode(false);
@@ -22600,7 +22718,7 @@
22600
22718
  return block;
22601
22719
  };
22602
22720
  var isCaretAtStartOrEndOfBlock = function (start) {
22603
- var walker, node, name, normalizedOffset;
22721
+ var walker, node, name$$1, normalizedOffset;
22604
22722
  normalizedOffset = normalizeZwspOffset(start, container, offset);
22605
22723
  if (NodeType.isText(container) && (start ? normalizedOffset > 0 : normalizedOffset < container.nodeValue.length)) {
22606
22724
  return false;
@@ -22625,8 +22743,8 @@
22625
22743
  while (node = walker.current()) {
22626
22744
  if (NodeType.isElement(node)) {
22627
22745
  if (!node.getAttribute('data-mce-bogus')) {
22628
- name = node.nodeName.toLowerCase();
22629
- if (nonEmptyElementsMap[name] && name !== 'br') {
22746
+ name$$1 = node.nodeName.toLowerCase();
22747
+ if (nonEmptyElementsMap[name$$1] && name$$1 !== 'br') {
22630
22748
  return false;
22631
22749
  }
22632
22750
  }
@@ -22712,6 +22830,7 @@
22712
22830
  tmpRng = includeZwspInRange(rng).cloneRange();
22713
22831
  tmpRng.setEndAfter(parentBlock);
22714
22832
  fragment = tmpRng.extractContents();
22833
+ trimZwsp(fragment);
22715
22834
  trimLeadingLineBreaks(fragment);
22716
22835
  newBlock = fragment.firstChild;
22717
22836
  dom.insertAfter(fragment, parentBlock);
@@ -22911,7 +23030,7 @@
22911
23030
  var isAtBlockBoundary = function (forward, root, pos) {
22912
23031
  var parentBlocks = filter(Parents.parentsAndSelf(Element$$1.fromDom(pos.container()), root), isBlock);
22913
23032
  return head(parentBlocks).fold(function () {
22914
- return CaretFinder.navigate(forward, root.dom(), pos).exists(function (newPos) {
23033
+ return CaretFinder.navigate(forward, root.dom(), pos).forall(function (newPos) {
22915
23034
  return isInSameBlock(newPos, pos, root.dom()) === false;
22916
23035
  });
22917
23036
  }, function (parent) {
@@ -23041,9 +23160,6 @@
23041
23160
  }
23042
23161
  };
23043
23162
 
23044
- var insertSpaceOrNbspAtPosition = function (root, pos) {
23045
- return needsToHaveNbsp(root, pos) ? insertNbspAtPosition(pos) : insertSpaceAtPosition(pos);
23046
- };
23047
23163
  var locationToCaretPosition = function (root) {
23048
23164
  return function (location) {
23049
23165
  return location.fold(function (element) {
@@ -23075,9 +23191,7 @@
23075
23191
  if (editor.selection.isCollapsed()) {
23076
23192
  var isInlineTarget = curry(InlineUtils.isInlineTarget, editor);
23077
23193
  var caretPosition = CaretPosition$1.fromRangeStart(editor.selection.getRng());
23078
- return BoundaryLocation.readLocation(isInlineTarget, editor.getBody(), caretPosition).bind(locationToCaretPosition(root)).bind(insertInlineBoundarySpaceOrNbsp(root, pos)).fold(function () {
23079
- return insertSpaceOrNbspAtPosition(root, pos).map(setSelection$1(editor)).getOr(false);
23080
- }, setSelection$1(editor));
23194
+ return BoundaryLocation.readLocation(isInlineTarget, editor.getBody(), caretPosition).bind(locationToCaretPosition(root)).bind(insertInlineBoundarySpaceOrNbsp(root, pos)).exists(setSelection$1(editor));
23081
23195
  } else {
23082
23196
  return false;
23083
23197
  }
@@ -23136,7 +23250,24 @@
23136
23250
  };
23137
23251
  var CaretContainerInput = { setup: setup$b };
23138
23252
 
23253
+ var browser$4 = PlatformDetection$1.detect().browser;
23254
+ var setupIeInput = function (editor) {
23255
+ var keypressThrotter = first$1(function () {
23256
+ if (!editor.composing) {
23257
+ normalizeNbspsInEditor(editor);
23258
+ }
23259
+ }, 0);
23260
+ if (browser$4.isIE()) {
23261
+ editor.on('keypress', function (e) {
23262
+ keypressThrotter.throttle();
23263
+ });
23264
+ editor.on('remove', function (e) {
23265
+ keypressThrotter.cancel();
23266
+ });
23267
+ }
23268
+ };
23139
23269
  var setup$c = function (editor) {
23270
+ setupIeInput(editor);
23140
23271
  editor.on('input', function (e) {
23141
23272
  if (e.isComposing === false) {
23142
23273
  normalizeNbspsInEditor(editor);
@@ -25389,8 +25520,8 @@
25389
25520
  defaultSettings: {},
25390
25521
  $: DomQuery,
25391
25522
  majorVersion: '4',
25392
- minorVersion: '9.1',
25393
- releaseDate: '2018-12-04',
25523
+ minorVersion: '9.2',
25524
+ releaseDate: '2018-12-17',
25394
25525
  editors: legacyEditors,
25395
25526
  i18n: I18n,
25396
25527
  activeEditor: null,