upfront-editable
Version:
Friendly contenteditable API
40 lines (32 loc) • 1.51 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.contenteditableSpanBug = exports.selectionchange = exports.contenteditable = void 0;
var _bowser = _interopRequireDefault(require("bowser"));
/**
* Check for contenteditable support
*
* (from Modernizr)
* this is known to false positive in some mobile browsers
* here is a whitelist of verified working browsers:
* https://github.com/NielsLeenheer/html5test/blob/549f6eac866aa861d9649a0707ff2c0157895706/scripts/engine.js#L2083
*/
var contenteditable = typeof document.documentElement.contentEditable !== 'undefined';
exports.contenteditable = contenteditable;
var parser = _bowser["default"].getParser(window.navigator.userAgent);
var browserName = parser.getBrowser();
var browserEngine = parser.getEngineName();
var webKit = browserEngine === 'WebKit';
/**
* Check selectionchange event (currently supported in IE, Chrome and Safari)
*
* To handle selectionchange in firefox see CKEditor selection object
* https://github.com/ckeditor/ckeditor-dev/blob/master/core/selection.js#L388
*/
// not exactly feature detection... is it?
var selectionchange = !(browserEngine === 'Gecko' || browserName === 'Opera'); // See Keyboard.prototype.preventContenteditableBug for more information.
exports.selectionchange = selectionchange;
var contenteditableSpanBug = !!webKit;
exports.contenteditableSpanBug = contenteditableSpanBug;