@samitouri / QOS-React-2 / commits / 5ad1c76386

Deleted a specific code for ie8 - document.selection (#9298)

Andrey Marchenko committed Mar 31, 2017 at 03:00 UTC 5ad1c76386142fbb4e573ca41cc7fad004de8b95
3 files changed +2 -98
src/renderers/dom/shared/ReactDOMSelection.js
+2 -67
@@ -11,8 +11,6 @@
11
12 'use strict';
13
14 -var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
15 -
14 var getNodeForCharacterOffset = require('getNodeForCharacterOffset');
15 var getTextContentAccessor = require('getTextContentAccessor');
16
@@ -25,39 +23,6 @@ function isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {
23 return anchorNode === focusNode && anchorOffset === focusOffset;
24 }
25
28 -/**
29 - * Get the appropriate anchor and focus node/offset pairs for IE.
30 - *
31 - * The catch here is that IE's selection API doesn't provide information
32 - * about whether the selection is forward or backward, so we have to
33 - * behave as though it's always forward.
34 - *
35 - * IE text differs from modern selection in that it behaves as though
36 - * block elements end with a new line. This means character offsets will
37 - * differ between the two APIs.
38 - *
39 - * @param {DOMElement} node
40 - * @return {object}
41 - */
42 -function getIEOffsets(node) {
43 - var selection = document.selection;
44 - var selectedRange = selection.createRange();
45 - var selectedLength = selectedRange.text.length;
46 -
47 - // Duplicate selection so we can move range without breaking user selection.
48 - var fromStart = selectedRange.duplicate();
49 - fromStart.moveToElementText(node);
50 - fromStart.setEndPoint('EndToStart', selectedRange);
51 -
52 - var startOffset = fromStart.text.length;
53 - var endOffset = startOffset + selectedLength;
54 -
55 - return {
56 - start: startOffset,
57 - end: endOffset,
58 - };
59 -}
60 -
26 /**
27 * @param {DOMElement} node
28 * @return {?object}
@@ -130,32 +95,6 @@ function getModernOffsets(node) {
95 };
96 }
97
133 -/**
134 - * @param {DOMElement|DOMTextNode} node
135 - * @param {object} offsets
136 - */
137 -function setIEOffsets(node, offsets) {
138 - var range = document.selection.createRange().duplicate();
139 - var start, end;
140 -
141 - if (offsets.end === undefined) {
142 - start = offsets.start;
143 - end = start;
144 - } else if (offsets.start > offsets.end) {
145 - start = offsets.end;
146 - end = offsets.start;
147 - } else {
148 - start = offsets.start;
149 - end = offsets.end;
150 - }
151 -
152 - range.moveToElementText(node);
153 - range.moveStart('character', start);
154 - range.setEndPoint('EndToStart', range);
155 - range.moveEnd('character', end - start);
156 - range.select();
157 -}
158 -
98 /**
99 * In modern non-IE browsers, we can support both forward and backward
100 * selections.
@@ -204,21 +143,17 @@ function setModernOffsets(node, offsets) {
143 }
144 }
145
207 -var useIEOffsets = ExecutionEnvironment.canUseDOM &&
208 - 'selection' in document &&
209 - !('getSelection' in window);
210 -
146 var ReactDOMSelection = {
147 /**
148 * @param {DOMElement} node
149 */
215 - getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,
150 + getOffsets: getModernOffsets,
151
152 /**
153 * @param {DOMElement|DOMTextNode} node
154 * @param {object} offsets
155 */
221 - setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets,
156 + setOffsets: setModernOffsets,
157 };
158
159 module.exports = ReactDOMSelection;
src/renderers/dom/shared/ReactInputSelection.js
-23
@@ -98,20 +98,6 @@ var ReactInputSelection = {
98 start: input.selectionStart,
99 end: input.selectionEnd,
100 };
101 - } else if (
102 - document.selection &&
103 - (input.nodeName && input.nodeName.toLowerCase() === 'input')
104 - ) {
105 - // IE8 input.
106 - var range = document.selection.createRange();
107 - // There can only be one selection per document in IE, so it must
108 - // be in our element.
109 - if (range.parentElement() === input) {
110 - selection = {
111 - start: -range.moveStart('character', -input.value.length),
112 - end: -range.moveEnd('character', -input.value.length),
113 - };
114 - }
101 } else {
102 // Content editable or old IE textarea.
103 selection = ReactDOMSelection.getOffsets(input);
@@ -136,15 +122,6 @@ var ReactInputSelection = {
122 if ('selectionStart' in input) {
123 input.selectionStart = start;
124 input.selectionEnd = Math.min(end, input.value.length);
139 - } else if (
140 - document.selection &&
141 - (input.nodeName && input.nodeName.toLowerCase() === 'input')
142 - ) {
143 - var range = input.createTextRange();
144 - range.collapse(true);
145 - range.moveStart('character', start);
146 - range.moveEnd('character', end - start);
147 - range.select();
125 } else {
126 ReactDOMSelection.setOffsets(input, offsets);
127 }
src/renderers/dom/shared/eventPlugins/SelectEventPlugin.js
-8
@@ -80,14 +80,6 @@ function getSelection(node) {
80 focusNode: selection.focusNode,
81 focusOffset: selection.focusOffset,
82 };
83 - } else if (document.selection) {
84 - var range = document.selection.createRange();
85 - return {
86 - parentElement: range.parentElement(),
87 - text: range.text,
88 - top: range.boundingTop,
89 - left: range.boundingLeft,
90 - };
83 }
84 }
85