UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

124 lines (96 loc) 2.89 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports.columnWidth = columnWidth; exports.debounce = debounce; exports.measureScrollbar = measureScrollbar; exports.remove = remove; exports.warningOnce = warningOnce; var _warning = _interopRequireDefault(require("warning")); var scrollbarSize; // Measure scrollbar width for padding body during modal show/hide var scrollbarMeasure = { position: 'absolute', top: '-9999px', width: '50px', height: '50px', overflow: 'scroll' }; function columnWidth(col) { var width = col.width, _col$minWidth = col.minWidth, minWidth = _col$minWidth === void 0 ? 50 : _col$minWidth; if (width === undefined) { return Math.max(minWidth, 100); } return width; } function measureScrollbar() { var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'vertical'; if (typeof document === 'undefined' || typeof window === 'undefined') { return 0; } if (scrollbarSize) { return scrollbarSize; } var scrollDiv = document.createElement('div'); Object.keys(scrollbarMeasure).forEach(function (scrollProp) { scrollDiv.style[scrollProp] = scrollbarMeasure[scrollProp]; }); document.body.appendChild(scrollDiv); var size = 0; if (direction === 'vertical') { size = scrollDiv.offsetWidth - scrollDiv.clientWidth; } else if (direction === 'horizontal') { size = scrollDiv.offsetHeight - scrollDiv.clientHeight; } document.body.removeChild(scrollDiv); scrollbarSize = size; return scrollbarSize; } function debounce(func, wait, immediate) { var timeout; function debounceFunc() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } var context = this; // https://fb.me/react-event-pooling if (args[0] && args[0].persist) { args[0].persist(); } var later = function later() { timeout = null; if (!immediate) { func.apply(context, args); } }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) { func.apply(context, args); } } debounceFunc.cancel = function cancel() { if (timeout) { clearTimeout(timeout); timeout = null; } }; return debounceFunc; } var warned = {}; function warningOnce(condition, format, args) { if (!warned[format]) { (0, _warning["default"])(condition, format, args); warned[format] = !condition; } } function remove(array, item) { var index = array.indexOf(item); var front = array.slice(0, index); var last = array.slice(index + 1, array.length); return front.concat(last); } //# sourceMappingURL=utils.js.map