|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302 |
- "use strict";
-
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
- exports.__esModule = true;
- exports.getScrollbarWidth = getScrollbarWidth;
- exports.setScrollbarWidth = setScrollbarWidth;
- exports.isBodyOverflowing = isBodyOverflowing;
- exports.getOriginalBodyPadding = getOriginalBodyPadding;
- exports.conditionallyUpdateScrollbar = conditionallyUpdateScrollbar;
- exports.setGlobalCssModule = setGlobalCssModule;
- exports.mapToCssModules = mapToCssModules;
- exports.omit = omit;
- exports.pick = pick;
- exports.warnOnce = warnOnce;
- exports.deprecated = deprecated;
- exports.DOMElement = DOMElement;
- exports.isReactRefObj = isReactRefObj;
- exports.findDOMElements = findDOMElements;
- exports.isArrayOrNodeList = isArrayOrNodeList;
- exports.getTarget = getTarget;
- exports.addMultipleEventListeners = addMultipleEventListeners;
- exports.focusableElements = exports.defaultToggleEvents = exports.canUseDOM = exports.PopperPlacements = exports.keyCodes = exports.TransitionStatuses = exports.TransitionPropTypeKeys = exports.TransitionTimeouts = exports.tagPropType = exports.targetPropType = void 0;
-
- var _lodash = _interopRequireDefault(require("lodash.isfunction"));
-
- var _propTypes = _interopRequireDefault(require("prop-types"));
-
- // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/js/src/modal.js#L436-L443
- function getScrollbarWidth() {
- var scrollDiv = document.createElement('div'); // .modal-scrollbar-measure styles // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/scss/_modal.scss#L106-L113
-
- scrollDiv.style.position = 'absolute';
- scrollDiv.style.top = '-9999px';
- scrollDiv.style.width = '50px';
- scrollDiv.style.height = '50px';
- scrollDiv.style.overflow = 'scroll';
- document.body.appendChild(scrollDiv);
- var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
- document.body.removeChild(scrollDiv);
- return scrollbarWidth;
- }
-
- function setScrollbarWidth(padding) {
- document.body.style.paddingRight = padding > 0 ? padding + "px" : null;
- }
-
- function isBodyOverflowing() {
- return document.body.clientWidth < window.innerWidth;
- }
-
- function getOriginalBodyPadding() {
- var style = window.getComputedStyle(document.body, null);
- return parseInt(style && style.getPropertyValue('padding-right') || 0, 10);
- }
-
- function conditionallyUpdateScrollbar() {
- var scrollbarWidth = getScrollbarWidth(); // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.6/js/src/modal.js#L433
-
- var fixedContent = document.querySelectorAll('.fixed-top, .fixed-bottom, .is-fixed, .sticky-top')[0];
- var bodyPadding = fixedContent ? parseInt(fixedContent.style.paddingRight || 0, 10) : 0;
-
- if (isBodyOverflowing()) {
- setScrollbarWidth(bodyPadding + scrollbarWidth);
- }
- }
-
- var globalCssModule;
-
- function setGlobalCssModule(cssModule) {
- globalCssModule = cssModule;
- }
-
- function mapToCssModules(className, cssModule) {
- if (className === void 0) {
- className = '';
- }
-
- if (cssModule === void 0) {
- cssModule = globalCssModule;
- }
-
- if (!cssModule) return className;
- return className.split(' ').map(function (c) {
- return cssModule[c] || c;
- }).join(' ');
- }
- /**
- * Returns a new object with the key/value pairs from `obj` that are not in the array `omitKeys`.
- */
-
-
- function omit(obj, omitKeys) {
- var result = {};
- Object.keys(obj).forEach(function (key) {
- if (omitKeys.indexOf(key) === -1) {
- result[key] = obj[key];
- }
- });
- return result;
- }
- /**
- * Returns a filtered copy of an object with only the specified keys.
- */
-
-
- function pick(obj, keys) {
- var pickKeys = Array.isArray(keys) ? keys : [keys];
- var length = pickKeys.length;
- var key;
- var result = {};
-
- while (length > 0) {
- length -= 1;
- key = pickKeys[length];
- result[key] = obj[key];
- }
-
- return result;
- }
-
- var warned = {};
-
- function warnOnce(message) {
- if (!warned[message]) {
- /* istanbul ignore else */
- if (typeof console !== 'undefined') {
- console.error(message); // eslint-disable-line no-console
- }
-
- warned[message] = true;
- }
- }
-
- function deprecated(propType, explanation) {
- return function validate(props, propName, componentName) {
- if (props[propName] !== null && typeof props[propName] !== 'undefined') {
- warnOnce("\"" + propName + "\" property of \"" + componentName + "\" has been deprecated.\n" + explanation);
- }
-
- for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
- rest[_key - 3] = arguments[_key];
- }
-
- return propType.apply(void 0, [props, propName, componentName].concat(rest));
- };
- }
-
- function DOMElement(props, propName, componentName) {
- if (!(props[propName] instanceof Element)) {
- return new Error('Invalid prop `' + propName + '` supplied to `' + componentName + '`. Expected prop to be an instance of Element. Validation failed.');
- }
- }
-
- var targetPropType = _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func, DOMElement, _propTypes.default.shape({
- current: _propTypes.default.any
- })]);
-
- exports.targetPropType = targetPropType;
-
- var tagPropType = _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.string, _propTypes.default.shape({
- $$typeof: _propTypes.default.symbol,
- render: _propTypes.default.func
- }), _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.string, _propTypes.default.shape({
- $$typeof: _propTypes.default.symbol,
- render: _propTypes.default.func
- })]))]);
- /* eslint key-spacing: ["error", { afterColon: true, align: "value" }] */
- // These are all setup to match what is in the bootstrap _variables.scss
- // https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss
-
-
- exports.tagPropType = tagPropType;
- var TransitionTimeouts = {
- Fade: 150,
- // $transition-fade
- Collapse: 350,
- // $transition-collapse
- Modal: 300,
- // $modal-transition
- Carousel: 600 // $carousel-transition
-
- }; // Duplicated Transition.propType keys to ensure that Reactstrap builds
- // for distribution properly exclude these keys for nested child HTML attributes
- // since `react-transition-group` removes propTypes in production builds.
-
- exports.TransitionTimeouts = TransitionTimeouts;
- var TransitionPropTypeKeys = ['in', 'mountOnEnter', 'unmountOnExit', 'appear', 'enter', 'exit', 'timeout', 'onEnter', 'onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'];
- exports.TransitionPropTypeKeys = TransitionPropTypeKeys;
- var TransitionStatuses = {
- ENTERING: 'entering',
- ENTERED: 'entered',
- EXITING: 'exiting',
- EXITED: 'exited'
- };
- exports.TransitionStatuses = TransitionStatuses;
- var keyCodes = {
- esc: 27,
- space: 32,
- enter: 13,
- tab: 9,
- up: 38,
- down: 40,
- home: 36,
- end: 35,
- n: 78,
- p: 80
- };
- exports.keyCodes = keyCodes;
- var PopperPlacements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];
- exports.PopperPlacements = PopperPlacements;
- var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
- exports.canUseDOM = canUseDOM;
-
- function isReactRefObj(target) {
- if (target && typeof target === 'object') {
- return 'current' in target;
- }
-
- return false;
- }
-
- function findDOMElements(target) {
- if (isReactRefObj(target)) {
- return target.current;
- }
-
- if ((0, _lodash.default)(target)) {
- return target();
- }
-
- if (typeof target === 'string' && canUseDOM) {
- var selection = document.querySelectorAll(target);
-
- if (!selection.length) {
- selection = document.querySelectorAll("#" + target);
- }
-
- if (!selection.length) {
- throw new Error("The target '" + target + "' could not be identified in the dom, tip: check spelling");
- }
-
- return selection;
- }
-
- return target;
- }
-
- function isArrayOrNodeList(els) {
- if (els === null) {
- return false;
- }
-
- return Array.isArray(els) || canUseDOM && typeof els.length === 'number';
- }
-
- function getTarget(target) {
- var els = findDOMElements(target);
-
- if (isArrayOrNodeList(els)) {
- return els[0];
- }
-
- return els;
- }
-
- var defaultToggleEvents = ['touchstart', 'click'];
- exports.defaultToggleEvents = defaultToggleEvents;
-
- function addMultipleEventListeners(_els, handler, _events, useCapture) {
- var els = _els;
-
- if (!isArrayOrNodeList(els)) {
- els = [els];
- }
-
- var events = _events;
-
- if (typeof events === 'string') {
- events = events.split(/\s+/);
- }
-
- if (!isArrayOrNodeList(els) || typeof handler !== 'function' || !Array.isArray(events)) {
- throw new Error("\n The first argument of this function must be DOM node or an array on DOM nodes or NodeList.\n The second must be a function.\n The third is a string or an array of strings that represents DOM events\n ");
- }
-
- Array.prototype.forEach.call(events, function (event) {
- Array.prototype.forEach.call(els, function (el) {
- el.addEventListener(event, handler, useCapture);
- });
- });
- return function removeEvents() {
- Array.prototype.forEach.call(events, function (event) {
- Array.prototype.forEach.call(els, function (el) {
- el.removeEventListener(event, handler, useCapture);
- });
- });
- };
- }
-
- var focusableElements = ['a[href]', 'area[href]', 'input:not([disabled]):not([type=hidden])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'object', 'embed', '[tabindex]:not(.modal)', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable="false"])'];
- exports.focusableElements = focusableElements;
|