diff --git a/.gitignore b/.gitignore index db116d50a..5a0365e76 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,5 @@ node_modules *.sublime-workspace *.idea *.iml -lib/ npm-debug.log .vscode diff --git a/dist/react-bootstrap-table.js b/dist/react-bootstrap-table.js index 7250c8e72..f9d0883b7 100644 --- a/dist/react-bootstrap-table.js +++ b/dist/react-bootstrap-table.js @@ -69,43 +69,43 @@ return /******/ (function(modules) { // webpackBootstrap var _TableHeaderColumn2 = _interopRequireDefault(_TableHeaderColumn); - var _InsertModalHeader = __webpack_require__(58); + var _InsertModalHeader = __webpack_require__(60); var _InsertModalHeader2 = _interopRequireDefault(_InsertModalHeader); - var _InsertModalBody = __webpack_require__(60); + var _InsertModalBody = __webpack_require__(62); var _InsertModalBody2 = _interopRequireDefault(_InsertModalBody); - var _InsertModalFooter = __webpack_require__(59); + var _InsertModalFooter = __webpack_require__(61); var _InsertModalFooter2 = _interopRequireDefault(_InsertModalFooter); - var _InsertButton = __webpack_require__(61); + var _InsertButton = __webpack_require__(63); var _InsertButton2 = _interopRequireDefault(_InsertButton); - var _DeleteButton = __webpack_require__(62); + var _DeleteButton = __webpack_require__(64); var _DeleteButton2 = _interopRequireDefault(_DeleteButton); - var _ExportCSVButton = __webpack_require__(63); + var _ExportCSVButton = __webpack_require__(65); var _ExportCSVButton2 = _interopRequireDefault(_ExportCSVButton); - var _ShowSelectedOnlyButton = __webpack_require__(64); + var _ShowSelectedOnlyButton = __webpack_require__(66); var _ShowSelectedOnlyButton2 = _interopRequireDefault(_ShowSelectedOnlyButton); - var _ClearSearchButton = __webpack_require__(66); + var _ClearSearchButton = __webpack_require__(68); var _ClearSearchButton2 = _interopRequireDefault(_ClearSearchButton); - var _SearchField = __webpack_require__(65); + var _SearchField = __webpack_require__(67); var _SearchField2 = _interopRequireDefault(_SearchField); - var _ButtonGroup = __webpack_require__(75); + var _ButtonGroup = __webpack_require__(77); var _ButtonGroup2 = _interopRequireDefault(_ButtonGroup); @@ -213,21 +213,21 @@ return /******/ (function(modules) { // webpackBootstrap var _ToolBar2 = _interopRequireDefault(_ToolBar); - var _TableFilter = __webpack_require__(67); + var _TableFilter = __webpack_require__(69); var _TableFilter2 = _interopRequireDefault(_TableFilter); - var _TableDataStore = __webpack_require__(68); + var _TableDataStore = __webpack_require__(70); var _util = __webpack_require__(24); var _util2 = _interopRequireDefault(_util); - var _csv_export_util = __webpack_require__(69); + var _csv_export_util = __webpack_require__(71); var _csv_export_util2 = _interopRequireDefault(_csv_export_util); - var _Filter = __webpack_require__(73); + var _Filter = __webpack_require__(75); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -703,9 +703,13 @@ return /******/ (function(modules) { // webpackBootstrap }; }); } + + /* eslint-disable */ + }, { - key: 'componentWillReceiveProps', - value: function componentWillReceiveProps(nextProps) { + key: 'UNSAFE_componentWillReceiveProps', + value: function UNSAFE_componentWillReceiveProps(nextProps) { + /* eslint-enable */ this.initTable(nextProps); var options = nextProps.options, selectRow = nextProps.selectRow; @@ -813,6 +817,16 @@ return /******/ (function(modules) { // webpackBootstrap }; }); } + + if (selectRow && selectRow.mode !== 'none' && this.state.y !== 0) { + // If user switched to select row, reset the focus to the first cell + this.setState(function () { + return { + y: 0, + x: 0 + }; + }); + } } else { this.reset(); } @@ -1234,14 +1248,30 @@ return /******/ (function(modules) { // webpackBootstrap y = _state.y, currPage = _state.currPage; - x += offSetX; - y += offSetY; var columns = this.store.getColInfos(); + var visibleColumnIndices = Object.keys(columns).map(function (k, index) { + return columns[k].hidden ? -1 : index; + }).filter(function (k) { + return k !== -1; + }); + + if (visibleColumnIndices.indexOf(x) === 0 && offSetX < 0) { + x = -1; + } else if (visibleColumnIndices.indexOf(x) === visibleColumnIndices.length - 1 && offSetX >= 1) { + x = Object.keys(columns).length; + } else { + x = visibleColumnIndices[visibleColumnIndices.indexOf(x) + offSetX]; + } + y += offSetY; + var visibleRowSize = this.state.data.length; var visibleColumnSize = Object.keys(columns).filter(function (k) { return !columns[k].hidden; }).length; + var hiddenColumnSize = Object.keys(columns).filter(function (k) { + return columns[k].hidden; + }).length; if (y >= visibleRowSize) { currPage++; @@ -1260,7 +1290,7 @@ return /******/ (function(modules) { // webpackBootstrap return; } y = visibleRowSize - 1; - } else if (x >= visibleColumnSize) { + } else if (x - hiddenColumnSize >= visibleColumnSize) { if (y + 1 === visibleRowSize) { currPage++; var _lastPage = pagination ? this.pagination.getLastPage() : -1; @@ -1273,9 +1303,9 @@ return /******/ (function(modules) { // webpackBootstrap } else { y++; } - x = lastEditCell ? 1 : 0; + x = lastEditCell ? visibleColumnIndices[1] : visibleColumnIndices[0]; } else if (x < 0) { - x = visibleColumnSize - 1; + x = visibleColumnIndices[visibleColumnIndices.length - 1]; if (y === 0) { currPage--; if (currPage > 0) { @@ -2555,9 +2585,9 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(BootstrapTable, 'BootstrapTable', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/BootstrapTable.js'); + __REACT_HOT_LOADER__.register(BootstrapTable, 'BootstrapTable', '/home/nogi/nogi/forks/react-bootstrap-table/src/BootstrapTable.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/BootstrapTable.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/BootstrapTable.js'); }(); ; @@ -2580,21 +2610,12 @@ return /******/ (function(modules) { // webpackBootstrap */ if (process.env.NODE_ENV !== 'production') { - var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' && - Symbol.for && - Symbol.for('react.element')) || - 0xeac7; - - var isValidElement = function(object) { - return typeof object === 'object' && - object !== null && - object.$$typeof === REACT_ELEMENT_TYPE; - }; + var ReactIs = __webpack_require__(5); // By explicitly using `prop-types` you are opting into new development behavior. // http://fb.me/prop-types-in-prod var throwOnDirectAccess = true; - module.exports = __webpack_require__(5)(isValidElement, throwOnDirectAccess); + module.exports = __webpack_require__(8)(ReactIs.isElement, throwOnDirectAccess); } else { // By explicitly using `prop-types` you are opting into new production behavior. // http://fb.me/prop-types-in-prod @@ -2795,6 +2816,229 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }), /* 5 */ +/***/ (function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(process) {'use strict'; + + if (process.env.NODE_ENV === 'production') { + module.exports = __webpack_require__(6); + } else { + module.exports = __webpack_require__(7); + } + + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4))) + +/***/ }), +/* 6 */ +/***/ (function(module, exports) { + + /** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + 'use strict';var b="function"===typeof Symbol&&Symbol.for,c=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.concurrent_mode"):60111,n=b?Symbol.for("react.forward_ref"):60112,p=b?Symbol.for("react.suspense"):60113,q=b? + Symbol.for("react.suspense_list"):60120,r=b?Symbol.for("react.memo"):60115,t=b?Symbol.for("react.lazy"):60116,v=b?Symbol.for("react.block"):60121,w=b?Symbol.for("react.fundamental"):60117,x=b?Symbol.for("react.responder"):60118,y=b?Symbol.for("react.scope"):60119; + function z(a){if("object"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d; + exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return"object"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t}; + exports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p}; + exports.isValidElementType=function(a){return"string"===typeof a||"function"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||"object"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z; + + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(process) {/** @license React v16.13.1 + * react-is.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + 'use strict'; + + + + if (process.env.NODE_ENV !== "production") { + (function() { + 'use strict'; + + // The Symbol used to tag the ReactElement-like types. If there is no native Symbol + // nor polyfill, then a plain number is used for performance. + var hasSymbol = typeof Symbol === 'function' && Symbol.for; + var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; + var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; + var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; + var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; + var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; + var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; + var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary + // (unstable) APIs that have been removed. Can we remove the symbols? + + var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; + var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; + var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; + var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; + var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; + var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; + var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; + var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; + var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; + var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; + var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; + + function isValidElementType(type) { + return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. + type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); + } + + function typeOf(object) { + if (typeof object === 'object' && object !== null) { + var $$typeof = object.$$typeof; + + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + + switch (type) { + case REACT_ASYNC_MODE_TYPE: + case REACT_CONCURRENT_MODE_TYPE: + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + return type; + + default: + var $$typeofType = type && type.$$typeof; + + switch ($$typeofType) { + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + + default: + return $$typeof; + } + + } + + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + + return undefined; + } // AsyncMode is deprecated along with isAsyncMode + + var AsyncMode = REACT_ASYNC_MODE_TYPE; + var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; + var ContextConsumer = REACT_CONTEXT_TYPE; + var ContextProvider = REACT_PROVIDER_TYPE; + var Element = REACT_ELEMENT_TYPE; + var ForwardRef = REACT_FORWARD_REF_TYPE; + var Fragment = REACT_FRAGMENT_TYPE; + var Lazy = REACT_LAZY_TYPE; + var Memo = REACT_MEMO_TYPE; + var Portal = REACT_PORTAL_TYPE; + var Profiler = REACT_PROFILER_TYPE; + var StrictMode = REACT_STRICT_MODE_TYPE; + var Suspense = REACT_SUSPENSE_TYPE; + var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated + + function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint + + console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); + } + } + + return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; + } + function isConcurrentMode(object) { + return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; + } + function isContextConsumer(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; + } + function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; + } + function isElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; + } + function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; + } + function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; + } + function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; + } + function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; + } + function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; + } + function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; + } + function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; + } + function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; + } + + exports.AsyncMode = AsyncMode; + exports.ConcurrentMode = ConcurrentMode; + exports.ContextConsumer = ContextConsumer; + exports.ContextProvider = ContextProvider; + exports.Element = Element; + exports.ForwardRef = ForwardRef; + exports.Fragment = Fragment; + exports.Lazy = Lazy; + exports.Memo = Memo; + exports.Portal = Portal; + exports.Profiler = Profiler; + exports.StrictMode = StrictMode; + exports.Suspense = Suspense; + exports.isAsyncMode = isAsyncMode; + exports.isConcurrentMode = isConcurrentMode; + exports.isContextConsumer = isContextConsumer; + exports.isContextProvider = isContextProvider; + exports.isElement = isElement; + exports.isForwardRef = isForwardRef; + exports.isFragment = isFragment; + exports.isLazy = isLazy; + exports.isMemo = isMemo; + exports.isPortal = isPortal; + exports.isProfiler = isProfiler; + exports.isStrictMode = isStrictMode; + exports.isSuspense = isSuspense; + exports.isValidElementType = isValidElementType; + exports.typeOf = typeOf; + })(); + } + + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4))) + +/***/ }), +/* 8 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(process) {/** @@ -2806,14 +3050,34 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var emptyFunction = __webpack_require__(6); - var invariant = __webpack_require__(7); - var warning = __webpack_require__(8); + var ReactIs = __webpack_require__(5); var assign = __webpack_require__(9); var ReactPropTypesSecret = __webpack_require__(10); var checkPropTypes = __webpack_require__(11); + var has = Function.call.bind(Object.prototype.hasOwnProperty); + var printWarning = function() {}; + + if (process.env.NODE_ENV !== 'production') { + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; + } + + function emptyFunctionThatReturnsNull() { + return null; + } + module.exports = function(isValidElement, throwOnDirectAccess) { /* global Symbol */ var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; @@ -2903,6 +3167,7 @@ return /******/ (function(modules) { // webpackBootstrap any: createAnyTypeChecker(), arrayOf: createArrayOfTypeChecker, element: createElementTypeChecker(), + elementType: createElementTypeTypeChecker(), instanceOf: createInstanceTypeChecker, node: createNodeChecker(), objectOf: createObjectOfTypeChecker, @@ -2956,12 +3221,13 @@ return /******/ (function(modules) { // webpackBootstrap if (secret !== ReactPropTypesSecret) { if (throwOnDirectAccess) { // New behavior only for users of `prop-types` package - invariant( - false, + var err = new Error( 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types' ); + err.name = 'Invariant Violation'; + throw err; } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') { // Old behavior for people using React.PropTypes var cacheKey = componentName + ':' + propName; @@ -2970,15 +3236,12 @@ return /******/ (function(modules) { // webpackBootstrap // Avoid spamming the console because they are often not actionable except for lib authors manualPropTypeWarningCount < 3 ) { - warning( - false, + printWarning( 'You are manually calling a React.PropTypes validation ' + - 'function for the `%s` prop on `%s`. This is deprecated ' + + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + - 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.', - propFullName, - componentName + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.' ); manualPropTypeCallCache[cacheKey] = true; manualPropTypeWarningCount++; @@ -3022,7 +3285,7 @@ return /******/ (function(modules) { // webpackBootstrap } function createAnyTypeChecker() { - return createChainableTypeChecker(emptyFunction.thatReturnsNull); + return createChainableTypeChecker(emptyFunctionThatReturnsNull); } function createArrayOfTypeChecker(typeChecker) { @@ -3058,6 +3321,18 @@ return /******/ (function(modules) { // webpackBootstrap return createChainableTypeChecker(validate); } + function createElementTypeTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!ReactIs.isValidElementType(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + function createInstanceTypeChecker(expectedClass) { function validate(props, propName, componentName, location, propFullName) { if (!(props[propName] instanceof expectedClass)) { @@ -3072,8 +3347,17 @@ return /******/ (function(modules) { // webpackBootstrap function createEnumTypeChecker(expectedValues) { if (!Array.isArray(expectedValues)) { - process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0; - return emptyFunction.thatReturnsNull; + if (process.env.NODE_ENV !== 'production') { + if (arguments.length > 1) { + printWarning( + 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' + ); + } else { + printWarning('Invalid argument supplied to oneOf, expected an array.'); + } + } + return emptyFunctionThatReturnsNull; } function validate(props, propName, componentName, location, propFullName) { @@ -3084,8 +3368,14 @@ return /******/ (function(modules) { // webpackBootstrap } } - var valuesString = JSON.stringify(expectedValues); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); + var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { + var type = getPreciseType(value); + if (type === 'symbol') { + return String(value); + } + return value; + }); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); } return createChainableTypeChecker(validate); } @@ -3101,7 +3391,7 @@ return /******/ (function(modules) { // webpackBootstrap return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); } for (var key in propValue) { - if (propValue.hasOwnProperty(key)) { + if (has(propValue, key)) { var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); if (error instanceof Error) { return error; @@ -3115,21 +3405,18 @@ return /******/ (function(modules) { // webpackBootstrap function createUnionTypeChecker(arrayOfTypeCheckers) { if (!Array.isArray(arrayOfTypeCheckers)) { - process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; - return emptyFunction.thatReturnsNull; + process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; + return emptyFunctionThatReturnsNull; } for (var i = 0; i < arrayOfTypeCheckers.length; i++) { var checker = arrayOfTypeCheckers[i]; if (typeof checker !== 'function') { - warning( - false, + printWarning( 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + - 'received %s at index %s.', - getPostfixForTypeWarning(checker), - i + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' ); - return emptyFunction.thatReturnsNull; + return emptyFunctionThatReturnsNull; } } @@ -3261,6 +3548,11 @@ return /******/ (function(modules) { // webpackBootstrap return true; } + // falsy value can't be a Symbol + if (!propValue) { + return false; + } + // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' if (propValue['@@toStringTag'] === 'Symbol') { return true; @@ -3335,6 +3627,7 @@ return /******/ (function(modules) { // webpackBootstrap } ReactPropTypes.checkPropTypes = checkPropTypes; + ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; ReactPropTypes.PropTypes = ReactPropTypes; return ReactPropTypes; @@ -3342,174 +3635,6 @@ return /******/ (function(modules) { // webpackBootstrap /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4))) -/***/ }), -/* 6 */ -/***/ (function(module, exports) { - - "use strict"; - - /** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * - */ - - function makeEmptyFunction(arg) { - return function () { - return arg; - }; - } - - /** - * This function accepts and discards inputs; it has no side effects. This is - * primarily useful idiomatically for overridable function endpoints which - * always need to be callable, since JS lacks a null-call idiom ala Cocoa. - */ - var emptyFunction = function emptyFunction() {}; - - emptyFunction.thatReturns = makeEmptyFunction; - emptyFunction.thatReturnsFalse = makeEmptyFunction(false); - emptyFunction.thatReturnsTrue = makeEmptyFunction(true); - emptyFunction.thatReturnsNull = makeEmptyFunction(null); - emptyFunction.thatReturnsThis = function () { - return this; - }; - emptyFunction.thatReturnsArgument = function (arg) { - return arg; - }; - - module.exports = emptyFunction; - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - - /* WEBPACK VAR INJECTION */(function(process) {/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - */ - - 'use strict'; - - /** - * Use invariant() to assert state which your program assumes to be true. - * - * Provide sprintf-style format (only %s is supported) and arguments - * to provide information about what broke and what you were - * expecting. - * - * The invariant message will be stripped in production, but the invariant - * will remain to ensure logic does not differ in production. - */ - - var validateFormat = function validateFormat(format) {}; - - if (process.env.NODE_ENV !== 'production') { - validateFormat = function validateFormat(format) { - if (format === undefined) { - throw new Error('invariant requires an error message argument'); - } - }; - } - - function invariant(condition, format, a, b, c, d, e, f) { - validateFormat(format); - - if (!condition) { - var error; - if (format === undefined) { - error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.'); - } else { - var args = [a, b, c, d, e, f]; - var argIndex = 0; - error = new Error(format.replace(/%s/g, function () { - return args[argIndex++]; - })); - error.name = 'Invariant Violation'; - } - - error.framesToPop = 1; // we don't care about invariant's own frame - throw error; - } - } - - module.exports = invariant; - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4))) - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - - /* WEBPACK VAR INJECTION */(function(process) {/** - * Copyright (c) 2014-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - */ - - 'use strict'; - - var emptyFunction = __webpack_require__(6); - - /** - * Similar to invariant but only logs a warning if the condition is not met. - * This can be used to log issues in development environments in critical - * paths. Removing the logging code for production environments will keep the - * same logic and follow the same code paths. - */ - - var warning = emptyFunction; - - if (process.env.NODE_ENV !== 'production') { - var printWarning = function printWarning(format) { - for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - var argIndex = 0; - var message = 'Warning: ' + format.replace(/%s/g, function () { - return args[argIndex++]; - }); - if (typeof console !== 'undefined') { - console.error(message); - } - try { - // --- Welcome to debugging React --- - // This error was thrown as a convenience so that you can use this stack - // to find the callsite that caused this warning to fire. - throw new Error(message); - } catch (x) {} - }; - - warning = function warning(condition, format) { - if (format === undefined) { - throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); - } - - if (format.indexOf('Failed Composite propType: ') === 0) { - return; // Ignore CompositeComponent proptype check. - } - - if (!condition) { - for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { - args[_key2 - 2] = arguments[_key2]; - } - - printWarning.apply(undefined, [format].concat(args)); - } - }; - } - - module.exports = warning; - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4))) - /***/ }), /* 9 */ /***/ (function(module, exports) { @@ -3637,11 +3762,25 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; + var printWarning = function() {}; + if (process.env.NODE_ENV !== 'production') { - var invariant = __webpack_require__(7); - var warning = __webpack_require__(8); var ReactPropTypesSecret = __webpack_require__(10); var loggedTypeFailures = {}; + var has = Function.call.bind(Object.prototype.hasOwnProperty); + + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; } /** @@ -3658,7 +3797,7 @@ return /******/ (function(modules) { // webpackBootstrap function checkPropTypes(typeSpecs, values, location, componentName, getStack) { if (process.env.NODE_ENV !== 'production') { for (var typeSpecName in typeSpecs) { - if (typeSpecs.hasOwnProperty(typeSpecName)) { + if (has(typeSpecs, typeSpecName)) { var error; // Prop type validation may throw. In case they do, we don't want to // fail the render phase where it didn't fail before. So we log it. @@ -3666,12 +3805,28 @@ return /******/ (function(modules) { // webpackBootstrap try { // This is intentionally an invariant that gets caught. It's the same // behavior as without this statement except with a better message. - invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]); + if (typeof typeSpecs[typeSpecName] !== 'function') { + var err = Error( + (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + ); + err.name = 'Invariant Violation'; + throw err; + } error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); } catch (ex) { error = ex; } - warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error); + if (error && !(error instanceof Error)) { + printWarning( + (componentName || 'React class') + ': type specification of ' + + location + ' `' + typeSpecName + '` is invalid; the type checker ' + + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + + 'You may have forgotten to pass an argument to the type checker ' + + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + + 'shape all require an argument).' + ); + } if (error instanceof Error && !(error.message in loggedTypeFailures)) { // Only monitor this failure once because there tends to be a lot of the // same error. @@ -3679,13 +3834,26 @@ return /******/ (function(modules) { // webpackBootstrap var stack = getStack ? getStack() : ''; - warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : ''); + printWarning( + 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') + ); } } } } } + /** + * Resets warning cache when testing. + * + * @private + */ + checkPropTypes.resetWarningCache = function() { + if (process.env.NODE_ENV !== 'production') { + loggedTypeFailures = {}; + } + } + module.exports = checkPropTypes; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4))) @@ -3703,22 +3871,25 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var emptyFunction = __webpack_require__(6); - var invariant = __webpack_require__(7); var ReactPropTypesSecret = __webpack_require__(10); + function emptyFunction() {} + function emptyFunctionWithReset() {} + emptyFunctionWithReset.resetWarningCache = emptyFunction; + module.exports = function() { function shim(props, propName, componentName, location, propFullName, secret) { if (secret === ReactPropTypesSecret) { // It is still safe when called from React. return; } - invariant( - false, + var err = new Error( 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types' ); + err.name = 'Invariant Violation'; + throw err; }; shim.isRequired = shim; function getShim() { @@ -3738,16 +3909,19 @@ return /******/ (function(modules) { // webpackBootstrap any: shim, arrayOf: getShim, element: shim, + elementType: shim, instanceOf: getShim, node: shim, objectOf: getShim, oneOf: getShim, oneOfType: getShim, shape: getShim, - exact: getShim + exact: getShim, + + checkPropTypes: emptyFunctionWithReset, + resetWarningCache: emptyFunction }; - ReactPropTypes.checkPropTypes = emptyFunction; ReactPropTypes.PropTypes = ReactPropTypes; return ReactPropTypes; @@ -3759,7 +3933,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! - Copyright (c) 2016 Jed Watson. + Copyright (c) 2017 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ @@ -3781,8 +3955,11 @@ return /******/ (function(modules) { // webpackBootstrap if (argType === 'string' || argType === 'number') { classes.push(arg); - } else if (Array.isArray(arg)) { - classes.push(classNames.apply(null, arg)); + } else if (Array.isArray(arg) && arg.length) { + var inner = classNames.apply(null, arg); + if (inner) { + classes.push(inner); + } } else if (argType === 'object') { for (var key in arg) { if (hasOwn.call(arg, key) && arg[key]) { @@ -3796,6 +3973,7 @@ return /******/ (function(modules) { // webpackBootstrap } if (typeof module !== 'undefined' && module.exports) { + classNames.default = classNames; module.exports = classNames; } else if (true) { // register as 'classnames', consistent with npm package name @@ -3961,12 +4139,12 @@ return /******/ (function(modules) { // webpackBootstrap requestAnimationFrame(function () { return requestAnimationFrame(function () { var length = void 0; - storeStateRight = (0, _sAlertDataPrep2.default)('right') || []; + storeStateRight = (0, _sAlertDataPrep2.default)('right', _this2) || []; length = storeStateRight.length; if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) { var id = storeStateRight[0].id; _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } }); - storeStateRight = (0, _sAlertDataPrep2.default)('right') || []; + storeStateRight = (0, _sAlertDataPrep2.default)('right', _this2) || []; } _this2.setState({ dataRight: storeStateRight }); }); @@ -3978,12 +4156,12 @@ return /******/ (function(modules) { // webpackBootstrap requestAnimationFrame(function () { return requestAnimationFrame(function () { var length = void 0; - storeStateLeft = (0, _sAlertDataPrep2.default)('left') || []; + storeStateLeft = (0, _sAlertDataPrep2.default)('left', _this2) || []; length = storeStateLeft.length; if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) { var id = storeStateLeft[0].id; _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } }); - storeStateLeft = (0, _sAlertDataPrep2.default)('left') || []; + storeStateLeft = (0, _sAlertDataPrep2.default)('left', _this2) || []; } _this2.setState({ dataLeft: storeStateLeft }); }); @@ -3995,12 +4173,12 @@ return /******/ (function(modules) { // webpackBootstrap requestAnimationFrame(function () { return requestAnimationFrame(function () { var length = void 0; - storeStateTop = (0, _sAlertDataPrep2.default)('full-top') || []; + storeStateTop = (0, _sAlertDataPrep2.default)('full-top', _this2) || []; length = storeStateTop.length; if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) { var id = storeStateTop[0].id; _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } }); - storeStateTop = (0, _sAlertDataPrep2.default)('full-top') || []; + storeStateTop = (0, _sAlertDataPrep2.default)('full-top', _this2) || []; } _this2.setState({ dataTop: storeStateTop }); }); @@ -4012,12 +4190,12 @@ return /******/ (function(modules) { // webpackBootstrap requestAnimationFrame(function () { return requestAnimationFrame(function () { var length = void 0; - storeStateBottom = (0, _sAlertDataPrep2.default)('full-bottom') || []; + storeStateBottom = (0, _sAlertDataPrep2.default)('full-bottom', _this2) || []; length = storeStateBottom.length; if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) { var id = storeStateBottom[0].id; _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } }); - storeStateBottom = (0, _sAlertDataPrep2.default)('full-bottom') || []; + storeStateBottom = (0, _sAlertDataPrep2.default)('full-bottom', _this2) || []; } _this2.setState({ dataBottom: storeStateBottom }); }); @@ -4034,7 +4212,8 @@ return /******/ (function(modules) { // webpackBootstrap stack: this.props.stack, html: this.props.html, customFields: this.props.customFields, - position: this.props.position || 'top-right' + position: this.props.position || 'top-right', + preserveContext: this.props.preserveContext || false }; _sAlertTools2.default.setGlobalConfig(globalConfig); } @@ -4067,6 +4246,7 @@ return /******/ (function(modules) { // webpackBootstrap var onShow = _sAlertTools2.default.returnFirstDefined(alert.onShow, _this3.props.onShow); var customFields = _sAlertTools2.default.returnFirstDefined(alert.customFields, _this3.props.customFields); var contentTemplate = _this3.props.contentTemplate; + return _react2.default.createElement(_SAlertContent2.default, { key: customKey, id: id, @@ -4140,6 +4320,7 @@ return /******/ (function(modules) { // webpackBootstrap beep: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object, _propTypes2.default.bool]), timeout: _propTypes2.default.oneOfType([_propTypes2.default.oneOf(['none']), _propTypes2.default.number]), html: _propTypes2.default.bool, + preserveContext: _propTypes2.default.bool, onClose: _propTypes2.default.func, onShow: _propTypes2.default.func, customFields: _propTypes2.default.object, @@ -4344,8 +4525,9 @@ return /******/ (function(modules) { // webpackBootstrap var handleClose = this.handleCloseAlert.bind(this); var contentTemplate = this.props.contentTemplate || _SAlertContentTmpl2.default; var customFields = this.props.customFields || {}; + var condition = this.props.condition; - return _react2.default.createElement(contentTemplate, { classNames: classNames, id: id, styles: styles, message: message, handleClose: handleClose, customFields: customFields }); + return _react2.default.createElement(contentTemplate, { classNames: classNames, id: id, styles: styles, message: message, handleClose: handleClose, customFields: customFields, condition: condition }); } }]); @@ -4664,6 +4846,7 @@ return /******/ (function(modules) { // webpackBootstrap SAlertContentTmpl.propTypes = { id: _propTypes2.default.string.isRequired, classNames: _propTypes2.default.string.isRequired, + condition: _propTypes2.default.string.isRequired, styles: _propTypes2.default.object.isRequired, message: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]).isRequired, handleClose: _propTypes2.default.func.isRequired, @@ -4726,7 +4909,7 @@ return /******/ (function(modules) { // webpackBootstrap return target; }; - var getAlertData = function getAlertData(sAlertPosition) { + var getAlertData = function getAlertData(sAlertPosition, parentComponent) { var positionTop = 0; var positionBottom = 0; var padding = 0; @@ -4766,6 +4949,7 @@ return /******/ (function(modules) { // webpackBootstrap var aHtml = void 0; var aCustomFields = void 0; var aPosition = void 0; + var preserveContext = void 0; var query = {}; if (sAlertPosition === 'left') { @@ -4800,8 +4984,10 @@ return /******/ (function(modules) { // webpackBootstrap aHtml = _sAlertTools2.default.returnFirstDefined(alert.html, sAlertGlobalConfig.html); aCustomFields = _sAlertTools2.default.returnFirstDefined(alert.customFields, sAlertGlobalConfig.customFields); aPosition = _sAlertTools2.default.returnFirstDefined(alert.position, sAlertGlobalConfig.position); + preserveContext = _sAlertTools2.default.returnFirstDefined(alert.preserveContext, sAlertGlobalConfig.preserveContext); positionTypeTop = aPosition && /top/g.test(aPosition); positionTypeBottom = aPosition && /bottom/g.test(aPosition); + if (aStack) { // checking alert box height - needed to calculate position docElement = document.createElement('div'); @@ -4822,7 +5008,14 @@ return /******/ (function(modules) { // webpackBootstrap contentTemplate: aContentTemplate, customFields: aCustomFields }); - var reactComponent = _reactDom2.default.render(reactElement, docElement); + + var reactComponent = void 0; + + if (preserveContext) { + reactComponent = _reactDom2.default.unstable_renderSubtreeIntoContainer(parentComponent, reactElement, docElement); + } else { + reactComponent = _reactDom2.default.render(reactElement, docElement); + } document.body.appendChild(docElement); sAlertBoxHeight = parseInt(getComputedStyle(_reactDom2.default.findDOMNode(reactComponent))['height']); @@ -4954,9 +5147,9 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(CONST_VAR, 'CONST_VAR', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/Const.js'); + __REACT_HOT_LOADER__.register(CONST_VAR, 'CONST_VAR', '/home/nogi/nogi/forks/react-bootstrap-table/src/Const.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/Const.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/Const.js'); }(); ; @@ -5041,14 +5234,18 @@ return /******/ (function(modules) { // webpackBootstrap return _this; } + /* eslint-disable */ + + _createClass(TableHeaderColumn, [{ key: '__handleColumnClick__REACT_HOT_LOADER__', value: function __handleColumnClick__REACT_HOT_LOADER__() { return this.__handleColumnClick__REACT_HOT_LOADER__.apply(this, arguments); } }, { - key: 'componentWillReceiveProps', - value: function componentWillReceiveProps(nextProps) { + key: 'UNSAFE_componentWillReceiveProps', + value: function UNSAFE_componentWillReceiveProps(nextProps) { + /* eslint-enable */ if (nextProps.reset) { this.cleanFiltered(); } @@ -5428,11 +5625,11 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(TableHeaderColumn, 'TableHeaderColumn', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableHeaderColumn.js'); + __REACT_HOT_LOADER__.register(TableHeaderColumn, 'TableHeaderColumn', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableHeaderColumn.js'); - __REACT_HOT_LOADER__.register(filterTypeArray, 'filterTypeArray', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableHeaderColumn.js'); + __REACT_HOT_LOADER__.register(filterTypeArray, 'filterTypeArray', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableHeaderColumn.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableHeaderColumn.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableHeaderColumn.js'); }(); ; @@ -5590,7 +5787,7 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/util.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/util.js'); }(); ; @@ -5818,13 +6015,13 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(legalComparators, 'legalComparators', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Date.js'); + __REACT_HOT_LOADER__.register(legalComparators, 'legalComparators', '/home/nogi/nogi/forks/react-bootstrap-table/src/filters/Date.js'); - __REACT_HOT_LOADER__.register(dateParser, 'dateParser', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Date.js'); + __REACT_HOT_LOADER__.register(dateParser, 'dateParser', '/home/nogi/nogi/forks/react-bootstrap-table/src/filters/Date.js'); - __REACT_HOT_LOADER__.register(DateFilter, 'DateFilter', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Date.js'); + __REACT_HOT_LOADER__.register(DateFilter, 'DateFilter', '/home/nogi/nogi/forks/react-bootstrap-table/src/filters/Date.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Date.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/filters/Date.js'); }(); ; @@ -5918,9 +6115,13 @@ return /******/ (function(modules) { // webpackBootstrap this.props.filterHandler(defaultValue, _Const2.default.FILTER_TYPE.TEXT); } } + + /* eslint-disable */ + }, { - key: 'componentWillReceiveProps', - value: function componentWillReceiveProps(nextProps) { + key: 'UNSAFE_componentWillReceiveProps', + value: function UNSAFE_componentWillReceiveProps(nextProps) { + /* eslint-enable */ if (nextProps.defaultValue !== this.props.defaultValue) { this.applyFilter(nextProps.defaultValue || ''); } @@ -5977,9 +6178,9 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(TextFilter, 'TextFilter', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Text.js'); + __REACT_HOT_LOADER__.register(TextFilter, 'TextFilter', '/home/nogi/nogi/forks/react-bootstrap-table/src/filters/Text.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Text.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/filters/Text.js'); }(); ; @@ -6116,9 +6317,9 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(RegexFilter, 'RegexFilter', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Regex.js'); + __REACT_HOT_LOADER__.register(RegexFilter, 'RegexFilter', '/home/nogi/nogi/forks/react-bootstrap-table/src/filters/Regex.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Regex.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/filters/Regex.js'); }(); ; @@ -6184,9 +6385,13 @@ return /******/ (function(modules) { // webpackBootstrap return _this; } + /* eslint-disable */ + + _createClass(SelectFilter, [{ - key: 'componentWillReceiveProps', - value: function componentWillReceiveProps() { + key: 'UNSAFE_componentWillReceiveProps', + value: function UNSAFE_componentWillReceiveProps() { + /* eslint-enable */ var currentSelectValue = this.selectInput.value; var isPlaceholderSelected = !currentSelectValue || currentSelectValue === ''; this.setState(function () { @@ -6318,11 +6523,11 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(optionsEquals, 'optionsEquals', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Select.js'); + __REACT_HOT_LOADER__.register(optionsEquals, 'optionsEquals', '/home/nogi/nogi/forks/react-bootstrap-table/src/filters/Select.js'); - __REACT_HOT_LOADER__.register(SelectFilter, 'SelectFilter', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Select.js'); + __REACT_HOT_LOADER__.register(SelectFilter, 'SelectFilter', '/home/nogi/nogi/forks/react-bootstrap-table/src/filters/Select.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Select.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/filters/Select.js'); }(); ; @@ -6607,11 +6812,11 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(legalComparators, 'legalComparators', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Number.js'); + __REACT_HOT_LOADER__.register(legalComparators, 'legalComparators', '/home/nogi/nogi/forks/react-bootstrap-table/src/filters/Number.js'); - __REACT_HOT_LOADER__.register(NumberFilter, 'NumberFilter', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Number.js'); + __REACT_HOT_LOADER__.register(NumberFilter, 'NumberFilter', '/home/nogi/nogi/forks/react-bootstrap-table/src/filters/Number.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Number.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/filters/Number.js'); }(); ; @@ -6684,11 +6889,15 @@ return /******/ (function(modules) { // webpackBootstrap value: function componentDidMount() { this.update(this.props.checked); } + /* eslint-disable */ + }, { - key: 'componentWillReceiveProps', - value: function componentWillReceiveProps(props) { + key: 'UNSAFE_componentWillReceiveProps', + value: function UNSAFE_componentWillReceiveProps(props) { this.update(props.checked); } + /* eslint-enable */ + }, { key: 'update', value: function update(checked) { @@ -6918,13 +7127,13 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(Checkbox, 'Checkbox', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableHeader.js'); + __REACT_HOT_LOADER__.register(Checkbox, 'Checkbox', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableHeader.js'); - __REACT_HOT_LOADER__.register(getSortOrder, 'getSortOrder', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableHeader.js'); + __REACT_HOT_LOADER__.register(getSortOrder, 'getSortOrder', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableHeader.js'); - __REACT_HOT_LOADER__.register(TableHeader, 'TableHeader', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableHeader.js'); + __REACT_HOT_LOADER__.register(TableHeader, 'TableHeader', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableHeader.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableHeader.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableHeader.js'); }(); ; @@ -6994,9 +7203,9 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(SelectRowHeaderColumn, 'SelectRowHeaderColumn', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/SelectRowHeaderColumn.js'); + __REACT_HOT_LOADER__.register(SelectRowHeaderColumn, 'SelectRowHeaderColumn', '/home/nogi/nogi/forks/react-bootstrap-table/src/SelectRowHeaderColumn.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/SelectRowHeaderColumn.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/SelectRowHeaderColumn.js'); }(); ; @@ -7091,9 +7300,9 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(ExpandRowHeaderColumn, 'ExpandRowHeaderColumn', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/ExpandRowHeaderColumn.js'); + __REACT_HOT_LOADER__.register(ExpandRowHeaderColumn, 'ExpandRowHeaderColumn', '/home/nogi/nogi/forks/react-bootstrap-table/src/ExpandRowHeaderColumn.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/ExpandRowHeaderColumn.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/ExpandRowHeaderColumn.js'); }(); ; @@ -7245,9 +7454,9 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(TableFooter, 'TableFooter', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableFooter.js'); + __REACT_HOT_LOADER__.register(TableFooter, 'TableFooter', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableFooter.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableFooter.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableFooter.js'); }(); ; @@ -8052,9 +8261,9 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(TableBody, 'TableBody', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableBody.js'); + __REACT_HOT_LOADER__.register(TableBody, 'TableBody', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableBody.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableBody.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableBody.js'); }(); ; @@ -8313,9 +8522,9 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(TableRow, 'TableRow', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableRow.js'); + __REACT_HOT_LOADER__.register(TableRow, 'TableRow', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableRow.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableRow.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableRow.js'); }(); ; @@ -8439,7 +8648,7 @@ return /******/ (function(modules) { // webpackBootstrap key: 'componentDidMount', value: function componentDidMount() { var dom = _reactDom2.default.findDOMNode(this); - if (this.props.isFocus) { + if (this.props.isFocus && this.props.keyBoardNav) { dom.focus(); } else { dom.blur(); @@ -8449,7 +8658,7 @@ return /******/ (function(modules) { // webpackBootstrap key: 'componentDidUpdate', value: function componentDidUpdate() { var dom = _reactDom2.default.findDOMNode(this); - if (this.props.isFocus) { + if (this.props.isFocus && this.props.keyBoardNav) { dom.focus(); } else { dom.blur(); @@ -8593,9 +8802,9 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(TableColumn, 'TableColumn', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableColumn.js'); + __REACT_HOT_LOADER__.register(TableColumn, 'TableColumn', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableColumn.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableColumn.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableColumn.js'); }(); ; @@ -9048,9 +9257,9 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(TableEditColumn, 'TableEditColumn', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableEditColumn.js'); + __REACT_HOT_LOADER__.register(TableEditColumn, 'TableEditColumn', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableEditColumn.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableEditColumn.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableEditColumn.js'); }(); ; @@ -9198,9 +9407,9 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(editor, 'editor', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/Editor.js'); + __REACT_HOT_LOADER__.register(editor, 'editor', '/home/nogi/nogi/forks/react-bootstrap-table/src/Editor.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/Editor.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/Editor.js'); }(); ; @@ -9243,7 +9452,7 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(notice, 'notice', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/Notification.js'); + __REACT_HOT_LOADER__.register(notice, 'notice', '/home/nogi/nogi/forks/react-bootstrap-table/src/Notification.js'); }(); ; @@ -9324,9 +9533,9 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(ExpandComponent, 'ExpandComponent', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/ExpandComponent.js'); + __REACT_HOT_LOADER__.register(ExpandComponent, 'ExpandComponent', '/home/nogi/nogi/forks/react-bootstrap-table/src/ExpandComponent.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/ExpandComponent.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/ExpandComponent.js'); }(); ; @@ -9411,6 +9620,9 @@ return /******/ (function(modules) { // webpackBootstrap return _this; } + /* eslint-disable */ + + _createClass(PaginationList, [{ key: '__closeDropDown__REACT_HOT_LOADER__', value: function __closeDropDown__REACT_HOT_LOADER__() { @@ -9432,8 +9644,9 @@ return /******/ (function(modules) { // webpackBootstrap return this.__changePage__REACT_HOT_LOADER__.apply(this, arguments); } }, { - key: 'componentWillReceiveProps', - value: function componentWillReceiveProps() { + key: 'UNSAFE_componentWillReceiveProps', + value: function UNSAFE_componentWillReceiveProps() { + /* eslint-enable */ var keepSizePerPageState = this.props.keepSizePerPageState; if (!keepSizePerPageState) { @@ -9814,9 +10027,9 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(PaginationList, 'PaginationList', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/pagination/PaginationList.js'); + __REACT_HOT_LOADER__.register(PaginationList, 'PaginationList', '/home/nogi/nogi/forks/react-bootstrap-table/src/pagination/PaginationList.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/pagination/PaginationList.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/pagination/PaginationList.js'); }(); ; @@ -9922,9 +10135,9 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(PageButton, 'PageButton', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/pagination/PageButton.js'); + __REACT_HOT_LOADER__.register(PageButton, 'PageButton', '/home/nogi/nogi/forks/react-bootstrap-table/src/pagination/PageButton.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/pagination/PageButton.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/pagination/PageButton.js'); }(); ; @@ -10055,11 +10268,11 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(sizePerPageDefaultClass, 'sizePerPageDefaultClass', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/pagination/SizePerPageDropDown.js'); + __REACT_HOT_LOADER__.register(sizePerPageDefaultClass, 'sizePerPageDefaultClass', '/home/nogi/nogi/forks/react-bootstrap-table/src/pagination/SizePerPageDropDown.js'); - __REACT_HOT_LOADER__.register(SizePerPageDropDown, 'SizePerPageDropDown', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/pagination/SizePerPageDropDown.js'); + __REACT_HOT_LOADER__.register(SizePerPageDropDown, 'SizePerPageDropDown', '/home/nogi/nogi/forks/react-bootstrap-table/src/pagination/SizePerPageDropDown.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/pagination/SizePerPageDropDown.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/pagination/SizePerPageDropDown.js'); }(); ; @@ -10098,31 +10311,31 @@ return /******/ (function(modules) { // webpackBootstrap var _Notification = __webpack_require__(39); - var _InsertModal = __webpack_require__(57); + var _InsertModal = __webpack_require__(59); var _InsertModal2 = _interopRequireDefault(_InsertModal); - var _InsertButton = __webpack_require__(61); + var _InsertButton = __webpack_require__(63); var _InsertButton2 = _interopRequireDefault(_InsertButton); - var _DeleteButton = __webpack_require__(62); + var _DeleteButton = __webpack_require__(64); var _DeleteButton2 = _interopRequireDefault(_DeleteButton); - var _ExportCSVButton = __webpack_require__(63); + var _ExportCSVButton = __webpack_require__(65); var _ExportCSVButton2 = _interopRequireDefault(_ExportCSVButton); - var _ShowSelectedOnlyButton = __webpack_require__(64); + var _ShowSelectedOnlyButton = __webpack_require__(66); var _ShowSelectedOnlyButton2 = _interopRequireDefault(_ShowSelectedOnlyButton); - var _SearchField = __webpack_require__(65); + var _SearchField = __webpack_require__(67); var _SearchField2 = _interopRequireDefault(_SearchField); - var _ClearSearchButton = __webpack_require__(66); + var _ClearSearchButton = __webpack_require__(68); var _ClearSearchButton2 = _interopRequireDefault(_ClearSearchButton); @@ -10202,6 +10415,9 @@ return /******/ (function(modules) { // webpackBootstrap return _this; } + /* eslint-disable */ + + _createClass(ToolBar, [{ key: '__handleClearBtnClick__REACT_HOT_LOADER__', value: function __handleClearBtnClick__REACT_HOT_LOADER__() { @@ -10281,18 +10497,23 @@ return /******/ (function(modules) { // webpackBootstrap return this.__displayCommonMessage__REACT_HOT_LOADER__.apply(this, arguments); } }, { - key: 'componentWillMount', - value: function componentWillMount() { + key: 'UNSAFE_componentWillMount', + value: function UNSAFE_componentWillMount() { var _this3 = this; + /* eslint-enable */ var delay = this.props.searchDelayTime ? this.props.searchDelayTime : 0; this.debounceCallback = this.handleDebounce(function () { _this3.seachInput && _this3.props.onSearch(_this3.seachInput.getValue()); }, delay); } + + /* eslint-disable */ + }, { - key: 'componentWillReceiveProps', - value: function componentWillReceiveProps(nextProps) { + key: 'UNSAFE_componentWillReceiveProps', + value: function UNSAFE_componentWillReceiveProps(nextProps) { + /* eslint-enable */ if (nextProps.reset) { this.setSearchInput(''); } @@ -10781,9 +11002,9 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(ToolBar, 'ToolBar', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ToolBar.js'); + __REACT_HOT_LOADER__.register(ToolBar, 'ToolBar', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/ToolBar.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ToolBar.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/ToolBar.js'); }(); ; @@ -10842,10 +11063,12 @@ return /******/ (function(modules) { // webpackBootstrap var ariaAppHider = _interopRequireWildcard(_ariaAppHider); - var _safeHTMLElement = __webpack_require__(55); + var _safeHTMLElement = __webpack_require__(53); var _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement); + var _reactLifecyclesCompat = __webpack_require__(58); + function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -10860,7 +11083,10 @@ return /******/ (function(modules) { // webpackBootstrap var bodyOpenClassName = exports.bodyOpenClassName = "ReactModal__Body--open"; var isReact16 = _reactDom2.default.createPortal !== undefined; - var createPortal = isReact16 ? _reactDom2.default.createPortal : _reactDom2.default.unstable_renderSubtreeIntoContainer; + + var getCreatePortal = function getCreatePortal() { + return isReact16 ? _reactDom2.default.createPortal : _reactDom2.default.unstable_renderSubtreeIntoContainer; + }; function getParentElement(parentSelector) { return parentSelector(); @@ -10883,10 +11109,16 @@ return /******/ (function(modules) { // webpackBootstrap return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Modal.__proto__ || Object.getPrototypeOf(Modal)).call.apply(_ref, [this].concat(args))), _this), _this.removePortal = function () { !isReact16 && _reactDom2.default.unmountComponentAtNode(_this.node); var parent = getParentElement(_this.props.parentSelector); - parent.removeChild(_this.node); + if (parent) { + parent.removeChild(_this.node); + } else { + // eslint-disable-next-line no-console + console.warn('React-Modal: "parentSelector" prop did not returned any DOM ' + "element. Make sure that the parent element is unmounted to " + "avoid any memory leaks."); + } }, _this.portalRef = function (ref) { _this.portal = ref; }, _this.renderPortal = function (props) { + var createPortal = getCreatePortal(); var portal = createPortal(_this, _react2.default.createElement(_ModalPortal2.default, _extends({ defaultStyles: Modal.defaultStyles }, props)), _this.node); _this.portalRef(portal); }, _temp), _possibleConstructorReturn(_this, _ret); @@ -10908,31 +11140,37 @@ return /******/ (function(modules) { // webpackBootstrap !isReact16 && this.renderPortal(this.props); } }, { - key: "componentWillReceiveProps", - value: function componentWillReceiveProps(newProps) { + key: "getSnapshotBeforeUpdate", + value: function getSnapshotBeforeUpdate(prevProps) { + var prevParent = getParentElement(prevProps.parentSelector); + var nextParent = getParentElement(this.props.parentSelector); + return { prevParent: prevParent, nextParent: nextParent }; + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps, _, snapshot) { if (!_safeHTMLElement.canUseDOM) return; - var isOpen = newProps.isOpen; - // Stop unnecessary renders if modal is remaining closed - - if (!this.props.isOpen && !isOpen) return; + var _props = this.props, + isOpen = _props.isOpen, + portalClassName = _props.portalClassName; - var currentParent = getParentElement(this.props.parentSelector); - var newParent = getParentElement(newProps.parentSelector); - if (newParent !== currentParent) { - currentParent.removeChild(this.node); - newParent.appendChild(this.node); + if (prevProps.portalClassName !== portalClassName) { + this.node.className = portalClassName; } - !isReact16 && this.renderPortal(newProps); - } - }, { - key: "componentWillUpdate", - value: function componentWillUpdate(newProps) { - if (!_safeHTMLElement.canUseDOM) return; - if (newProps.portalClassName !== this.props.portalClassName) { - this.node.className = newProps.portalClassName; + var prevParent = snapshot.prevParent, + nextParent = snapshot.nextParent; + + if (nextParent !== prevParent) { + prevParent.removeChild(this.node); + nextParent.appendChild(this.node); } + + // Stop unnecessary renders if modal is remaining closed + if (!prevProps.isOpen && !isOpen) return; + + !isReact16 && this.renderPortal(this.props); } }, { key: "componentWillUnmount", @@ -10964,6 +11202,7 @@ return /******/ (function(modules) { // webpackBootstrap this.node = document.createElement("div"); } + var createPortal = getCreatePortal(); return createPortal(_react2.default.createElement(_ModalPortal2.default, _extends({ ref: this.portalRef, defaultStyles: Modal.defaultStyles @@ -10992,6 +11231,7 @@ return /******/ (function(modules) { // webpackBootstrap }), portalClassName: _propTypes2.default.string, bodyOpenClassName: _propTypes2.default.string, + htmlOpenClassName: _propTypes2.default.string, className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({ base: _propTypes2.default.string.isRequired, afterOpen: _propTypes2.default.string.isRequired, @@ -11012,14 +11252,18 @@ return /******/ (function(modules) { // webpackBootstrap shouldReturnFocusAfterClose: _propTypes2.default.bool, parentSelector: _propTypes2.default.func, aria: _propTypes2.default.object, + data: _propTypes2.default.object, role: _propTypes2.default.string, contentLabel: _propTypes2.default.string, - shouldCloseOnEsc: _propTypes2.default.bool + shouldCloseOnEsc: _propTypes2.default.bool, + overlayRef: _propTypes2.default.func, + contentRef: _propTypes2.default.func }; Modal.defaultProps = { isOpen: false, portalClassName: portalClassName, bodyOpenClassName: bodyOpenClassName, + role: "dialog", ariaHideApp: true, closeTimeoutMS: 0, shouldFocusAfterRender: true, @@ -11054,6 +11298,10 @@ return /******/ (function(modules) { // webpackBootstrap padding: "20px" } }; + + + (0, _reactLifecyclesCompat.polyfill)(Modal); + exports.default = Modal; /***/ }), @@ -11092,17 +11340,19 @@ return /******/ (function(modules) { // webpackBootstrap var ariaAppHider = _interopRequireWildcard(_ariaAppHider); - var _refCount = __webpack_require__(53); + var _classList = __webpack_require__(55); - var refCount = _interopRequireWildcard(_refCount); + var classList = _interopRequireWildcard(_classList); - var _bodyClassList = __webpack_require__(54); + var _safeHTMLElement = __webpack_require__(53); - var bodyClassList = _interopRequireWildcard(_bodyClassList); + var _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement); - var _safeHTMLElement = __webpack_require__(55); + var _portalOpenInstances = __webpack_require__(56); - var _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement); + var _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances); + + __webpack_require__(57); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -11123,6 +11373,8 @@ return /******/ (function(modules) { // webpackBootstrap var TAB_KEY = 9; var ESC_KEY = 27; + var ariaHiddenInstances = 0; + var ModalPortal = function (_Component) { _inherits(ModalPortal, _Component); @@ -11131,30 +11383,36 @@ return /******/ (function(modules) { // webpackBootstrap var _this = _possibleConstructorReturn(this, (ModalPortal.__proto__ || Object.getPrototypeOf(ModalPortal)).call(this, props)); - _this.setFocusAfterRender = function (focus) { - _this.focusAfterRender = _this.props.shouldFocusAfterRender && focus; - }; - _this.setOverlayRef = function (overlay) { _this.overlay = overlay; + _this.props.overlayRef && _this.props.overlayRef(overlay); }; _this.setContentRef = function (content) { _this.content = content; + _this.props.contentRef && _this.props.contentRef(content); }; _this.afterClose = function () { var _this$props = _this.props, appElement = _this$props.appElement, - ariaHideApp = _this$props.ariaHideApp; + ariaHideApp = _this$props.ariaHideApp, + htmlOpenClassName = _this$props.htmlOpenClassName, + bodyOpenClassName = _this$props.bodyOpenClassName; + + // Remove classes. - // Remove body class + bodyOpenClassName && classList.remove(document.body, bodyOpenClassName); - bodyClassList.remove(_this.props.bodyOpenClassName); + htmlOpenClassName && classList.remove(document.getElementsByTagName("html")[0], htmlOpenClassName); // Reset aria-hidden attribute if all modals have been removed - if (ariaHideApp && refCount.totalCount() < 1) { - ariaAppHider.show(appElement); + if (ariaHideApp && ariaHiddenInstances > 0) { + ariaHiddenInstances -= 1; + + if (ariaHiddenInstances === 0) { + ariaAppHider.show(appElement); + } } if (_this.props.shouldFocusAfterRender) { @@ -11165,6 +11423,12 @@ return /******/ (function(modules) { // webpackBootstrap focusManager.popWithoutFocus(); } } + + if (_this.props.onAfterClose) { + _this.props.onAfterClose(); + } + + _portalOpenInstances2.default.deregister(_this); }; _this.open = function () { @@ -11182,7 +11446,10 @@ return /******/ (function(modules) { // webpackBootstrap _this.setState({ afterOpen: true }); if (_this.props.isOpen && _this.props.onAfterOpen) { - _this.props.onAfterOpen(); + _this.props.onAfterOpen({ + overlayEl: _this.overlay, + contentEl: _this.content + }); } }); } @@ -11222,7 +11489,7 @@ return /******/ (function(modules) { // webpackBootstrap } if (_this.props.shouldCloseOnEsc && event.keyCode === ESC_KEY) { - event.preventDefault(); + event.stopPropagation(); _this.requestClose(event); } }; @@ -11240,13 +11507,6 @@ return /******/ (function(modules) { // webpackBootstrap } } _this.shouldClose = null; - _this.moveFromContentToOverlay = null; - }; - - _this.handleOverlayOnMouseUp = function () { - if (_this.moveFromContentToOverlay === null) { - _this.shouldClose = false; - } }; _this.handleContentOnMouseUp = function () { @@ -11257,7 +11517,6 @@ return /******/ (function(modules) { // webpackBootstrap if (!_this.props.shouldCloseOnOverlayClick && event.target == _this.overlay) { event.preventDefault(); } - _this.moveFromContentToOverlay = false; }; _this.handleContentOnClick = function () { @@ -11266,7 +11525,6 @@ return /******/ (function(modules) { // webpackBootstrap _this.handleContentOnMouseDown = function () { _this.shouldClose = false; - _this.moveFromContentToOverlay = false; }; _this.requestClose = function (event) { @@ -11301,9 +11559,9 @@ return /******/ (function(modules) { // webpackBootstrap return typeof additional === "string" && additional ? className + " " + additional : className; }; - _this.ariaAttributes = function (items) { + _this.attributesFromObject = function (prefix, items) { return Object.keys(items).reduce(function (acc, name) { - acc["aria-" + name] = items[name]; + acc[prefix + "-" + name] = items[name]; return acc; }, {}); }; @@ -11321,41 +11579,41 @@ return /******/ (function(modules) { // webpackBootstrap _createClass(ModalPortal, [{ key: "componentDidMount", value: function componentDidMount() { - // Focus needs to be set when mounting and already open if (this.props.isOpen) { - this.setFocusAfterRender(true); this.open(); } } }, { - key: "componentWillReceiveProps", - value: function componentWillReceiveProps(newProps) { + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps, prevState) { if (process.env.NODE_ENV !== "production") { - if (newProps.bodyOpenClassName !== this.props.bodyOpenClassName) { + if (prevProps.bodyOpenClassName !== this.props.bodyOpenClassName) { // eslint-disable-next-line no-console console.warn('React-Modal: "bodyOpenClassName" prop has been modified. ' + "This may cause unexpected behavior when multiple modals are open."); } + if (prevProps.htmlOpenClassName !== this.props.htmlOpenClassName) { + // eslint-disable-next-line no-console + console.warn('React-Modal: "htmlOpenClassName" prop has been modified. ' + "This may cause unexpected behavior when multiple modals are open."); + } } - // Focus only needs to be set once when the modal is being opened - if (!this.props.isOpen && newProps.isOpen) { - this.setFocusAfterRender(true); + + if (this.props.isOpen && !prevProps.isOpen) { this.open(); - } else if (this.props.isOpen && !newProps.isOpen) { + } else if (!this.props.isOpen && prevProps.isOpen) { this.close(); } - } - }, { - key: "componentDidUpdate", - value: function componentDidUpdate() { - if (this.focusAfterRender) { + + // Focus only needs to be set once when the modal is being opened + if (this.props.shouldFocusAfterRender && this.state.isOpen && !prevState.isOpen) { this.focusContent(); - this.setFocusAfterRender(false); } } }, { key: "componentWillUnmount", value: function componentWillUnmount() { - this.afterClose(); + if (this.state.isOpen) { + this.afterClose(); + } clearTimeout(this.closeTimer); } }, { @@ -11364,14 +11622,21 @@ return /******/ (function(modules) { // webpackBootstrap var _props = this.props, appElement = _props.appElement, ariaHideApp = _props.ariaHideApp, + htmlOpenClassName = _props.htmlOpenClassName, bodyOpenClassName = _props.bodyOpenClassName; - // Add body class - bodyClassList.add(bodyOpenClassName); - // Add aria-hidden to appElement + // Add classes. + + bodyOpenClassName && classList.add(document.body, bodyOpenClassName); + + htmlOpenClassName && classList.add(document.getElementsByTagName("html")[0], htmlOpenClassName); + if (ariaHideApp) { + ariaHiddenInstances += 1; ariaAppHider.hide(appElement); } + + _portalOpenInstances2.default.register(this); } // Don't steal focus from inner elements @@ -11380,6 +11645,7 @@ return /******/ (function(modules) { // webpackBootstrap key: "render", value: function render() { var _props2 = this.props, + id = _props2.id, className = _props2.className, overlayClassName = _props2.overlayClassName, defaultStyles = _props2.defaultStyles; @@ -11394,13 +11660,12 @@ return /******/ (function(modules) { // webpackBootstrap className: this.buildClassName("overlay", overlayClassName), style: _extends({}, overlayStyles, this.props.style.overlay), onClick: this.handleOverlayOnClick, - onMouseDown: this.handleOverlayOnMouseDown, - onMouseUp: this.handleOverlayOnMouseUp, - "aria-modal": "true" + onMouseDown: this.handleOverlayOnMouseDown }, _react2.default.createElement( "div", _extends({ + id: id, ref: this.setContentRef, style: _extends({}, contentStyles, this.props.style.content), className: this.buildClassName("content", className), @@ -11411,7 +11676,9 @@ return /******/ (function(modules) { // webpackBootstrap onClick: this.handleContentOnClick, role: this.props.role, "aria-label": this.props.contentLabel - }, this.ariaAttributes(this.props.aria || {})), + }, this.attributesFromObject("aria", this.props.aria || {}), this.attributesFromObject("data", this.props.data || {}), { + "data-testid": this.props.testId + }), this.props.children ) ); @@ -11425,7 +11692,8 @@ return /******/ (function(modules) { // webpackBootstrap style: { overlay: {}, content: {} - } + }, + defaultStyles: {} }; ModalPortal.propTypes = { isOpen: _propTypes2.default.bool.isRequired, @@ -11440,9 +11708,11 @@ return /******/ (function(modules) { // webpackBootstrap className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]), overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]), bodyOpenClassName: _propTypes2.default.string, + htmlOpenClassName: _propTypes2.default.string, ariaHideApp: _propTypes2.default.bool, appElement: _propTypes2.default.instanceOf(_safeHTMLElement2.default), onAfterOpen: _propTypes2.default.func, + onAfterClose: _propTypes2.default.func, onRequestClose: _propTypes2.default.func, closeTimeoutMS: _propTypes2.default.number, shouldFocusAfterRender: _propTypes2.default.bool, @@ -11451,8 +11721,13 @@ return /******/ (function(modules) { // webpackBootstrap role: _propTypes2.default.string, contentLabel: _propTypes2.default.string, aria: _propTypes2.default.object, + data: _propTypes2.default.object, children: _propTypes2.default.node, - shouldCloseOnEsc: _propTypes2.default.bool + shouldCloseOnEsc: _propTypes2.default.bool, + overlayRef: _propTypes2.default.func, + contentRef: _propTypes2.default.func, + id: _propTypes2.default.string, + testId: _propTypes2.default.string }; exports.default = ModalPortal; module.exports = exports["default"]; @@ -11518,8 +11793,10 @@ return /******/ (function(modules) { // webpackBootstrap function returnFocus() { var toFocus = null; try { - toFocus = focusLaterElements.pop(); - toFocus.focus(); + if (focusLaterElements.length !== 0) { + toFocus = focusLaterElements.pop(); + toFocus.focus(); + } return; } catch (e) { console.warn(["You tried to return focus to", toFocus, "but it is not in the DOM anymore"].join(" ")); @@ -11587,7 +11864,9 @@ return /******/ (function(modules) { // webpackBootstrap // Otherwise we need to check some styles var style = window.getComputedStyle(element); - return zeroSize ? style.getPropertyValue("overflow") !== "visible" : style.getPropertyValue("display") == "none"; + return zeroSize ? style.getPropertyValue("overflow") !== "visible" || + // if 'overflow: visible' set, check if there is actually any overflow + element.scrollWidth <= 0 && element.scrollHeight <= 0 : style.getPropertyValue("display") == "none"; } function visible(element) { @@ -11644,16 +11923,19 @@ return /******/ (function(modules) { // webpackBootstrap return; } + var target = void 0; + var shiftKey = event.shiftKey; var head = tabbable[0]; var tail = tabbable[tabbable.length - 1]; - // proceed with default browser behavior + // proceed with default browser behavior on tab. + // Focus on last element on shift + tab. if (node === document.activeElement) { - return; + if (!shiftKey) return; + target = tail; } - var target; if (tail === document.activeElement && !shiftKey) { target = head; } @@ -11673,7 +11955,7 @@ return /******/ (function(modules) { // webpackBootstrap // Safari does not move the focus to the radio button, // so we need to force it to really walk through all elements. // - // This is very error prune, since we are trying to guess + // This is very error prone, since we are trying to guess // if it is a safari browser from the first occurence between // chrome or safari. // @@ -11692,9 +11974,20 @@ return /******/ (function(modules) { // webpackBootstrap x += shiftKey ? -1 : 1; } + target = tabbable[x]; + + // If the tabbable element does not exist, + // focus head/tail based on shiftKey + if (typeof target === "undefined") { + event.preventDefault(); + target = shiftKey ? tail : head; + target.focus(); + return; + } + event.preventDefault(); - tabbable[x].focus(); + target.focus(); } module.exports = exports["default"]; @@ -11719,6 +12012,8 @@ return /******/ (function(modules) { // webpackBootstrap var _warning2 = _interopRequireDefault(_warning); + var _safeHTMLElement = __webpack_require__(53); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var globalElement = null; @@ -11731,7 +12026,7 @@ return /******/ (function(modules) { // webpackBootstrap function setElement(element) { var useElement = element; - if (typeof useElement === "string") { + if (typeof useElement === "string" && _safeHTMLElement.canUseDOM) { var el = document.querySelectorAll(useElement); assertNodeList(el, useElement); useElement = "length" in el ? el[0] : el; @@ -11775,12 +12070,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(process) {/** - * Copyright 2014-2015, Facebook, Inc. - * All rights reserved. + * Copyright (c) 2014-present, Facebook, Inc. * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. */ 'use strict'; @@ -11792,9 +12085,33 @@ return /******/ (function(modules) { // webpackBootstrap * same logic and follow the same code paths. */ + var __DEV__ = process.env.NODE_ENV !== 'production'; + var warning = function() {}; - if (process.env.NODE_ENV !== 'production') { + if (__DEV__) { + var printWarning = function printWarning(format, args) { + var len = arguments.length; + args = new Array(len > 1 ? len - 1 : 0); + for (var key = 1; key < len; key++) { + args[key - 1] = arguments[key]; + } + var argIndex = 0; + var message = 'Warning: ' + + format.replace(/%s/g, function() { + return args[argIndex++]; + }); + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + } + warning = function(condition, format, args) { var len = arguments.length; args = new Array(len > 2 ? len - 2 : 0); @@ -11803,32 +12120,12 @@ return /******/ (function(modules) { // webpackBootstrap } if (format === undefined) { throw new Error( - '`warning(condition, format, ...args)` requires a warning ' + - 'message argument' - ); - } - - if (format.length < 10 || (/^[s\W]*$/).test(format)) { - throw new Error( - 'The warning format should be able to uniquely identify this ' + - 'warning. Please, use a more descriptive format than: ' + format + '`warning(condition, format, ...args)` requires a warning ' + + 'message argument' ); } - if (!condition) { - var argIndex = 0; - var message = 'Warning: ' + - format.replace(/%s/g, function() { - return args[argIndex++]; - }); - if (typeof console !== 'undefined') { - console.error(message); - } - try { - // This error was thrown as a convenience so that you can use this stack - // to find the callsite that caused this warning to fire. - throw new Error(message); - } catch(x) {} + printWarning.apply(null, [format].concat(args)); } }; } @@ -11839,83 +12136,6 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }), /* 53 */ -/***/ (function(module, exports) { - - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.get = get; - exports.add = add; - exports.remove = remove; - exports.totalCount = totalCount; - var classListMap = {}; - - function get() { - return classListMap; - } - - function add(bodyClass) { - // Set variable and default if none - if (!classListMap[bodyClass]) { - classListMap[bodyClass] = 0; - } - classListMap[bodyClass] += 1; - return bodyClass; - } - - function remove(bodyClass) { - if (classListMap[bodyClass]) { - classListMap[bodyClass] -= 1; - } - return bodyClass; - } - - function totalCount() { - return Object.keys(classListMap).reduce(function (acc, curr) { - return acc + classListMap[curr]; - }, 0); - } - -/***/ }), -/* 54 */ -/***/ (function(module, exports, __webpack_require__) { - - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.add = add; - exports.remove = remove; - - var _refCount = __webpack_require__(53); - - var refCount = _interopRequireWildcard(_refCount); - - function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - - function add(bodyClass) { - // Increment class(es) on refCount tracker and add class(es) to body - bodyClass.split(" ").map(refCount.add).forEach(function (className) { - return document.body.classList.add(className); - }); - } - - function remove(bodyClass) { - var classListMap = refCount.get(); - // Decrement class(es) from the refCount tracker - // and remove unused class(es) from body - bodyClass.split(" ").map(refCount.remove).filter(function (className) { - return classListMap[className] === 0; - }).forEach(function (className) { - return document.body.classList.remove(className); - }); - } - -/***/ }), -/* 55 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -11925,7 +12145,7 @@ return /******/ (function(modules) { // webpackBootstrap }); exports.canUseDOM = undefined; - var _exenv = __webpack_require__(56); + var _exenv = __webpack_require__(54); var _exenv2 = _interopRequireDefault(_exenv); @@ -11940,7 +12160,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.default = SafeHTMLElement; /***/ }), -/* 56 */ +/* 54 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;/*! @@ -11985,8 +12205,420 @@ return /******/ (function(modules) { // webpackBootstrap }()); +/***/ }), +/* 55 */ +/***/ (function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(process) {"use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.dumpClassLists = dumpClassLists; + var htmlClassList = {}; + var docBodyClassList = {}; + + function dumpClassLists() { + if (process.env.NODE_ENV !== "production") { + var classes = document.getElementsByTagName("html")[0].className; + var buffer = "Show tracked classes:\n\n"; + + buffer += " (" + classes + "):\n"; + for (var x in htmlClassList) { + buffer += " " + x + " " + htmlClassList[x] + "\n"; + } + + classes = document.body.className; + + // eslint-disable-next-line max-len + buffer += "\n\ndoc.body (" + classes + "):\n"; + for (var _x in docBodyClassList) { + buffer += " " + _x + " " + docBodyClassList[_x] + "\n"; + } + + buffer += "\n"; + + // eslint-disable-next-line no-console + console.log(buffer); + } + } + + /** + * Track the number of reference of a class. + * @param {object} poll The poll to receive the reference. + * @param {string} className The class name. + * @return {string} + */ + var incrementReference = function incrementReference(poll, className) { + if (!poll[className]) { + poll[className] = 0; + } + poll[className] += 1; + return className; + }; + + /** + * Drop the reference of a class. + * @param {object} poll The poll to receive the reference. + * @param {string} className The class name. + * @return {string} + */ + var decrementReference = function decrementReference(poll, className) { + if (poll[className]) { + poll[className] -= 1; + } + return className; + }; + + /** + * Track a class and add to the given class list. + * @param {Object} classListRef A class list of an element. + * @param {Object} poll The poll to be used. + * @param {Array} classes The list of classes to be tracked. + */ + var trackClass = function trackClass(classListRef, poll, classes) { + classes.forEach(function (className) { + incrementReference(poll, className); + classListRef.add(className); + }); + }; + + /** + * Untrack a class and remove from the given class list if the reference + * reaches 0. + * @param {Object} classListRef A class list of an element. + * @param {Object} poll The poll to be used. + * @param {Array} classes The list of classes to be untracked. + */ + var untrackClass = function untrackClass(classListRef, poll, classes) { + classes.forEach(function (className) { + decrementReference(poll, className); + poll[className] === 0 && classListRef.remove(className); + }); + }; + + /** + * Public inferface to add classes to the document.body. + * @param {string} bodyClass The class string to be added. + * It may contain more then one class + * with ' ' as separator. + */ + var add = exports.add = function add(element, classString) { + return trackClass(element.classList, element.nodeName.toLowerCase() == "html" ? htmlClassList : docBodyClassList, classString.split(" ")); + }; + + /** + * Public inferface to remove classes from the document.body. + * @param {string} bodyClass The class string to be added. + * It may contain more then one class + * with ' ' as separator. + */ + var remove = exports.remove = function remove(element, classString) { + return untrackClass(element.classList, element.nodeName.toLowerCase() == "html" ? htmlClassList : docBodyClassList, classString.split(" ")); + }; + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4))) + +/***/ }), +/* 56 */ +/***/ (function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(process) {"use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + // Tracks portals that are open and emits events to subscribers + + var PortalOpenInstances = function PortalOpenInstances() { + var _this = this; + + _classCallCheck(this, PortalOpenInstances); + + this.register = function (openInstance) { + if (_this.openInstances.indexOf(openInstance) !== -1) { + if (process.env.NODE_ENV !== "production") { + // eslint-disable-next-line no-console + console.warn("React-Modal: Cannot register modal instance that's already open"); + } + return; + } + _this.openInstances.push(openInstance); + _this.emit("register"); + }; + + this.deregister = function (openInstance) { + var index = _this.openInstances.indexOf(openInstance); + if (index === -1) { + if (process.env.NODE_ENV !== "production") { + // eslint-disable-next-line no-console + console.warn("React-Modal: Unable to deregister " + openInstance + " as " + "it was never registered"); + } + return; + } + _this.openInstances.splice(index, 1); + _this.emit("deregister"); + }; + + this.subscribe = function (callback) { + _this.subscribers.push(callback); + }; + + this.emit = function (eventType) { + _this.subscribers.forEach(function (subscriber) { + return subscriber(eventType, + // shallow copy to avoid accidental mutation + _this.openInstances.slice()); + }); + }; + + this.openInstances = []; + this.subscribers = []; + }; + + var portalOpenInstances = new PortalOpenInstances(); + + exports.default = portalOpenInstances; + module.exports = exports["default"]; + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4))) + /***/ }), /* 57 */ +/***/ (function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(process) {"use strict"; + + var _portalOpenInstances = __webpack_require__(56); + + var _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + // Body focus trap see Issue #742 + + var before = void 0, + after = void 0, + instances = []; + + function focusContent() { + if (instances.length === 0) { + if (process.env.NODE_ENV !== "production") { + // eslint-disable-next-line no-console + console.warn("React-Modal: Open instances > 0 expected"); + } + return; + } + instances[instances.length - 1].focusContent(); + } + + function bodyTrap(eventType, openInstances) { + if (!before || !after) { + before = document.createElement("div"); + before.setAttribute("data-react-modal-body-trap", ""); + before.style.position = "absolute"; + before.style.opacity = "0"; + before.setAttribute("tabindex", "0"); + before.addEventListener("focus", focusContent); + after = before.cloneNode(); + after.addEventListener("focus", focusContent); + } + + instances = openInstances; + + if (instances.length > 0) { + // Add focus trap + if (document.body.firstChild !== before) { + document.body.insertBefore(before, document.body.firstChild); + } + if (document.body.lastChild !== after) { + document.body.appendChild(after); + } + } else { + // Remove focus trap + if (before.parentElement) { + before.parentElement.removeChild(before); + } + if (after.parentElement) { + after.parentElement.removeChild(after); + } + } + } + + _portalOpenInstances2.default.subscribe(bodyTrap); + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4))) + +/***/ }), +/* 58 */ +/***/ (function(module, exports) { + + 'use strict'; + + Object.defineProperty(exports, '__esModule', { value: true }); + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + function componentWillMount() { + // Call this.constructor.gDSFP to support sub-classes. + var state = this.constructor.getDerivedStateFromProps(this.props, this.state); + if (state !== null && state !== undefined) { + this.setState(state); + } + } + + function componentWillReceiveProps(nextProps) { + // Call this.constructor.gDSFP to support sub-classes. + // Use the setState() updater to ensure state isn't stale in certain edge cases. + function updater(prevState) { + var state = this.constructor.getDerivedStateFromProps(nextProps, prevState); + return state !== null && state !== undefined ? state : null; + } + // Binding "this" is important for shallow renderer support. + this.setState(updater.bind(this)); + } + + function componentWillUpdate(nextProps, nextState) { + try { + var prevProps = this.props; + var prevState = this.state; + this.props = nextProps; + this.state = nextState; + this.__reactInternalSnapshotFlag = true; + this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate( + prevProps, + prevState + ); + } finally { + this.props = prevProps; + this.state = prevState; + } + } + + // React may warn about cWM/cWRP/cWU methods being deprecated. + // Add a flag to suppress these warnings for this special case. + componentWillMount.__suppressDeprecationWarning = true; + componentWillReceiveProps.__suppressDeprecationWarning = true; + componentWillUpdate.__suppressDeprecationWarning = true; + + function polyfill(Component) { + var prototype = Component.prototype; + + if (!prototype || !prototype.isReactComponent) { + throw new Error('Can only polyfill class components'); + } + + if ( + typeof Component.getDerivedStateFromProps !== 'function' && + typeof prototype.getSnapshotBeforeUpdate !== 'function' + ) { + return Component; + } + + // If new component APIs are defined, "unsafe" lifecycles won't be called. + // Error if any of these lifecycles are present, + // Because they would work differently between older and newer (16.3+) versions of React. + var foundWillMountName = null; + var foundWillReceivePropsName = null; + var foundWillUpdateName = null; + if (typeof prototype.componentWillMount === 'function') { + foundWillMountName = 'componentWillMount'; + } else if (typeof prototype.UNSAFE_componentWillMount === 'function') { + foundWillMountName = 'UNSAFE_componentWillMount'; + } + if (typeof prototype.componentWillReceiveProps === 'function') { + foundWillReceivePropsName = 'componentWillReceiveProps'; + } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') { + foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps'; + } + if (typeof prototype.componentWillUpdate === 'function') { + foundWillUpdateName = 'componentWillUpdate'; + } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') { + foundWillUpdateName = 'UNSAFE_componentWillUpdate'; + } + if ( + foundWillMountName !== null || + foundWillReceivePropsName !== null || + foundWillUpdateName !== null + ) { + var componentName = Component.displayName || Component.name; + var newApiName = + typeof Component.getDerivedStateFromProps === 'function' + ? 'getDerivedStateFromProps()' + : 'getSnapshotBeforeUpdate()'; + + throw Error( + 'Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n' + + componentName + + ' uses ' + + newApiName + + ' but also contains the following legacy lifecycles:' + + (foundWillMountName !== null ? '\n ' + foundWillMountName : '') + + (foundWillReceivePropsName !== null + ? '\n ' + foundWillReceivePropsName + : '') + + (foundWillUpdateName !== null ? '\n ' + foundWillUpdateName : '') + + '\n\nThe above lifecycles should be removed. Learn more about this warning here:\n' + + 'https://fb.me/react-async-component-lifecycle-hooks' + ); + } + + // React <= 16.2 does not support static getDerivedStateFromProps. + // As a workaround, use cWM and cWRP to invoke the new static lifecycle. + // Newer versions of React will ignore these lifecycles if gDSFP exists. + if (typeof Component.getDerivedStateFromProps === 'function') { + prototype.componentWillMount = componentWillMount; + prototype.componentWillReceiveProps = componentWillReceiveProps; + } + + // React <= 16.2 does not support getSnapshotBeforeUpdate. + // As a workaround, use cWU to invoke the new lifecycle. + // Newer versions of React will ignore that lifecycle if gSBU exists. + if (typeof prototype.getSnapshotBeforeUpdate === 'function') { + if (typeof prototype.componentDidUpdate !== 'function') { + throw new Error( + 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype' + ); + } + + prototype.componentWillUpdate = componentWillUpdate; + + var componentDidUpdate = prototype.componentDidUpdate; + + prototype.componentDidUpdate = function componentDidUpdatePolyfill( + prevProps, + prevState, + maybeSnapshot + ) { + // 16.3+ will not execute our will-update method; + // It will pass a snapshot value to did-update though. + // Older versions will require our polyfilled will-update value. + // We need to handle both cases, but can't just check for the presence of "maybeSnapshot", + // Because for <= 15.x versions this might be a "prevContext" object. + // We also can't just check "__reactInternalSnapshot", + // Because get-snapshot might return a falsy value. + // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior. + var snapshot = this.__reactInternalSnapshotFlag + ? this.__reactInternalSnapshot + : maybeSnapshot; + + componentDidUpdate.call(this, prevProps, prevState, snapshot); + }; + } + + return Component; + } + + exports.polyfill = polyfill; + + +/***/ }), +/* 59 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -12007,15 +12639,15 @@ return /******/ (function(modules) { // webpackBootstrap var _propTypes2 = _interopRequireDefault(_propTypes); - var _InsertModalHeader = __webpack_require__(58); + var _InsertModalHeader = __webpack_require__(60); var _InsertModalHeader2 = _interopRequireDefault(_InsertModalHeader); - var _InsertModalFooter = __webpack_require__(59); + var _InsertModalFooter = __webpack_require__(61); var _InsertModalFooter2 = _interopRequireDefault(_InsertModalFooter); - var _InsertModalBody = __webpack_require__(60); + var _InsertModalBody = __webpack_require__(62); var _InsertModalBody2 = _interopRequireDefault(_InsertModalBody); @@ -12175,17 +12807,17 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(defaultModalClassName, 'defaultModalClassName', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertModal.js'); + __REACT_HOT_LOADER__.register(defaultModalClassName, 'defaultModalClassName', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/InsertModal.js'); - __REACT_HOT_LOADER__.register(InsertModal, 'InsertModal', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertModal.js'); + __REACT_HOT_LOADER__.register(InsertModal, 'InsertModal', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/InsertModal.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertModal.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/InsertModal.js'); }(); ; /***/ }), -/* 58 */ +/* 60 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -12339,15 +12971,15 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(InsertModalHeader, 'InsertModalHeader', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertModalHeader.js'); + __REACT_HOT_LOADER__.register(InsertModalHeader, 'InsertModalHeader', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/InsertModalHeader.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertModalHeader.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/InsertModalHeader.js'); }(); ; /***/ }), -/* 59 */ +/* 61 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -12510,15 +13142,15 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(InsertModalFooter, 'InsertModalFooter', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertModalFooter.js'); + __REACT_HOT_LOADER__.register(InsertModalFooter, 'InsertModalFooter', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/InsertModalFooter.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertModalFooter.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/InsertModalFooter.js'); }(); ; /***/ }), -/* 60 */ +/* 62 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -12675,15 +13307,15 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(InsertModalBody, 'InsertModalBody', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertModalBody.js'); + __REACT_HOT_LOADER__.register(InsertModalBody, 'InsertModalBody', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/InsertModalBody.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertModalBody.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/InsertModalBody.js'); }(); ; /***/ }), -/* 61 */ +/* 63 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -12786,17 +13418,17 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(insertBtnDefaultClass, 'insertBtnDefaultClass', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertButton.js'); + __REACT_HOT_LOADER__.register(insertBtnDefaultClass, 'insertBtnDefaultClass', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/InsertButton.js'); - __REACT_HOT_LOADER__.register(InsertButton, 'InsertButton', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertButton.js'); + __REACT_HOT_LOADER__.register(InsertButton, 'InsertButton', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/InsertButton.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertButton.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/InsertButton.js'); }(); ; /***/ }), -/* 62 */ +/* 64 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -12899,17 +13531,17 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(deleteBtnDefaultClass, 'deleteBtnDefaultClass', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/DeleteButton.js'); + __REACT_HOT_LOADER__.register(deleteBtnDefaultClass, 'deleteBtnDefaultClass', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/DeleteButton.js'); - __REACT_HOT_LOADER__.register(DeleteButton, 'DeleteButton', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/DeleteButton.js'); + __REACT_HOT_LOADER__.register(DeleteButton, 'DeleteButton', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/DeleteButton.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/DeleteButton.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/DeleteButton.js'); }(); ; /***/ }), -/* 63 */ +/* 65 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -13012,17 +13644,17 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(exportCsvBtnDefaultClass, 'exportCsvBtnDefaultClass', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ExportCSVButton.js'); + __REACT_HOT_LOADER__.register(exportCsvBtnDefaultClass, 'exportCsvBtnDefaultClass', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/ExportCSVButton.js'); - __REACT_HOT_LOADER__.register(ExportCSVButton, 'ExportCSVButton', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ExportCSVButton.js'); + __REACT_HOT_LOADER__.register(ExportCSVButton, 'ExportCSVButton', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/ExportCSVButton.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ExportCSVButton.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/ExportCSVButton.js'); }(); ; /***/ }), -/* 64 */ +/* 66 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -13128,17 +13760,17 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(showSelectedOnlyBtnDefaultClass, 'showSelectedOnlyBtnDefaultClass', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ShowSelectedOnlyButton.js'); + __REACT_HOT_LOADER__.register(showSelectedOnlyBtnDefaultClass, 'showSelectedOnlyBtnDefaultClass', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/ShowSelectedOnlyButton.js'); - __REACT_HOT_LOADER__.register(ShowSelectedOnlyButton, 'ShowSelectedOnlyButton', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ShowSelectedOnlyButton.js'); + __REACT_HOT_LOADER__.register(ShowSelectedOnlyButton, 'ShowSelectedOnlyButton', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/ShowSelectedOnlyButton.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ShowSelectedOnlyButton.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/ShowSelectedOnlyButton.js'); }(); ; /***/ }), -/* 65 */ +/* 67 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -13238,15 +13870,15 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(SearchField, 'SearchField', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/SearchField.js'); + __REACT_HOT_LOADER__.register(SearchField, 'SearchField', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/SearchField.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/SearchField.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/SearchField.js'); }(); ; /***/ }), -/* 66 */ +/* 68 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -13341,17 +13973,17 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(clearBtnDefaultClass, 'clearBtnDefaultClass', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ClearSearchButton.js'); + __REACT_HOT_LOADER__.register(clearBtnDefaultClass, 'clearBtnDefaultClass', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/ClearSearchButton.js'); - __REACT_HOT_LOADER__.register(ClearSearchButton, 'ClearSearchButton', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ClearSearchButton.js'); + __REACT_HOT_LOADER__.register(ClearSearchButton, 'ClearSearchButton', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/ClearSearchButton.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ClearSearchButton.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/ClearSearchButton.js'); }(); ; /***/ }), -/* 67 */ +/* 69 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -13504,15 +14136,15 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(TableFilter, 'TableFilter', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableFilter.js'); + __REACT_HOT_LOADER__.register(TableFilter, 'TableFilter', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableFilter.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableFilter.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/TableFilter.js'); }(); ; /***/ }), -/* 68 */ +/* 70 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -14382,13 +15014,13 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(TableDataStore, 'TableDataStore', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/store/TableDataStore.js'); + __REACT_HOT_LOADER__.register(TableDataStore, 'TableDataStore', '/home/nogi/nogi/forks/react-bootstrap-table/src/store/TableDataStore.js'); }(); ; /***/ }), -/* 69 */ +/* 71 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -14412,7 +15044,7 @@ return /******/ (function(modules) { // webpackBootstrap /* eslint no-var: 0 */ /* eslint no-unused-vars: 0 */ if (_util2.default.canUseDOM()) { - var filesaver = __webpack_require__(70); + var filesaver = __webpack_require__(72); var saveAs = filesaver.saveAs; } @@ -14492,19 +15124,19 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(saveAs, 'saveAs', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/csv_export_util.js'); + __REACT_HOT_LOADER__.register(saveAs, 'saveAs', '/home/nogi/nogi/forks/react-bootstrap-table/src/csv_export_util.js'); - __REACT_HOT_LOADER__.register(toString, 'toString', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/csv_export_util.js'); + __REACT_HOT_LOADER__.register(toString, 'toString', '/home/nogi/nogi/forks/react-bootstrap-table/src/csv_export_util.js'); - __REACT_HOT_LOADER__.register(exportCSV, 'exportCSV', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/csv_export_util.js'); + __REACT_HOT_LOADER__.register(exportCSV, 'exportCSV', '/home/nogi/nogi/forks/react-bootstrap-table/src/csv_export_util.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/csv_export_util.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/csv_export_util.js'); }(); ; /***/ }), -/* 70 */ +/* 72 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; @@ -14684,7 +15316,7 @@ return /******/ (function(modules) { // webpackBootstrap if (typeof module !== "undefined" && module.exports) { module.exports.saveAs = saveAs; - } else if ("function" !== "undefined" && __webpack_require__(71) !== null && __webpack_require__(72) !== null) { + } else if ("function" !== "undefined" && __webpack_require__(73) !== null && __webpack_require__(74) !== null) { !(__WEBPACK_AMD_DEFINE_RESULT__ = function () { return saveAs; }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); @@ -14696,20 +15328,20 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(saveAs, "saveAs", "/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filesaver.js"); + __REACT_HOT_LOADER__.register(saveAs, "saveAs", "/home/nogi/nogi/forks/react-bootstrap-table/src/filesaver.js"); }(); ; /***/ }), -/* 71 */ +/* 73 */ /***/ (function(module, exports) { module.exports = function() { throw new Error("define cannot be used indirect"); }; /***/ }), -/* 72 */ +/* 74 */ /***/ (function(module, exports) { /* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {module.exports = __webpack_amd_options__; @@ -14717,7 +15349,7 @@ return /******/ (function(modules) { // webpackBootstrap /* WEBPACK VAR INJECTION */}.call(exports, {})) /***/ }), -/* 73 */ +/* 75 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -14735,7 +15367,7 @@ return /******/ (function(modules) { // webpackBootstrap var _Const2 = _interopRequireDefault(_Const); - var _events = __webpack_require__(74); + var _events = __webpack_require__(76); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -14800,13 +15432,13 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(Filter, 'Filter', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/Filter.js'); + __REACT_HOT_LOADER__.register(Filter, 'Filter', '/home/nogi/nogi/forks/react-bootstrap-table/src/Filter.js'); }(); ; /***/ }), -/* 74 */ +/* 76 */ /***/ (function(module, exports) { // Copyright Joyent, Inc. and other Node contributors. @@ -14868,12 +15500,8 @@ return /******/ (function(modules) { // webpackBootstrap er = arguments[1]; if (er instanceof Error) { throw er; // Unhandled 'error' event - } else { - // At least give some kind of context to the user - var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); - err.context = er; - throw err; } + throw TypeError('Uncaught, unspecified "error" event.'); } } @@ -14896,11 +15524,18 @@ return /******/ (function(modules) { // webpackBootstrap break; // slower default: - args = Array.prototype.slice.call(arguments, 1); + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; handler.apply(this, args); } } else if (isObject(handler)) { - args = Array.prototype.slice.call(arguments, 1); + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + listeners = handler.slice(); len = listeners.length; for (i = 0; i < len; i++) @@ -14938,6 +15573,7 @@ return /******/ (function(modules) { // webpackBootstrap // Check for listener leak if (isObject(this._events[type]) && !this._events[type].warned) { + var m; if (!isUndefined(this._maxListeners)) { m = this._maxListeners; } else { @@ -15059,7 +15695,7 @@ return /******/ (function(modules) { // webpackBootstrap if (isFunction(listeners)) { this.removeListener(type, listeners); - } else if (listeners) { + } else { // LIFO order while (listeners.length) this.removeListener(type, listeners[listeners.length - 1]); @@ -15080,20 +15716,15 @@ return /******/ (function(modules) { // webpackBootstrap return ret; }; - EventEmitter.prototype.listenerCount = function(type) { - if (this._events) { - var evlistener = this._events[type]; - - if (isFunction(evlistener)) - return 1; - else if (evlistener) - return evlistener.length; - } - return 0; - }; - EventEmitter.listenerCount = function(emitter, type) { - return emitter.listenerCount(type); + var ret; + if (!emitter._events || !emitter._events[type]) + ret = 0; + else if (isFunction(emitter._events[type])) + ret = 1; + else + ret = emitter._events[type].length; + return ret; }; function isFunction(arg) { @@ -15114,7 +15745,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }), -/* 75 */ +/* 77 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; @@ -15192,9 +15823,9 @@ return /******/ (function(modules) { // webpackBootstrap return; } - __REACT_HOT_LOADER__.register(ButtonGroup, 'ButtonGroup', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ButtonGroup.js'); + __REACT_HOT_LOADER__.register(ButtonGroup, 'ButtonGroup', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/ButtonGroup.js'); - __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ButtonGroup.js'); + __REACT_HOT_LOADER__.register(_default, 'default', '/home/nogi/nogi/forks/react-bootstrap-table/src/toolbar/ButtonGroup.js'); }(); ; diff --git a/dist/react-bootstrap-table.js.map b/dist/react-bootstrap-table.js.map index c4dfb05c5..793c855f9 100644 --- a/dist/react-bootstrap-table.js.map +++ b/dist/react-bootstrap-table.js.map @@ -1 +1 @@ -{"version":3,"file":"react-bootstrap-table.js","sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 6af9d00c49e3d236f210","webpack:///src/index.js","webpack:///src/BootstrapTable.js","webpack:///external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","webpack:///./~/prop-types/index.js","webpack:///./~/process/browser.js","webpack:///./~/prop-types/factoryWithTypeCheckers.js","webpack:///./~/fbjs/lib/emptyFunction.js","webpack:///./~/fbjs/lib/invariant.js","webpack:///./~/fbjs/lib/warning.js","webpack:///./~/object-assign/index.js","webpack:///./~/prop-types/lib/ReactPropTypesSecret.js","webpack:///./~/prop-types/checkPropTypes.js","webpack:///./~/prop-types/factoryWithThrowingShims.js","webpack:///./~/classnames/index.js","webpack:///./~/react-s-alert/index.js","webpack:///./~/react-s-alert/dist/SAlert.js","webpack:///./~/react-s-alert/dist/SAlertContent.js","webpack:///external {\"root\":\"ReactDOM\",\"commonjs2\":\"react-dom\",\"commonjs\":\"react-dom\",\"amd\":\"react-dom\"}","webpack:///./~/react-s-alert/dist/s-alert-parts/s-alert-tools.js","webpack:///./~/react-s-alert/dist/s-alert-parts/s-alert-store.js","webpack:///./~/react-s-alert/dist/SAlertContentTmpl.js","webpack:///./~/react-s-alert/dist/s-alert-parts/s-alert-data-prep.js","webpack:///src/Const.js","webpack:///src/TableHeaderColumn.js","webpack:///src/util.js","webpack:///src/filters/Date.js","webpack:///src/filters/Text.js","webpack:///src/filters/Regex.js","webpack:///src/filters/Select.js","webpack:///src/filters/Number.js","webpack:///src/TableHeader.js","webpack:///src/SelectRowHeaderColumn.js","webpack:///src/ExpandRowHeaderColumn.js","webpack:///src/TableFooter.js","webpack:///src/TableBody.js","webpack:///src/TableRow.js","webpack:///src/TableColumn.js","webpack:///src/TableEditColumn.js","webpack:///src/Editor.js","webpack:///src/Notification.js","webpack:///src/ExpandComponent.js","webpack:///src/pagination/PaginationList.js","webpack:///src/pagination/PageButton.js","webpack:///src/pagination/SizePerPageDropDown.js","webpack:///src/toolbar/ToolBar.js","webpack:///./~/react-modal/lib/index.js","webpack:///./~/react-modal/lib/components/Modal.js","webpack:///./~/react-modal/lib/components/ModalPortal.js","webpack:///./~/react-modal/lib/helpers/focusManager.js","webpack:///./~/react-modal/lib/helpers/tabbable.js","webpack:///./~/react-modal/lib/helpers/scopeTab.js","webpack:///./~/react-modal/lib/helpers/ariaAppHider.js","webpack:///./~/warning/browser.js","webpack:///./~/react-modal/lib/helpers/refCount.js","webpack:///./~/react-modal/lib/helpers/bodyClassList.js","webpack:///./~/react-modal/lib/helpers/safeHTMLElement.js","webpack:///./~/exenv/index.js","webpack:///src/toolbar/InsertModal.js","webpack:///src/toolbar/InsertModalHeader.js","webpack:///src/toolbar/InsertModalFooter.js","webpack:///src/toolbar/InsertModalBody.js","webpack:///src/toolbar/InsertButton.js","webpack:///src/toolbar/DeleteButton.js","webpack:///src/toolbar/ExportCSVButton.js","webpack:///src/toolbar/ShowSelectedOnlyButton.js","webpack:///src/toolbar/SearchField.js","webpack:///src/toolbar/ClearSearchButton.js","webpack:///src/TableFilter.js","webpack:///src/store/TableDataStore.js","webpack:///src/csv_export_util.js","webpack:///src/filesaver.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///src/Filter.js","webpack:///./~/events/events.js","webpack:///src/toolbar/ButtonGroup.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"react-dom\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactBootstrapTable\"] = factory(require(\"react\"), require(\"react-dom\"));\n\telse\n\t\troot[\"ReactBootstrapTable\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_17__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 6af9d00c49e3d236f210","import BootstrapTable from './BootstrapTable';\nimport TableHeaderColumn from './TableHeaderColumn';\nimport InsertModalHeader from './toolbar/InsertModalHeader';\nimport InsertModalBody from './toolbar/InsertModalBody';\nimport InsertModalFooter from './toolbar/InsertModalFooter';\nimport InsertButton from './toolbar/InsertButton';\nimport DeleteButton from './toolbar/DeleteButton';\nimport ExportCSVButton from './toolbar/ExportCSVButton';\nimport ShowSelectedOnlyButton from './toolbar/ShowSelectedOnlyButton';\nimport ClearSearchButton from './toolbar/ClearSearchButton';\nimport SearchField from './toolbar/SearchField';\nimport ButtonGroup from './toolbar/ButtonGroup';\nimport SizePerPageDropDown from './pagination/SizePerPageDropDown';\n\nif (typeof window !== 'undefined') {\n window.BootstrapTable = BootstrapTable;\n window.TableHeaderColumn = TableHeaderColumn;\n window.InsertModalHeader = InsertModalHeader;\n window.InsertModalBody = InsertModalBody;\n window.InsertModalFooter = InsertModalFooter;\n window.InsertButton = InsertButton;\n window.DeleteButton = DeleteButton;\n window.ShowSelectedOnlyButton = ShowSelectedOnlyButton;\n window.ExportCSVButton = ExportCSVButton;\n window.ClearSearchButton = ClearSearchButton;\n window.SearchField = SearchField;\n window.ButtonGroup = ButtonGroup;\n window.SizePerPageDropDown = SizePerPageDropDown;\n}\nexport {\n BootstrapTable,\n TableHeaderColumn,\n InsertModalHeader,\n InsertModalBody,\n InsertModalFooter,\n InsertButton,\n DeleteButton,\n ShowSelectedOnlyButton,\n ExportCSVButton,\n ClearSearchButton,\n SearchField,\n ButtonGroup,\n SizePerPageDropDown\n};\n\n\n\n// WEBPACK FOOTER //\n// src/index.js","/* eslint no-alert: 0 */\n/* eslint max-len: 0 */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\nimport Alert from 'react-s-alert';\nimport Const from './Const';\nimport TableHeaderColumn from './TableHeaderColumn';\nimport TableHeader from './TableHeader';\nimport TableFooter from './TableFooter';\nimport TableBody from './TableBody';\nimport PaginationList from './pagination/PaginationList';\nimport ToolBar from './toolbar/ToolBar';\nimport TableFilter from './TableFilter';\nimport { TableDataStore } from './store/TableDataStore';\nimport Util from './util';\nimport exportCSVUtil from './csv_export_util';\nimport { Filter } from './Filter';\n\n\nclass BootstrapTable extends Component {\n\n constructor(props) {\n super(props);\n this.isIE = false;\n if (Util.canUseDOM()) {\n this.isIE = document.documentMode;\n }\n this.store = new TableDataStore(this.props.data ? this.props.data.slice() : []);\n this.isVerticalScroll = false;\n this.initTable(this.props);\n\n if (this.props.selectRow && this.props.selectRow.selected) {\n const copy = this.props.selectRow.selected.slice();\n this.store.setSelectedRowKey(copy);\n }\n let currPage = Const.PAGE_START_INDEX;\n if (typeof this.props.options.page !== 'undefined') {\n currPage = this.props.options.page;\n } else if (typeof this.props.options.pageStartIndex !== 'undefined') {\n currPage = this.props.options.pageStartIndex;\n }\n\n this._adjustHeaderWidth = this._adjustHeaderWidth.bind(this);\n this._adjustHeight = this._adjustHeight.bind(this);\n this._adjustTable = this._adjustTable.bind(this);\n this.toggleExpandAllChilds = this.toggleExpandAllChilds.bind(this);\n\n let expandedKeys = [];\n if (this.props.options.expandAllChilds !== null &&\n this.props.options.expandAllChilds !== undefined && this.props.options.expandAllChilds) {\n expandedKeys = this.store.getAllRowkey();\n } else if (this.props.options.expanding !== undefined && this.props.options.expanding !== null) {\n expandedKeys = this.props.options.expanding;\n }\n\n this.state = {\n data: this.getTableData(),\n currPage: currPage,\n expanding: expandedKeys,\n sizePerPage: this.props.options.sizePerPage || Const.SIZE_PER_PAGE_LIST[0],\n selectedRowKeys: this.store.getSelectedRowKeys(),\n reset: false,\n x: this.props.keyBoardNav ? 0 : -1,\n y: this.props.keyBoardNav ? 0 : -1\n };\n }\n\n initTable(props) {\n // If columns changed, clean removed columns that had filters\n if (props.children !== this.props.children && this.filter) {\n const nextDataFields = React.Children.map(props.children, column => column.props.dataField);\n React.Children.forEach(this.props.children, column => {\n const { dataField, filter } = column.props;\n if (filter && !nextDataFields.includes(dataField)) {\n // Clear filter\n this.filter.handleFilter(dataField, '', filter.type, filter);\n }\n });\n }\n\n let { keyField } = props;\n\n const isKeyFieldDefined = typeof keyField === 'string' && keyField.length;\n React.Children.forEach(props.children, column => {\n if (column === null || column === undefined) {\n // Skip null and undefined value\n return;\n }\n if (column.props.isKey) {\n if (keyField) {\n throw new Error('Error. Multiple key column detected in TableHeaderColumn.');\n }\n keyField = column.props.dataField;\n }\n if (column.props.filter) {\n // a column contains a filter\n if (!this.filter) {\n // first time create the filter on the BootstrapTable\n this.filter = new Filter();\n }\n // pass the filter to column with filter\n column.props.filter.emitter = this.filter;\n }\n });\n\n // if a column filter was created, add 'onFilterChange' listener\n if (this.filter) {\n this.filter.removeAllListeners('onFilterChange');\n this.filter.on('onFilterChange', (currentFilter) => {\n this.handleFilterData(currentFilter);\n });\n }\n\n this.colInfos = this.getColumnsDescription(props).reduce(( prev, curr ) => {\n prev[curr.name] = curr;\n return prev;\n }, {});\n\n if (!isKeyFieldDefined && !keyField) {\n throw new Error(`Error. No any key column defined in TableHeaderColumn.\n Use 'isKey={true}' to specify a unique column after version 0.5.4.`);\n }\n\n this.store.setProps({\n isPagination: props.pagination,\n keyField: keyField,\n colInfos: this.colInfos,\n multiColumnSearch: props.multiColumnSearch,\n strictSearch: props.strictSearch,\n multiColumnSort: props.multiColumnSort,\n remote: this.props.remote\n });\n }\n\n getTableData() {\n let result = [];\n const { options, pagination } = this.props;\n const sortName = options.defaultSortName || options.sortName;\n const sortOrder = options.defaultSortOrder || options.sortOrder;\n const searchText = options.defaultSearch;\n\n if (sortName && sortOrder) {\n this.store.setSortInfo(sortOrder, sortName);\n if (!this.allowRemote(Const.REMOTE_SORT)) {\n this.store.sort();\n }\n }\n\n if (searchText) {\n this.store.search(searchText);\n }\n\n if (pagination) {\n let page;\n let sizePerPage;\n if (this.store.isChangedPage()) {\n sizePerPage = this.state.sizePerPage;\n page = this.state.currPage;\n } else {\n sizePerPage = options.sizePerPage || Const.SIZE_PER_PAGE_LIST[0];\n page = options.page || 1;\n }\n result = this.store.page(page, sizePerPage).get();\n } else {\n result = this.store.get();\n }\n return result;\n }\n\n getColumnsDescription({ children }) {\n let rowCount = 0;\n React.Children.forEach(children, (column) => {\n if (column === null || column === undefined) {\n // Skip null and undefined value\n return;\n }\n\n if (Number(column.props.row) > rowCount) {\n rowCount = Number(column.props.row);\n }\n });\n return React.Children.map(children, (column, i) => {\n if (column === null || column === undefined) {\n // Return null for empty objects\n return null;\n }\n\n const rowIndex = column.props.row ? Number(column.props.row) : 0;\n const rowSpan = column.props.rowSpan ? Number(column.props.rowSpan) : 1;\n if ((rowSpan + rowIndex) === (rowCount + 1)) {\n const columnDescription = this.getColumnDescription(column);\n\n columnDescription.index = i;\n return columnDescription;\n }\n });\n }\n\n getColumnDescription(column) {\n let columnDescription = {\n name: column.props.dataField,\n align: column.props.dataAlign,\n sort: column.props.dataSort,\n format: column.props.dataFormat,\n formatExtraData: column.props.formatExtraData,\n filterFormatted: column.props.filterFormatted,\n filterValue: column.props.filterValue,\n editable: column.props.editable,\n customEditor: column.props.customEditor,\n hidden: column.props.hidden,\n hiddenOnInsert: column.props.hiddenOnInsert,\n searchable: column.props.searchable,\n className: column.props.columnClassName,\n editClassName: column.props.editColumnClassName,\n invalidEditColumnClassName: column.props.invalidEditColumnClassName,\n columnTitle: column.props.columnTitle,\n width: column.props.width,\n text: column.props.headerText || column.props.children,\n sortFunc: column.props.sortFunc,\n sortFuncExtraData: column.props.sortFuncExtraData,\n export: column.props.export,\n expandable: column.props.expandable,\n attrs: column.props.tdAttr,\n editAttrs: column.props.editTdAttr,\n style: column.props.tdStyle\n };\n\n if (column.type.name !== TableHeaderColumn.name && React.isValidElement(column.props.children)) {\n columnDescription = {\n ...columnDescription,\n ...this.getColumnDescription(React.Children.only(column.props.children))\n };\n }\n\n return columnDescription;\n }\n\n reset() {\n const { pageStartIndex } = this.props.options;\n this.store.clean();\n this.body.setState({ currEditCell: null });\n this.setState(() => {\n return {\n data: this.getTableData(),\n currPage: Util.getFirstPage(pageStartIndex),\n expanding: [],\n sizePerPage: Const.SIZE_PER_PAGE_LIST[0],\n selectedRowKeys: [],\n reset: true\n };\n });\n }\n\n componentWillReceiveProps(nextProps) {\n this.initTable(nextProps);\n const { options, selectRow } = nextProps;\n let { replace } = nextProps;\n replace = replace || this.props.replace;\n\n if (!nextProps.data) {\n return;\n }\n this.store.setData(nextProps.data.slice());\n\n if (!replace) {\n // from #481\n let page = this.state.currPage;\n if (this.props.options.page !== options.page) {\n page = options.page;\n }\n // from #481\n let sizePerPage = this.state.sizePerPage;\n if (this.props.options.sizePerPage !== options.sizePerPage) {\n sizePerPage = options.sizePerPage;\n }\n\n if (this.isRemoteDataSource()) {\n const newState = { sizePerPage, reset: false, currPage: page };\n let data = nextProps.data.slice();\n if (nextProps.pagination && !this.allowRemote(Const.REMOTE_PAGE)) {\n data = this.store.page(page, sizePerPage).get();\n }\n\n if (this.store.isOnFilter) {\n if (this.store.searchText) this.handleSearch(this.store.searchText);\n if (this.store.filterObj) this.handleFilterData(this.store.filterObj);\n newState.currPage = Util.getFirstPage(nextProps.options.pageStartIndex);\n } else {\n if (!this.allowRemote(Const.REMOTE_SORT)) {\n data = this.store.sort().get();\n } else {\n const { options: currentOptions } = this.props;\n const sortName = options.sortName;\n const sortOrder = options.sortOrder;\n if (currentOptions.sortName !== sortName || currentOptions.sortOrder !== sortOrder) {\n this.store.setSortInfo(sortOrder, options.sortName);\n }\n }\n newState.data = data;\n }\n this.setState(() => newState);\n } else {\n // #125\n // remove !options.page for #709\n if (page > Math.ceil(nextProps.data.length / sizePerPage)) {\n page = 1;\n }\n const sortList = this.store.getSortInfo();\n const sortField = options.sortName;\n const sortOrder = options.sortOrder;\n if (sortField && sortOrder) {\n this.store.setSortInfo(sortOrder, sortField);\n this.store.sort();\n } else if (sortList.length > 0) {\n this.store.sort();\n }\n const data = this.store.page(page, sizePerPage).get();\n this.setState(() => {\n return {\n data,\n currPage: page,\n sizePerPage,\n reset: false\n };\n });\n\n if (this.store.isSearching && options.afterSearch) {\n options.afterSearch(this.store.searchText, this.store.getDataIgnoringPagination());\n }\n\n if (this.store.isFiltering && options.afterColumnFilter) {\n options.afterColumnFilter(this.store.filterObj, this.store.getDataIgnoringPagination());\n }\n }\n\n // If setting the expanded rows is being handled externally\n // then overwrite the current expanded rows.\n if (this.props.options.expanding !== options.expanding) {\n this.setState(() => {\n return {\n expanding: options.expanding || []\n };\n });\n }\n\n if (selectRow && selectRow.selected) {\n // set default select rows to store.\n const copy = selectRow.selected.slice();\n this.store.setSelectedRowKey(copy);\n this.setState(() => {\n return {\n selectedRowKeys: copy,\n reset: false\n };\n });\n }\n } else {\n this.reset();\n }\n }\n\n componentDidMount() {\n this._adjustTable();\n window.addEventListener('resize', this._adjustTable);\n this.body.container.addEventListener('scroll', this._scrollHeader);\n if (this.props.footer) {\n this.body.container.addEventListener('scroll', this._scrollFooter);\n }\n if (this.props.scrollTop) {\n this._scrollTop();\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this._adjustTable);\n if (this.body && this.body.container) {\n this.body.container.removeEventListener('scroll', this._scrollHeader);\n if (this.props.footer) {\n this.body.container.removeEventListener('scroll', this._scrollFooter);\n }\n }\n if (this.filter) {\n this.filter.removeAllListeners('onFilterChange');\n }\n }\n\n componentDidUpdate() {\n this._adjustTable();\n if (this.props.options.afterTableComplete) {\n this.props.options.afterTableComplete();\n }\n }\n\n /**\n * Returns true if in the current configuration,\n * the datagrid should load its data remotely.\n *\n * @param {Object} [props] Optional. If not given, this.props will be used\n * @return {Boolean}\n */\n isRemoteDataSource(props) {\n const { remote } = (props || this.props);\n return remote === true || Util.isFunction(remote);\n }\n\n /**\n * Returns true if this action can be handled remote store\n * From #990, Sometimes, we need some actions as remote, some actions are handled by default\n * so function will tell you the target action is can be handled as remote or not.\n * @param {String} [action] Required.\n * @param {Object} [props] Optional. If not given, this.props will be used\n * @return {Boolean}\n */\n allowRemote(action, props) {\n const { remote } = (props || this.props);\n if (typeof remote === 'function') {\n const remoteObj = remote(Const.REMOTE);\n return remoteObj[action];\n } else {\n return remote;\n }\n }\n\n render() {\n const style = {\n height: this.props.height,\n maxHeight: this.props.maxHeight\n };\n\n const columns = this.getColumnsDescription(this.props);\n const sortList = this.store.getSortInfo();\n const pagination = this.renderPagination();\n const toolBar = this.renderToolBar();\n const tableFilter = this.renderTableFilter(columns);\n const isSelectAll = this.isSelectAll();\n const expandColumnOptions = this.props.expandColumnOptions;\n if (typeof expandColumnOptions.expandColumnBeforeSelectColumn === 'undefined') {\n expandColumnOptions.expandColumnBeforeSelectColumn = true;\n }\n const colGroups = Util.renderColGroup(columns, this.props.selectRow, expandColumnOptions, this.props.version);\n const tableFooter = this.renderTableFooter(this.props.footerData, this.state.data, columns, colGroups);\n let sortIndicator = this.props.options.sortIndicator;\n if (typeof this.props.options.sortIndicator === 'undefined') sortIndicator = true;\n\n const { paginationPosition = Const.PAGINATION_POS_BOTTOM } = this.props.options;\n const showPaginationOnTop = paginationPosition !== Const.PAGINATION_POS_BOTTOM;\n const showPaginationOnBottom = paginationPosition !== Const.PAGINATION_POS_TOP;\n const selectRow = { ...this.props.selectRow };\n if (this.props.cellEdit && this.props.cellEdit.mode !== Const.CELL_EDIT_NONE) {\n selectRow.clickToSelect = false;\n }\n\n const { toolbarPosition = Const.TOOLBAR_POS_TOP } = this.props.options;\n const showToolbarOnTop = toolbarPosition !== Const.TOOLBAR_POS_BOTTOM;\n const showToolbarOnBottom = toolbarPosition !== Const.TOOLBAR_POS_TOP;\n const { hideRowOnExpand = false } = this.props.options;\n return (\n
\n { showToolbarOnTop ? toolBar : null }\n { showPaginationOnTop ? pagination : null }\n
this.table = node }\n className={ classSet('react-bs-table', { 'react-bs-table-bordered': this.props.bordered }, this.props.tableContainerClass) }\n style={ { ...style, ...this.props.tableStyle } }\n onMouseEnter={ this.handleMouseEnter }\n onMouseLeave={ this.handleMouseLeave }>\n this.header = node }\n version={ this.props.version }\n colGroups={ colGroups }\n headerContainerClass={ this.props.headerContainerClass }\n tableHeaderClass={ this.props.tableHeaderClass }\n style={ this.props.headerStyle }\n rowSelectType={ this.props.selectRow.mode }\n customComponent={ this.props.selectRow.customComponent }\n hideSelectColumn={ this.props.selectRow.hideSelectColumn }\n sortList={ sortList }\n sortIndicator={ sortIndicator }\n onSort={ this.handleSort }\n onSelectAllRow={ this.handleSelectAllRow }\n bordered={ this.props.bordered }\n condensed={ this.props.condensed }\n isFiltered={ this.filter ? true : false }\n isSelectAll={ isSelectAll }\n reset={ this.state.reset }\n expandColumnVisible={ expandColumnOptions.expandColumnVisible }\n expandColumnComponent={ expandColumnOptions.expandColumnComponent }\n expandedColumnHeaderComponent={ expandColumnOptions.expandedColumnHeaderComponent }\n noAnyExpand={ this.state.expanding.length === 0 }\n expandAll={ this.props.options.expandAll }\n toggleExpandAllChilds={ this.toggleExpandAllChilds }\n expandColumnBeforeSelectColumn={ expandColumnOptions.expandColumnBeforeSelectColumn }>\n { this.props.children }\n \n this.body = node }\n bodyContainerClass={ this.props.bodyContainerClass }\n tableBodyClass={ this.props.tableBodyClass }\n style={ { ...style, ...this.props.bodyStyle } }\n data={ this.state.data }\n version={ this.props.version }\n expandComponent={ this.props.expandComponent }\n expandableRow={ this.props.expandableRow }\n expandRowBgColor={ this.props.options.expandRowBgColor }\n expandBy={ this.props.options.expandBy || Const.EXPAND_BY_ROW }\n expandBodyClass={ this.props.options.expandBodyClass }\n expandParentClass={ this.props.options.expandParentClass }\n columns={ columns }\n trClassName={ this.props.trClassName }\n trStyle={ this.props.trStyle }\n striped={ this.props.striped }\n bordered={ this.props.bordered }\n hover={ this.props.hover }\n keyField={ this.store.getKeyField() }\n condensed={ this.props.condensed }\n selectRow={ selectRow }\n expandColumnOptions={ this.props.expandColumnOptions }\n cellEdit={ this.props.cellEdit }\n selectedRowKeys={ this.state.selectedRowKeys }\n onRowClick={ this.handleRowClick }\n onRowDoubleClick={ this.handleRowDoubleClick }\n onRowMouseOver={ this.handleRowMouseOver }\n onRowMouseOut={ this.handleRowMouseOut }\n onSelectRow={ this.handleSelectRow }\n noDataText={ this.props.options.noDataText }\n withoutNoDataText={ this.props.options.withoutNoDataText }\n expanding={ this.state.expanding }\n onExpand={ this.handleExpandRow }\n onlyOneExpanding={ this.props.options.onlyOneExpanding }\n beforeShowError={ this.props.options.beforeShowError }\n keyBoardNav={ this.props.keyBoardNav }\n onNavigateCell={ this.handleNavigateCell }\n x={ this.state.x }\n y={ this.state.y }\n withoutTabIndex={ this.props.withoutTabIndex }\n hideRowOnExpand={ hideRowOnExpand }\n onEditCell={ this.handleEditCell } />\n {\n tableFooter\n }\n
\n { tableFilter }\n { showPaginationOnBottom ? pagination : null }\n\n { showToolbarOnBottom ? toolBar : null }\n { this.props.renderAlert ? : null }\n
\n );\n }\n\n isSelectAll() {\n if (this.store.isEmpty()) return false;\n const { selectRow: { unselectable, onlyUnselectVisible } } = this.props;\n const keyField = this.store.getKeyField();\n const allRowKeys = onlyUnselectVisible ?\n this.store.get().map(r => r[keyField]) :\n this.store.getAllRowkey();\n let defaultSelectRowKeys = this.store.getSelectedRowKeys();\n\n if (onlyUnselectVisible) {\n defaultSelectRowKeys = defaultSelectRowKeys.filter(x => x !== allRowKeys);\n }\n\n if (defaultSelectRowKeys.length === 0) return false;\n let match = 0;\n let noFound = 0;\n let unSelectableCnt = 0;\n defaultSelectRowKeys.forEach(selected => {\n if (allRowKeys.indexOf(selected) !== -1) match++;\n else noFound++;\n if (unselectable &&\n unselectable.indexOf(selected) !== -1) unSelectableCnt++;\n });\n\n if (noFound === defaultSelectRowKeys.length) return false;\n if (match === allRowKeys.length) {\n return true;\n } else {\n if (unselectable && match <= unSelectableCnt &&\n unSelectableCnt === unselectable.length) return false;\n else return 'indeterminate';\n }\n // return (match === allRowKeys.length) ? true : 'indeterminate';\n }\n\n cleanSelected() {\n this.store.setSelectedRowKey([]);\n this.setState(() => {\n return {\n selectedRowKeys: [],\n reset: false\n };\n });\n }\n\n cleanSort() {\n this.store.cleanSortInfo();\n this.setState(() => {\n return {\n reset: false\n };\n });\n }\n\n handleSort = (order, sortField) => {\n const { autoCollapse: { sort }, options } = this.props;\n if (options.onSortChange) {\n options.onSortChange(sortField, order, this.props);\n }\n this.store.setSortInfo(order, sortField);\n if (this.allowRemote(Const.REMOTE_SORT)) {\n if (sort) {\n this.setState(() => {\n return {\n expanding: []\n };\n });\n }\n return;\n }\n\n const result = this.store.sort().get();\n this.setState(() => {\n const newState = {\n data: result,\n reset: false\n };\n if (sort) newState.expanding = [];\n return newState;\n });\n }\n\n handleExpandRow = (expanding, rowKey, isRowExpanding, event) => {\n const { onExpand } = this.props.options;\n if (onExpand) {\n onExpand(rowKey, !isRowExpanding, event);\n }\n this.setState(() => { return { expanding, reset: false }; }, () => {\n this._adjustHeaderWidth();\n });\n }\n\n toggleExpandAllChilds() {\n const { expanding } = this.state;\n if (expanding.length > 0) {\n this.setState(() => {\n return {\n expanding: [],\n reset: false\n };\n });\n } else {\n this.setState(() => {\n return {\n expanding: this.store.getAllRowkey(),\n reset: false\n };\n });\n }\n }\n\n handlePaginationData = (page, sizePerPage) => {\n const { onPageChange, pageStartIndex } = this.props.options;\n const emptyTable = this.store.isEmpty();\n if (onPageChange) {\n onPageChange(page, sizePerPage);\n }\n\n const state = {\n sizePerPage,\n reset: false\n };\n if (!emptyTable) state.currPage = page;\n this.setState(() => state);\n\n if (this.allowRemote(Const.REMOTE_PAGE) || emptyTable) {\n return;\n }\n\n const result = this.store.page(Util.getNormalizedPage(pageStartIndex, page), sizePerPage).get();\n this.setState(() => { return { data: result, reset: false }; });\n }\n\n handleMouseLeave = () => {\n if (this.props.options.onMouseLeave) {\n this.props.options.onMouseLeave();\n }\n }\n\n handleMouseEnter = () => {\n if (this.props.options.onMouseEnter) {\n this.props.options.onMouseEnter();\n }\n }\n\n handleRowMouseOut = (row, event) => {\n if (this.props.options.onRowMouseOut) {\n this.props.options.onRowMouseOut(row, event);\n }\n }\n\n handleRowMouseOver = (row, event) => {\n if (this.props.options.onRowMouseOver) {\n this.props.options.onRowMouseOver(row, event);\n }\n }\n\n handleNavigateCell = ({ x: offSetX, y: offSetY, lastEditCell }) => {\n const { pagination } = this.props;\n let { x, y, currPage } = this.state;\n x += offSetX;\n y += offSetY;\n\n const columns = this.store.getColInfos();\n const visibleRowSize = this.state.data.length;\n const visibleColumnSize = Object.keys(columns).filter(k => !columns[k].hidden).length;\n\n if (y >= visibleRowSize) {\n currPage++;\n const lastPage = pagination ? this.pagination.getLastPage() : -1;\n if (currPage <= lastPage) {\n this.handlePaginationData(currPage, this.state.sizePerPage);\n } else {\n return;\n }\n y = 0;\n } else if (y < 0) {\n currPage--;\n if (currPage > 0) {\n this.handlePaginationData(currPage, this.state.sizePerPage);\n } else {\n return;\n }\n y = visibleRowSize - 1;\n } else if (x >= visibleColumnSize) {\n if ((y + 1) === visibleRowSize) {\n currPage++;\n const lastPage = pagination ? this.pagination.getLastPage() : -1;\n if (currPage <= lastPage) {\n this.handlePaginationData(currPage, this.state.sizePerPage);\n } else {\n return;\n }\n y = 0;\n } else {\n y++;\n }\n x = lastEditCell ? 1 : 0;\n } else if (x < 0) {\n x = visibleColumnSize - 1;\n if (y === 0) {\n currPage--;\n if (currPage > 0) {\n this.handlePaginationData(currPage, this.state.sizePerPage);\n } else {\n return;\n }\n y = this.state.sizePerPage - 1;\n } else {\n y--;\n }\n }\n this.setState(() => {\n return {\n x, y, currPage, reset: false\n };\n });\n }\n\n handleRowClick = (row, rowIndex, columnIndex, event) => {\n const { options, keyBoardNav } = this.props;\n if (options.onRowClick) {\n options.onRowClick(row, columnIndex, rowIndex, event);\n }\n if (keyBoardNav) {\n let { clickToNav } = typeof keyBoardNav === 'object' ? keyBoardNav : {};\n clickToNav = clickToNav === false ? clickToNav : true;\n if (clickToNav) {\n this.setState(() => {\n return {\n x: columnIndex,\n y: rowIndex,\n reset: false\n };\n });\n }\n }\n }\n\n handleRowDoubleClick = (row, event) => {\n if (this.props.options.onRowDoubleClick) {\n this.props.options.onRowDoubleClick(row, event);\n }\n }\n\n handleSelectAllRow = e => {\n const isSelected = e.currentTarget.checked;\n const keyField = this.store.getKeyField();\n const { selectRow: { onSelectAll, unselectable, selected, onlyUnselectVisible } } = this.props;\n let selectedRowKeys = onlyUnselectVisible ? this.state.selectedRowKeys : [];\n let result = true;\n let rows = this.store.get();\n\n // onlyUnselectVisible default is false, #1276\n if (!isSelected && !onlyUnselectVisible) {\n rows = this.store.getRowByKey(this.state.selectedRowKeys);\n }\n\n if (unselectable && unselectable.length > 0) {\n if (isSelected) {\n rows = rows.filter(r => {\n return unselectable.indexOf(r[keyField]) === -1 ||\n (selected && selected.indexOf(r[keyField]) !== -1);\n });\n } else {\n rows = rows.filter(r => unselectable.indexOf(r[keyField]) === -1);\n }\n }\n\n if (onSelectAll) {\n result = this.props.selectRow.onSelectAll(isSelected, rows);\n }\n\n if (typeof result == 'undefined' || result !== false) {\n if (isSelected) {\n if (Array.isArray(result)) {\n selectedRowKeys = result;\n } else {\n const currentRowKeys = rows.map(r => r[keyField]);\n // onlyUnselectVisible default is false, #1276\n if (onlyUnselectVisible) {\n selectedRowKeys = selectedRowKeys.concat(currentRowKeys);\n } else {\n selectedRowKeys = currentRowKeys;\n }\n }\n } else {\n if (unselectable && selected) {\n selectedRowKeys = selected.filter(r => unselectable.indexOf(r) > -1);\n } else if (onlyUnselectVisible) {\n const currentRowKeys = rows.map(r => r[keyField]);\n selectedRowKeys = selectedRowKeys.filter(k => currentRowKeys.indexOf(k) === -1);\n }\n }\n\n this.store.setSelectedRowKey(selectedRowKeys);\n this.setState(() => { return { selectedRowKeys, reset: false }; });\n }\n }\n\n handleShowOnlySelected = () => {\n this.store.ignoreNonSelected();\n const { pageStartIndex } = this.props.options;\n let result;\n if (this.props.pagination) {\n result = this.store.page(Util.getNormalizedPage(pageStartIndex), this.state.sizePerPage).get();\n } else {\n result = this.store.get();\n }\n this.setState(() => {\n return {\n data: result,\n reset: false,\n currPage: Util.getFirstPage(pageStartIndex)\n };\n });\n }\n\n handleSelectRow = (row, isSelected, e, rowIndex) => {\n let result = true;\n let currSelected = this.store.getSelectedRowKeys();\n const rowKey = row[ this.store.getKeyField() ];\n const { selectRow } = this.props;\n if (selectRow.onSelect) {\n result = selectRow.onSelect(row, isSelected, e, rowIndex);\n }\n\n if (typeof result === 'undefined' || result !== false) {\n if (selectRow.mode === Const.ROW_SELECT_SINGLE) {\n currSelected = isSelected ? [ rowKey ] : [];\n } else {\n if (isSelected) {\n currSelected.push(rowKey);\n } else {\n currSelected = currSelected.filter(key => rowKey !== key);\n }\n }\n\n this.store.setSelectedRowKey(currSelected);\n this.setState(() => {\n return {\n selectedRowKeys: currSelected,\n reset: false\n };\n });\n }\n }\n\n handleEditCell = (newVal, rowIndex, colIndex) => {\n const { beforeSaveCell } = this.props.cellEdit;\n const columns = this.getColumnsDescription(this.props);\n const fieldName = columns[colIndex].name;\n\n const invalid = () => {\n this.setState(() => {\n return {\n data: this.store.get(),\n reset: false\n };\n });\n return;\n };\n\n if (beforeSaveCell) {\n const beforeSaveCellCB = result => {\n this.body.cancelEditCell();\n if (result || result === undefined) {\n this.editCell(newVal, rowIndex, colIndex);\n } else {\n invalid();\n }\n };\n const props = { rowIndex, colIndex };\n const isValid = beforeSaveCell(this.state.data[rowIndex], fieldName, newVal, beforeSaveCellCB, props);\n if (isValid === false && typeof isValid !== 'undefined') {\n return invalid();\n } else if (isValid === Const.AWAIT_BEFORE_CELL_EDIT) {\n /* eslint consistent-return: 0 */\n return isValid;\n }\n }\n this.editCell(newVal, rowIndex, colIndex);\n }\n\n editCell(newVal, rowIndex, colIndex) {\n const { onCellEdit } = this.props.options;\n const { afterSaveCell } = this.props.cellEdit;\n const columns = this.getColumnsDescription(this.props);\n const fieldName = columns[colIndex].name;\n const props = { rowIndex, colIndex };\n if (onCellEdit) {\n newVal = onCellEdit(this.state.data[rowIndex], fieldName, newVal);\n }\n\n if (this.allowRemote(Const.REMOTE_CELL_EDIT)) {\n if (afterSaveCell) {\n afterSaveCell(this.state.data[rowIndex], fieldName, newVal, props);\n }\n return;\n }\n\n const result = this.store.edit(newVal, rowIndex, fieldName).get();\n this.setState(() => {\n return {\n data: result,\n reset: false\n };\n });\n\n if (afterSaveCell) {\n afterSaveCell(this.state.data[rowIndex], fieldName, newVal, props);\n }\n }\n\n handleAddRowAtBegin(newObj) {\n try {\n this.store.addAtBegin(newObj);\n } catch (e) {\n return e;\n }\n this._handleAfterAddingRow(newObj, true);\n }\n\n handleAddRow = newObj => {\n let isAsync = false;\n const { onAddRow } = this.props.options;\n\n const afterHandleAddRow = errMsg => {\n if (isAsync) {\n this.toolbar.afterHandleSaveBtnClick(errMsg);\n } else {\n return errMsg;\n }\n };\n\n const afterAddRowCB = errMsg => {\n if (typeof errMsg !== 'undefined' && errMsg !== '') return afterHandleAddRow(errMsg);\n if (this.allowRemote(Const.REMOTE_INSERT_ROW)) {\n if (this.props.options.afterInsertRow) {\n this.props.options.afterInsertRow(newObj);\n }\n return afterHandleAddRow();\n }\n\n try {\n this.store.add(newObj);\n } catch (e) {\n return afterHandleAddRow(e.message);\n }\n this._handleAfterAddingRow(newObj, false);\n return afterHandleAddRow();\n };\n\n if (onAddRow) {\n const colInfos = this.store.getColInfos();\n const errMsg = onAddRow(newObj, colInfos, afterAddRowCB);\n\n if (errMsg !== '' && errMsg !== false) {\n return errMsg;\n } else if (typeof errMsg === 'undefined') {\n return afterAddRowCB();\n } else {\n isAsync = true;\n return !isAsync;\n }\n } else {\n return afterAddRowCB();\n }\n }\n\n getSizePerPage() {\n return this.state.sizePerPage;\n }\n\n getCurrentPage() {\n return this.state.currPage;\n }\n\n getTableDataIgnorePaging() {\n return this.store.getCurrentDisplayData();\n }\n\n getPageByRowKey = rowKey => {\n const { sizePerPage } = this.state;\n const currentData = this.store.getCurrentDisplayData();\n const keyField = this.store.getKeyField();\n const result = currentData.findIndex((x) => x[ keyField ] === rowKey);\n if (result > -1) {\n return parseInt((result / sizePerPage), 10) + 1;\n } else {\n return result;\n }\n }\n\n handleDropRow = rowKeys => {\n const dropRowKeys = rowKeys ? rowKeys : this.store.getSelectedRowKeys();\n // add confirm before the delete action if that option is set.\n if (dropRowKeys && dropRowKeys.length > 0) {\n if (this.props.options.handleConfirmDeleteRow) {\n this.props.options.handleConfirmDeleteRow(() => {\n this.deleteRow(dropRowKeys);\n }, dropRowKeys);\n } else if (confirm('Are you sure you want to delete?')) {\n this.deleteRow(dropRowKeys);\n }\n }\n }\n\n deleteRow(dropRowKeys) {\n const dropRow = this.store.getRowByKey(dropRowKeys);\n const { onDeleteRow, afterDeleteRow, pageStartIndex } = this.props.options;\n\n if (onDeleteRow) {\n onDeleteRow(dropRowKeys, dropRow);\n }\n\n this.store.setSelectedRowKey([]); // clear selected row key\n\n if (this.allowRemote(Const.REMOTE_DROP_ROW)) {\n if (afterDeleteRow) {\n afterDeleteRow(dropRowKeys, dropRow);\n }\n return;\n }\n\n this.store.remove(dropRowKeys); // remove selected Row\n let result;\n if (this.props.pagination) {\n // debugger;\n const { sizePerPage } = this.state;\n const currLastPage = Math.ceil(this.store.getDataNum() / sizePerPage);\n let { currPage } = this.state;\n if (currPage > currLastPage) currPage = currLastPage;\n // console.log(Util.getNormalizedPage(currPage));\n result = this.store.page(Util.getNormalizedPage(pageStartIndex, currPage), sizePerPage).get();\n this.setState(() => {\n return {\n data: result,\n selectedRowKeys: this.store.getSelectedRowKeys(),\n currPage,\n reset: false\n };\n });\n } else {\n result = this.store.get();\n this.setState(() => {\n return {\n data: result,\n reset: false,\n selectedRowKeys: this.store.getSelectedRowKeys()\n };\n });\n }\n if (afterDeleteRow) {\n afterDeleteRow(dropRowKeys, dropRow);\n }\n }\n\n handleFilterData = filterObj => {\n const { autoCollapse: { filter }, options } = this.props;\n const { onFilterChange, pageStartIndex } = options;\n if (onFilterChange) {\n const colInfos = this.store.getColInfos();\n onFilterChange(filterObj, colInfos);\n }\n\n this.setState(() => {\n const newState = {\n currPage: Util.getFirstPage(pageStartIndex),\n reset: false\n };\n if (filter) newState.expanding = [];\n return newState;\n });\n\n if (this.allowRemote(Const.REMOTE_FILTER)) {\n if (this.props.options.afterColumnFilter) {\n this.props.options.afterColumnFilter(filterObj, this.store.getDataIgnoringPagination());\n }\n return;\n }\n\n this.store.filter(filterObj);\n\n const sortList = this.store.getSortInfo();\n\n if (sortList.length > 0) {\n this.store.sort();\n }\n\n let result;\n\n if (this.props.pagination) {\n const { sizePerPage } = this.state;\n result = this.store.page(Util.getNormalizedPage(pageStartIndex), sizePerPage).get();\n } else {\n result = this.store.get();\n }\n if (this.props.options.afterColumnFilter) {\n this.props.options.afterColumnFilter(filterObj,\n this.store.getDataIgnoringPagination());\n }\n this.setState(() => {\n return {\n data: result,\n reset: false\n };\n });\n }\n\n handleExportCSV = () => {\n let result = {};\n\n let { csvFileName } = this.props;\n const { onExportToCSV, exportCSVSeparator, noAutoBOM, excludeCSVHeader } = this.props.options;\n if (onExportToCSV) {\n result = onExportToCSV();\n } else {\n result = this.store.getDataIgnoringPagination();\n }\n const separator = exportCSVSeparator || Const.DEFAULT_CSV_SEPARATOR;\n const keys = [];\n this.props.children.filter(_ => _ != null).map(function(column) {\n if (column.props.export === true ||\n (typeof column.props.export === 'undefined' &&\n column.props.hidden === false)) {\n keys.push({\n field: column.props.dataField,\n type: column.props.csvFieldType,\n format: column.props.csvFormat,\n extraData: column.props.csvFormatExtraData,\n header: column.props.csvHeader || column.props.dataField,\n row: Number(column.props.row) || 0,\n rowSpan: Number(column.props.rowSpan) || 1,\n colSpan: Number(column.props.colSpan) || 1\n });\n }\n });\n\n if (Util.isFunction(csvFileName)) {\n csvFileName = csvFileName();\n }\n\n exportCSVUtil(result, keys, csvFileName, separator, noAutoBOM, excludeCSVHeader);\n }\n\n handleSearch = searchText => {\n // Set search field if this function being called outside\n // but it's not necessary if calling fron inside.\n if (this.toolbar) {\n this.toolbar.setSearchInput(searchText);\n }\n const { autoCollapse: { search } } = this.props;\n const { onSearchChange, pageStartIndex } = this.props.options;\n if (onSearchChange) {\n const colInfos = this.store.getColInfos();\n onSearchChange(searchText, colInfos, this.props.multiColumnSearch);\n }\n\n this.setState(() => {\n const newState = {\n currPage: Util.getFirstPage(pageStartIndex),\n reset: false\n };\n if (search) newState.expanding = [];\n return newState;\n });\n\n if (this.allowRemote(Const.REMOTE_SEARCH)) {\n if (this.props.options.afterSearch) {\n this.props.options.afterSearch(searchText, this.store.getDataIgnoringPagination());\n }\n return;\n }\n\n\n this.store.search(searchText);\n\n const sortList = this.store.getSortInfo();\n\n if (sortList.length > 0) {\n this.store.sort();\n }\n\n let result;\n if (this.props.pagination) {\n const { sizePerPage } = this.state;\n result = this.store.page(Util.getNormalizedPage(pageStartIndex), sizePerPage).get();\n } else {\n result = this.store.get();\n }\n if (this.props.options.afterSearch) {\n this.props.options.afterSearch(searchText,\n this.store.getDataIgnoringPagination());\n }\n this.setState(() => {\n return {\n data: result,\n reset: false\n };\n });\n }\n\n renderPagination() {\n if (this.props.pagination) {\n let dataSize;\n if (this.allowRemote(Const.REMOTE_PAGE)) {\n dataSize = this.props.fetchInfo.dataTotalSize;\n } else {\n dataSize = this.store.getDataNum();\n }\n const { options } = this.props;\n const withFirstAndLast = options.withFirstAndLast === undefined ? true : options.withFirstAndLast;\n if (Math.ceil(dataSize / this.state.sizePerPage) <= 1 &&\n this.props.ignoreSinglePage) return null;\n return (\n
\n this.pagination = node }\n version={ this.props.version }\n withFirstAndLast={ withFirstAndLast }\n alwaysShowAllBtns={ options.alwaysShowAllBtns }\n currPage={ this.state.currPage }\n changePage={ this.handlePaginationData }\n sizePerPage={ this.state.sizePerPage }\n sizePerPageList={ options.sizePerPageList || Const.SIZE_PER_PAGE_LIST }\n pageStartIndex={ options.pageStartIndex }\n paginationShowsTotal={ options.paginationShowsTotal }\n paginationSize={ options.paginationSize || Const.PAGINATION_SIZE }\n dataSize={ dataSize }\n onSizePerPageList={ options.onSizePerPageList }\n prePage={ options.prePage || Const.PRE_PAGE }\n nextPage={ options.nextPage || Const.NEXT_PAGE }\n firstPage={ options.firstPage || Const.FIRST_PAGE }\n lastPage={ options.lastPage || Const.LAST_PAGE }\n prePageTitle={ options.prePageTitle || Const.PRE_PAGE_TITLE }\n nextPageTitle={ options.nextPageTitle || Const.NEXT_PAGE_TITLE }\n firstPageTitle={ options.firstPageTitle || Const.FIRST_PAGE_TITLE }\n lastPageTitle={ options.lastPageTitle || Const.LAST_PAGE_TITLE }\n hideSizePerPage={ options.hideSizePerPage }\n sizePerPageDropDown={ options.sizePerPageDropDown }\n hidePageListOnlyOnePage={ options.hidePageListOnlyOnePage }\n paginationPanel={ options.paginationPanel }\n keepSizePerPageState={ options.keepSizePerPageState }\n open={ false }/>\n
\n );\n }\n return null;\n }\n\n renderToolBar() {\n const { exportCSV, selectRow, insertRow, deleteRow, search, children, keyField } = this.props;\n const enableShowOnlySelected = selectRow && selectRow.showOnlySelected;\n const print = typeof this.props.options.printToolBar === 'undefined' ?\n true : this.props.options.printToolBar;\n if (enableShowOnlySelected\n || insertRow\n || deleteRow\n || search\n || exportCSV\n || this.props.options.searchPanel\n || this.props.options.btnGroup\n || this.props.options.toolBar) {\n let columns;\n if (Array.isArray(children)) {\n columns = children.filter(_ => _ != null).map((column, r) => {\n if (!column) return;\n const { props } = column;\n const isKey = props.isKey || keyField === props.dataField;\n return {\n isKey,\n name: props.headerText || props.children,\n field: props.dataField,\n hiddenOnInsert: props.hiddenOnInsert,\n keyValidator: props.keyValidator,\n customInsertEditor: props.customInsertEditor,\n // when you want same auto generate value and not allow edit, example ID field\n autoValue: props.autoValue || false,\n // for create editor, no params for column.editable() indicate that editor for new row\n editable: props.editable && (Util.isFunction(props.editable === 'function')) ? props.editable() : props.editable,\n format: props.dataFormat ? function(value) {\n return props.dataFormat(value, null, props.formatExtraData, r).replace(/<.*?>/g, '');\n } : false\n };\n });\n } else {\n columns = [ {\n name: children.props.headerText || children.props.children,\n field: children.props.dataField,\n editable: children.props.editable,\n customInsertEditor: children.props.customInsertEditor,\n hiddenOnInsert: children.props.hiddenOnInsert,\n keyValidator: children.props.keyValidator\n } ];\n }\n return (\n
\n this.toolbar = node }\n version={ this.props.version }\n defaultSearch={ this.props.options.defaultSearch }\n clearSearch={ this.props.options.clearSearch }\n searchPosition={ this.props.options.searchPosition }\n searchDelayTime={ this.props.options.searchDelayTime }\n enableInsert={ insertRow }\n enableDelete={ deleteRow }\n enableSearch={ search }\n enableExportCSV={ exportCSV }\n enableShowOnlySelected={ enableShowOnlySelected }\n columns={ columns }\n searchPlaceholder={ this.props.searchPlaceholder }\n exportCSVText={ this.props.options.exportCSVText }\n insertText={ this.props.options.insertText }\n deleteText={ this.props.options.deleteText }\n saveText= { this.props.options.saveText }\n closeText= { this.props.options.closeText }\n ignoreEditable={ this.props.options.ignoreEditable }\n onAddRow={ this.handleAddRow }\n onDropRow={ this.handleDropRow }\n onSearch={ this.handleSearch }\n onExportCSV={ this.handleExportCSV }\n onShowOnlySelected={ this.handleShowOnlySelected }\n insertModalHeader={ this.props.options.insertModalHeader }\n insertModalFooter={ this.props.options.insertModalFooter }\n insertModalBody={ this.props.options.insertModalBody }\n insertModal={ this.props.options.insertModal }\n insertBtn={ this.props.options.insertBtn }\n deleteBtn={ this.props.options.deleteBtn }\n showSelectedOnlyBtn={ this.props.options.showSelectedOnlyBtn }\n exportCSVBtn={ this.props.options.exportCSVBtn }\n clearSearchBtn={ this.props.options.clearSearchBtn }\n searchField={ this.props.options.searchField }\n searchPanel={ this.props.options.searchPanel }\n btnGroup={ this.props.options.btnGroup }\n toolBar={ this.props.options.toolBar }\n reset={ this.state.reset }\n isValidKey={ this.store.isValidKey }\n insertFailIndicator={ this.props.options.insertFailIndicator || Const.INSERT_FAIL_INDICATOR } />\n
\n );\n } else {\n return null;\n }\n }\n\n renderTableFilter(columns) {\n if (this.props.columnFilter) {\n return (\n \n );\n } else {\n return null;\n }\n }\n\n renderTableFooter(footerData, footerFormatterReturnData, columns, colGroups) {\n if (this.props.footer) {\n let hideSelectColumn = true;\n const { mode } = this.props.selectRow;\n const isSelectRowDefined = Util.isSelectRowDefined(mode);\n if (isSelectRowDefined) {\n hideSelectColumn = this.props.selectRow.hideSelectColumn;\n }\n return (\n this.footer = node }\n columns={ columns }\n colGroups={ colGroups }\n footerFormatterReturnData={ footerFormatterReturnData }\n tableFooterClass={ this.props.tableFooterClass }\n style={ this.props.headerStyle }\n hideSelectColumn={ hideSelectColumn }\n expandColumnVisible={ this.props.expandColumnOptions.expandColumnVisible }\n bordered={ this.props.bordered }\n condensed={ this.props.condensed }\n isFiltered={ this.filter ? true : false }\n showStickyColumn={ this.props.showStickyColumn }>\n { footerData }\n \n );\n }\n return null;\n }\n\n _scrollTop = () => {\n const { scrollTop } = this.props;\n if (scrollTop === Const.SCROLL_TOP) {\n this.body.container.scrollTop = 0;\n } else if (scrollTop === Const.SCROLL_BOTTOM) {\n this.body.container.scrollTop = this.body.container.scrollHeight;\n } else if (typeof scrollTop === 'number' && !isNaN(scrollTop)) {\n this.body.container.scrollTop = scrollTop;\n }\n }\n _scrollHeader = (e) => {\n this.header.container.scrollLeft = e.currentTarget.scrollLeft;\n }\n\n _scrollFooter = (e) => {\n if (this.props.footer) {\n this.footer.container.scrollLeft = e.currentTarget.scrollLeft;\n }\n }\n\n _adjustTable() {\n this._adjustHeight();\n if (!this.props.printable) {\n this._adjustHeaderWidth();\n }\n }\n\n _adjustHeaderWidth() {\n const header = this.header.getHeaderColGrouop();\n const tbody = this.body.tbody;\n const bodyHeader = this.body.getHeaderColGrouop();\n const firstRow = tbody.childNodes[0];\n const isScroll = tbody.parentNode.getBoundingClientRect().height >\n tbody.parentNode.parentNode.getBoundingClientRect().height;\n\n const scrollBarWidth = isScroll ? Util.getScrollBarWidth() : 0;\n if (firstRow && this.store.getDataNum()) {\n if (isScroll || this.isVerticalScroll !== isScroll) {\n const cells = firstRow.childNodes;\n for (let i = 0; i < cells.length; i++) {\n const cell = cells[i];\n const computedStyle = window.getComputedStyle(cell);\n let width = parseFloat(computedStyle.width.replace('px', ''));\n if (this.isIE) {\n const paddingLeftWidth = parseFloat(computedStyle.paddingLeft.replace('px', ''));\n const paddingRightWidth = parseFloat(computedStyle.paddingRight.replace('px', ''));\n const borderRightWidth = parseFloat(computedStyle.borderRightWidth.replace('px', ''));\n const borderLeftWidth = parseFloat(computedStyle.borderLeftWidth.replace('px', ''));\n width = width + paddingLeftWidth + paddingRightWidth + borderRightWidth + borderLeftWidth;\n }\n const lastPadding = (cells.length - 1 === i ? scrollBarWidth : 0);\n if (width <= 0) {\n width = 120;\n cell.width = width + lastPadding + 'px';\n }\n const result = width + lastPadding + 'px';\n header[i].style.width = result;\n header[i].style.minWidth = result;\n if (cells.length - 1 === i) {\n bodyHeader[i].style.width = width + 'px';\n bodyHeader[i].style.minWidth = width + 'px';\n } else {\n bodyHeader[i].style.width = result;\n bodyHeader[i].style.minWidth = result;\n }\n }\n }\n } else {\n for (const i in bodyHeader) {\n if (bodyHeader.hasOwnProperty(i)) {\n const child = bodyHeader[i];\n if (child.style) {\n if (child.style.width) {\n header[i].style.width = child.style.width;\n }\n if (child.style.minWidth) {\n header[i].style.minWidth = child.style.minWidth;\n }\n }\n }\n }\n }\n this.isVerticalScroll = isScroll;\n }\n\n _adjustHeight() {\n const { height } = this.props;\n let { maxHeight } = this.props;\n if ((typeof height === 'number' && !isNaN(height)) || height.indexOf('%') === -1) {\n this.body.container.style.height =\n parseFloat(height, 10) - this.header.container.offsetHeight + 'px';\n }\n if (maxHeight) {\n maxHeight = typeof maxHeight === 'number' ?\n maxHeight :\n parseInt(maxHeight.replace('px', ''), 10);\n\n this.body.container.style.maxHeight =\n maxHeight - this.header.container.offsetHeight + 'px';\n }\n }\n\n _handleAfterAddingRow(newObj, atTheBeginning) {\n let result;\n if (this.props.pagination) {\n // if pagination is enabled and inserting row at the end,\n // change page to the last page\n // otherwise, change it to the first page\n const { sizePerPage } = this.state;\n\n if (atTheBeginning) {\n const { pageStartIndex } = this.props.options;\n result = this.store.page(Util.getNormalizedPage(pageStartIndex), sizePerPage).get();\n this.setState(() => {\n return {\n data: result,\n currPage: Util.getFirstPage(pageStartIndex),\n reset: false\n };\n });\n } else {\n const currLastPage = Math.ceil(this.store.getDataNum() / sizePerPage);\n result = this.store.page(currLastPage, sizePerPage).get();\n this.setState(() => {\n return {\n data: result,\n currPage: currLastPage,\n reset: false\n };\n });\n }\n } else {\n result = this.store.get();\n this.setState(() => {\n return {\n data: result,\n reset: false\n };\n });\n }\n\n if (this.props.options.afterInsertRow) {\n this.props.options.afterInsertRow(newObj);\n }\n }\n}\n\nBootstrapTable.propTypes = {\n keyField: PropTypes.string,\n height: PropTypes.oneOfType([ PropTypes.string, PropTypes.number ]),\n maxHeight: PropTypes.oneOfType([ PropTypes.string, PropTypes.number ]),\n data: PropTypes.oneOfType([ PropTypes.array, PropTypes.object ]),\n version: PropTypes.string, // bootstrap version\n remote: PropTypes.oneOfType([ PropTypes.bool, PropTypes.func ]), // remote data, default is false\n replace: PropTypes.oneOfType([ PropTypes.bool, PropTypes.func ]),\n scrollTop: PropTypes.oneOfType([ PropTypes.string, PropTypes.number ]),\n striped: PropTypes.bool,\n bordered: PropTypes.bool,\n hover: PropTypes.bool,\n condensed: PropTypes.bool,\n pagination: PropTypes.bool,\n printable: PropTypes.bool,\n withoutTabIndex: PropTypes.bool,\n keyBoardNav: PropTypes.oneOfType([ PropTypes.bool, PropTypes.object ]),\n searchPlaceholder: PropTypes.string,\n selectRow: PropTypes.shape({\n mode: PropTypes.oneOf([\n Const.ROW_SELECT_NONE,\n Const.ROW_SELECT_SINGLE,\n Const.ROW_SELECT_MULTI\n ]),\n customComponent: PropTypes.func,\n bgColor: PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]),\n selected: PropTypes.array,\n onSelect: PropTypes.func,\n onSelectAll: PropTypes.func,\n clickToSelect: PropTypes.bool,\n hideSelectColumn: PropTypes.bool,\n clickToSelectAndEditCell: PropTypes.bool,\n clickToExpand: PropTypes.bool,\n showOnlySelected: PropTypes.bool,\n unselectable: PropTypes.array,\n columnWidth: PropTypes.oneOfType([ PropTypes.number, PropTypes.string ]),\n onlyUnselectVisible: PropTypes.bool\n }),\n cellEdit: PropTypes.shape({\n mode: PropTypes.string,\n blurToSave: PropTypes.bool,\n blurToEscape: PropTypes.bool,\n beforeSaveCell: PropTypes.func,\n afterSaveCell: PropTypes.func,\n nonEditableRows: PropTypes.func\n }),\n insertRow: PropTypes.bool,\n deleteRow: PropTypes.bool,\n search: PropTypes.bool,\n multiColumnSearch: PropTypes.bool,\n strictSearch: PropTypes.bool,\n columnFilter: PropTypes.bool,\n trClassName: PropTypes.any,\n trStyle: PropTypes.any,\n tableStyle: PropTypes.object,\n containerStyle: PropTypes.object,\n headerStyle: PropTypes.object,\n bodyStyle: PropTypes.object,\n containerClass: PropTypes.string,\n tableContainerClass: PropTypes.string,\n headerContainerClass: PropTypes.string,\n bodyContainerClass: PropTypes.string,\n tableHeaderClass: PropTypes.string,\n tableBodyClass: PropTypes.string,\n tableFooterClass: PropTypes.string,\n options: PropTypes.shape({\n clearSearch: PropTypes.bool,\n sortName: PropTypes.oneOfType([ PropTypes.string, PropTypes.array ]),\n sortOrder: PropTypes.oneOfType([ PropTypes.string, PropTypes.array ]),\n defaultSortName: PropTypes.oneOfType([ PropTypes.string, PropTypes.array ]),\n defaultSortOrder: PropTypes.oneOfType([ PropTypes.string, PropTypes.array ]),\n sortIndicator: PropTypes.bool,\n afterTableComplete: PropTypes.func,\n afterDeleteRow: PropTypes.func,\n afterInsertRow: PropTypes.func,\n afterSearch: PropTypes.func,\n afterColumnFilter: PropTypes.func,\n onRowClick: PropTypes.func,\n onRowDoubleClick: PropTypes.func,\n page: PropTypes.number,\n pageStartIndex: PropTypes.number,\n paginationShowsTotal: PropTypes.oneOfType([ PropTypes.bool, PropTypes.func ]),\n sizePerPageList: PropTypes.array,\n sizePerPage: PropTypes.number,\n paginationSize: PropTypes.number,\n paginationPosition: PropTypes.oneOf([\n Const.PAGINATION_POS_TOP,\n Const.PAGINATION_POS_BOTTOM,\n Const.PAGINATION_POS_BOTH\n ]),\n toolbarPosition: PropTypes.oneOf([\n Const.TOOLBAR_POS_TOP,\n Const.TOOLBAR_POS_BOTTOM,\n Const.TOOLBAR_POS_BOTH\n ]),\n hideSizePerPage: PropTypes.bool,\n hidePageListOnlyOnePage: PropTypes.bool,\n alwaysShowAllBtns: PropTypes.bool,\n withFirstAndLast: PropTypes.bool,\n keepSizePerPageState: PropTypes.bool,\n onSortChange: PropTypes.func,\n onPageChange: PropTypes.func,\n onSizePerPageList: PropTypes.func,\n onFilterChange: PropTypes.func,\n onSearchChange: PropTypes.func,\n onAddRow: PropTypes.func,\n onExportToCSV: PropTypes.func,\n onCellEdit: PropTypes.func,\n noDataText: PropTypes.oneOfType([ PropTypes.string, PropTypes.object ]),\n withoutNoDataText: PropTypes.bool,\n handleConfirmDeleteRow: PropTypes.func,\n prePage: PropTypes.any,\n nextPage: PropTypes.any,\n firstPage: PropTypes.any,\n lastPage: PropTypes.any,\n prePageTitle: PropTypes.string,\n nextPageTitle: PropTypes.string,\n firstPageTitle: PropTypes.string,\n lastPageTitle: PropTypes.string,\n searchDelayTime: PropTypes.number,\n excludeCSVHeader: PropTypes.bool,\n exportCSVText: PropTypes.string,\n exportCSVSeparator: PropTypes.string,\n insertText: PropTypes.string,\n deleteText: PropTypes.string,\n saveText: PropTypes.string,\n closeText: PropTypes.string,\n ignoreEditable: PropTypes.bool,\n defaultSearch: PropTypes.string,\n insertModalHeader: PropTypes.func,\n insertModalBody: PropTypes.func,\n insertModalFooter: PropTypes.func,\n insertModal: PropTypes.func,\n insertBtn: PropTypes.func,\n deleteBtn: PropTypes.func,\n showSelectedOnlyBtn: PropTypes.func,\n exportCSVBtn: PropTypes.func,\n clearSearchBtn: PropTypes.func,\n searchField: PropTypes.func,\n searchPanel: PropTypes.func,\n btnGroup: PropTypes.func,\n toolBar: PropTypes.func,\n sizePerPageDropDown: PropTypes.func,\n paginationPanel: PropTypes.func,\n searchPosition: PropTypes.string,\n expandRowBgColor: PropTypes.string,\n expandBy: PropTypes.string,\n expanding: PropTypes.array,\n onExpand: PropTypes.func,\n onlyOneExpanding: PropTypes.bool,\n expandBodyClass: PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]),\n expandParentClass: PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]),\n beforeShowError: PropTypes.func,\n printToolBar: PropTypes.bool,\n insertFailIndicator: PropTypes.string,\n noAutoBOM: PropTypes.bool,\n expandAll: PropTypes.bool,\n hideRowOnExpand: PropTypes.bool\n }),\n fetchInfo: PropTypes.shape({\n dataTotalSize: PropTypes.number\n }),\n renderAlert: PropTypes.bool,\n exportCSV: PropTypes.bool,\n csvFileName: PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]),\n ignoreSinglePage: PropTypes.bool,\n expandableRow: PropTypes.func,\n expandComponent: PropTypes.func,\n autoCollapse: PropTypes.shape({\n sort: PropTypes.bool,\n filter: PropTypes.bool,\n search: PropTypes.bool\n }),\n expandColumnOptions: PropTypes.shape({\n columnWidth: PropTypes.oneOfType([ PropTypes.number, PropTypes.string ]),\n expandColumnVisible: PropTypes.bool,\n expandColumnComponent: PropTypes.func,\n expandedColumnHeaderComponent: PropTypes.func,\n expandColumnBeforeSelectColumn: PropTypes.bool\n }),\n footer: PropTypes.bool\n};\nBootstrapTable.defaultProps = {\n version: '3',\n replace: false,\n scrollTop: undefined,\n expandComponent: undefined,\n expandableRow: undefined,\n expandColumnOptions: {\n expandColumnVisible: false,\n expandColumnComponent: undefined,\n expandedColumnHeaderComponent: undefined,\n expandColumnBeforeSelectColumn: true\n },\n height: '100%',\n maxHeight: undefined,\n striped: false,\n bordered: true,\n hover: false,\n condensed: false,\n pagination: false,\n printable: false,\n withoutTabIndex: false,\n keyBoardNav: false,\n searchPlaceholder: undefined,\n selectRow: {\n mode: Const.ROW_SELECT_NONE,\n bgColor: Const.ROW_SELECT_BG_COLOR,\n selected: [],\n onSelect: undefined,\n onSelectAll: undefined,\n clickToSelect: false,\n hideSelectColumn: false,\n clickToSelectAndEditCell: false,\n clickToExpand: false,\n showOnlySelected: false,\n unselectable: [],\n customComponent: undefined,\n onlyUnselectVisible: false\n },\n cellEdit: {\n mode: Const.CELL_EDIT_NONE,\n blurToSave: false,\n blurToEscape: false,\n beforeSaveCell: undefined,\n afterSaveCell: undefined,\n nonEditableRows: undefined\n },\n insertRow: false,\n deleteRow: false,\n search: false,\n multiColumnSearch: false,\n strictSearch: undefined,\n multiColumnSort: 1,\n columnFilter: false,\n trClassName: '',\n trStyle: undefined,\n tableStyle: undefined,\n containerStyle: undefined,\n headerStyle: undefined,\n bodyStyle: undefined,\n containerClass: null,\n tableContainerClass: null,\n headerContainerClass: null,\n bodyContainerClass: null,\n tableHeaderClass: null,\n tableBodyClass: null,\n tableFooterClass: null,\n options: {\n clearSearch: false,\n sortName: undefined,\n sortOrder: undefined,\n defaultSortName: undefined,\n defaultSortOrder: undefined,\n sortIndicator: true,\n afterTableComplete: undefined,\n afterDeleteRow: undefined,\n afterInsertRow: undefined,\n afterSearch: undefined,\n afterColumnFilter: undefined,\n onRowClick: undefined,\n onRowDoubleClick: undefined,\n onMouseLeave: undefined,\n onMouseEnter: undefined,\n onRowMouseOut: undefined,\n onRowMouseOver: undefined,\n page: undefined,\n paginationShowsTotal: false,\n sizePerPageList: Const.SIZE_PER_PAGE_LIST,\n sizePerPage: undefined,\n paginationSize: Const.PAGINATION_SIZE,\n paginationPosition: Const.PAGINATION_POS_BOTTOM,\n toolbarPosition: Const.TOOLBAR_POS_TOP,\n hideSizePerPage: false,\n hidePageListOnlyOnePage: false,\n alwaysShowAllBtns: false,\n withFirstAndLast: true,\n keepSizePerPageState: false,\n onSizePerPageList: undefined,\n noDataText: undefined,\n withoutNoDataText: false,\n handleConfirmDeleteRow: undefined,\n prePage: Const.PRE_PAGE,\n nextPage: Const.NEXT_PAGE,\n firstPage: Const.FIRST_PAGE,\n lastPage: Const.LAST_PAGE,\n prePageTitle: Const.PRE_PAGE_TITLE,\n nextPageTitle: Const.NEXT_PAGE_TITLE,\n firstPageTitle: Const.FIRST_PAGE_TITLE,\n lastPageTitle: Const.LAST_PAGE_TITLE,\n pageStartIndex: 1,\n searchDelayTime: undefined,\n excludeCSVHeader: false,\n exportCSVText: Const.EXPORT_CSV_TEXT,\n exportCSVSeparator: Const.DEFAULT_CSV_SEPARATOR,\n insertText: Const.INSERT_BTN_TEXT,\n deleteText: Const.DELETE_BTN_TEXT,\n saveText: Const.SAVE_BTN_TEXT,\n closeText: Const.CLOSE_BTN_TEXT,\n ignoreEditable: false,\n defaultSearch: '',\n insertModalHeader: undefined,\n insertModalBody: undefined,\n insertModalFooter: undefined,\n insertModal: undefined,\n insertBtn: undefined,\n deleteBtn: undefined,\n showSelectedOnlyBtn: undefined,\n exportCSVBtn: undefined,\n clearSearchBtn: undefined,\n searchField: undefined,\n searchPanel: undefined,\n btnGroup: undefined,\n toolBar: undefined,\n sizePerPageDropDown: undefined,\n paginationPanel: undefined,\n searchPosition: 'right',\n expandRowBgColor: undefined,\n expandBy: Const.EXPAND_BY_ROW,\n expanding: [],\n onExpand: undefined,\n onlyOneExpanding: false,\n expandBodyClass: null,\n expandParentClass: null,\n beforeShowError: undefined,\n printToolBar: true,\n insertFailIndicator: Const.INSERT_FAIL_INDICATOR,\n noAutoBOM: true,\n expandAll: false,\n hideRowOnExpand: false\n },\n fetchInfo: {\n dataTotalSize: 0\n },\n renderAlert: true,\n exportCSV: false,\n csvFileName: 'spreadsheet.csv',\n ignoreSinglePage: false,\n autoCollapse: {\n sort: Const.AUTO_COLLAPSE_WHEN_SORT,\n filter: Const.AUTO_COLLAPSE_WHEN_FILTER,\n search: Const.AUTO_COLLAPSE_WHEN_SEARCH\n },\n footer: false\n};\n\nexport default BootstrapTable;\n\n\n\n// WEBPACK FOOTER //\n// src/BootstrapTable.js","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}\n// module id = 2\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/index.js\n// module id = 3\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = 4\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/factoryWithTypeCheckers.js\n// module id = 5\n// module chunks = 0","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/emptyFunction.js\n// module id = 6\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/invariant.js\n// module id = 7\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/warning.js\n// module id = 8\n// module chunks = 0","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/object-assign/index.js\n// module id = 9\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/lib/ReactPropTypesSecret.js\n// module id = 10\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== 'production') {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/checkPropTypes.js\n// module id = 11\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/factoryWithThrowingShims.js\n// module id = 12\n// module chunks = 0","/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/classnames/index.js\n// module id = 13\n// module chunks = 0","module.exports = require('./dist/SAlert');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/index.js\n// module id = 14\n// module chunks = 0","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports', 'react', './SAlertContent', 'prop-types', './s-alert-parts/s-alert-store', './s-alert-parts/s-alert-tools', './s-alert-parts/s-alert-data-prep'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports, require('react'), require('./SAlertContent'), require('prop-types'), require('./s-alert-parts/s-alert-store'), require('./s-alert-parts/s-alert-tools'), require('./s-alert-parts/s-alert-data-prep'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, global.react, global.SAlertContent, global.propTypes, global.sAlertStore, global.sAlertTools, global.sAlertDataPrep);\n global.SAlert = mod.exports;\n }\n})(this, function (exports, _react, _SAlertContent, _propTypes, _sAlertStore, _sAlertTools, _sAlertDataPrep) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _react2 = _interopRequireDefault(_react);\n\n var _SAlertContent2 = _interopRequireDefault(_SAlertContent);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n var _sAlertStore2 = _interopRequireDefault(_sAlertStore);\n\n var _sAlertTools2 = _interopRequireDefault(_sAlertTools);\n\n var _sAlertDataPrep2 = _interopRequireDefault(_sAlertDataPrep);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n var insertFunc = function insertFunc(msg, data, condition) {\n var id = _sAlertTools2.default.randomId();\n _sAlertStore2.default.dispatch({\n type: 'INSERT',\n data: _extends({}, data, {\n id: id,\n condition: condition,\n message: msg\n })\n });\n return id;\n };\n\n var SAlert = function (_React$Component) {\n _inherits(SAlert, _React$Component);\n\n function SAlert(props) {\n _classCallCheck(this, SAlert);\n\n var _this = _possibleConstructorReturn(this, (SAlert.__proto__ || Object.getPrototypeOf(SAlert)).call(this, props));\n\n _this.state = {\n dataRight: [],\n dataLeft: [],\n dataTop: [],\n dataBottom: []\n };\n return _this;\n }\n\n _createClass(SAlert, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var storeStateLeft = void 0;\n var storeStateRight = void 0;\n var storeStateTop = void 0;\n var storeStateBottom = void 0;\n\n var addToStoreRight = function addToStoreRight() {\n requestAnimationFrame(function () {\n return requestAnimationFrame(function () {\n var length = void 0;\n storeStateRight = (0, _sAlertDataPrep2.default)('right') || [];\n length = storeStateRight.length;\n if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) {\n var id = storeStateRight[0].id;\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } });\n storeStateRight = (0, _sAlertDataPrep2.default)('right') || [];\n }\n _this2.setState({ dataRight: storeStateRight });\n });\n });\n };\n this.unsubStoreRight = _sAlertStore2.default.subscribe(addToStoreRight);\n\n var addToStoreLeft = function addToStoreLeft() {\n requestAnimationFrame(function () {\n return requestAnimationFrame(function () {\n var length = void 0;\n storeStateLeft = (0, _sAlertDataPrep2.default)('left') || [];\n length = storeStateLeft.length;\n if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) {\n var id = storeStateLeft[0].id;\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } });\n storeStateLeft = (0, _sAlertDataPrep2.default)('left') || [];\n }\n _this2.setState({ dataLeft: storeStateLeft });\n });\n });\n };\n this.unsubStoreLeft = _sAlertStore2.default.subscribe(addToStoreLeft);\n\n var addToStoreTop = function addToStoreTop() {\n requestAnimationFrame(function () {\n return requestAnimationFrame(function () {\n var length = void 0;\n storeStateTop = (0, _sAlertDataPrep2.default)('full-top') || [];\n length = storeStateTop.length;\n if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) {\n var id = storeStateTop[0].id;\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } });\n storeStateTop = (0, _sAlertDataPrep2.default)('full-top') || [];\n }\n _this2.setState({ dataTop: storeStateTop });\n });\n });\n };\n this.unsubStoreTop = _sAlertStore2.default.subscribe(addToStoreTop);\n\n var addToStoreBottom = function addToStoreBottom() {\n requestAnimationFrame(function () {\n return requestAnimationFrame(function () {\n var length = void 0;\n storeStateBottom = (0, _sAlertDataPrep2.default)('full-bottom') || [];\n length = storeStateBottom.length;\n if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) {\n var id = storeStateBottom[0].id;\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } });\n storeStateBottom = (0, _sAlertDataPrep2.default)('full-bottom') || [];\n }\n _this2.setState({ dataBottom: storeStateBottom });\n });\n });\n };\n this.unsubStoreBottom = _sAlertStore2.default.subscribe(addToStoreBottom);\n\n // set up global config from global SAlert props\n // only stuff needed for getAlertData\n var globalConfig = {\n contentTemplate: this.props.contentTemplate,\n offset: this.props.offset,\n message: this.props.message,\n stack: this.props.stack,\n html: this.props.html,\n customFields: this.props.customFields,\n position: this.props.position || 'top-right'\n };\n _sAlertTools2.default.setGlobalConfig(globalConfig);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unsubStoreTop();\n this.unsubStoreBottom();\n this.unsubStoreLeft();\n this.unsubStoreRight();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var mapFunc = function mapFunc(alert, index) {\n var customKey = 'alert-key-' + alert.id + '-' + alert.position;\n var id = alert.id;\n var condition = _sAlertTools2.default.returnFirstDefined(alert.condition, 'info');\n var message = _sAlertTools2.default.returnFirstDefined(alert.message, _this3.props.message, '');\n var position = _sAlertTools2.default.returnFirstDefined(alert.position, _this3.props.position, 'top-right');\n var offset = _sAlertTools2.default.returnFirstDefined(alert.offset, _this3.props.offset, 0);\n var effect = _sAlertTools2.default.returnFirstDefined(alert.effect, _this3.props.effect);\n var boxPosition = alert.boxPosition;\n var beep = _sAlertTools2.default.returnFirstDefined(alert.beep, _this3.props.beep, false);\n var timeout = _sAlertTools2.default.returnFirstDefined(alert.timeout, _this3.props.timeout, 5000);\n var html = _sAlertTools2.default.returnFirstDefined(alert.html, _this3.props.html);\n var onClose = _sAlertTools2.default.returnFirstDefined(alert.onClose, _this3.props.onClose);\n var onShow = _sAlertTools2.default.returnFirstDefined(alert.onShow, _this3.props.onShow);\n var customFields = _sAlertTools2.default.returnFirstDefined(alert.customFields, _this3.props.customFields);\n var contentTemplate = _this3.props.contentTemplate;\n return _react2.default.createElement(_SAlertContent2.default, {\n key: customKey,\n id: id,\n customFields: customFields,\n condition: condition,\n message: message,\n position: position,\n effect: effect,\n boxPosition: boxPosition,\n beep: beep,\n timeout: timeout,\n html: html,\n onClose: onClose,\n onShow: onShow,\n contentTemplate: contentTemplate });\n };\n var sAlertElemsRight = this.state.dataRight.map(mapFunc);\n var sAlertElemsLeft = this.state.dataLeft.map(mapFunc);\n var sAlertElemsTop = this.state.dataTop.map(mapFunc);\n var sAlertElemsBottom = this.state.dataBottom.map(mapFunc);\n return _react2.default.createElement(\n 'div',\n { className: 's-alert-wrapper' },\n sAlertElemsRight,\n sAlertElemsLeft,\n sAlertElemsTop,\n sAlertElemsBottom\n );\n }\n }], [{\n key: 'info',\n value: function info(msg, data) {\n return insertFunc(msg, data, 'info');\n }\n }, {\n key: 'error',\n value: function error(msg, data) {\n return insertFunc(msg, data, 'error');\n }\n }, {\n key: 'warning',\n value: function warning(msg, data) {\n return insertFunc(msg, data, 'warning');\n }\n }, {\n key: 'success',\n value: function success(msg, data) {\n return insertFunc(msg, data, 'success');\n }\n }, {\n key: 'close',\n value: function close(id) {\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } });\n }\n }, {\n key: 'closeAll',\n value: function closeAll() {\n _sAlertStore2.default.dispatch({ type: 'REMOVEALL' });\n }\n }]);\n\n return SAlert;\n }(_react2.default.Component);\n\n SAlert.propTypes = {\n message: _propTypes2.default.string,\n position: _propTypes2.default.string,\n offset: _propTypes2.default.number,\n stack: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.object]),\n effect: _propTypes2.default.string,\n beep: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object, _propTypes2.default.bool]),\n timeout: _propTypes2.default.oneOfType([_propTypes2.default.oneOf(['none']), _propTypes2.default.number]),\n html: _propTypes2.default.bool,\n onClose: _propTypes2.default.func,\n onShow: _propTypes2.default.func,\n customFields: _propTypes2.default.object,\n contentTemplate: _propTypes2.default.func\n };\n\n exports.default = SAlert;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/dist/SAlert.js\n// module id = 15\n// module chunks = 0","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports', 'react', 'react-dom', 'prop-types', './s-alert-parts/s-alert-tools', './s-alert-parts/s-alert-store', './SAlertContentTmpl'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports, require('react'), require('react-dom'), require('prop-types'), require('./s-alert-parts/s-alert-tools'), require('./s-alert-parts/s-alert-store'), require('./SAlertContentTmpl'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, global.react, global.reactDom, global.propTypes, global.sAlertTools, global.sAlertStore, global.SAlertContentTmpl);\n global.SAlertContent = mod.exports;\n }\n})(this, function (exports, _react, _reactDom, _propTypes, _sAlertTools, _sAlertStore, _SAlertContentTmpl) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _react2 = _interopRequireDefault(_react);\n\n var _reactDom2 = _interopRequireDefault(_reactDom);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n var _sAlertTools2 = _interopRequireDefault(_sAlertTools);\n\n var _sAlertStore2 = _interopRequireDefault(_sAlertStore);\n\n var _SAlertContentTmpl2 = _interopRequireDefault(_SAlertContentTmpl);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var SAlertContent = function (_React$Component) {\n _inherits(SAlertContent, _React$Component);\n\n function SAlertContent(props) {\n _classCallCheck(this, SAlertContent);\n\n return _possibleConstructorReturn(this, (SAlertContent.__proto__ || Object.getPrototypeOf(SAlertContent)).call(this, props));\n }\n\n _createClass(SAlertContent, [{\n key: 'handleCloseAlert',\n value: function handleCloseAlert() {\n var closingTimeout = void 0;\n var alertId = this.props.id;\n var currentAlertElem = _reactDom2.default.findDOMNode(this);\n var animationClose = function animationClose() {\n currentAlertElem.style.display = 'none';\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: alertId } });\n clearTimeout(closingTimeout);\n };\n if (document.hidden || document.webkitHidden || !currentAlertElem.classList.contains('s-alert-is-effect')) {\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: alertId } });\n } else {\n currentAlertElem.classList.remove('s-alert-show');\n closingTimeout = setTimeout(function () {\n currentAlertElem.classList.add('s-alert-hide');\n }, 100);\n currentAlertElem.removeEventListener('webkitAnimationEnd', animationClose, false);\n currentAlertElem.removeEventListener('animationend', animationClose, false);\n currentAlertElem.addEventListener('webkitAnimationEnd', animationClose, false);\n currentAlertElem.addEventListener('animationend', animationClose, false);\n }\n // stop audio when closing\n this.alertAudio && this.alertAudio.load();\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n var beep = this.props.beep;\n var condition = this.props.condition;\n if (beep && typeof beep === 'string') {\n this.alertAudio = new Audio(beep);\n this.alertAudio.load();\n this.alertAudio.play();\n }\n if (beep && (typeof beep === 'undefined' ? 'undefined' : _typeof(beep)) === 'object' && condition === 'info') {\n this.alertAudio = new Audio(beep.info);\n this.alertAudio.load();\n this.alertAudio.play();\n }\n if (beep && (typeof beep === 'undefined' ? 'undefined' : _typeof(beep)) === 'object' && condition === 'error') {\n this.alertAudio = new Audio(beep.error);\n this.alertAudio.load();\n this.alertAudio.play();\n }\n if (beep && (typeof beep === 'undefined' ? 'undefined' : _typeof(beep)) === 'object' && condition === 'success') {\n this.alertAudio = new Audio(beep.success);\n this.alertAudio.load();\n this.alertAudio.play();\n }\n if (beep && (typeof beep === 'undefined' ? 'undefined' : _typeof(beep)) === 'object' && condition === 'warning') {\n this.alertAudio = new Audio(beep.warning);\n this.alertAudio.load();\n this.alertAudio.play();\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n if (typeof this.props.timeout === 'number') {\n this.closeTimer = setTimeout(function () {\n _this2.handleCloseAlert();\n }, this.props.timeout);\n }\n if (this.props.onShow) {\n this.props.onShow();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.closeTimer) {\n clearTimeout(this.closeTimer);\n }\n if (this.props.onClose) {\n this.props.onClose();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var classNames = 's-alert-box s-alert-' + this.props.condition + ' s-alert-' + this.props.position + ' ' + (this.props.effect ? 's-alert-is-effect s-alert-effect-' + this.props.effect : '') + ' s-alert-show';\n var message = this.props.html ? _react2.default.createElement('span', { dangerouslySetInnerHTML: { __html: this.props.message } }) : this.props.message;\n var styles = this.props.boxPosition ? _sAlertTools2.default.styleToObj(this.props.boxPosition) : {};\n var id = this.props.id;\n var handleClose = this.handleCloseAlert.bind(this);\n var contentTemplate = this.props.contentTemplate || _SAlertContentTmpl2.default;\n var customFields = this.props.customFields || {};\n\n return _react2.default.createElement(contentTemplate, { classNames: classNames, id: id, styles: styles, message: message, handleClose: handleClose, customFields: customFields });\n }\n }]);\n\n return SAlertContent;\n }(_react2.default.Component);\n\n SAlertContent.propTypes = {\n condition: _propTypes2.default.string.isRequired,\n message: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.node]),\n position: _propTypes2.default.string.isRequired,\n boxPosition: _propTypes2.default.string,\n id: _propTypes2.default.string.isRequired,\n effect: _propTypes2.default.string,\n beep: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object, _propTypes2.default.bool]),\n timeout: _propTypes2.default.oneOfType([_propTypes2.default.oneOf(['none']), _propTypes2.default.number]),\n html: _propTypes2.default.bool,\n onClose: _propTypes2.default.func,\n onShow: _propTypes2.default.func,\n customFields: _propTypes2.default.object,\n contentTemplate: _propTypes2.default.func\n };\n\n exports.default = SAlertContent;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/dist/SAlertContent.js\n// module id = 16\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_17__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"root\":\"ReactDOM\",\"commonjs2\":\"react-dom\",\"commonjs\":\"react-dom\",\"amd\":\"react-dom\"}\n// module id = 17\n// module chunks = 0","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports);\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports);\n global.sAlertTools = mod.exports;\n }\n})(this, function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n var actualGlobalConfig = void 0;\n\n var sAlertTools = {\n randomId: function randomId() {\n return Math.random().toString(36).split('.')[1];\n },\n returnFirstDefined: function returnFirstDefined() {\n var value = void 0;\n var i = void 0;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n for (i = 0; i < args.length; i++) {\n if (typeof args[i] !== 'undefined') {\n value = args[i];\n break;\n }\n }\n return value;\n },\n styleToObj: function styleToObj(input) {\n var result = {},\n i = void 0,\n entry = void 0,\n attributes = input && input.split(';').filter(Boolean);\n\n for (i = 0; i < attributes.length; i++) {\n entry = attributes[i].split(':');\n result[entry.splice(0, 1)[0].trim()] = entry.join(':').trim();\n }\n return result;\n },\n setGlobalConfig: function setGlobalConfig(config) {\n if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object') {\n actualGlobalConfig = config;\n }\n },\n getGlobalConfig: function getGlobalConfig() {\n return actualGlobalConfig;\n }\n };\n\n exports.default = sAlertTools;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/dist/s-alert-parts/s-alert-tools.js\n// module id = 18\n// module chunks = 0","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports);\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports);\n global.sAlertStore = mod.exports;\n }\n})(this, function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n }\n\n // custom simple store based on a awesome Redux library https://github.com/rackt/redux\n\n var createSAlertStore = function createSAlertStore(reducer) {\n var state = void 0;\n var listeners = [];\n var getState = function getState() {\n return state;\n };\n var dispatch = function dispatch(action) {\n state = reducer(state, action);\n listeners.forEach(function (listener) {\n return listener();\n });\n };\n var subscribe = function subscribe(listener) {\n listeners.push(listener);\n return function () {\n listeners = listeners.filter(function (l) {\n return l !== listener;\n });\n };\n };\n dispatch({});\n return {\n getState: getState, dispatch: dispatch, subscribe: subscribe\n };\n };\n\n var insert = function insert(state, action) {\n return [].concat(_toConsumableArray(state), [action.data]);\n };\n\n var remove = function remove(state, action) {\n var elemToRemoveArray = state.slice().filter(function (item) {\n return item.id === action.data.id;\n });\n if (Array.isArray(elemToRemoveArray)) {\n var elemToRemoveIndex = state.indexOf(elemToRemoveArray[0]);\n return [].concat(_toConsumableArray(state.slice(0, elemToRemoveIndex)), _toConsumableArray(state.slice(elemToRemoveIndex + 1)));\n }\n return state;\n };\n\n var alertsReducer = function alertsReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var action = arguments[1];\n\n switch (action.type) {\n case 'INSERT':\n return insert(state, action);\n case 'REMOVE':\n return remove(state, action);\n case 'REMOVEALL':\n return [];\n default:\n return state;\n }\n };\n\n var sAlertStore = createSAlertStore(alertsReducer);\n\n exports.default = sAlertStore;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/dist/s-alert-parts/s-alert-store.js\n// module id = 19\n// module chunks = 0","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports', 'react', 'prop-types'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports, require('react'), require('prop-types'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, global.react, global.propTypes);\n global.SAlertContentTmpl = mod.exports;\n }\n})(this, function (exports, _react, _propTypes) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _react2 = _interopRequireDefault(_react);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var SAlertContentTmpl = function (_React$Component) {\n _inherits(SAlertContentTmpl, _React$Component);\n\n function SAlertContentTmpl(props) {\n _classCallCheck(this, SAlertContentTmpl);\n\n return _possibleConstructorReturn(this, (SAlertContentTmpl.__proto__ || Object.getPrototypeOf(SAlertContentTmpl)).call(this, props));\n }\n\n _createClass(SAlertContentTmpl, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'div',\n { className: this.props.classNames, id: this.props.id, style: this.props.styles },\n _react2.default.createElement(\n 'div',\n { className: 's-alert-box-inner' },\n this.props.message\n ),\n _react2.default.createElement('span', { className: 's-alert-close', onClick: this.props.handleClose })\n );\n }\n }]);\n\n return SAlertContentTmpl;\n }(_react2.default.Component);\n\n SAlertContentTmpl.propTypes = {\n id: _propTypes2.default.string.isRequired,\n classNames: _propTypes2.default.string.isRequired,\n styles: _propTypes2.default.object.isRequired,\n message: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]).isRequired,\n handleClose: _propTypes2.default.func.isRequired,\n customFields: _propTypes2.default.object\n };\n\n exports.default = SAlertContentTmpl;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/dist/SAlertContentTmpl.js\n// module id = 20\n// module chunks = 0","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports', 'react', 'react-dom', '../SAlertContent', './s-alert-store', './s-alert-tools'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports, require('react'), require('react-dom'), require('../SAlertContent'), require('./s-alert-store'), require('./s-alert-tools'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, global.react, global.reactDom, global.SAlertContent, global.sAlertStore, global.sAlertTools);\n global.sAlertDataPrep = mod.exports;\n }\n})(this, function (exports, _react, _reactDom, _SAlertContent, _sAlertStore, _sAlertTools) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _react2 = _interopRequireDefault(_react);\n\n var _reactDom2 = _interopRequireDefault(_reactDom);\n\n var _SAlertContent2 = _interopRequireDefault(_SAlertContent);\n\n var _sAlertStore2 = _interopRequireDefault(_sAlertStore);\n\n var _sAlertTools2 = _interopRequireDefault(_sAlertTools);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n var getAlertData = function getAlertData(sAlertPosition) {\n var positionTop = 0;\n var positionBottom = 0;\n var padding = 0;\n var alerts = {};\n var style = void 0;\n var docElement = void 0;\n var sAlertBoxHeight = void 0;\n var positionTypeTop = void 0;\n var positionTypeBottom = void 0;\n var checkFirst = function checkFirst(type, objId) {\n var collectionOfType = sAlertCollection.filter(function (obj) {\n return obj.position === type || sAlertGlobalConfig.position === type;\n });\n return collectionOfType && collectionOfType[0].id === objId;\n };\n var positionFunc = function positionFunc(position, positionType, alert, docElement, sAlertBoxHeight, reactComponent) {\n padding = aStack.spacing || parseInt(getComputedStyle(_reactDom2.default.findDOMNode(reactComponent))[positionType]);\n if (checkFirst(aPosition, alert.id) && aOffset) {\n position = 0;\n position = position + parseInt(aOffset);\n }\n if (checkFirst(aPosition, alert.id) && aStack.spacing) {\n position = position;\n } else {\n position = position + parseInt(padding);\n }\n style = positionType + ': ' + position + 'px;';\n position = position + sAlertBoxHeight;\n return position;\n };\n\n var sAlertGlobalConfig = _sAlertTools2.default.getGlobalConfig();\n var aStack = void 0;\n var aContentTemplate = void 0;\n var aOffset = void 0;\n var aMessage = void 0;\n var aHtml = void 0;\n var aCustomFields = void 0;\n var aPosition = void 0;\n\n var query = {};\n if (sAlertPosition === 'left') {\n query = function query(item) {\n return item.position === 'top-left' || item.position === 'bottom-left' || !item.position && (sAlertGlobalConfig.position === 'top-left' || sAlertGlobalConfig.position === 'bottom-left');\n };\n }\n if (sAlertPosition === 'right') {\n query = function query(item) {\n return item.position === 'top-right' || item.position === 'bottom-right' || !item.position && (sAlertGlobalConfig.position === 'top-right' || sAlertGlobalConfig.position === 'bottom-right');\n };\n }\n if (sAlertPosition === 'full-top') {\n query = function query(item) {\n return item.position === 'top' || !item.position && sAlertGlobalConfig.position === 'top';\n };\n }\n if (sAlertPosition === 'full-bottom') {\n query = function query(item) {\n return item.position === 'bottom' || !item.position && sAlertGlobalConfig.position === 'bottom';\n };\n }\n\n var currentState = _sAlertStore2.default.getState();\n var sAlertCollection = currentState.slice().filter(query);\n\n return sAlertCollection.map(function (alert) {\n aStack = sAlertGlobalConfig.stack;\n aContentTemplate = sAlertGlobalConfig.contentTemplate;\n aOffset = _sAlertTools2.default.returnFirstDefined(alert.offset, sAlertGlobalConfig.offset);\n aMessage = _sAlertTools2.default.returnFirstDefined(alert.message, sAlertGlobalConfig.message);\n aHtml = _sAlertTools2.default.returnFirstDefined(alert.html, sAlertGlobalConfig.html);\n aCustomFields = _sAlertTools2.default.returnFirstDefined(alert.customFields, sAlertGlobalConfig.customFields);\n aPosition = _sAlertTools2.default.returnFirstDefined(alert.position, sAlertGlobalConfig.position);\n positionTypeTop = aPosition && /top/g.test(aPosition);\n positionTypeBottom = aPosition && /bottom/g.test(aPosition);\n if (aStack) {\n // checking alert box height - needed to calculate position\n docElement = document.createElement('div');\n docElement.classList.add('s-alert-box-height');\n\n // mock element, needed for positions calculations\n var reactElement = _react2.default.createElement(_SAlertContent2.default, {\n key: _sAlertTools2.default.randomId(),\n id: _sAlertTools2.default.randomId(),\n condition: alert.condition,\n message: aMessage,\n position: aPosition,\n effect: alert.effect,\n boxPosition: alert.boxPosition,\n beep: false,\n timeout: 'none',\n html: aHtml,\n contentTemplate: aContentTemplate,\n customFields: aCustomFields\n });\n var reactComponent = _reactDom2.default.render(reactElement, docElement);\n\n document.body.appendChild(docElement);\n sAlertBoxHeight = parseInt(getComputedStyle(_reactDom2.default.findDOMNode(reactComponent))['height']);\n if (positionTypeTop) {\n positionTop = positionFunc(positionTop, 'top', alert, docElement, sAlertBoxHeight, reactComponent);\n }\n if (positionTypeBottom) {\n positionBottom = positionFunc(positionBottom, 'bottom', alert, docElement, sAlertBoxHeight, reactComponent);\n }\n var sAlertComputedStyle = getComputedStyle(_reactDom2.default.findDOMNode(reactComponent));\n if (sAlertPosition === 'left') {\n style = style + 'left: ' + (aStack.spacing || parseInt(sAlertComputedStyle.left)) + 'px;';\n }\n if (sAlertPosition === 'right') {\n style = style + 'right: ' + (aStack.spacing || parseInt(sAlertComputedStyle.right)) + 'px;';\n }\n alerts = _extends({}, alert, { boxPosition: style });\n _reactDom2.default.unmountComponentAtNode(docElement);\n docElement.parentNode.removeChild(docElement);\n } else if (aOffset && positionTypeTop) {\n alerts = _extends({}, alert, { boxPosition: 'top: ' + parseInt(aOffset) + 'px;' });\n } else if (aOffset && positionTypeBottom) {\n alerts = _extends({}, alert, { boxPosition: 'bottom: ' + parseInt(aOffset) + 'px;' });\n } else {\n alerts = alert;\n }\n return alerts;\n });\n };\n\n exports.default = getAlertData;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/dist/s-alert-parts/s-alert-data-prep.js\n// module id = 21\n// module chunks = 0","const CONST_VAR = {\n SORT_DESC: 'desc',\n SORT_ASC: 'asc',\n AWAIT_BEFORE_CELL_EDIT: 1,\n SIZE_PER_PAGE: 10,\n NEXT_PAGE: '>',\n NEXT_PAGE_TITLE: 'next page',\n LAST_PAGE: '>>',\n LAST_PAGE_TITLE: 'last page',\n PRE_PAGE: '<',\n PRE_PAGE_TITLE: 'previous page',\n FIRST_PAGE: '<<',\n FIRST_PAGE_TITLE: 'first page',\n PAGE_START_INDEX: 1,\n ROW_SELECT_BG_COLOR: '',\n ROW_SELECT_NONE: 'none',\n ROW_SELECT_SINGLE: 'radio',\n ROW_SELECT_MULTI: 'checkbox',\n CELL_EDIT_NONE: 'none',\n CELL_EDIT_CLICK: 'click',\n CELL_EDIT_DBCLICK: 'dbclick',\n SIZE_PER_PAGE_LIST: [ 10, 25, 30, 50 ],\n PAGINATION_SIZE: 5,\n PAGINATION_POS_TOP: 'top',\n PAGINATION_POS_BOTTOM: 'bottom',\n PAGINATION_POS_BOTH: 'both',\n TOOLBAR_POS_TOP: 'top',\n TOOLBAR_POS_BOTTOM: 'bottom',\n TOOLBAR_POS_BOTH: 'both',\n NO_DATA_TEXT: 'There is no data to display',\n SHOW_ONLY_SELECT: 'Show Selected Only',\n SHOW_ALL: 'Show All',\n EXPORT_CSV_TEXT: 'Export to CSV',\n INSERT_BTN_TEXT: 'New',\n DELETE_BTN_TEXT: 'Delete',\n SAVE_BTN_TEXT: 'Save',\n CLOSE_BTN_TEXT: 'Close',\n FILTER_DELAY: 500,\n SCROLL_TOP: 'Top',\n SCROLL_BOTTOM: 'Bottom',\n FILTER_TYPE: {\n TEXT: 'TextFilter',\n REGEX: 'RegexFilter',\n SELECT: 'SelectFilter',\n NUMBER: 'NumberFilter',\n DATE: 'DateFilter',\n CUSTOM: 'CustomFilter',\n ARRAY: 'ArrayFilter'\n },\n FILTER_COND_EQ: 'eq',\n FILTER_COND_LIKE: 'like',\n EXPAND_BY_ROW: 'row',\n EXPAND_BY_COL: 'column',\n REMOTE_SORT: 'sort',\n REMOTE_PAGE: 'pagination',\n REMOTE_CELL_EDIT: 'cellEdit',\n REMOTE_INSERT_ROW: 'insertRow',\n REMOTE_DROP_ROW: 'dropRow',\n REMOTE_FILTER: 'filter',\n REMOTE_SEARCH: 'search',\n REMOTE_EXPORT_CSV: 'exportCSV',\n INSERT_FAIL_INDICATOR: 'Validation errors, please check!',\n DEFAULT_CSV_SEPARATOR: ',',\n CSV_STRING_TYPE: 'string',\n CSV_NUMBER_TYPE: 'number',\n AUTO_COLLAPSE_WHEN_SORT: false,\n AUTO_COLLAPSE_WHEN_SEARCH: false,\n AUTO_COLLAPSE_WHEN_FILTER: false\n};\n\nCONST_VAR.REMOTE = {};\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_SORT] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_PAGE] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_CELL_EDIT] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_INSERT_ROW] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_DROP_ROW] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_FILTER] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_SEARCH] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_EXPORT_CSV] = false;\n\nexport default CONST_VAR;\n\n\n\n// WEBPACK FOOTER //\n// src/Const.js","/* eslint default-case: 0 */\n/* eslint guard-for-in: 0 */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\nimport Const from './Const';\nimport Util from './util';\nimport DateFilter from './filters/Date';\nimport TextFilter from './filters/Text';\nimport RegexFilter from './filters/Regex';\nimport SelectFilter from './filters/Select';\nimport NumberFilter from './filters/Number';\n\nclass TableHeaderColumn extends Component {\n\n constructor(props) {\n super(props);\n this.handleFilter = this.handleFilter.bind(this);\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.reset) {\n this.cleanFiltered();\n }\n\n // If column not displaying the same dataField, reset the filter accordingly\n if (nextProps.filter && nextProps.dataField !== this.props.dataField) {\n const emitter = nextProps.filter.emitter || {};\n const currentFilter = emitter.currentFilter || {};\n const filter = currentFilter[nextProps.dataField];\n const value = filter ? filter.value : '';\n\n const { ref } = this.getFilters(nextProps) || {};\n if (this.refs[ref]) {\n this.refs[ref].setState({ value });\n }\n }\n }\n\n handleColumnClick = () => {\n if (this.props.isOnlyHead || !this.props.dataSort) return;\n let { sort: order } = this.props;\n if (!order && this.props.defaultASC) order = Const.SORT_ASC;\n else order = this.props.sort === Const.SORT_DESC ? Const.SORT_ASC : Const.SORT_DESC;\n this.props.onSort(order, this.props.dataField);\n }\n\n handleFilter(value, type) {\n const { filter } = this.props;\n filter.emitter.handleFilter(this.props.dataField, value, type, filter);\n }\n\n getFilters(props = this.props) {\n const { headerText, children } = props;\n switch (props.filter.type) {\n case Const.FILTER_TYPE.TEXT: {\n return (\n this.textFilter = n } { ...props.filter }\n columnName={ headerText || children } filterHandler={ this.handleFilter } />\n );\n }\n case Const.FILTER_TYPE.REGEX: {\n return (\n this.regexFilter = n } { ...props.filter }\n columnName={ headerText || children } filterHandler={ this.handleFilter } />\n );\n }\n case Const.FILTER_TYPE.SELECT: {\n return (\n this.selectFilter = n } { ...props.filter }\n columnName={ headerText || children } filterHandler={ this.handleFilter } />\n );\n }\n case Const.FILTER_TYPE.NUMBER: {\n return (\n this.numberFilter = n } { ...props.filter }\n columnName={ headerText || children } filterHandler={ this.handleFilter } />\n );\n }\n case Const.FILTER_TYPE.DATE: {\n return (\n this.dateFilter = n } { ...props.filter }\n columnName={ headerText || children } filterHandler={ this.handleFilter } />\n );\n }\n case Const.FILTER_TYPE.CUSTOM: {\n const elm = props.filter.getElement(this.handleFilter,\n props.filter.customFilterParameters);\n\n return React.cloneElement(elm, { ref: n => this.customFilter = n });\n }\n }\n }\n\n componentDidMount() {\n this.headerCol.setAttribute('data-field', this.props.dataField);\n }\n\n renderDefaultCaret(dataSort, isBootstrap4) {\n if (!dataSort) return null;\n if (isBootstrap4) {\n return (\n \n );\n } else {\n return (\n \n \n \n \n \n \n \n \n );\n }\n }\n\n render() {\n let defaultCaret;\n let sortCaret;\n let sortClass;\n const {\n headerText,\n dataAlign,\n dataField,\n headerAlign,\n headerTitle,\n hidden,\n sort,\n dataSort,\n sortIndicator,\n children,\n caretRender,\n className,\n isOnlyHead,\n version,\n sortHeaderColumnClassName: customSortClass,\n thStyle: style\n } = this.props;\n const thStyle = {\n textAlign: headerAlign || dataAlign,\n display: hidden ? 'none' : null,\n ...style\n };\n const isBootstrap4 = Util.isBootstrap4(version);\n if (!isOnlyHead) {\n if (sortIndicator) {\n defaultCaret = this.renderDefaultCaret(dataSort, isBootstrap4);\n }\n sortCaret = sort ? Util.renderReactSortCaret(sort, isBootstrap4) : defaultCaret;\n if (caretRender) {\n sortCaret = caretRender(sort, dataField);\n }\n }\n\n if (sort) {\n sortClass = Util.isFunction(customSortClass) ?\n customSortClass(sort, dataField) : customSortClass;\n }\n const classes = classSet(\n Util.isFunction(className) ? className() : className,\n !isOnlyHead && dataSort ? 'sort-column' : '',\n sortClass);\n\n const attr = {};\n if (headerTitle) {\n if (typeof children === 'string' && !headerText) {\n attr.title = children;\n } else {\n attr.title = headerText;\n }\n }\n return (\n this.headerCol = node }\n className={ classes }\n style={ thStyle }\n onClick={ this.handleColumnClick }\n rowSpan={ this.props.rowSpan }\n colSpan={ this.props.colSpan }\n data-is-only-head={ this.props.isOnlyHead }\n { ...attr }>\n { children }{ sortCaret }\n
e.stopPropagation() }>\n { this.props.filter && !isOnlyHead ? this.getFilters() : null }\n
\n \n );\n }\n\n cleanFiltered() {\n if (!this.props.filter) return;\n\n switch (this.props.filter.type) {\n case Const.FILTER_TYPE.TEXT: {\n this.textFilter.cleanFiltered();\n break;\n }\n case Const.FILTER_TYPE.REGEX: {\n this.regexFilter.cleanFiltered();\n break;\n }\n case Const.FILTER_TYPE.SELECT: {\n this.selectFilter.cleanFiltered();\n break;\n }\n case Const.FILTER_TYPE.NUMBER: {\n this.numberFilter.cleanFiltered();\n break;\n }\n case Const.FILTER_TYPE.DATE: {\n this.dateFilter.cleanFiltered();\n break;\n }\n case Const.FILTER_TYPE.CUSTOM: {\n this.customFilter.cleanFiltered();\n break;\n }\n }\n }\n\n applyFilter(val) {\n if (!this.props.filter) return;\n switch (this.props.filter.type) {\n case Const.FILTER_TYPE.TEXT: {\n this.textFilter.applyFilter(val);\n break;\n }\n case Const.FILTER_TYPE.REGEX: {\n this.regexFilter.applyFilter(val);\n break;\n }\n case Const.FILTER_TYPE.SELECT: {\n this.selectFilter.applyFilter(val);\n break;\n }\n case Const.FILTER_TYPE.NUMBER: {\n this.numberFilter.applyFilter(val);\n break;\n }\n case Const.FILTER_TYPE.DATE: {\n this.dateFilter.applyFilter(val);\n break;\n }\n }\n }\n}\n\nconst filterTypeArray = [];\nfor (const key in Const.FILTER_TYPE) {\n filterTypeArray.push(Const.FILTER_TYPE[key]);\n}\n\nTableHeaderColumn.propTypes = {\n dataField: PropTypes.string,\n dataAlign: PropTypes.string,\n headerAlign: PropTypes.string,\n headerTitle: PropTypes.bool,\n headerText: PropTypes.string,\n dataSort: PropTypes.bool,\n onSort: PropTypes.func,\n dataFormat: PropTypes.func,\n csvFormat: PropTypes.func,\n csvHeader: PropTypes.string,\n csvFieldType: PropTypes.oneOf([ Const.CSV_STRING_TYPE, Const.CSV_NUMBER_TYPE ]),\n isKey: PropTypes.bool,\n editable: PropTypes.any,\n hidden: PropTypes.bool,\n hiddenOnInsert: PropTypes.bool,\n searchable: PropTypes.bool,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func\n ]),\n width: PropTypes.string,\n sortFunc: PropTypes.func,\n sortFuncExtraData: PropTypes.any,\n sortHeaderColumnClassName: PropTypes.any,\n columnClassName: PropTypes.any,\n editColumnClassName: PropTypes.any,\n invalidEditColumnClassName: PropTypes.any,\n columnTitle: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.func,\n PropTypes.string\n ]),\n filterFormatted: PropTypes.bool,\n filterValue: PropTypes.func,\n sort: PropTypes.string,\n caretRender: PropTypes.func,\n formatExtraData: PropTypes.any,\n csvFormatExtraData: PropTypes.any,\n filter: PropTypes.shape({\n type: PropTypes.oneOf(filterTypeArray),\n delay: PropTypes.number,\n options: PropTypes.oneOfType([\n PropTypes.object, // for SelectFilter\n PropTypes.arrayOf(PropTypes.number) // for NumberFilter\n ]),\n numberComparators: PropTypes.arrayOf(PropTypes.string),\n emitter: PropTypes.object,\n placeholder: PropTypes.string,\n getElement: PropTypes.func,\n customFilterParameters: PropTypes.object,\n condition: PropTypes.oneOf([ Const.FILTER_COND_EQ, Const.FILTER_COND_LIKE ])\n }),\n sortIndicator: PropTypes.bool,\n export: PropTypes.bool,\n expandable: PropTypes.bool,\n tdAttr: PropTypes.object,\n editTdAttr: PropTypes.object,\n tdStyle: PropTypes.oneOfType([ PropTypes.func, PropTypes.object ]),\n thStyle: PropTypes.object,\n keyValidator: PropTypes.bool,\n defaultASC: PropTypes.bool\n};\n\nTableHeaderColumn.defaultProps = {\n dataAlign: 'left',\n headerAlign: undefined,\n headerTitle: true,\n dataSort: false,\n dataFormat: undefined,\n csvFormat: undefined,\n csvHeader: undefined,\n csvFieldType: Const.CSV_STRING_TYPE,\n isKey: false,\n editable: true,\n onSort: undefined,\n hidden: false,\n hiddenOnInsert: false,\n searchable: true,\n className: '',\n columnTitle: false,\n width: null,\n sortFunc: undefined,\n columnClassName: '',\n editColumnClassName: '',\n invalidEditColumnClassName: '',\n filterFormatted: false,\n filterValue: undefined,\n sort: undefined,\n formatExtraData: undefined,\n sortFuncExtraData: undefined,\n filter: undefined,\n sortIndicator: true,\n expandable: true,\n tdAttr: undefined,\n editTdAttr: undefined,\n tdStyle: undefined,\n thStyle: undefined,\n keyValidator: false,\n defaultASC: false\n};\n\nexport default TableHeaderColumn;\n\n\n\n// WEBPACK FOOTER //\n// src/TableHeaderColumn.js","/* eslint react/display-name: 0 */\nimport React from 'react';\nimport Const from './Const';\nimport classSet from 'classnames';\n\nexport default {\n renderReactSortCaret(order, isBootstrap4) {\n let orderClass;\n if (isBootstrap4) {\n orderClass = classSet('fa', {\n 'fa-sort-asc': order === Const.SORT_ASC,\n 'fa-sort-desc': order === Const.SORT_DESC\n });\n return (\n \n );\n } else {\n orderClass = classSet('order', {\n 'dropup': order === Const.SORT_ASC\n });\n return (\n \n \n \n );\n }\n },\n\n isFunction(obj) {\n return obj && (typeof obj === 'function');\n },\n\n getScrollBarWidth() {\n const inner = document.createElement('p');\n inner.style.width = '100%';\n inner.style.height = '200px';\n\n const outer = document.createElement('div');\n outer.style.position = 'absolute';\n outer.style.top = '0px';\n outer.style.left = '0px';\n outer.style.visibility = 'hidden';\n outer.style.width = '200px';\n outer.style.height = '150px';\n outer.style.overflow = 'hidden';\n outer.appendChild(inner);\n\n document.body.appendChild(outer);\n const w1 = inner.getBoundingClientRect().width;\n outer.style.overflow = 'scroll';\n let w2 = inner.getBoundingClientRect().width;\n\n if (w1 === w2) w2 = outer.clientWidth;\n\n document.body.removeChild(outer);\n\n return (w1 - w2);\n },\n\n canUseDOM() {\n return typeof window !== 'undefined' && typeof window.document !== 'undefined';\n },\n\n // We calculate an offset here in order to properly fetch the indexed data,\n // despite the page start index not always being 1\n getNormalizedPage(pageStartIndex, page) {\n pageStartIndex = this.getFirstPage(pageStartIndex);\n if (page === undefined) page = pageStartIndex;\n const offset = Math.abs(Const.PAGE_START_INDEX - pageStartIndex);\n return page + offset;\n },\n\n getFirstPage(pageStartIndex) {\n return pageStartIndex !== undefined ? pageStartIndex : Const.PAGE_START_INDEX;\n },\n\n isBootstrap4(version) {\n return version === '4';\n },\n\n isSelectRowDefined(mode) {\n return mode === Const.ROW_SELECT_SINGLE || mode === Const.ROW_SELECT_MULTI;\n },\n\n renderColGroup(columns, selectRow, expandColumnOptions = {}, version) {\n let selectRowHeader = null;\n let expandRowHeader = null;\n const isBootstrap4 = this.isBootstrap4(version);\n const isSelectRowDefined = this.isSelectRowDefined(selectRow.mode);\n const columnWidth = isBootstrap4 ? '38px' : '30px';\n if (isSelectRowDefined) {\n const style = {\n width: selectRow.columnWidth || columnWidth,\n minWidth: selectRow.columnWidth || columnWidth\n };\n if (!selectRow.hideSelectColumn) {\n selectRowHeader = ();\n }\n }\n if (expandColumnOptions.expandColumnVisible) {\n const style = {\n width: expandColumnOptions.columnWidth || columnWidth,\n minWidth: expandColumnOptions.columnWidth || columnWidth\n };\n expandRowHeader = ();\n }\n const theader = columns.map(function(column, i) {\n const style = {\n display: column.hidden ? 'none' : null\n };\n if (column.width) {\n const width = !isNaN(column.width) ? column.width + 'px' : column.width;\n style.width = width;\n /** add min-wdth to fix user assign column width\n not eq offsetWidth in large column table **/\n style.minWidth = width;\n }\n return ();\n });\n\n return (\n \n { expandColumnOptions.expandColumnVisible &&\n expandColumnOptions.expandColumnBeforeSelectColumn &&\n expandRowHeader }\n { selectRowHeader }\n { expandColumnOptions.expandColumnVisible &&\n !expandColumnOptions.expandColumnBeforeSelectColumn &&\n expandRowHeader }\n { theader }\n \n );\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// src/util.js","/* eslint quotes: 0 */\n/* eslint max-len: 0 */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nconst legalComparators = [ '=', '>', '>=', '<', '<=', '!=' ];\n\nfunction dateParser(d) {\n return `${d.getFullYear()}-${(\"0\" + (d.getMonth() + 1)).slice(-2)}-${(\"0\" + d.getDate()).slice(-2)}`;\n}\n\nclass DateFilter extends Component {\n constructor(props) {\n super(props);\n this.dateComparators = this.props.dateComparators || legalComparators;\n this.filter = this.filter.bind(this);\n this.onChangeComparator = this.onChangeComparator.bind(this);\n }\n\n setDefaultDate() {\n let defaultDate = '';\n const { defaultValue } = this.props;\n if (defaultValue && defaultValue.date) {\n // Set the appropriate format for the input type=date, i.e. \"YYYY-MM-DD\"\n defaultDate = dateParser(new Date(defaultValue.date));\n }\n return defaultDate;\n }\n\n onChangeComparator(event) {\n let date = this.inputDate.value;\n const comparator = event.target.value;\n if (date === '') {\n return;\n }\n date = new Date(date);\n this.props.filterHandler({ date, comparator }, Const.FILTER_TYPE.DATE);\n }\n\n getComparatorOptions() {\n const optionTags = [];\n optionTags.push();\n for (let i = 0; i < this.dateComparators.length; i++) {\n optionTags.push(\n \n );\n }\n return optionTags;\n }\n\n filter(event) {\n const comparator = this.dateFilterComparator.value;\n const dateValue = event.target.value;\n if (dateValue) {\n this.props.filterHandler({ date: new Date(dateValue), comparator }, Const.FILTER_TYPE.DATE);\n } else {\n this.props.filterHandler(null, Const.FILTER_TYPE.DATE);\n }\n }\n\n cleanFiltered() {\n const value = this.setDefaultDate();\n const comparator = (this.props.defaultValue) ? this.props.defaultValue.comparator : '';\n this.setState(() => { return { isPlaceholderSelected: (value === '') }; });\n this.dateFilterComparator.value = comparator;\n this.inputDate.value = value;\n this.props.filterHandler({ date: new Date(value), comparator }, Const.FILTER_TYPE.DATE);\n }\n\n applyFilter(filterDateObj) {\n const { date, comparator } = filterDateObj;\n this.setState(() => { return { isPlaceholderSelected: (date === '') }; });\n this.dateFilterComparator.value = comparator;\n this.inputDate.value = dateParser(date);\n this.props.filterHandler({ date, comparator }, Const.FILTER_TYPE.DATE);\n }\n\n componentDidMount() {\n const comparator = this.dateFilterComparator.value;\n const dateValue = this.inputDate.value;\n if (comparator && dateValue) {\n this.props.filterHandler({ date: new Date(dateValue), comparator }, Const.FILTER_TYPE.DATE);\n }\n }\n\n render() {\n const { defaultValue, style: { date, comparator } } = this.props;\n return (\n
\n \n this.inputDate = n }\n className='filter date-filter-input form-control'\n style={ date }\n type='date'\n onChange={ this.filter }\n defaultValue={ this.setDefaultDate() } />\n
\n );\n }\n}\n\nDateFilter.propTypes = {\n filterHandler: PropTypes.func.isRequired,\n defaultValue: PropTypes.shape({\n date: PropTypes.object,\n comparator: PropTypes.oneOf(legalComparators)\n }),\n style: PropTypes.shape({\n date: PropTypes.oneOfType([ PropTypes.object ]),\n comparator: PropTypes.oneOfType([ PropTypes.object ])\n }),\n /* eslint consistent-return: 0 */\n dateComparators: function(props, propName) {\n if (!props[propName]) {\n return;\n }\n for (let i = 0; i < props[propName].length; i++) {\n let comparatorIsValid = false;\n for (let j = 0; j < legalComparators.length; j++) {\n if (legalComparators[j] === props[propName][i]) {\n comparatorIsValid = true;\n break;\n }\n }\n if (!comparatorIsValid) {\n return new Error(`Date comparator provided is not supported.\n Use only ${legalComparators}`);\n }\n }\n },\n columnName: PropTypes.any\n};\n\nDateFilter.defaultProps = {\n style: {\n date: null,\n comparator: null\n }\n};\n\n\nexport default DateFilter;\n\n\n\n// WEBPACK FOOTER //\n// src/filters/Date.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nclass TextFilter extends Component {\n constructor(props) {\n super(props);\n this.filter = this.filter.bind(this);\n this.timeout = null;\n this.state = {\n value: this.props.defaultValue || ''\n };\n }\n\n filter(event) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n const filterValue = event.target.value;\n this.setState(() => { return { value: filterValue }; });\n this.timeout = setTimeout(() => {\n this.props.filterHandler(filterValue, Const.FILTER_TYPE.TEXT);\n }, this.props.delay);\n }\n\n cleanFiltered() {\n const value = this.props.defaultValue ? this.props.defaultValue : '';\n this.setState(() => { return { value }; });\n this.props.filterHandler(value, Const.FILTER_TYPE.TEXT);\n }\n\n applyFilter(filterText) {\n this.setState(() => { return { value: filterText }; });\n this.props.filterHandler(filterText, Const.FILTER_TYPE.TEXT);\n }\n\n componentDidMount() {\n const defaultValue = this.inputText.value;\n if (defaultValue) {\n this.props.filterHandler(defaultValue, Const.FILTER_TYPE.TEXT);\n }\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.defaultValue !== this.props.defaultValue) {\n this.applyFilter(nextProps.defaultValue || '');\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this.timeout);\n }\n\n render() {\n const { placeholder, columnName, style } = this.props;\n return (\n this.inputText = n }\n className='filter text-filter form-control'\n type='text'\n style={ style }\n onChange={ this.filter }\n placeholder={ placeholder || `Enter ${columnName}...` }\n value={ this.state.value } />\n );\n }\n}\n\nTextFilter.propTypes = {\n filterHandler: PropTypes.func.isRequired,\n defaultValue: PropTypes.string,\n delay: PropTypes.number,\n placeholder: PropTypes.string,\n columnName: PropTypes.any,\n style: PropTypes.oneOfType([ PropTypes.object ])\n};\n\nTextFilter.defaultProps = {\n delay: Const.FILTER_DELAY\n};\n\nexport default TextFilter;\n\n\n\n// WEBPACK FOOTER //\n// src/filters/Text.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nclass RegexFilter extends Component {\n constructor(props) {\n super(props);\n this.filter = this.filter.bind(this);\n this.timeout = null;\n }\n\n filter(event) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n const filterValue = event.target.value;\n this.timeout = setTimeout(() => {\n this.props.filterHandler(filterValue, Const.FILTER_TYPE.REGEX);\n }, this.props.delay);\n }\n\n cleanFiltered() {\n const value = this.props.defaultValue ? this.props.defaultValue : '';\n this.inputText.value = value;\n this.props.filterHandler(value, Const.FILTER_TYPE.TEXT);\n }\n\n applyFilter(filterRegx) {\n this.inputText.value = filterRegx;\n this.props.filterHandler(filterRegx, Const.FILTER_TYPE.REGEX);\n }\n\n componentDidMount() {\n const value = this.inputText.value;\n if (value) {\n this.props.filterHandler(value, Const.FILTER_TYPE.REGEX);\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this.timeout);\n }\n\n render() {\n const { defaultValue, placeholder, columnName, style } = this.props;\n return (\n this.inputText = n }\n className='filter text-filter form-control'\n type='text'\n style={ style }\n onChange={ this.filter }\n placeholder={ placeholder || `Enter Regex for ${columnName}...` }\n defaultValue={ (defaultValue) ? defaultValue : '' } />\n );\n }\n}\n\nRegexFilter.propTypes = {\n filterHandler: PropTypes.func.isRequired,\n defaultValue: PropTypes.string,\n delay: PropTypes.number,\n placeholder: PropTypes.string,\n columnName: PropTypes.any,\n style: PropTypes.oneOfType([ PropTypes.object ])\n};\n\nRegexFilter.defaultProps = {\n delay: Const.FILTER_DELAY\n};\n\nexport default RegexFilter;\n\n\n\n// WEBPACK FOOTER //\n// src/filters/Regex.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\nimport Const from '../Const';\n\nfunction optionsEquals(options1, options2) {\n const keys = Object.keys(options1);\n for (const k in keys) {\n if (options1[k] !== options2[k]) {\n return false;\n }\n }\n return Object.keys(options1).length === Object.keys(options2).length;\n}\n\nclass SelectFilter extends Component {\n constructor(props) {\n super(props);\n this.filter = this.filter.bind(this);\n this.state = {\n isPlaceholderSelected: (this.props.defaultValue === undefined ||\n !this.props.options.hasOwnProperty(this.props.defaultValue))\n };\n }\n\n componentWillReceiveProps() {\n const currentSelectValue = this.selectInput.value;\n const isPlaceholderSelected = !currentSelectValue || currentSelectValue === '';\n this.setState(() => {\n return {\n isPlaceholderSelected\n };\n });\n }\n\n componentDidUpdate(prevProps) {\n let needFilter = false;\n if (this.props.defaultValue !== prevProps.defaultValue) {\n needFilter = true;\n } else if (!optionsEquals(this.props.options, prevProps.options)) {\n needFilter = true;\n }\n if (needFilter) {\n const value = this.selectInput.value;\n if (value) {\n this.props.filterHandler(value, Const.FILTER_TYPE.SELECT);\n }\n }\n }\n\n filter(event) {\n const { value } = event.target;\n this.setState(() => { return { isPlaceholderSelected: (value === '') }; });\n this.props.filterHandler(value, Const.FILTER_TYPE.SELECT);\n }\n\n cleanFiltered() {\n const value = (this.props.defaultValue !== undefined) ? this.props.defaultValue : '';\n this.setState(() => { return { isPlaceholderSelected: (value === '') }; });\n this.selectInput.value = value;\n this.props.filterHandler(value, Const.FILTER_TYPE.SELECT);\n }\n\n applyFilter(filterOption) {\n filterOption = filterOption + '';\n this.setState(() => { return { isPlaceholderSelected: (filterOption === '') }; });\n this.selectInput.value = filterOption;\n this.props.filterHandler(filterOption, Const.FILTER_TYPE.SELECT);\n }\n\n getOptions() {\n const optionTags = [];\n const { options, placeholder, columnName, selectText, withoutEmptyOption } = this.props;\n const selectTextValue = (selectText !== undefined) ? selectText : 'Select';\n if (!withoutEmptyOption) {\n optionTags.push((\n \n ));\n }\n Object.keys(options).map(key => {\n optionTags.push();\n });\n return optionTags;\n }\n\n componentDidMount() {\n const value = this.selectInput.value;\n if (value) {\n this.props.filterHandler(value, Const.FILTER_TYPE.SELECT);\n }\n }\n\n render() {\n const selectClass = classSet('filter', 'select-filter', 'form-control',\n { 'placeholder-selected': this.state.isPlaceholderSelected });\n\n return (\n \n );\n }\n}\n\nSelectFilter.propTypes = {\n filterHandler: PropTypes.func.isRequired,\n options: PropTypes.object.isRequired,\n placeholder: PropTypes.string,\n columnName: PropTypes.any,\n style: PropTypes.oneOfType([ PropTypes.object ])\n};\n\nexport default SelectFilter;\n\n\n\n// WEBPACK FOOTER //\n// src/filters/Select.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\nimport Const from '../Const';\n\nconst legalComparators = [ '=', '>', '>=', '<', '<=', '!=' ];\n\nclass NumberFilter extends Component {\n constructor(props) {\n super(props);\n this.numberComparators = this.props.numberComparators || legalComparators;\n this.timeout = null;\n this.state = {\n isPlaceholderSelected: (this.props.defaultValue === undefined ||\n this.props.defaultValue.number === undefined ||\n (this.props.options &&\n this.props.options.indexOf(this.props.defaultValue.number) === -1))\n };\n this.onChangeNumber = this.onChangeNumber.bind(this);\n this.onChangeNumberSet = this.onChangeNumberSet.bind(this);\n this.onChangeComparator = this.onChangeComparator.bind(this);\n }\n\n onChangeNumber(event) {\n const comparator = this.numberFilterComparator.value;\n if (comparator === '') {\n return;\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n const filterValue = event.target.value;\n this.timeout = setTimeout(() => {\n this.props.filterHandler({ number: filterValue, comparator }, Const.FILTER_TYPE.NUMBER);\n }, this.props.delay);\n }\n\n onChangeNumberSet(event) {\n const comparator = this.numberFilterComparator.value;\n const { value } = event.target;\n this.setState(() => { return { isPlaceholderSelected: (value === '') }; });\n if (comparator === '') {\n return;\n }\n this.props.filterHandler({ number: value, comparator }, Const.FILTER_TYPE.NUMBER);\n }\n\n onChangeComparator(event) {\n const value = this.numberFilter.value;\n const comparator = event.target.value;\n if (value === '') {\n return;\n }\n this.props.filterHandler({ number: value, comparator }, Const.FILTER_TYPE.NUMBER);\n }\n\n cleanFiltered() {\n const value = (this.props.defaultValue) ? this.props.defaultValue.number : '';\n const comparator = (this.props.defaultValue) ? this.props.defaultValue.comparator : '';\n this.setState(() => { return { isPlaceholderSelected: (value === '') }; });\n this.numberFilterComparator.value = comparator;\n this.numberFilter.value = value;\n this.props.filterHandler({ number: value, comparator }, Const.FILTER_TYPE.NUMBER);\n }\n\n applyFilter(filterObj) {\n const { number, comparator } = filterObj;\n this.setState(() => { return { isPlaceholderSelected: (number === '') }; });\n this.numberFilterComparator.value = comparator;\n this.numberFilter.value = number;\n this.props.filterHandler({ number, comparator }, Const.FILTER_TYPE.NUMBER);\n }\n\n getComparatorOptions() {\n const optionTags = [];\n const { withoutEmptyComparatorOption } = this.props;\n if (!withoutEmptyComparatorOption) {\n optionTags.push();\n }\n for (let i = 0; i < this.numberComparators.length; i++) {\n optionTags.push(\n \n );\n }\n return optionTags;\n }\n\n getNumberOptions() {\n const optionTags = [];\n const { options, withoutEmptyNumberOption } = this.props;\n if (!withoutEmptyNumberOption) {\n optionTags.push(\n \n );\n }\n for (let i = 0; i < options.length; i++) {\n optionTags.push();\n }\n return optionTags;\n }\n\n componentDidMount() {\n const comparator = this.numberFilterComparator.value;\n const number = this.numberFilter.value;\n if (comparator && number) {\n this.props.filterHandler({ number, comparator }, Const.FILTER_TYPE.NUMBER);\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this.timeout);\n }\n\n render() {\n const selectClass = classSet(\n 'select-filter', 'number-filter-input', 'form-control',\n { 'placeholder-selected': this.state.isPlaceholderSelected });\n\n return (\n
\n \n {\n (this.props.options) ?\n :\n this.numberFilter = n }\n type='number'\n style={ this.props.style.number }\n className='number-filter-input form-control'\n placeholder={ this.props.placeholder || `Enter ${this.props.columnName}...` }\n onChange={ this.onChangeNumber }\n defaultValue={\n (this.props.defaultValue) ? this.props.defaultValue.number : ''\n } />\n }\n
\n );\n }\n}\n\nNumberFilter.propTypes = {\n filterHandler: PropTypes.func.isRequired,\n options: PropTypes.arrayOf(PropTypes.number),\n defaultValue: PropTypes.shape({\n number: PropTypes.number,\n comparator: PropTypes.oneOf(legalComparators)\n }),\n style: PropTypes.shape({\n number: PropTypes.oneOfType([ PropTypes.object ]),\n comparator: PropTypes.oneOfType([ PropTypes.object ])\n }),\n delay: PropTypes.number,\n /* eslint consistent-return: 0 */\n numberComparators: function(props, propName) {\n if (!props[propName]) {\n return;\n }\n for (let i = 0; i < props[propName].length; i++) {\n let comparatorIsValid = false;\n for (let j = 0; j < legalComparators.length; j++) {\n if (legalComparators[j] === props[propName][i]) {\n comparatorIsValid = true;\n break;\n }\n }\n if (!comparatorIsValid) {\n return new Error(`Number comparator provided is not supported.\n Use only ${legalComparators}`);\n }\n }\n },\n placeholder: PropTypes.string,\n columnName: PropTypes.any,\n withoutEmptyComparatorOption: PropTypes.bool,\n withoutEmptyNumberOption: PropTypes.bool\n};\n\nNumberFilter.defaultProps = {\n delay: Const.FILTER_DELAY,\n withoutEmptyComparatorOption: false,\n withoutEmptyNumberOption: false,\n style: {\n number: null,\n comparator: null\n }\n};\n\nexport default NumberFilter;\n\n\n\n// WEBPACK FOOTER //\n// src/filters/Number.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport Const from './Const';\nimport classSet from 'classnames';\nimport SelectRowHeaderColumn from './SelectRowHeaderColumn';\nimport ExpandRowHeaderColumn from './ExpandRowHeaderColumn';\nimport Utils from './util';\n\nclass Checkbox extends Component {\n componentDidMount() { this.update(this.props.checked); }\n componentWillReceiveProps(props) { this.update(props.checked); }\n update(checked) {\n ReactDOM.findDOMNode(this).indeterminate = checked === 'indeterminate';\n }\n render() {\n return (\n \n );\n }\n}\n\nfunction getSortOrder(sortList, field, enableSort) {\n if (!enableSort) return undefined;\n const result = sortList.filter(sortObj => {\n return sortObj.sortField === field;\n });\n if (result.length > 0) {\n return result[0].order;\n } else {\n return undefined;\n }\n}\n\nclass TableHeader extends Component {\n\n render() {\n const { sortIndicator, sortList, onSort, reset, version, condensed, bordered,\n expandedColumnHeaderComponent, noAnyExpand, toggleExpandAllChilds, expandAll\n } = this.props;\n const containerClasses = classSet(\n 'react-bs-container-header',\n 'table-header-wrapper',\n this.props.headerContainerClass);\n const customTableClasses = {\n 'table-bordered': bordered\n };\n if (condensed) {\n if (Utils.isBootstrap4(version)) customTableClasses['table-sm'] = true;\n else customTableClasses['table-condensed'] = true;\n }\n const tableClasses = classSet(\n 'table', 'table-hover', customTableClasses, this.props.tableHeaderClass);\n\n const rowCount = Math.max(...React.Children.map(this.props.children, elm =>\n (elm && elm.props.row) ? Number(elm.props.row) : 0\n ));\n\n const rows = [];\n let rowKey = 0;\n\n rows[0] = [];\n rows[0].push( [\n this.props.expandColumnVisible &&\n this.props.expandColumnBeforeSelectColumn &&\n \n ], [\n this.renderSelectRowHeader(rowCount + 1, rowKey++)\n ], [\n this.props.expandColumnVisible &&\n !this.props.expandColumnBeforeSelectColumn &&\n \n ]);\n\n React.Children.forEach(this.props.children, (elm) => {\n if (elm === null || elm === undefined) {\n // Skip null or undefined elements.\n return;\n }\n const { dataField, dataSort } = elm.props;\n const sort = getSortOrder(sortList, dataField, dataSort);\n const rowIndex = elm.props.row ? Number(elm.props.row) : 0;\n const rowSpan = elm.props.rowSpan ? Number(elm.props.rowSpan) : 1;\n if (rows[rowIndex] === undefined) {\n rows[rowIndex] = [];\n }\n if ((rowSpan + rowIndex) === (rowCount + 1)) {\n rows[rowIndex].push(React.cloneElement(\n elm, { reset, key: rowKey++, onSort, sort, sortIndicator, isOnlyHead: false, version }\n ));\n } else {\n rows[rowIndex].push(React.cloneElement(\n elm, { key: rowKey++, isOnlyHead: true, version }\n ));\n }\n });\n\n const trs = rows.map((row, indexRow)=>{\n return (\n \n { row }\n \n );\n });\n\n return (\n this.container = node }\n className={ containerClasses }\n style={ this.props.style }>\n \n { React.cloneElement(this.props.colGroups, { ref: node => this.headerGrp = node }) }\n this.header = node }>\n { trs }\n \n
\n \n );\n }\n\n getHeaderColGrouop = () => {\n return this.headerGrp.childNodes;\n }\n\n renderSelectRowHeader(rowCount, rowKey) {\n if (this.props.hideSelectColumn) {\n return null;\n } else if (this.props.customComponent) {\n const CustomComponent = this.props.customComponent;\n return (\n \n \n \n );\n } else if (this.props.rowSelectType === Const.ROW_SELECT_SINGLE) {\n return ();\n } else if (this.props.rowSelectType === Const.ROW_SELECT_MULTI) {\n return (\n \n \n \n );\n } else {\n return null;\n }\n }\n}\nTableHeader.propTypes = {\n headerContainerClass: PropTypes.string,\n tableHeaderClass: PropTypes.string,\n style: PropTypes.object,\n rowSelectType: PropTypes.string,\n onSort: PropTypes.func,\n onSelectAllRow: PropTypes.func,\n sortList: PropTypes.array,\n hideSelectColumn: PropTypes.bool,\n bordered: PropTypes.bool,\n condensed: PropTypes.bool,\n isFiltered: PropTypes.bool,\n isSelectAll: PropTypes.oneOf([ true, 'indeterminate', false ]),\n sortIndicator: PropTypes.bool,\n customComponent: PropTypes.func,\n colGroups: PropTypes.element,\n reset: PropTypes.bool,\n expandColumnVisible: PropTypes.bool,\n expandColumnComponent: PropTypes.func,\n expandedColumnHeaderComponent: PropTypes.func,\n expandColumnBeforeSelectColumn: PropTypes.bool,\n version: PropTypes.string,\n noAnyExpand: PropTypes.bool,\n expandAll: PropTypes.bool,\n toggleExpandAllChilds: PropTypes.func\n};\n\nexport default TableHeader;\n\n\n\n// WEBPACK FOOTER //\n// src/TableHeader.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nclass SelectRowHeaderColumn extends Component {\n\n render() {\n return (\n \n { this.props.children }\n \n );\n }\n}\nSelectRowHeaderColumn.propTypes = {\n children: PropTypes.node,\n rowCount: PropTypes.number\n};\nexport default SelectRowHeaderColumn;\n\n\n\n// WEBPACK FOOTER //\n// src/SelectRowHeaderColumn.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nclass ExpandRowHeaderColumn extends Component {\n\n constructor(props) {\n super(props);\n this.toggleExpandAllChilds = this.toggleExpandAllChilds.bind(this);\n }\n\n toggleExpandAllChilds() {\n this.props.toggleExpandAllChilds();\n }\n\n render() {\n const {\n expandedColumnHeaderComponent,\n noAnyExpand,\n expandAll\n } = this.props;\n const expandedHeaderComponent = noAnyExpand ?\n :\n ;\n const ExpandedColumnHeaderComponent = expandedColumnHeaderComponent;\n\n return (\n \n {\n expandAll ?
\n { expandedColumnHeaderComponent ?\n : expandedHeaderComponent }\n
: null\n }\n \n );\n }\n}\nExpandRowHeaderColumn.propTypes = {\n expandedColumnHeaderComponent: PropTypes.func,\n rowCount: PropTypes.number,\n noAnyExpand: PropTypes.bool,\n expandAll: PropTypes.bool,\n toggleExpandAllChilds: PropTypes.func\n};\nexport default ExpandRowHeaderColumn;\n\n\n\n// WEBPACK FOOTER //\n// src/ExpandRowHeaderColumn.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\n\nclass TableFooter extends Component {\n\n render() {\n const { hideSelectColumn, expandColumnVisible } = this.props;\n const containerClasses = classSet('react-bs-container-footer', 'table-footer-wrapper');\n const tableClasses = classSet('table', 'table-hover', {\n 'table-bordered': this.props.bordered,\n 'table-condensed': this.props.condensed\n }, this.props.tableFooterClass);\n return (\n this.container = node }\n className={ containerClasses }\n style={ this.props.style } >\n {\n this.props.children.map((footerItem, footerItemIndex) => {\n return (\n \n \n { React.cloneElement(this.props.colGroups) }\n \n this.footer = node }>\n { hideSelectColumn ? null : this.renderSelectionOrExpandCol() }\n { !expandColumnVisible ? null : this.renderSelectionOrExpandCol() }\n {\n this.props.columns.map((columnItem, colIndex) => {\n if ( !columnItem.hidden ) {\n const footerObj = footerItem.filter((item) => {\n return item.columnIndex === colIndex;\n });\n let footerData;\n let thAlignment = 'left';\n if (footerObj.length) {\n thAlignment = footerObj[0].align;\n if (footerObj[0].formatter) {\n footerData = footerObj[0].formatter(\n this.props.footerFormatterReturnData\n );\n } else {\n footerData = footerObj[0].label;\n }\n } else {\n footerData = '';\n }\n return (\n \n {\n footerData\n }\n \n );\n }\n })\n }\n \n \n
\n
\n );\n })\n }\n \n );\n }\n\n renderSelectionOrExpandCol() {\n return ();\n }\n}\nTableFooter.propTypes = {\n tableHeaderClass: PropTypes.string,\n style: PropTypes.object,\n hideSelectColumn: PropTypes.bool,\n expandColumnVisible: PropTypes.bool,\n bordered: PropTypes.bool,\n condensed: PropTypes.bool,\n isFiltered: PropTypes.bool,\n sortIndicator: PropTypes.bool\n};\n\nexport default TableFooter;\n\n\n\n// WEBPACK FOOTER //\n// src/TableFooter.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Utils from './util';\nimport Const from './Const';\nimport TableRow from './TableRow';\nimport TableColumn from './TableColumn';\nimport TableEditColumn from './TableEditColumn';\nimport classSet from 'classnames';\nimport ExpandComponent from './ExpandComponent';\n\nclass TableBody extends Component {\n constructor(props) {\n super(props);\n this.state = {\n currEditCell: null\n };\n }\n\n render() {\n const { cellEdit, beforeShowError, x, y, keyBoardNav, trStyle, version } = this.props;\n const customTableClasses = {\n 'table-striped': this.props.striped,\n 'table-bordered': this.props.bordered,\n 'table-hover': this.props.hover\n };\n if (this.props.condensed) {\n if (Utils.isBootstrap4(version)) customTableClasses['table-sm'] = true;\n else customTableClasses['table-condensed'] = true;\n }\n const tableClasses = classSet('table', customTableClasses, this.props.tableBodyClass);\n\n const noneditableRows = (cellEdit.nonEditableRows && cellEdit.nonEditableRows()) || [];\n const unselectable = this.props.selectRow.unselectable || [];\n const isSelectRowDefined = Utils.isSelectRowDefined(this.props.selectRow.mode);\n const tableHeader = Utils.renderColGroup(this.props.columns,\n this.props.selectRow, this.props.expandColumnOptions, version);\n const inputType = this.props.selectRow.mode === Const.ROW_SELECT_SINGLE ? 'radio' : 'checkbox';\n const CustomComponent = this.props.selectRow.customComponent;\n const enableKeyBoardNav = (keyBoardNav === true || typeof keyBoardNav === 'object');\n const customEditAndNavStyle = typeof keyBoardNav === 'object' ?\n keyBoardNav.customStyleOnEditCell :\n null;\n const customNavStyle = typeof keyBoardNav === 'object' ?\n keyBoardNav.customStyle :\n null;\n const ExpandColumnCustomComponent = this.props.expandColumnOptions.expandColumnComponent;\n let expandColSpan = this.props.columns.filter(col => col && !col.hidden).length;\n if (isSelectRowDefined && !this.props.selectRow.hideSelectColumn) {\n expandColSpan += 1;\n }\n let tabIndex = 1;\n if (this.props.expandColumnOptions.expandColumnVisible) {\n expandColSpan += 1;\n }\n\n let tableRows = this.props.data.map(function(data, r) {\n const tableColumns = this.props.columns.filter(_ => _ != null).map(function(column, i) {\n const fieldValue = data[column.name];\n const isFocusCell = r === y && i === x;\n if (column.name !== this.props.keyField && // Key field can't be edit\n column.editable && // column is editable? default is true, user can set it false\n column.editable.readOnly !== true &&\n this.state.currEditCell !== null &&\n this.state.currEditCell.rid === r &&\n this.state.currEditCell.cid === i &&\n noneditableRows.indexOf(data[this.props.keyField]) === -1) {\n let editable = column.editable;\n const format = column.format ? function(value) {\n return column.format(value, data, column.formatExtraData, r).replace(/<.*?>/g, '');\n } : false;\n if (Utils.isFunction(column.editable)) {\n editable = column.editable(fieldValue, data, r, i);\n }\n\n return (\n \n );\n } else {\n // add by bluespring for className customize\n let formattedValue;\n let columnChild = fieldValue && fieldValue.toString();\n let columnTitle = null;\n let tdClassName = column.className;\n let tdStyles = column.style;\n if (Utils.isFunction(column.className)) {\n tdClassName = column.className(fieldValue, data, r, i);\n }\n\n if (Utils.isFunction(column.style)) {\n tdStyles = column.style(fieldValue, data, r, i);\n }\n\n if (typeof column.format !== 'undefined') {\n formattedValue = column.format(fieldValue, data, column.formatExtraData, r);\n if (!React.isValidElement(formattedValue)) {\n columnChild = (\n
\n );\n } else {\n columnChild = formattedValue;\n }\n }\n if (Utils.isFunction(column.columnTitle)) {\n columnTitle = column.columnTitle(fieldValue, data, r, i);\n } else if (typeof column.columnTitle === 'string') {\n columnTitle = column.columnTitle;\n } else if (column.columnTitle) {\n if (formattedValue) columnTitle = formattedValue.toString();\n else if (fieldValue) columnTitle = fieldValue.toString();\n }\n return (\n \n );\n }\n }, this);\n const key = data[this.props.keyField];\n const disable = unselectable.indexOf(key) !== -1;\n const selected = this.props.selectedRowKeys.indexOf(key) !== -1;\n const selectRowColumn = isSelectRowDefined && !this.props.selectRow.hideSelectColumn ?\n this.renderSelectRowColumn(selected, inputType, disable, CustomComponent, r, data) : null;\n const expandedRowColumn = this.renderExpandRowColumn(\n this.props.expandableRow && this.props.expandableRow(data),\n this.props.expanding.indexOf(key) > -1,\n ExpandColumnCustomComponent, r\n );\n const haveExpandContent = this.props.expandableRow && this.props.expandableRow(data);\n const isExpanding = haveExpandContent && this.props.expanding.indexOf(key) > -1;\n const { hideRowOnExpand } = this.props;\n // add by bluespring for className customize\n let trClassName = this.props.trClassName;\n if (Utils.isFunction(this.props.trClassName)) {\n trClassName = this.props.trClassName(data, r);\n }\n if (isExpanding && this.props.expandParentClass) {\n trClassName += Utils.isFunction(this.props.expandParentClass) ?\n ` ${this.props.expandParentClass(data, r)}` :\n ` ${this.props.expandParentClass}`;\n }\n const result = [ ];\n\n if (haveExpandContent) {\n const expandBodyClass = Utils.isFunction(this.props.expandBodyClass) ?\n this.props.expandBodyClass(data, r, isExpanding) :\n this.props.expandBodyClass;\n result.push(\n