/
enableTextSelection.js
43 lines (37 loc) · 1.13 KB
/
enableTextSelection.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
* @fileoverview Transform the Array-like object to Array.
* @author NHN FE Development Lab <dl_javascript@nhn.com>
*/
'use strict';
var off = require('../domEvent/off');
var preventDefault = require('../domEvent/preventDefault');
var getData = require('./getData');
var removeData = require('./removeData');
var testCSSProp = require('./_testCSSProp');
var SUPPORT_SELECTSTART = 'onselectstart' in document;
var KEY_PREVIOUS_USER_SELECT = 'prevUserSelect';
var userSelectProperty = testCSSProp([
'userSelect',
'WebkitUserSelect',
'OUserSelect',
'MozUserSelect',
'msUserSelect'
]);
/**
* Enable browser's text selection behaviors.
* @param {HTMLElement} [el] - target element. if not supplied, use `document`
* @memberof module:domUtil
*/
function enableTextSelection(el) {
if (!el) {
el = document;
}
if (SUPPORT_SELECTSTART) {
off(el, 'selectstart', preventDefault);
} else {
el = (el === document) ? document.documentElement : el;
el.style[userSelectProperty] = getData(el, KEY_PREVIOUS_USER_SELECT) || 'auto';
removeData(el, KEY_PREVIOUS_USER_SELECT);
}
}
module.exports = enableTextSelection;