UNPKG

handsontable

Version:

Handsontable is a JavaScript Spreadsheet Component available for React, Angular and Vue.

190 lines (160 loc) • 5.39 kB
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } import "core-js/modules/web.timers.js"; import "core-js/modules/es.symbol.js"; import "core-js/modules/es.symbol.description.js"; import "core-js/modules/es.object.to-string.js"; import "core-js/modules/es.symbol.iterator.js"; import "core-js/modules/es.array.iterator.js"; import "core-js/modules/es.string.iterator.js"; import "core-js/modules/web.dom-collections.iterator.js"; // https://gist.github.com/paulirish/1579671 /* eslint-disable no-restricted-globals */ var lastTime = 0; var vendors = ['ms', 'moz', 'webkit', 'o']; var _requestAnimationFrame = window.requestAnimationFrame; var _cancelAnimationFrame = window.cancelAnimationFrame; for (var x = 0; x < vendors.length && !_requestAnimationFrame; ++x) { _requestAnimationFrame = window["".concat(vendors[x], "RequestAnimationFrame")]; _cancelAnimationFrame = window["".concat(vendors[x], "CancelAnimationFrame")] || window["".concat(vendors[x], "CancelRequestAnimationFrame")]; } if (!_requestAnimationFrame) { _requestAnimationFrame = function _requestAnimationFrame(callback) { var currTime = new Date().getTime(); var timeToCall = Math.max(0, 16 - (currTime - lastTime)); var id = window.setTimeout(function () { callback(currTime + timeToCall); }, timeToCall); lastTime = currTime + timeToCall; return id; }; } if (!_cancelAnimationFrame) { _cancelAnimationFrame = function _cancelAnimationFrame(id) { clearTimeout(id); }; } /** * Polyfill for requestAnimationFrame. * * @param {Function} callback The function to call when it's time. * @returns {number} */ export function requestAnimationFrame(callback) { return _requestAnimationFrame.call(window, callback); } /** * @returns {boolean} */ export function isClassListSupported() { return !!document.documentElement.classList; } /** * @returns {boolean} */ export function isTextContentSupported() { return !!document.createTextNode('test').textContent; } /** * @returns {boolean} */ export function isGetComputedStyleSupported() { return !!window.getComputedStyle; } /** * Polyfill for cancelAnimationFrame. * * @param {number} id The request Id, generated by `requestAnimationFrame`. */ export function cancelAnimationFrame(id) { _cancelAnimationFrame.call(window, id); } /** * @returns {boolean} */ export function isTouchSupported() { return 'ontouchstart' in window; } var _hasCaptionProblem; /** * */ function detectCaptionProblem() { var TABLE = document.createElement('TABLE'); TABLE.style.borderSpacing = '0'; TABLE.style.borderWidth = '0'; TABLE.style.padding = '0'; var TBODY = document.createElement('TBODY'); TABLE.appendChild(TBODY); TBODY.appendChild(document.createElement('TR')); TBODY.firstChild.appendChild(document.createElement('TD')); TBODY.firstChild.firstChild.innerHTML = '<tr><td>t<br>t</td></tr>'; var CAPTION = document.createElement('CAPTION'); CAPTION.innerHTML = 'c<br>c<br>c<br>c'; CAPTION.style.padding = '0'; CAPTION.style.margin = '0'; TABLE.insertBefore(CAPTION, TBODY); document.body.appendChild(TABLE); _hasCaptionProblem = TABLE.offsetHeight < 2 * TABLE.lastChild.offsetHeight; // boolean document.body.removeChild(TABLE); } /** * @returns {boolean} */ export function hasCaptionProblem() { if (_hasCaptionProblem === void 0) { detectCaptionProblem(); } return _hasCaptionProblem; } var comparisonFunction; /** * Get string comparison function for sorting purposes. It supports multilingual string comparison base on Internationalization API. * * @param {string} [language] The language code used for phrases sorting. * @param {object} [options] Additional options for sort comparator. * @returns {*} */ export function getComparisonFunction(language) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; if (comparisonFunction) { return comparisonFunction; } if ((typeof Intl === "undefined" ? "undefined" : _typeof(Intl)) === 'object') { comparisonFunction = new Intl.Collator(language, options).compare; } else if (typeof String.prototype.localeCompare === 'function') { comparisonFunction = function comparisonFunction(a, b) { return "".concat(a).localeCompare(b); }; } else { comparisonFunction = function comparisonFunction(a, b) { if (a === b) { return 0; } return a > b ? -1 : 1; }; } return comparisonFunction; } var passiveSupported; /** * Checks if browser supports passive events. * * @returns {boolean} */ export function isPassiveEventSupported() { if (passiveSupported !== void 0) { return passiveSupported; } try { var options = { get passive() { passiveSupported = true; } }; // eslint-disable-next-line no-restricted-globals window.addEventListener('test', options, options); // eslint-disable-next-line no-restricted-globals window.removeEventListener('test', options, options); } catch (err) { passiveSupported = false; } return passiveSupported; }