react-tailwind-table 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -5
- package/dist/index.css +381 -342
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +1 -1
- package/dist/index.modern.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/table-types.d.ts +2 -2
- package/package.json +6 -4
package/dist/index.modern.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.modern.js","sources":["../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../src/utilsClass.ts","../src/Button.tsx","../src/svgs/CheckedBox.tsx","../src/svgs/UnCheckedBox.tsx","../src/svgs/IndeterminateCheckBox.tsx","../src/svgs/Import.tsx","../src/svgs/search.tsx","../src/table-sub-components.tsx","../src/index.tsx"],"sourcesContent":["/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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';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?\nSymbol.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;\nfunction 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;\nexports.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};\nexports.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};\nexports.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;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n 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);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n 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.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\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 * 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 * 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 printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\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\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 (has(typeSpecs, 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 if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\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 printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\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'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\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\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\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 = '<<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 elementType: createElementTypeTypeChecker(),\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 var err = new Error(\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 err.name = 'Invariant Violation';\n throw err;\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 printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. 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 );\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(emptyFunctionThatReturnsNull);\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 createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\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 if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\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, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(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 (has(propValue, 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' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\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 // falsy value can't be a Symbol\n if (!propValue) {\n return false;\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.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\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'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\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 var err = new Error(\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 err.name = 'Invariant Violation';\n throw err;\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 elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\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\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\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')(ReactIs.isElement, 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","import { Irow, Icolumn, IPaginated, ItableLinks, IretainPage, stringRenderFunc } from \"./table-types\"\n/**\n * This class helps run minor utilities needed by our application to quickly process \n * data and get stuff done\n */\nexport default class utilsClass {\n \n static regex_special = [\n \"ˆ\", \"$\", \"*\", \"+\", \"?\",\n \"[\", \"]\", \"(\", \")\", \"{\",\n \"}\", \"\\\\\", \".\", \"\\\\t\",\n \"\\\\n\", \"\\\\r\", \"\\\\f\",\n \"\\\\v\", \"\\\\s\", \"\\\\w\",\n \"\\\\d\", \"\\\\D\", \"\\\\b\",\n \"\\\\W\", \"\\\\B\", \"\\\\0\", \"\\\\xxx\",\n \"\\\\xdd\", \"\\\\uxxxx\", \"\\\\cxxx\"\n ]\n // new RegExp(\"\\D\");\n\n /**\n * Performs a left trim as done by \n * {@link utilsClass.trim}\n * Thus removing a single or repeating character from the rightmost part of \n * a string\n */\n static ltrim(trimString: string, regexp: string, replaceWith: string, more = false, allowRegex = false) {\n\n return utilsClass.trim(trimString, regexp, replaceWith, more, \"l\", allowRegex)\n }\n\n static isInteger(input: any) {\n return function(): (val: any) => boolean {\n return Number.isInteger || function(value) {\n return typeof value === 'number' &&\n isFinite(value) &&\n Math.floor(value) === value;\n }\n }()(input)\n }\n\n /**\n * Performs a right trim as done by \n * {@link utilsClass.trim}\n * Thus removing a single or repeating character from the leftmost part of \n * a string\n */\n static rtrim(trimString: string, regexp: string, replaceWith: string, more = false, allowRegex = false) {\n\n return utilsClass.trim(trimString, regexp, replaceWith, more, \"r\", allowRegex)\n }\n\n\n /**\n * Trims a sertain character from a string. This does both left and right trimming\n *\n * @param trimString The string to be trimmed.\n * @param regexp A character to remove from the string.\n * @param replaceWith The character or string to put in place of the replaced string.\n * @param more if `true`, then it replacement occures for more than a single occurence, else it replaces just \n * One occurence.\n ** @param dir Decides if it should be a right or left trim\n ** @param allowRegex Does not escape input search element\n * \n */\n static trim(trimString: string, regexp: string, replaceWith: string, more = false, dir: \"r\" | \"l\", allowRegex = false) {\n\n if (!allowRegex && utilsClass.regex_special.includes(regexp)) regexp = \"\\\\\" + regexp;\n\n // if true, then remove more than one occurence of this string\n let add = more && regexp ? \"*\" : \"?\";\n\n let regMe;\n\n if (dir === \"r\") regMe = new RegExp(\"[\" + regexp + \"]\" + add + \"$\");\n else regMe = new RegExp(\"^[\" + regexp + \"]\" + add);\n\n return trimString.replace(regMe, replaceWith);\n }\n\n /**\n * A Function to determine if two objects are arrays are equal\n *\n * V = value, O= object, O = other,T = Type, OOT = Other Object Type\n */\n static isObjectEqual<VT, OT, VOT extends Record<string, any>, OOT extends Record<string, any>>(value: VT[] | VOT, other: OT[] | OOT) {\n\n // Get the value type\n var type = Object.prototype.toString.call(value);\n\n // If the two objects are not the same type, return false\n if (type !== Object.prototype.toString.call(other)) return false;\n\n // If items are not an object or array, return false\n if (['[object Array]', '[object Object]'].indexOf(type) < 0) return false;\n\n // Compare the length of the length of the two items\n var valueLen = type === '[object Array]' ? (value as VT[]).length : Object.keys(value as VOT).length;\n var otherLen = type === '[object Array]' ? (other as OT[]).length : Object.keys(other as OOT).length;\n if (valueLen !== otherLen) return false;\n\n //Some arrays or objects might be pointing to the same refence,\n // So we test their equality. It will help us not to loop inside objects multiple times \n // @ts-ignore\n if (value === other) return true;\n\n // console.log(\"IF Equal\");\n // Compare properties\n if (type === '[object Array]') {\n for (var i = 0; i < valueLen; i++) {\n\n if (utilsClass.compare((value as VT[])[i], (other as OT[])[i]) === false) return false;\n }\n } else {\n for (var key in value) {\n\n if (value.hasOwnProperty(key)) {\n if (utilsClass.compare((value as VOT)[key], (other as OOT)[key]) === false) return false;\n }\n }\n }\n\n // If nothing failed, return true\n return true;\n\n };\n\n /**\n * Compare Primitives, Might be number, string, array , objects or arrays\n */\n static compare<Item1T, Item2T, obj1T extends Record<string, any>, Obj2T extends Record<string, any>>(item1: string | number | Item1T[] | obj1T, item2: string | number | Item2T[] | Obj2T) {\n\n // Get the object type\n var itemType = Object.prototype.toString.call(item1);\n\n //I splitted this two comparison because of typescript typing.\n\n // If an array, compare recursively\n if (itemType === '[object Array]') {\n\n if (!utilsClass.isObjectEqual(item1 as Item1T[], item2 as Item2T[])) return false;\n }\n\n // If an object, compare recursively\n if (itemType === '[object Object]') {\n\n if (!utilsClass.isObjectEqual(item1 as obj1T, item2 as Obj2T)) return false;\n }\n\n // Otherwise, do a simple comparison\n else {\n\n // If the two items are not the same type, return false\n if (itemType !== Object.prototype.toString.call(item2)) return false;\n\n // Else if it's a function, convert to a string and compare\n // Otherwise, just compare\n if (itemType === '[object Function]') {\n if (item1.toString() !== item2.toString()) return false;\n } else {\n if (item1 !== item2) return false;\n }\n\n }\n\n return true;\n }\n\n /**\n * Tests if this given value is even.\n * @returns {boolean}\n */\n static isEven(value: number) {\n return (value & 1) === 0;\n };\n\n /**\n * Internal function used to implement `utilsClass.throttle` and `utilsClass.debounce`.\n * @param {Function} func: function to be invoked.\n * @param {number} wait: The amount of milliseconds to wait before executing the said function.\n *\n * Borrowed from https://github.com/jashkenas/underscore/commit/9e3e067f5025dbe5e93ed784f93b233882ca0ffe\n */\n static limit<D extends Function>(func: D, wait: number, debounce: boolean): (...input: any) => void {\n var timeout: number | undefined;\n\n function throtBounce(this: D, input: any) {\n var context = this,\n args = arguments;\n var throttler = function() {\n timeout = undefined;\n func.apply(context, args);\n };\n //The first ever time this function will be called, timeout will be null\n //This first cleartimeout will clear nothing, subsequently, it will be clearing any setup\n //callback awaiting execution. Uses Javascript event loop\n if (debounce) window.clearTimeout(timeout);\n\n //The case of !timeout is to invoke the function just once for case of throttle\n if (debounce || !timeout) timeout = window.setTimeout(throttler, wait);\n };\n\n throtBounce.clear = () => window.clearTimeout(timeout);\n return throtBounce\n };\n\n\n /**\n * Returns a function, that, when invoked, will only be triggered at most once\n * during a given window of time.\n *\n * TODO: allow to set if this callback should be invoked at the \n * \"Beginning\" or \"End\" of the time out\n * Currently it is invoked at the end\n */\n static throttle = function(func: Function, wait: number) {\n return utilsClass.limit(func, wait, false);\n };\n\n /** \n * Returns a \"function\"(rememeber to implement the function), that, \n * as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds.\n */\n static debounce = function(func: Function, wait: number) {\n return utilsClass.limit(func, wait, true);\n };\n\n\n static unwindObject(obj: Record<string, any>, field: string): string {\n\n //The fields passed in might be \".\" delimmeted, so i \n //Use a loop to enter the object and get out the final needed value\n\n //e,g {player:{me:{she:\"woman\"}}}\n //To get the value woman, the field should be \n //\"player.me.she\"\n var fields = field.split('.');\n var field_length = fields.length;\n if (field_length <= 1) {\n return obj[field] as string;\n }\n\n var recuObje: any = { ...obj };\n\n var rolled_time: number = 0;\n\n\n while (rolled_time < field_length) {\n\n recuObje = recuObje[fields[rolled_time]];\n\n rolled_time++;\n }\n\n /*\n to understand this while loop\n assume a length of array is called things with three elements\n things 3 (0,1,2)\n n = 0\n i) things[0] n=1\n ii) things[1] n=2\n ii) things[2] n=3\n */\n return recuObje;\n }\n\n static generateCSV(columns: Icolumn[], items: Irow[], exportModify?: stringRenderFunc) {\n\n let columns_array: string[] = [];\n let final_csv = \"\";\n\n columns.forEach(function(column: Icolumn) {\n\n if(column.use_in_export === false) return;\n\n columns_array.push(column.use ?? column.field)\n\n });\n\n final_csv = columns_array.join(\",\")+ '\\n';\n\n return new Promise<Blob>(function(resolve){\n //Wrap this operation in a promise since it might be CPU intensive\n items.forEach(function(row: Irow) {\n let rowArray: Array<string> = [];\n \n columns.forEach(function(column: Icolumn) {\n if(column.use_in_export === false) return;\n var display_value = utilsClass.unwindObject(row, column.field);\n if(exportModify) display_value = exportModify(row, column,display_value)\n \n //to escape a comma in excel, I use this string. it was realized by i and dotun \n //on smart eye.\n rowArray.push('\"'+display_value+'\"');\n \n });\n \n if (rowArray.length >0) final_csv = final_csv + rowArray.join(\",\")+ '\\n';\n });\n \n var blob = new Blob([final_csv], {type: \"octet/stream\"});\n \n resolve(blob);\n });\n \n }\n\n\n /**\n * Recursively stringifies the values of an object, space separated, in an\n * SSR safe deterministic way (keys are storted before stringification)\n *\n * ex:\n * ```json \n * { b: 3, \n * c: { z: 'zzz', d: null, e: 2 }, \n * d: [10, 12, 11], \n * a: 'one' \n * }\n * ```\n * becomes\n * 'one 3 2 zzz 10 12 11'\n *\n * Primatives (numbers/strings) are returned as-is\n * Null and undefined values are filtered out\n * Dates are converted to their native string format\n */\n static stringifyObjectValues(val: Record<string, any> | any): string {\n if (typeof val === 'undefined' || val === null) {\n /* istanbul ignore next */\n return '';\n }\n\n if (val instanceof Object && !(val instanceof Date)) {\n // Arrays are also object, and keys just returns the array indexes\n // Date objects we convert to strings\n return Object.keys(val).sort()\n /* sort to prevent SSR issues on pre-rendered sorted tables */\n .filter(function(v) {\n return v !== undefined && v !== null;\n })\n /* ignore undefined/null values */\n .map(function(k: string) {\n return utilsClass.stringifyObjectValues(val[k]);\n }).join(' ');\n }\n\n return String(val);\n }\n\n\n //For each column that has its use_in_search property to be false\n //It will not be included in the search \n static sanitizeRow(row: Irow, columns: Icolumn[]): object {\n var final_obj: Record<string, any> = {};\n \n for (var i = 0, len = columns.length; i < len; ++i) {\n if (columns[i].use_in_search === false) {\n continue;\n }\n //Fetch the data needed from the data row as we do with when displaying in table\n //We need to do this, since a row might be a nested object\n final_obj[columns[i].field] = utilsClass.unwindObject(row, columns[i].field);\n }\n\n return final_obj;\n }\n\n\n //This has Turned Irow interface to string now\n static stringifyRowValues(row: Irow, column: Icolumn[]): string {\n\n return (typeof row === \"object\" && row !== null) ?\n utilsClass.stringifyObjectValues(utilsClass.sanitizeRow(row, column)) :\n '';\n }\n\n /**\n *\n * Generates a filter function for the search string\n */\n static filterFunction(search_string: string, columns: Icolumn[]): (row: Irow) => boolean {\n /**\n * This searches all row values (and sub property values) in the entire (excluding\n * columns with use_in_search === false), because we convert the record to a space-separated\n * string containing all the value properties (recursively).\n * Users can ignore filtering on specific fields, or on only certain fields,\n */\n return function ffn(row: Irow) {\n\n // Generated function returns true if the criteria matches part of\n // the serialized data, otherwise false\n var regExp = utilsClass.stringtoRegEx(search_string);\n return regExp.test(utilsClass.stringifyRowValues(row, columns));\n };\n\n\n }\n\n\n /**\n * Build the RegExp (no need for global flag, as we only need\n * to find the value once in the string)\n * @param {string} str: The input text\n * @return {RegExp} The returned regex match\n */\n static stringtoRegEx(str: string): RegExp {\n str = utilsClass.matchMultipleSpace(utilsClass.escapeRegExp(str))\n\n return new RegExp(\".*\" + str + \".*\", 'i');\n }\n\n //white space representation in RegEX format\n static RX_SPACES$1 = /[\\s\\uFEFF\\xA0]+/g;\n //convert contiguous whitespace to \\s+ matches (Matches one or mutilples white spaces once)\n static matchMultipleSpace(str: string): string {\n return str.replace(utilsClass.RX_SPACES$1, '\\\\s+');\n }\n\n\n /**\n * Borrowed this function from SENTRY(The remote error loggers)\n *\n * Escapes special characters, except for whitespace, in a string to be\n * used inside a regular expression as a string literal.\n * @param {string} text The string.\n * @return {string} The escaped string literal.\n */\n static escapeRegExp(text: string): string {\n // $& means the whole matched string\n return text.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n /**\n * This function helps me paginate data and present the paginated data to the table component\n *\n * @param {string} rows The rows of data to be paginated.\n * @param {string} per_page An integer \n * @param {object} retain_expage_map Recently, I wanted to re-render components while using an updated row data(page_row_array)\n * but retaining all other property in the page_map. Thus I used this to do keep the \n * former pagemap I will be getting the data from\n * @return {ItableLinks} The Final data containing the paginated data and an array of all\n * pages involved in the pagination i.e 1,2,3,4,5 ..... n\n */\n static TableNumberLinks(rows: Irow[], per_page: number = 2, retain_expage_map?: IretainPage): ItableLinks {\n if (per_page < 1) throw Error(\"The rows per page must be greater than or equal to one(1)\");\n\n var page_maximum = per_page\n\n var rows_length = rows.length;\n\n var number_of_pages = Math.ceil(rows_length / page_maximum);\n\n var end_of_this_record: number, beginning_of_next_record: number = 0,\n remaining_rows: number, current_page: number = 0,\n page_number_list: number[] = [],\n page_map: IPaginated = {},\n total_data_count = rows.length;\n\n for (var i = 0; i < number_of_pages; ++i) {\n current_page++;\n\n end_of_this_record = page_maximum * current_page; //Get the end of record on this page\n\n //if there are 19 records, page_maximum = 5, when current_page = 4,\n //this number will be -1(negative), This is an instance\n remaining_rows = rows_length - end_of_this_record; //this can be negative\n\n page_number_list.push(current_page);\n\n var page_row_array: Irow[] | null = rows.slice(beginning_of_next_record, end_of_this_record);\n\n page_map[current_page] = {\n page_row_array: page_row_array,\n back_button_clickable: current_page === 1 ? false : true,\n forward_button_clickable: false,\n is_active: retain_expage_map ? retain_expage_map.active_number === current_page : current_page === 1,\n from_index: beginning_of_next_record,\n\n checked_set: retain_expage_map && retain_expage_map.page_map ?\n retain_expage_map.page_map[current_page].checked_set : new Set()\n }\n\n //check if there is a next page\n if (remaining_rows > 0) {\n page_map[current_page].forward_button_clickable = true;\n }\n //Delete the reference to this array here, So thr Gabage collector does not \n //Work too hard\n page_row_array = null;\n\n //Set the beginning of the next iteration\n beginning_of_next_record = end_of_this_record;\n }\n\n return {\n page_map,\n page_number_list,\n total_data_count\n }\n }\n\n}","import React from \"react\";\n\ninterface buttonProps extends Record<string, any>{\n\tuppercase ?: boolean;\n\ttext ?: string;\n\tpx ?: string;\n\tpy ?: string;\n\tchildren?:string;\n\tbg_color: string\n}\n\nexport default function Button(props: buttonProps) {\n\tconst {uppercase,className, text, px, py, children,bg_color, ...others} = props;\n\t\n\tvar myclass = `${uppercase ? 'uppercase ':' ' } ${px ? px:'px-5'} ${px ? px:'px-5'} ${py ? py:'py-2'}\n\t\t\t\t ${bg_color} \n\t\t\t\t appearance-none text-white rounded`;\n\tif (props.className) myclass = myclass+ \" \"+props.className;\n\n\t\n\t\n\treturn (\n\t\t<button className={myclass} {...others}>\n\t\t\t{props.children ? props.children : props.text}\n\t\t</button>\n\t)\n}\n\n\nButton.defaultProps = {\n uppercase: true\n};","import React from \"react\";\nexport default function CheckedBox<T extends Record<string, any>>(props?: T) {\n\treturn (\n\t\t<svg viewBox=\"0 0 512 512\" {...props} xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t<path d=\"m452 512h-392c-33.085938 0-60-26.914062-60-60v-392c0-33.085938 26.914062-60 60-60h392c33.085938 0 60 26.914062 60 60v392c0 33.085938-26.914062 60-60 60zm-392-472c-11.027344 0-20 8.972656-20 20v392c0 11.027344 8.972656 20 20 20h392c11.027344 0 20-8.972656 20-20v-392c0-11.027344-8.972656-20-20-20zm370.898438 111.34375-29.800782-26.6875-184.964844 206.566406-107.351562-102.046875-27.558594 28.988281 137.21875 130.445313zm0 0\"/>\n\t\t</svg>\n\t)\n}","import React from \"react\";\n\nexport default function UnCheckedBox<T extends Record<string, any>>(props?: T) {\n\treturn (\n\t\t<svg {...props} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.381 15.381\">\n\t\t\t<path d=\"M12.016 15.381h-8.65A2.83 2.83 0 01.54 12.556v-9.73A2.83 2.83 0 013.366 0h8.65a2.829 2.829 0 012.825 2.826v9.73a2.828 2.828 0 01-2.825 2.825zM3.366 1.305c-.839 0-1.521.683-1.521 1.521v9.73c0 .838.683 1.521 1.521 1.521h8.65c.839 0 1.521-.684 1.521-1.521v-9.73c0-.839-.683-1.521-1.521-1.521h-8.65z\" \n\t\t\t/>\n\t\t</svg> \n\t)\n}\n\n","import React from \"react\";\nexport default function IndeterminateCheckBox<T extends Record<string, any>>(props?: T) {\n\treturn (\n\t\t<svg {...props} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n\t\t\t<path d=\"M160.48 0h32v32h-32zM224.48 0h32v32h-32z\"/>\n\t\t\t<path d=\"M432 0H288.464v32H432c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H80c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h48.464V0H80C35.839.053.053 35.839 0 80v352c.053 44.161 35.839 79.947 80 80h352c44.161-.053 79.947-35.839 80-80V80c-.053-44.161-35.839-79.947-80-80z\"/>\n\t\t\t<path d=\"M128 240h256v32H128z\"/>\n\t\t</svg>\n\t)\n}","import React from \"react\";\nexport default function Import<T extends Record<string, any>>(props?: T) {\n\treturn (\n\t\t<svg {...props} viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t<path d=\"M13.6027 6.82763C13.55 6.8274 13.4977 6.83845 13.449 6.86013C13.4002 6.88182 13.3559 6.91371 13.3186 6.95396C13.2813 6.99422 13.2518 7.04204 13.2317 7.09468C13.2116 7.14732 13.2013 7.20373 13.2016 7.26066V11.1988C13.2009 11.7132 13.0113 12.2063 12.6744 12.57C12.3374 12.9337 11.8806 13.1383 11.4041 13.139H2.59988C2.12334 13.1383 1.66651 12.9337 1.32955 12.57C0.992586 12.2063 0.803007 11.7132 0.802382 11.1988V7.19614C0.802382 7.08129 0.760114 6.97115 0.684876 6.88993C0.609638 6.80872 0.507594 6.76309 0.401191 6.76309C0.294789 6.76309 0.192744 6.80872 0.117506 6.88993C0.0422682 6.97115 0 7.08129 0 7.19614V11.198C0.00166179 11.9406 0.275696 12.6522 0.76217 13.1773C1.24864 13.7024 1.90797 13.9982 2.59594 14H11.4041C12.092 13.9982 12.7514 13.7024 13.2378 13.1773C13.7243 12.6522 13.9983 11.9406 14 11.198V7.25982C13.9998 7.14585 13.958 7.03656 13.8836 6.95565C13.8092 6.87474 13.7083 6.82874 13.6027 6.82763Z\" />\n\t\t\t<path d=\"M7.28669 0.128207C7.21182 0.04706 7.11037 0.000998497 7.00428 -8.58307e-06C6.95166 -0.000116348 6.89955 0.0111771 6.85104 0.0332003C6.80253 0.0552235 6.7586 0.0875301 6.72187 0.128207L4.17234 2.88015C4.10036 2.96203 4.06085 3.07102 4.06222 3.18389C4.0636 3.29676 4.10575 3.40459 4.1797 3.48441C4.25365 3.56423 4.35355 3.60973 4.45812 3.61121C4.56268 3.61269 4.66366 3.57004 4.73952 3.49235L6.60308 1.48252L6.60308 10.2622C6.60308 10.3771 6.64536 10.4872 6.7206 10.5684C6.79584 10.6497 6.89788 10.6953 7.00428 10.6953C7.11069 10.6953 7.21273 10.6497 7.28797 10.5684C7.36321 10.4872 7.40547 10.3771 7.40547 10.2622L7.40547 1.48252L9.26825 3.49235C9.34412 3.57004 9.44509 3.61269 9.54966 3.61121C9.65423 3.60973 9.75413 3.56423 9.82808 3.48441C9.90202 3.40459 9.94418 3.29676 9.94555 3.18389C9.94693 3.07102 9.90741 2.96203 9.83543 2.88015L7.28669 0.128207Z\" />\n\t\t</svg>\n\t)\n}","import React from \"react\";\nexport default function Search<T extends Record<string, any>>(props?: T) {\n\treturn (\n\t\t<svg {...props} width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t<path opacity=\"0.5\" fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M12.764 11.6423L10.0844 8.99884C10.8382 8.05293 11.2918 6.86284 11.2918 5.56947C11.2918 2.4985 8.75914 0 5.64628 0C2.53269 0 0 2.4985 0 5.56947C0 8.63976 2.53269 11.1383 5.64628 11.1383C6.86596 11.1383 7.99377 10.7498 8.9183 10.0986L11.6232 12.7675C11.7809 12.9227 11.987 13 12.1939 13C12.4001 13 12.6063 12.9227 12.764 12.7675C13.0787 12.4569 13.0787 11.9535 12.764 11.6423ZM1.6127 5.56943C1.6127 3.37597 3.42269 1.59152 5.64648 1.59152C7.87027 1.59152 9.67881 3.37597 9.67881 5.56943C9.67881 7.76288 7.87027 9.54664 5.64648 9.54664C3.42269 9.54664 1.6127 7.76288 1.6127 5.56943Z\" fill=\"#626262\" />\n\t\t</svg>\n\t)\n}","import React, {Fragment, useState } from \"react\";\nimport Button from \"./Button\";\nimport CheckedBox from \"./svgs/CheckedBox\";\nimport UnCheckedBox from \"./svgs/UnCheckedBox\";\nimport IndeterminateCheckBox from \"./svgs/IndeterminateCheckBox\";\nimport Import from \"./svgs/Import\";\nimport Search from \"./svgs/search\";\nimport { Icolumn, Irow, renderFunction, IPaginated, IPerPage, stringRenderFunc } from \"./table-types\";\nimport utilsClass from \"./utilsClass\";\n\nexport interface ItableRow {\n\trow: Irow,\n\tcolumns: Icolumn[],\n\t/**\n\t * If users want to enable using bulk selects, then they have to pass in an array of strings of actions.\n\t * If that array of string is empty, then this will be false\n\t */\n\tuse_bulk_action: boolean,\n\tindex: number,\n\trender?: renderFunction,\n\tchecked_set: Set<number>,\n\tactive_page_number: number,\n\t/**\n\t * Whenever a single checkbox in a table row is clicked, this is invoked. Since I'm using a cotrolled input,\n\t * I therefore trigger an event up the tree to notify about this click. This is then recorded on the \n\t * `Set` that holds data of clicked rows for this page. \n\t */\n\tsetCheck: (page_number: number, index: number, ischecked: boolean) => void,\n\tis_striped: boolean,\n\tis_bordered:boolean,\n\tis_hovered:boolean,\n\trow_style: string,\n\tdata_style:string\n}\n\nexport function TableRow(props: ItableRow) {\n\n\treturn (\n\t\t<tr className={`${props.is_hovered ? \"hover:bg-gray-50 \":\"\"} \n\t\t\t\t\t\t${props.is_bordered ? \"border-b border-gray-200 \":\"\"} \n\t\t\t\t\t\t${utilsClass.isEven(props.index + 1) && props.is_striped? 'bg-gray-50 ' : ''}`\n\t\t\t\t\t\t+ props.row_style}>\n\n\t\t\t{props.use_bulk_action &&\n\t\t\t\t<td className={\"px-2 py-4 pl-4 text-base \"+ props.data_style}>\n\t\t\t\t\t<input className=\"w-4 h-4\" type=\"checkbox\"\n\t\t\t\t\t\tchecked={props.checked_set.has(props.index)}\n\t\t\t\t\t\tonChange={(ev) => props.setCheck(props.active_page_number, props.index, ev.target.checked)} />\n\t\t\t\t</td>\n\t\t\t}\n\n\t\t\t{\n\t\t\t\tprops.columns.map((column: Icolumn, index: number) => {\n\t\t\t\t\treturn <TableData key={index.toString()} \n\t\t\t\t\t\t\t\t\t col={column} \n\t\t\t\t\t\t\t\t\t row={props.row} \n\t\t\t\t\t\t\t\t\t render={props.render}\n\t\t\t\t\t\t\t\t\t style={props.data_style} />\n\t\t\t\t})\n\t\t\t}\n\t\t</tr>\n\t)\n}\n\n\n\nexport function TableData(props: { col: Icolumn, row: Irow, render?: renderFunction, style:string }) {\n\n\tvar display_value = utilsClass.unwindObject(props.row, props.col.field);\n\treturn (\n\t\t<td className={\"px-2 py-4 text-sm \"+props.style} >\n\n\t\t\t{\n\t\t\t\t(props.render && props.render(props.row, props.col, display_value)) || display_value\n\t\t\t}\n\t\t</td>\n\t)\n}\n\ninterface Ithead {\n\tcolumns: Icolumn[],\n\tuse_bulk_action: boolean,\n\tpage_data: IPerPage,\n\tactive_page_number: number,\n\tmass_checking: (page_number: number, action: \"check-all\" | \"uncheck-all\") => void,\n\trow_style: string,\n\tdata_style: string\n}\n\nexport function TableHead(props: Ithead) {\n\n\tlet page = props.active_page_number;\n\tlet rows_lenth : number = 0;\n\tlet checked_length : number = 0;\n\tlet all_is_checked : boolean = false;\n\tlet some_ischecked : boolean = false;\n\tlet none_is_checked : boolean = false;\n\n\t//Only run this calculations if user opted to use bulk select api and the table data is not empty\n\tif(props.use_bulk_action){\n\t\t//This data might be undefined, so use this operator\n\t\trows_lenth = props.page_data?.page_row_array.length;\n\t\tchecked_length = props.page_data?.checked_set.size;\n\t\tall_is_checked = rows_lenth === checked_length && rows_lenth !== 0;\n\t\tsome_ischecked = checked_length > 0 && !all_is_checked;\n\t\tnone_is_checked = checked_length === 0;\n\t}\n\n\n\tconst display_columns = props.columns.filter((column: Icolumn) => {\n\t\t//Dont show columns the developer indicated should be false\n\t\treturn column.use_in_display !== false;\n\t});\n\n\treturn <tr className={\"bg-yellow-50 text-left \"+props.row_style} >\n\n\t\t{\n\t\t\tprops.use_bulk_action &&\n\t\t\t<th className={\"text-base font-semibold text-gray-700 py-3.5 px-2 pl-4 \"+props.data_style} >\n\t\t\t\t{\n\t\t\t\t\tall_is_checked && < CheckedBox onClick={() => props.mass_checking(page, 'uncheck-all')}\n\t\t\t\t\t\tclassName=\"bulk-checkbox fill-current w-5 h-5 cursor-pointer\" />\n\t\t\t\t}\n\n\t\t\t\t{\n\t\t\t\t\tsome_ischecked && < IndeterminateCheckBox onClick={() => props.mass_checking(page, 'check-all')}\n\t\t\t\t\t\tclassName=\"bulk-checkbox indeterminate fill-current w-5 h-5 cursor-pointer\" />\n\t\t\t\t}\n\n\t\t\t\t{\n\t\t\t\t\tnone_is_checked && < UnCheckedBox onClick={() => props.mass_checking(page, 'check-all')}\n\t\t\t\t\t\tclassName=\"bulk-checkbox fill-current w-5 h-5 cursor-pointer\" />\n\t\t\t\t}\n\t\t\t</th>\n\t\t}\n\n\t\t{\n\t\t\tdisplay_columns.map((column: Icolumn, index) => {\n\t\t\t\t// if item is the first in array, then padd left\n\t\t\t\t// if it is last, then pad right\n\t\t\t\treturn <th key={index.toString()}\n\t\t\t\t\t\t className={`text-base font-semibold text-black py-3.5 px-2 \n\t\t\t \t\t\t\t\t${!props.use_bulk_action && index === 0 ? 'pl-4 ' : ''}\n\t\t\t \t\t\t\t\t${index === (display_columns.length - 1) ? 'pr-4 ' : ''} ` +props.data_style}\n\t\t\t\t\t\t>\n\t\t\t\t\t{column.use ? column.use : column.field}\n\t\t\t\t</th>\n\n\t\t\t})\n\t\t}\n\t</tr>\n}\n\nexport function TableCaption(props: { text: string, style:string }) {\n\treturn <div className={\"flex mt-4 px-4 mb-1 text-base font-semibold tracking-wide leading-7 text-gray-700 \"+ props.style}>\n\t\t<h4 className=\" ml-1 react-table-top-caption\">\n\t\t\t{props.text}\n\t\t</h4>\n\t</div>\n}\n\n\nexport function TableSearch(props: { onSearch: (text: string) => void, style: string }) {\n\n\treturn <div className=\"relative flex items-center mt-3 md:mt-0 table-top-search\">\n\t\t<input type=\"text\" name=\"search\"\n\t\t\tclassName={`text-xs py-2 h-10 px-4 pl-6 w-52 md:w-auto focus:outline-none leading-9 tracking-wide \n\t\t\ttext-gray-700 border border-gray-300 bg-gray-100 rounded-lg `+ props.style}\n\t\t\tplaceholder=\"SEARCH\"\n\t\t\tonChange={(ev: React.ChangeEvent<HTMLInputElement>) => props.onSearch(ev.target.value)} />\n\t\t<Search className=\"absolute w-2.5 h-2.5 ml-2\" style={{ top: '0.9rem' }} />\n\t</div>\n\n}\n\ninterface IexportProps {\n\texport_text: string, \n\tpaginated_data: IPaginated, \n\tcols: Icolumn[], \n\tfile_name: string, \n\tprocessFunc?: stringRenderFunc, \n\tbg_color?: string, \n\ttext_color: string,\n\tstyle: string\n}\nexport function TableExport(props: IexportProps) {\n\treturn <div className={`export-btn flex items-center ${props.text_color} cursor-pointer order-first md:order-none self-end md:self-auto `+props.style}\n\t\tonClick={() => processDownload(props.paginated_data, props.cols,props.file_name, props.processFunc)} id=\"export-it\">\n\t\t<Import className=\"fill-current w-3 h-3 mr-2 \" />\n\t\t<p className=\"font-normal text-base\">{props.export_text}</p>\n\t</div>\n\n}\n\nexport function TableTop(props: { children?: React.ReactNode, style:string }) {\n\treturn <Fragment>\n\t\t{\n\t\t\tprops.children && <div className={\"flex flex-col md:flex-row md:items-center py-2 justify-between px-4 mt-4 mb-2 react-table-top \"+props.style} >\n\t\t\t\t{props.children}\n\t\t\t</div>\n\t\t}\n\t</Fragment>\n\n}\n\n\nexport interface ItableActProps { \n\taction_options: string[], \n\teventSelected: (option: string) => void, \n\tbg_color : string, \n\ttext_color ?: string,\n\tdropdown_style: string,\n\tbutton_style: string,\n\tbutton_text: string\n}\nexport function TableBulkAction(props: ItableActProps) {\n\n\tconst [currentOption, setOption] = useState('nothing');\n\tlet isNothing = currentOption === 'nothing';\n\n\tfunction optionChange(event: React.ChangeEvent<HTMLSelectElement>) {\n\t\tlet value = event.target.value;\n\t\tsetOption(value)\n\t}\n\n\t/**\n\t * When the `Button` element below is pressed, this function fires the event to the prop passed in by the user.\n\t */\n\tfunction takeAction(){\n\t\tif (!isNothing) {\n\t\t\t//The rows selected are not passed in here, the parent table component is allowed to figure out\n\t\t\t//The logic of getting the currently selected rows and sending to the user\n\t\t\tprops.eventSelected(currentOption);\n\t\t}\n\t}\n\n\treturn <div className=\"flex items-center mt-3 md:mt-0 bulk-select-dropdown\">\n\t\t<div className=\"w-52 md:w-48 relative mr-2 flex \">\n\t\t\t<select\n\t\t\t\tonChange={optionChange}\n\t\t\t\tvalue={currentOption}\n\t\t\t\tclassName={`leading-tight block appearance-none w-full bg-white flex-shrink \n\t\t\t\t\t\t\t\t border border-gray-200 px-3 py-2 pr-8 rounded `+ props.dropdown_style}>\n\t\t\t\t<option value=\"nothing\">Select ...</option>\n\t\t\t\t{\n\t\t\t\t\tprops.action_options.map((value: string, index: number) => {\n\t\t\t\t\t\treturn <option key={index.toString()} value={value}>{value}</option>\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t</select>\n\t\t\t<div className=\"pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-gray-300\">\n\t\t\t\t<svg className=\"fill-current h-4 w-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n\t\t\t\t\t<path d=\"M9.293 12.95l.707.707L15.657 8l-1.414-1.414L10 10.828 5.757 6.586 4.343 8z\" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<Button bg_color={props.bg_color} px=\"px-4\" \n\t\t\t\tclassName={`bulk-action-button ${isNothing?'opacity-50':''} leading-4 `+props.button_style} \n\t\t\t\tdisabled={isNothing}\n\t\t\t\tuppercase={false} \n\t\t\t\tonClick={takeAction} >{props.button_text}</Button>\n\t</div>\n}\n\n\ninterface Ifooter {\n\tpage_number_list: number[],\n\tpaginated_map: IPaginated,\n\tactive_page: number,\n\ttotal_pages: number,\n\tonPageChange: (page_number: number) => void,\n\tbg_color: string,\n\tmain_style: string,\n\tstatistics_main_style: string,\n\tstatistics_number_style: string,\n\tnumber_box_Style: string\n}\n\nexport function Footer(props: Ifooter) {\n\tconst { active_page, page_number_list, paginated_map,main_style,\n\t\t\tstatistics_main_style,statistics_number_style,number_box_Style} = props;\n\t// statistics_number_style\n\n\tlet page_count = props.page_number_list.length;\n\n\n\tfunction pageClick(page_number: number) {\n\t\tprops.onPageChange(page_number);\n\t}\n\n\tfunction nextBackBtnClick(direction: \"nxt\" | \"bck\") {\n\t\tif (direction === \"nxt\" && paginated_map[active_page].forward_button_clickable) {\n\t\t\tprops.onPageChange(active_page + 1);\n\t\t\treturn;\n\t\t}\n\t\tif (direction === \"bck\" && paginated_map[active_page].back_button_clickable) {\n\t\t\tprops.onPageChange(active_page - 1);\n\t\t\treturn;\n\t\t}\n\n\t}\n\n\treturn page_count > 0 ?\n\t\t<div className={\"flex flex-col md:flex-row justify-between mt-6 items-center px-2 w-full md:w-auto \"+main_style}>\n\t\t\t<div>\n\t\t\t\t<p className={\"text-sm \"+statistics_main_style}>\n\t\t\t\t\tShowing\n\t\t\t\t<span className={\"font-bold \"+statistics_number_style}> {paginated_map[active_page].from_index + 1} </span> \n\t\t\t\tto\n\t\t\t\t<span className={\"font-bold \"+statistics_number_style}> {paginated_map[active_page].from_index + paginated_map[active_page].page_row_array.length} </span> \n\t\t\t\tof\n\t\t\t\t<span className={\"font-bold \"+statistics_number_style}> {props.total_pages} </span>entries\n\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t<div className=\"flex rounded overflow-hidden border mt-2 md:mt-0 w-full md:w-auto\">\n\n\t\t\t\t<div className={`back-button text-sm w-7 h-7 md:w-8 md:h-8 flex items-center justify-around border-r \n\t\t\t\t\t\t\t ${paginated_map[active_page].back_button_clickable ?\n\t\t\t\t\t\t\t ' cursor-pointer ' : ' cursor-not-allowed '} \n\t\t\t\t\t\t\t ${paginated_map[active_page].back_button_clickable ?'text-gray-700' : 'text-gray-400'} \n\t\t\t\t\t\t\t `+number_box_Style}\n\t\t\t\t\t onClick={() => nextBackBtnClick('bck')}>\n\t\t\t\t\t<p>\n\t\t\t\t\t\t<svg className=\"transform rotate-180 fill-current\" width=\"6\" height=\"10\" viewBox=\"0 0 6 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t<path d=\"M0.772277 9.90938L0.837937 9.85312L5.73111 5.60312C5.89682 5.45937 6 5.24375 6 5.00313C6 4.7625 5.89369 4.54688 5.73111 4.40312L0.847317 0.15625L0.766024 0.0843749C0.687858 0.0312499 0.59406 0 0.494007 0C0.221991 0 0 0.23125 0 0.51875V9.48125C0 9.76875 0.221991 10 0.494007 10C0.597186 10 0.694111 9.96562 0.772277 9.90938Z\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\n\t\t\t\t{\n\t\t\t\t\t/**\n\t\t\t\t\t * I want each line to have between 7-9 boxes of pagination, This logic solved it\n\t\t\t\t\t * This implementation also had mobile view in mind. To make sure the pagination numbers do not \n\t\t\t\t\t * over stretch the mobile screen\n\t\t\t\t\t */\n\n\t\t\t\t\t/* Else */\n\t\t\t\t\tpage_number_list.length <= 7 ?\n\t\t\t\t\t\t//If total number of items in list is just less than or equal to seven\n\t\t\t\t\t\t//Then don't border implementing the algorithm below\n\t\t\t\t\t\tpage_number_list.map((page_number) => {\n\t\t\t\t\t\t\tlet is_active_page = page_number === active_page;\n\t\t\t\t\t\t\treturn <NumberBox key={page_number} \n\t\t\t\t\t\t\t\t\t\t\t is_active_page={is_active_page}\n\t\t\t\t\t\t\t\t\t\t\t page_number={page_number} \n\t\t\t\t\t\t\t\t\t\t\t pageClick={pageClick}\n\t\t\t\t\t\t\t\t\t\t\t bg_color={props.bg_color}\n\t\t\t\t\t\t\t\t\t\t\t style={number_box_Style} />\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\t/* Else IF */\n\t\t\t\t\t\t: active_page >= 1 && active_page <= 6 ?\n\t\t\t\t\t\t\t/* if the active page is nin the beginning of the pagination list*/\n\t\t\t\t\t\t\t<ActivePageBegining pageClick={pageClick} page_number_list={page_number_list}\n\t\t\t\t\t\t\t\tactive_page={active_page} bg_color={props.bg_color} style={number_box_Style} />\n\n\t\t\t\t\t\t\t/* Else IF The current active page is at the ending of the Pagination list*/\n\t\t\t\t\t\t\t: active_page >= page_count - 5 && active_page <= page_count ?\n\t\t\t\t\t\t\t\t<ActivePageEnding pageClick={pageClick} page_number_list={page_number_list}\n\t\t\t\t\t\t\t\t\tactive_page={active_page} bg_color={props.bg_color} style={number_box_Style} />\n\n\t\t\t\t\t\t\t\t/* Else the active page is in the middle of the pagination list*/\n\t\t\t\t\t\t\t\t: <ActivePageMiddle pageClick={pageClick} page_number_list={page_number_list}\n\t\t\t\t\t\t\t\t\tactive_page={active_page} bg_color={props.bg_color} style={number_box_Style}/>\n\t\t\t\t}\n\n\n\n\t\t\t\t<div className={`next-button text-sm w-7 h-7 md:w-8 md:h-8 flex items-center justify-around border-r \n\t\t\t\t\t\t\t ${paginated_map[active_page].forward_button_clickable ?\n\t\t\t\t\t\t\t ' cursor-pointer ' : ' cursor-not-allowed '} \n\t\t\t\t\t\t\t ${paginated_map[active_page].forward_button_clickable ?'text-gray-700' : 'text-gray-400'} \n\t\t\t\t\t\t\t `+number_box_Style}\n\t\t\t\t\tonClick={() => nextBackBtnClick('nxt')}>\n\t\t\t\t\t<p >\n\t\t\t\t\t\t<svg className=\"fill-current\" width=\"6\" height=\"10\" viewBox=\"0 0 6 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t<path d=\"M0.772277 9.90938L0.837937 9.85312L5.73111 5.60312C5.89682 5.45937 6 5.24375 6 5.00313C6 4.7625 5.89369 4.54688 5.73111 4.40312L0.847317 0.15625L0.766024 0.0843749C0.687858 0.0312499 0.59406 0 0.494007 0C0.221991 0 0 0.23125 0 0.51875V9.48125C0 9.76875 0.221991 10 0.494007 10C0.597186 10 0.694111 9.96562 0.772277 9.90938Z\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\n\n\t\t\t</div>\n\t\t</div>\n\n\t\t: null;\n}\n\nexport interface IPageNumberGroup{\n\tpage_number_list: number[]; \n\tactive_page: number; \n\tpageClick: (page: number) => void, \n\tbg_color: string, \n\tstyle: string \n}\n\nfunction ActivePageBegining(props:IPageNumberGroup) {\n\n\t//Get the page that is last\n\tlet last_page: number = props.page_number_list[props.page_number_list.length - 1];\n\treturn <Fragment>\n\t\t{\n\t\t\tprops.page_number_list.slice(0, 7).map((page_number) => {\n\t\t\t\tlet is_active_page = page_number === props.active_page;\n\t\t\t\treturn <NumberBox key={page_number} is_active_page={is_active_page} style={props.style}\n\t\t\t\t\t\t\t\t page_number={page_number} pageClick={props.pageClick} bg_color={props.bg_color} />\n\t\t\t})\n\t\t}\n\n\t\t<DottedBox />\n\n\t\t<NumberBox page_number={last_page} is_active_page={false} style={props.style}\n\t\t\t\t pageClick={props.pageClick} bg_color={props.bg_color}/>\n\n\t</Fragment>\n\n}\n\nfunction ActivePageMiddle(props: IPageNumberGroup) {\n\n\t//Get the page that is last\n\tlet first_page: number = props.page_number_list[0];\n\tlet page_count = props.page_number_list.length;\n\tlet last_page: number = props.page_number_list[page_count - 1];\n\n\treturn <Fragment>\n\n\t\t{/* The First */}\n\t\t<NumberBox page_number={first_page} is_active_page={false} style={props.style}\n\t\t\t\t pageClick={props.pageClick} bg_color={props.bg_color} />\n\n\t\t<DottedBox />\n\n\t\t{\n\t\t\tprops.page_number_list.slice(props.active_page - 4, props.active_page + 3).map((page_number) => {\n\t\t\t\tlet is_active_page = page_number === props.active_page;\n\t\t\t\treturn <NumberBox key={page_number} is_active_page={is_active_page} style={props.style}\n\t\t\t\t\t\t\t\t page_number={page_number} pageClick={props.pageClick} bg_color={props.bg_color} />\n\t\t\t})\n\t\t}\n\n\t\t<DottedBox />\n\t\t{/* The last */}\n\n\t\t<NumberBox page_number={last_page} is_active_page={false} style={props.style}\n\t\t\t\t pageClick={props.pageClick} bg_color={props.bg_color} />\n\n\n\t</Fragment>\n\n}\n\n\n\nfunction ActivePageEnding(props:IPageNumberGroup) {\n\n\t//Get the page that is last\n\tlet first_page: number = props.page_number_list[0];\n\tlet page_count = props.page_number_list.length;\n\treturn <Fragment>\n\n\t\t<NumberBox page_number={first_page} is_active_page={false} style={props.style}\n\t\t\t\t pageClick={props.pageClick} bg_color={props.bg_color} />\n\n\t\t<DottedBox />\n\t\t{\n\t\t\tprops.page_number_list.slice(page_count - 7, page_count).map((page_number) => {\n\t\t\t\tlet is_active_page = page_number === props.active_page;\n\t\t\t\treturn <NumberBox key={page_number} is_active_page={is_active_page} style={props.style}\n\t\t\t\t\t\t\t\t page_number={page_number} pageClick={props.pageClick} bg_color={props.bg_color} />\n\t\t\t})\n\t\t}\n\n\t</Fragment>\n\n}\n\n\n\nfunction DottedBox() {\n\n\treturn <div className=\"w-7 h-7 md:w-8 md:h-8 flex flex-grow items-center justify-around border-r \">\n\t\t<p className=\"text-sm text-gray-700 \">\n\t\t\t<span className=\"hidden md:flex\"> . . . </span>\n\t\t\t<span className=\"flex md:hidden\"> ... </span>\n\t\t</p>\n\t</div>\n}\n\nexport interface IBoxNumber{ \n\tpage_number: number, \n\tis_active_page: boolean, \n\tpageClick: (page: number) => void, \n\tbg_color:string,\n\tstyle:string\n}\n\nfunction NumberBox(props: IBoxNumber) {\n\treturn <div className={`text-sm w-7 h-7 md:w-8 md:h-8 flex items-center flex-grow flex-shrink \n\t\t\t\t\t\t\tmd:flex-shrink-0 justify-around border-r cursor-pointer \n\t\t\t\t\t\t\t${props.is_active_page ? props.bg_color : ''}\n\t\t\t\t\t\t\t${props.is_active_page ? ' text-white ' : ''}`+ props.style}\n\t\tonClick={() => props.pageClick(props.page_number)}>\n\t\t<p>\n\t\t\t{\n\t\t\t\tprops.page_number\n\t\t\t}\n\t\t</p>\n\t</div>\n}\n\n\nasync function processDownload(paginated_data: IPaginated, colums: Icolumn[],file_name: string, processFunc?: stringRenderFunc) {\n\n\tlet all_rows: Irow[] | null = [];\n\tvar page: string; //suppose to be :number\n\t file_name = file_name +\".csv\";\n\tfor (page in paginated_data) {\n\t\tall_rows = all_rows.concat(paginated_data[page].page_row_array)\n\t}\n\n\n\tlet blob = await utilsClass.generateCSV(colums, all_rows, processFunc), \n\t\turl = window.URL.createObjectURL(blob);\n\n\t// @ts-ignore\n\tif (window.navigator.msSaveOrOpenBlob) // IE hack; see http://msdn.microsoft.com/en-us/library/ie/hh779016.aspx\n\t\twindow.navigator.msSaveBlob(blob, file_name);\n\telse {\n\t\tvar link = document.createElement(\"a\");\n\t\tlink.setAttribute(\"href\", url);\n\t\tlink.setAttribute(\"download\", file_name);\n\t\tdocument.body.appendChild(link); // Required for Fire fox\n\n\t\tlink.click(); // This will download the data file named \"my_data.csv\".\n\n\t\tsetTimeout(() => {\n\t\t\twindow.URL.revokeObjectURL(url);\n\t\t\tdocument.body.removeChild(link);\n\t\t\tall_rows = null;\n\t\t}, 0)\n\t}\n}\n\n","import PropTypes from 'prop-types';\nimport React from \"react\";\nimport { Icolumn, Iprop, Irow, Istate, ItableLinks, IPerPage, IretainPage, ItableStyle } from \"./table-types\";\nimport utilsClass from \"./utilsClass\";\nimport {\n\tFooter, TableBulkAction, TableCaption, TableExport,\n\tTableHead, TableRow, TableSearch, TableTop\n} from \"./table-sub-components\";\nimport \"./css/tailwind.css\";\n\n// bulk_action_options\nexport default class ReactTailwindTable extends React.Component<Iprop, Istate> {\n\n\tstatic propTypes: {};\n\tstatic defaultProps: {};\n\tpublic state: Istate;\n\n\t/**\n\t * When ever a search happens, it is debounced for `this.props.debounce_search` seconds in case user \n\t * input is steady. This property holds the debounced funtion gotten from @see {@link utilsClass.debounce}\n\t */\n\tprivate processFilterdebounce !: (...input: any) => void;\n\n\tconstructor(public props: Iprop) {\n\t\tsuper(props);\n\n\t\tthis.state = this.initialPaginateSetup(this.props.rows, this.props.per_page as number);\n\t}\n\n\t//remmber the render function has been called before we perform these margics\n\tcomponentDidUpdate(prevProps: Iprop, prevState: Istate, _snapshot: any) {\n\t\t//If the component update was initiated inside the component it self \n\t\t//Then do not recompute changes\n\t\tif (prevState !== this.state) return;\n\n\t\t//Since this calculation can get expensive for large data set, I decided to run it in a \n\t\t// promise\n\t\tnew Promise((resolve, _reject) => {\n\t\t\t//If the length of the data sent in has changed, then recompute entirely, Don't border about retaining\n\t\t\t//state or active page number\n\t\t\tif (this.props.rows.length !== prevProps.rows.length || this.props.per_page !== prevProps.per_page) {\n\t\t\t\tthis.setState(this.initialPaginateSetup(this.props.rows, this.props.per_page as number));\n\t\t\t} else {\n\n\t\t\t\tthis.setState(this.initialPaginateSetup(this.props.rows, this.props.per_page as number, {\n\t\t\t\t\tactive_number: this.state.active_page_number,\n\t\t\t\t\tpage_map: this.state.paginated_map\n\t\t\t\t}));\n\t\t\t}\n\n\t\t\tresolve(true);\n\t\t})\n\t\t// console.log(prevProps === this.props,\"Props are the same\");\n\t\t// console.log(prevState === this.state,\"States are the same\");\n\t}\n\n\tprivate bulkActClick = (_option: string) => {\n\t\n\t\tif(this.props.on_bulk_action){\n\t\t\t//The set containing page numbers of selected rows\n\t\t\tlet selectedIndexes = this.state.paginated_map[this.state.active_page_number].checked_set;\n\t\t\tlet selectedRows = this.state.active_rows.filter((_val,index) => selectedIndexes.has(index));\n\n\t\t\tthis.props.on_bulk_action(_option,selectedRows);\n\t\t}\n\n\t}\n\n\tprivate onSearch = (search_text: string) => {\n\n\t\tlet trim_search = utilsClass.ltrim(search_text, \" \", \"\", true);\n\t\ttrim_search = utilsClass.rtrim(trim_search, \" \", \"\", true);\n\n\t\t//If search text is an empty or space string, then do not bother searching\n\t\tif (trim_search) {\n\t\t\t//Make sure The debounce function is set only once\n\t\t\tif (!this.processFilterdebounce) {\n\t\t\t\tthis.processFilterdebounce = utilsClass.debounce(this.processFilter, this.props.debounce_search as number);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Still search with the original input. \n\t\t\t * Note that the search debounce is now calling `this.processFilter` function as registered above.\n\t\t\t * Sending in the filterFunctionas its input\n\t\t\t */\n\t\t\tthis.processFilterdebounce(utilsClass.filterFunction(search_text, this.props.columns),search_text); \n\n\t\t} else { //Once the search field is cleared totally. Load the table with the original data from the user\n\t\t\t//clear all active debaounces set from if statement above\n\t\t\t(this.processFilterdebounce as any)?.clear()\n\t\t\tnew Promise((resolve, _reject) => {\n\n\t\t\t\tthis.setState(this.initialPaginateSetup(this.props.rows, this.props.per_page as number));\n\t\t\t\tresolve(true);\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * A function that uses a promise to filter all rows using a search keyword typed into the \n\t * Search input bar.\n\t * @param filter_function \n\t */\n\tprivate processFilter = (filter_function: (row: Irow) => boolean, search_word:string) => {\n\t\t// The Rows been searched can be very long, So I put this action\n\t\t//In a Promise, So it does not slow down The UI\n\t\tnew Promise<Irow[]>((resolve) => {\n\t\t\tlet result = this.props.rows.filter(filter_function)\n\t\t\tthis.setState(this.initialPaginateSetup(result, this.props.per_page as number));\n\t\t\tresolve(result)\n\t\t}).then((rows: Irow[]) => {\n\t\t\t//Once the re-render has been processed, fire an event if the user registered a listener\n\t\t\tif(this.props.on_search) this.props.on_search(search_word, rows);\n\t\t})\n\n\t}\n\n\tprivate massChecking = (page_number: number, action: \"check-all\" | \"uncheck-all\") => {\n\t\t//Clone the current state, no need to recompute the pagination logic\n\t\tlet state_clone: Istate | null = { ...this.state };\n\t\tlet page_data: IPerPage | null = state_clone.paginated_map[page_number];\n\n\t\tpage_data.page_row_array.forEach((_value, index) => {\n\t\t\tif (action === 'check-all') (page_data as IPerPage).checked_set.add(index);\n\t\t\telse if (action === 'uncheck-all') (page_data as IPerPage).checked_set.delete(index);\n\t\t});\n\t\tthis.setState(state_clone);\n\n\t\tstate_clone = null;\n\t\tpage_data = null;\n\n\t}\n\n\tprivate checkBoxCheck = (page_number: number, index: number, ischecked: boolean) => {\n\t\tlet state_clone: Istate | null = { ...this.state };\n\t\t//Once any member of the checkbox is checked, quickly set it in the state\n\t\tlet set = state_clone.paginated_map[page_number].checked_set;\n\t\tif (ischecked) set.add(index);\n\t\telse set.delete(index)\n\n\t\tthis.setState(state_clone);\n\t\t//Let the garbage collector do cleaning easier\n\t\tstate_clone = null;\n\n\t}\n\n\tprivate getTotalPages(): number {\n\t\t// return this.props.total_page_count ?? this.state.total_rows_count;\n\t\treturn this.state.total_rows_count;\n\t}\n\n\tprivate onPageChange = (page_number: number) => {\n\t\tlet state_clone: Istate | null = { ...this.state };\n\n\t\t//Set the active status of the `about to be former page` to false\n\t\tstate_clone.paginated_map[state_clone.active_page_number].is_active = false;\n\t\tstate_clone.active_page_number = page_number;\n\n\t\t//Set the now new page to active\n\t\tstate_clone.paginated_map[page_number].is_active = true;\n\t\tstate_clone.active_rows = state_clone.paginated_map[page_number].page_row_array;\n\n\t\tthis.setState(state_clone);\n\n\t\t//Let the garbage collector do cleaning easier\n\t\tstate_clone = null;\n\t}\n\n\n\tprivate initialPaginateSetup(rows: Irow[], rows_count: number, retain_page?: IretainPage): Istate {\n\n\t\tlet paginated_values: ItableLinks = utilsClass.TableNumberLinks(rows, rows_count, retain_page);\n\t\tconst active_pg_num = retain_page ? retain_page.active_number : 1;\n\t\treturn {\n\t\t\tactive_rows: paginated_values.page_number_list.length > 0 ? \n\t\t\t\tpaginated_values.page_map[active_pg_num].page_row_array : [],\n\t\t\tpage_number_list: paginated_values.page_number_list,\n\t\t\tpaginated_map: paginated_values.page_map,\n\t\t\tactive_page_number: active_pg_num,\n\t\t\ttotal_rows_count: paginated_values.total_data_count\n\t\t}\n\t}\n\n\t/**\n\t * Checks if there are bulk selected items in the table\n\t * @returns boolean\n\t */\n\tprivate isBulkSelected(): boolean {\n\t\tlet setOfSelectedRowsIndexes = this.state.paginated_map[this.state.active_page_number]?.checked_set;\n\n\t\treturn setOfSelectedRowsIndexes ? setOfSelectedRowsIndexes.size > 0 : false;\n\n\t}\n\n\tprivate getStylingProps(): ItableStyle{\n\t\tlet styling = this.props.styling as ItableStyle;\n\t\tif(styling ){\n\t\t\tstyling.base_bg_color = styling.base_bg_color ?? base_bg_color;\n\t\t\tstyling.base_text_color = styling.base_text_color ?? base_text_color;\n\t\t}\n\t\telse{\n\t\t\tstyling = {\n\t\t\t\tbase_bg_color: base_bg_color,\n\t\t\t\tbase_text_color: base_text_color\n\t\t\t}\n\t\t}\n\n\t\treturn styling;\n\t}\n\n\n\trender() {\n\t\tlet styling = this.getStylingProps();\n\t\tconst display_columns = this.props.columns.filter((column: Icolumn) => {\n\t\t\t//Dont show columns the developer indicated should be false\n\t\t\treturn column.use_in_display !== false;\n\t\t});\n\n\t\t//dont show the bulk select button if there are no data from user or from search\n\t\t//Also don't show the bulk select if then user did not send in an array of `bulk_select_options` props\n\t\tconst useBulk = this.state.page_number_list.length < 1 ?\n\t\t\tfalse : (this.props.bulk_select_options as string[]).length > 0 ? true : false\n\t\treturn <div className={`bg-white w-full flex flex-col pb-5 ${styling.main ?? ''}`} style={{ \"boxShadow\": \"0px 2px 8px rgba(0, 0, 0, 0.04)\" }}>\n\t\t\t{/* Table Caption*/\n\t\t\t\tthis.props.table_header && <TableCaption text={this.props.table_header} style={styling?.top?.title ?? \"\"} />\n\t\t\t}\n\n\t\t\t{\n\t\t\t\t<TableTop style={styling?.top?.elements?.main ?? \"\"}>\n\t\t\t\t\t{ this.props.show_search && \n\t\t\t\t\t\t<TableSearch onSearch={this.onSearch} style={styling?.top?.elements?.search ?? \"\"} />}\n\t\t\t\t\t{\n\t\t\t\t\t\tuseBulk && this.isBulkSelected() ? <TableBulkAction action_options={this.props.bulk_select_options as string[]} \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\teventSelected={this.bulkActClick}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbutton_text={this.props.bulk_select_button_text as string}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbg_color={styling.base_bg_color as string}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdropdown_style={styling?.top?.elements?.bulk_select?.main ?? \"\"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbutton_style ={styling?.top?.elements?.bulk_select?.button ?? \"\"} />\n\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t{ \n\t\t\t\t\t\tthis.props.should_export && <TableExport export_text={this.props.export_text as string}\n\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t paginated_data={this.state.paginated_map}\n\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t cols={this.props.columns}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t file_name={this.props.export_csv_file as string}\n\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t processFunc={this.props.export_modify}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t text_color={styling.base_text_color as string}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t style={styling?.top?.elements?.export ?? \"\"}/> \n\t\t\t\t\t}\n\n\t\t\t\t</TableTop>\n\t\t\t}\n\t\t<div className=\"overflow-x-auto\">\n\t\t\t<table className=\"table-auto border-collapse w-full\">\n\t\t\t\t<thead >\n\t\t\t\t\t<TableHead columns={display_columns} use_bulk_action={useBulk}\n\t\t\t\t\t\tactive_page_number={this.state.active_page_number}\n\t\t\t\t\t\tpage_data={this.state.paginated_map[this.state.active_page_number]}\n\t\t\t\t\t\tmass_checking={this.massChecking} \n\t\t\t\t\t\trow_style={styling?.table_head?.table_row ?? \"\"}\n\t\t\t\t\t\tdata_style={styling?.table_head?.table_data ?? \"\"} />\n\t\t\t\t</thead>\n\n\t\t\t\t<tbody className={\"text-sm font-normal text-gray-700 \"+styling?.table_body?.main??\"\"}>\n\t\t\t\t\t{\n\t\t\t\t\t\t(this.state.active_rows.length > 0 &&\n\t\t\t\t\t\t\t(this.state.active_rows as Irow[]).map((row: Irow, index: number) =>\n\t\t\t\t\t\t\t\t<TableRow key={index.toString()} row={row} columns={display_columns}\n\t\t\t\t\t\t\t\t\tuse_bulk_action={useBulk}\n\t\t\t\t\t\t\t\t\trender={this.props.row_render} index={index}\n\t\t\t\t\t\t\t\t\tactive_page_number={this.state.active_page_number}\n\t\t\t\t\t\t\t\t\tchecked_set={this.state.paginated_map[this.state.active_page_number].checked_set}\n\t\t\t\t\t\t\t\t\tsetCheck={this.checkBoxCheck}\n\t\t\t\t\t\t\t\t\tis_striped ={this.props.striped as boolean}\n\t\t\t\t\t\t\t\t\tis_bordered ={this.props.bordered as boolean}\n\t\t\t\t\t\t\t\t\tis_hovered={this.props.hovered as boolean} \n\t\t\t\t\t\t\t\t\trow_style={styling?.table_body?.table_row ?? \"\"}\n\t\t\t\t\t\t\t\t\tdata_style={styling?.table_body?.table_data ?? \"\"} />\n\t\t\t\t\t\t\t)) ||\n\n\t\t\t\t\t\t<tr className=\"hover:bg-table-col bg-table-col border-b border-gray-200 \">\n\t\t\t\t\t\t\t<td className=\"px-4 py-4 text-center\"\n\t\t\t\t\t\t\t\tcolSpan={display_columns.length} >\n\n\t\t\t\t\t\t\t\t{this.props.no_content_text}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t\t\t<Footer page_number_list={this.state.page_number_list}\n\t\t\t\tpaginated_map={this.state.paginated_map}\n\t\t\t\tactive_page={this.state.active_page_number}\n\t\t\t\ttotal_pages={this.getTotalPages()}\n\t\t\t\tonPageChange={this.onPageChange}\n\t\t\t\tbg_color={styling.base_bg_color as string}\n\t\t\t\tmain_style = {styling?.footer?.main ?? \"\"} \n\t\t\t\tstatistics_main_style = {styling?.footer?.statistics?.main ?? \"\"}\n\t\t\t\tstatistics_number_style = {styling?.footer?.statistics?.bold_numbers ?? \"\"} \n\t\t\t\tnumber_box_Style = {styling?.footer?.page_numbers ?? \"\"}/>\n\t\t</div>\n\t}\n\n}\n\nconst tableTopProps = PropTypes.shape({\n\ttitle: PropTypes.string,\n\telements: PropTypes.shape({\n\t\tmain: PropTypes.string,\n\t\tsearch: PropTypes.string,\n\t\tbulk_select: PropTypes.shape({\n\t\t\tmain: PropTypes.string,\n\t\t\tbutton: PropTypes.string\n\t\t}),\n\t\texport: PropTypes.string\n\t})\n})\n\nReactTailwindTable.propTypes = {\n\t/**\n\t * TODO: Implement server side render for table \n\t * @param props \n\t * @param propName \n\t * @param componentName \n\t * @returns \n\tuse_server_side: function(props: Record<string, any>, propName: string, componentName: string): Error | undefined {\n\t\tlet value = props[propName];\n\t\tif (value === undefined) return;\n\t\t\n\t\tif (typeof value !== \"boolean\") {\n\t\t\treturn new Error(\n\t\t\t\t`Prop '${propName}' must be boolean '${typeof value}' given. \" \n\t\t\t\t '${componentName}' Validation failed.`)\n\t\t}\n\t\tif (value === true && !utilsClass.isInteger(props['total_page_count'])) {\n\t\t\treturn new Error(\n\t\t\t\t`If prop ' ${propName} ' is 'true', Then total_page_count must be supplied too. \n\t\t\t\t '${componentName}' Validation failed.`\n\t\t\t);\n\t\t}\n\n\t\treturn;\n\n\t},\n\t*/\n\n\tshow_search: PropTypes.bool,\n\tshould_export: PropTypes.bool,\n\t// use_server_side: PropTypes.bool,\n\tdebounce_search: PropTypes.number,\n\ttotal_page_count: PropTypes.number,\n\tper_page: PropTypes.number,\n\n\trows: PropTypes.array.isRequired,\n\tcolumns: PropTypes.array.isRequired,\n\n\trow_render: PropTypes.func,\n\texport_modify: PropTypes.func,\n\ton_search: PropTypes.func,\n\ton_bulk_action: PropTypes.func,\n\n\tno_content_text: PropTypes.string,\n\ttable_header: PropTypes.string,\n\texport_text: PropTypes.string,\n\tbulk_select_options: PropTypes.arrayOf(PropTypes.string),\n\tstriped: PropTypes.bool,\n\tbordered: PropTypes.bool,\n\tstyling: PropTypes.shape({\n\t\tbase_bg_color: PropTypes.string,\n\t\tbase_text_color: PropTypes.string,\n\t\tmain: PropTypes.string,\n\t\ttop: tableTopProps,\n\t\ttable_head: PropTypes.shape({\n\t\t\ttable_row: PropTypes.string,\n\t\t\ttable_data: PropTypes.string\n\t\t}),\n\t\ttable_body:PropTypes.shape({\n\t\t\tmain: PropTypes.string,\n\t\t\ttable_row: PropTypes.string,\n\t\t\ttable_data: PropTypes.string\n\t\t}),\n\t\tfooter: PropTypes.shape({\n\t\t\tmain: PropTypes.string,\n\t\t\tstatistics: PropTypes.shape({\n\t\t\t\tmain: PropTypes.string,\n\t\t\t\tbold_numbers: PropTypes.string\n\t\t\t}),\n\t\t\tpage_numbers: PropTypes.string\n\t\t})\n\t}),\n}\n\nReactTailwindTable.defaultProps = {\n\tno_content_text: 'No Data Availaible',\n\tper_page: 10,\n\tdebounce_search: 300,\n\tshow_search: true,\n\tshould_export: true,\n\tbulk_select_options: [],\n\texport_text: 'Export',\n\texport_csv_file: \"download\",\n\tbulk_select_button_text:\"Apply\",\n\tstriped: true,\n\tbordered: true,\n\thovered:true,\n};\n\nconst base_bg_color = \"bg-pink-700\";\nconst base_text_color = \"text-pink-700\"\n\n"],"names":["b","Symbol","for","c","d","e","f","g","h","k","l","m","n","p","q","r","t","v","w","x","y","z","a","u","$$typeof","type","A","process","env","NODE_ENV","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","typeOf","object","$$typeofType","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isConcurrentMode","exports","console","module","require$$0","require$$1","getOwnPropertySymbols","Object","hasOwnProperty","prototype","propIsEnumerable","propertyIsEnumerable","toObject","val","TypeError","assign","test1","String","getOwnPropertyNames","test2","i","fromCharCode","map","join","test3","split","forEach","letter","keys","err","shouldUseNative","target","source","from","symbols","to","s","arguments","length","key","call","printWarning","ReactPropTypesSecret","loggedTypeFailures","has","Function","bind","text","message","error","Error","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","name","ex","stack","resetWarningCache","emptyFunctionThatReturnsNull","emptyFunction","emptyFunctionWithReset","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","ReactPropTypes","array","createPrimitiveTypeChecker","bool","func","number","string","symbol","any","createChainableTypeChecker","arrayOf","typeChecker","props","propName","propFullName","PropTypeError","propValue","Array","isArray","getPropType","element","elementType","ReactIs","isValidElementType","instanceOf","expectedClass","constructor","node","isNode","objectOf","propType","oneOf","expectedValues","validate","is","valuesString","JSON","stringify","value","getPreciseType","oneOfType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","shape","shapeTypes","exact","allKeys","this","checkType","isRequired","secret","chainedCheckType","expectedType","every","iteratorFn","maybeIterable","getIteratorFn","step","entries","next","done","entry","RegExp","isSymbol","Date","PropTypes","isElement","shim","getShim","require$$2","utilsClass","ltrim","trimString","regexp","replaceWith","more","allowRegex","trim","isInteger","input","Number","isFinite","Math","floor","rtrim","dir","regex_special","includes","regMe","add","replace","isObjectEqual","other","toString","indexOf","valueLen","compare","item1","item2","itemType","isEven","limit","wait","debounce","timeout","throtBounce","context","args","throttler","undefined","apply","window","clearTimeout","setTimeout","clear","unwindObject","obj","field","fields","field_length","recuObje","rolled_time","generateCSV","columns","items","exportModify","columns_array","final_csv","column","use_in_export","push","use","Promise","resolve","row","rowArray","display_value","Blob","stringifyObjectValues","sort","filter","sanitizeRow","final_obj","len","use_in_search","stringifyRowValues","filterFunction","search_string","stringtoRegEx","test","str","matchMultipleSpace","escapeRegExp","RX_SPACES$1","TableNumberLinks","rows","per_page","retain_expage_map","end_of_this_record","remaining_rows","page_maximum","rows_length","number_of_pages","ceil","beginning_of_next_record","current_page","page_number_list","page_map","total_data_count","page_row_array","slice","back_button_clickable","forward_button_clickable","is_active","active_number","from_index","checked_set","Set","Button","uppercase","px","py","bg_color","others","myclass","className","React","children","CheckedBox","viewBox","xmlns","UnCheckedBox","IndeterminateCheckBox","Import","fill","Search","width","height","opacity","fillRule","clipRule","TableRow","is_hovered","is_bordered","index","is_striped","row_style","use_bulk_action","data_style","checked","onChange","ev","setCheck","active_page_number","TableData","col","render","style","TableHead","page","rows_lenth","checked_length","all_is_checked","some_ischecked","none_is_checked","page_data","_props$page_data","_props$page_data2","size","display_columns","use_in_display","onClick","mass_checking","TableCaption","TableSearch","placeholder","onSearch","top","TableExport","text_color","paginated_data","colums","file_name","processFunc","all_rows","concat","blob","url","URL","createObjectURL","navigator","msSaveOrOpenBlob","msSaveBlob","link","document","createElement","setAttribute","body","appendChild","click","revokeObjectURL","removeChild","processDownload","cols","id","export_text","TableTop","TableBulkAction","useState","currentOption","setOption","isNothing","event","dropdown_style","action_options","button_style","disabled","eventSelected","button_text","Footer","active_page","paginated_map","statistics_number_style","number_box_Style","page_count","pageClick","page_number","onPageChange","nextBackBtnClick","direction","main_style","statistics_main_style","total_pages","NumberBox","is_active_page","ActivePageBegining","ActivePageEnding","ActivePageMiddle","last_page","DottedBox","defaultProps","ReactTailwindTable","_this","_option","on_bulk_action","selectedIndexes","state","selectedRows","active_rows","_val","search_text","trim_search","processFilterdebounce","processFilter","debounce_search","_reject","setState","initialPaginateSetup","filter_function","search_word","result","then","on_search","action","state_clone","_value","ischecked","set","componentDidUpdate","prevProps","prevState","_snapshot","_this2","getTotalPages","total_rows_count","rows_count","retain_page","paginated_values","active_pg_num","isBulkSelected","setOfSelectedRowsIndexes","_this$state$paginated","getStylingProps","styling","base_bg_color","base_text_color","useBulk","bulk_select_options","main","boxShadow","table_header","_styling$top","title","_styling$top2","elements","_styling$top2$element","show_search","_styling$top3","_styling$top3$element","search","bulkActClick","bulk_select_button_text","_styling$top4","_styling$top4$element","bulk_select","_styling$top4$element2","_styling$top5","_styling$top5$element","_styling$top5$element2","button","should_export","export_csv_file","export_modify","_styling$top6","_styling$top6$element","massChecking","table_head","_styling$table_head","table_row","_styling$table_head2","table_data","table_body","_styling$table_body","_this3","row_render","checkBoxCheck","striped","bordered","hovered","_styling$table_body2","_styling$table_body3","colSpan","no_content_text","footer","_styling$footer","_styling$footer2","statistics","_styling$footer2$stat","_styling$footer3","_styling$footer3$stat","bold_numbers","_styling$footer4","page_numbers","Component","tableTopProps","export","propTypes","total_page_count"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.modern.js","sources":["../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../src/utilsClass.ts","../src/Button.tsx","../src/svgs/CheckedBox.tsx","../src/svgs/UnCheckedBox.tsx","../src/svgs/IndeterminateCheckBox.tsx","../src/svgs/Import.tsx","../src/svgs/search.tsx","../src/table-sub-components.tsx","../src/index.tsx"],"sourcesContent":["/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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';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?\nSymbol.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;\nfunction 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;\nexports.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};\nexports.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};\nexports.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;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n 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);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n 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.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\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 * 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 * 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 printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\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\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 (has(typeSpecs, 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 if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\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 printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\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'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\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\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\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 = '<<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 elementType: createElementTypeTypeChecker(),\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 var err = new Error(\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 err.name = 'Invariant Violation';\n throw err;\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 printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. 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 );\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(emptyFunctionThatReturnsNull);\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 createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\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 if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\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, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(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 (has(propValue, 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' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\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 // falsy value can't be a Symbol\n if (!propValue) {\n return false;\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.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\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'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\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 var err = new Error(\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 err.name = 'Invariant Violation';\n throw err;\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 elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\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\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\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')(ReactIs.isElement, 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","import { Irow, Icolumn, IPaginated, ItableLinks, IretainPage, stringRenderFunc } from \"./table-types\"\n/**\n * This class helps run minor utilities needed by our application to quickly process \n * data and get stuff done\n */\nexport default class utilsClass {\n \n static regex_special = [\n \"ˆ\", \"$\", \"*\", \"+\", \"?\",\n \"[\", \"]\", \"(\", \")\", \"{\",\n \"}\", \"\\\\\", \".\", \"\\\\t\",\n \"\\\\n\", \"\\\\r\", \"\\\\f\",\n \"\\\\v\", \"\\\\s\", \"\\\\w\",\n \"\\\\d\", \"\\\\D\", \"\\\\b\",\n \"\\\\W\", \"\\\\B\", \"\\\\0\", \"\\\\xxx\",\n \"\\\\xdd\", \"\\\\uxxxx\", \"\\\\cxxx\"\n ]\n // new RegExp(\"\\D\");\n\n /**\n * Performs a left trim as done by \n * {@link utilsClass.trim}\n * Thus removing a single or repeating character from the rightmost part of \n * a string\n */\n static ltrim(trimString: string, regexp: string, replaceWith: string, more = false, allowRegex = false) {\n\n return utilsClass.trim(trimString, regexp, replaceWith, more, \"l\", allowRegex)\n }\n\n static isInteger(input: any) {\n return function(): (val: any) => boolean {\n return Number.isInteger || function(value) {\n return typeof value === 'number' &&\n isFinite(value) &&\n Math.floor(value) === value;\n }\n }()(input)\n }\n\n /**\n * Performs a right trim as done by \n * {@link utilsClass.trim}\n * Thus removing a single or repeating character from the leftmost part of \n * a string\n */\n static rtrim(trimString: string, regexp: string, replaceWith: string, more = false, allowRegex = false) {\n\n return utilsClass.trim(trimString, regexp, replaceWith, more, \"r\", allowRegex)\n }\n\n\n /**\n * Trims a sertain character from a string. This does both left and right trimming\n *\n * @param trimString The string to be trimmed.\n * @param regexp A character to remove from the string.\n * @param replaceWith The character or string to put in place of the replaced string.\n * @param more if `true`, then it replacement occures for more than a single occurence, else it replaces just \n * One occurence.\n ** @param dir Decides if it should be a right or left trim\n ** @param allowRegex Does not escape input search element\n * \n */\n static trim(trimString: string, regexp: string, replaceWith: string, more = false, dir: \"r\" | \"l\", allowRegex = false) {\n\n if (!allowRegex && utilsClass.regex_special.includes(regexp)) regexp = \"\\\\\" + regexp;\n\n // if true, then remove more than one occurence of this string\n let add = more && regexp ? \"*\" : \"?\";\n\n let regMe;\n\n if (dir === \"r\") regMe = new RegExp(\"[\" + regexp + \"]\" + add + \"$\");\n else regMe = new RegExp(\"^[\" + regexp + \"]\" + add);\n\n return trimString.replace(regMe, replaceWith);\n }\n\n /**\n * A Function to determine if two objects are arrays are equal\n *\n * V = value, O= object, O = other,T = Type, OOT = Other Object Type\n */\n static isObjectEqual<VT, OT, VOT extends Record<string, any>, OOT extends Record<string, any>>(value: VT[] | VOT, other: OT[] | OOT) {\n\n // Get the value type\n var type = Object.prototype.toString.call(value);\n\n // If the two objects are not the same type, return false\n if (type !== Object.prototype.toString.call(other)) return false;\n\n // If items are not an object or array, return false\n if (['[object Array]', '[object Object]'].indexOf(type) < 0) return false;\n\n // Compare the length of the length of the two items\n var valueLen = type === '[object Array]' ? (value as VT[]).length : Object.keys(value as VOT).length;\n var otherLen = type === '[object Array]' ? (other as OT[]).length : Object.keys(other as OOT).length;\n if (valueLen !== otherLen) return false;\n\n //Some arrays or objects might be pointing to the same refence,\n // So we test their equality. It will help us not to loop inside objects multiple times \n // @ts-ignore\n if (value === other) return true;\n\n // console.log(\"IF Equal\");\n // Compare properties\n if (type === '[object Array]') {\n for (var i = 0; i < valueLen; i++) {\n\n if (utilsClass.compare((value as VT[])[i], (other as OT[])[i]) === false) return false;\n }\n } else {\n for (var key in value) {\n\n if (value.hasOwnProperty(key)) {\n if (utilsClass.compare((value as VOT)[key], (other as OOT)[key]) === false) return false;\n }\n }\n }\n\n // If nothing failed, return true\n return true;\n\n };\n\n /**\n * Compare Primitives, Might be number, string, array , objects or arrays\n */\n static compare<Item1T, Item2T, obj1T extends Record<string, any>, Obj2T extends Record<string, any>>(item1: string | number | Item1T[] | obj1T, item2: string | number | Item2T[] | Obj2T) {\n\n // Get the object type\n var itemType = Object.prototype.toString.call(item1);\n\n //I splitted this two comparison because of typescript typing.\n\n // If an array, compare recursively\n if (itemType === '[object Array]') {\n\n if (!utilsClass.isObjectEqual(item1 as Item1T[], item2 as Item2T[])) return false;\n }\n\n // If an object, compare recursively\n if (itemType === '[object Object]') {\n\n if (!utilsClass.isObjectEqual(item1 as obj1T, item2 as Obj2T)) return false;\n }\n\n // Otherwise, do a simple comparison\n else {\n\n // If the two items are not the same type, return false\n if (itemType !== Object.prototype.toString.call(item2)) return false;\n\n // Else if it's a function, convert to a string and compare\n // Otherwise, just compare\n if (itemType === '[object Function]') {\n if (item1.toString() !== item2.toString()) return false;\n } else {\n if (item1 !== item2) return false;\n }\n\n }\n\n return true;\n }\n\n /**\n * Tests if this given value is even.\n * @returns {boolean}\n */\n static isEven(value: number) {\n return (value & 1) === 0;\n };\n\n /**\n * Internal function used to implement `utilsClass.throttle` and `utilsClass.debounce`.\n * @param {Function} func: function to be invoked.\n * @param {number} wait: The amount of milliseconds to wait before executing the said function.\n *\n * Borrowed from https://github.com/jashkenas/underscore/commit/9e3e067f5025dbe5e93ed784f93b233882ca0ffe\n */\n static limit<D extends Function>(func: D, wait: number, debounce: boolean): (...input: any) => void {\n var timeout: number | undefined;\n\n function throtBounce(this: D, input: any) {\n var context = this,\n args = arguments;\n var throttler = function() {\n timeout = undefined;\n func.apply(context, args);\n };\n //The first ever time this function will be called, timeout will be null\n //This first cleartimeout will clear nothing, subsequently, it will be clearing any setup\n //callback awaiting execution. Uses Javascript event loop\n if (debounce) window.clearTimeout(timeout);\n\n //The case of !timeout is to invoke the function just once for case of throttle\n if (debounce || !timeout) timeout = window.setTimeout(throttler, wait);\n };\n\n throtBounce.clear = () => window.clearTimeout(timeout);\n return throtBounce\n };\n\n\n /**\n * Returns a function, that, when invoked, will only be triggered at most once\n * during a given window of time.\n *\n * TODO: allow to set if this callback should be invoked at the \n * \"Beginning\" or \"End\" of the time out\n * Currently it is invoked at the end\n */\n static throttle = function(func: Function, wait: number) {\n return utilsClass.limit(func, wait, false);\n };\n\n /** \n * Returns a \"function\"(rememeber to implement the function), that, \n * as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds.\n */\n static debounce = function(func: Function, wait: number) {\n return utilsClass.limit(func, wait, true);\n };\n\n\n static unwindObject(obj: Record<string, any>, field: string): string {\n\n //The fields passed in might be \".\" delimmeted, so i \n //Use a loop to enter the object and get out the final needed value\n\n //e,g {player:{me:{she:\"woman\"}}}\n //To get the value woman, the field should be \n //\"player.me.she\"\n var fields = field.split('.');\n var field_length = fields.length;\n if (field_length <= 1) {\n return obj[field] as string;\n }\n\n var recuObje: any = { ...obj };\n\n var rolled_time: number = 0;\n\n\n while (rolled_time < field_length) {\n\n recuObje = recuObje[fields[rolled_time]];\n\n rolled_time++;\n }\n\n /*\n to understand this while loop\n assume a length of array is called things with three elements\n things 3 (0,1,2)\n n = 0\n i) things[0] n=1\n ii) things[1] n=2\n ii) things[2] n=3\n */\n return recuObje;\n }\n\n static generateCSV(columns: Icolumn[], items: Irow[], exportModify?: stringRenderFunc) {\n\n let columns_array: string[] = [];\n let final_csv = \"\";\n\n columns.forEach(function(column: Icolumn) {\n\n if(column.use_in_export === false) return;\n\n columns_array.push(column.use ?? column.field)\n\n });\n\n final_csv = columns_array.join(\",\")+ '\\n';\n\n return new Promise<Blob>(function(resolve){\n //Wrap this operation in a promise since it might be CPU intensive\n items.forEach(function(row: Irow) {\n let rowArray: Array<string> = [];\n \n columns.forEach(function(column: Icolumn) {\n if(column.use_in_export === false) return;\n var display_value = utilsClass.unwindObject(row, column.field);\n if(exportModify) display_value = exportModify(row, column,display_value)\n \n //to escape a comma in excel, I use this string. it was realized by i and dotun \n //on smart eye.\n rowArray.push('\"'+display_value+'\"');\n \n });\n \n if (rowArray.length >0) final_csv = final_csv + rowArray.join(\",\")+ '\\n';\n });\n \n var blob = new Blob([final_csv], {type: \"octet/stream\"});\n \n resolve(blob);\n });\n \n }\n\n\n /**\n * Recursively stringifies the values of an object, space separated, in an\n * SSR safe deterministic way (keys are storted before stringification)\n *\n * ex:\n * ```json \n * { b: 3, \n * c: { z: 'zzz', d: null, e: 2 }, \n * d: [10, 12, 11], \n * a: 'one' \n * }\n * ```\n * becomes\n * 'one 3 2 zzz 10 12 11'\n *\n * Primatives (numbers/strings) are returned as-is\n * Null and undefined values are filtered out\n * Dates are converted to their native string format\n */\n static stringifyObjectValues(val: Record<string, any> | any): string {\n if (typeof val === 'undefined' || val === null) {\n /* istanbul ignore next */\n return '';\n }\n\n if (val instanceof Object && !(val instanceof Date)) {\n // Arrays are also object, and keys just returns the array indexes\n // Date objects we convert to strings\n return Object.keys(val).sort()\n /* sort to prevent SSR issues on pre-rendered sorted tables */\n .filter(function(v) {\n return v !== undefined && v !== null;\n })\n /* ignore undefined/null values */\n .map(function(k: string) {\n return utilsClass.stringifyObjectValues(val[k]);\n }).join(' ');\n }\n\n return String(val);\n }\n\n\n //For each column that has its use_in_search property to be false\n //It will not be included in the search \n static sanitizeRow(row: Irow, columns: Icolumn[]): object {\n var final_obj: Record<string, any> = {};\n \n for (var i = 0, len = columns.length; i < len; ++i) {\n if (columns[i].use_in_search === false) {\n continue;\n }\n //Fetch the data needed from the data row as we do with when displaying in table\n //We need to do this, since a row might be a nested object\n final_obj[columns[i].field] = utilsClass.unwindObject(row, columns[i].field);\n }\n\n return final_obj;\n }\n\n\n //This has Turned Irow interface to string now\n static stringifyRowValues(row: Irow, column: Icolumn[]): string {\n\n return (typeof row === \"object\" && row !== null) ?\n utilsClass.stringifyObjectValues(utilsClass.sanitizeRow(row, column)) :\n '';\n }\n\n /**\n *\n * Generates a filter function for the search string\n */\n static filterFunction(search_string: string, columns: Icolumn[]): (row: Irow) => boolean {\n /**\n * This searches all row values (and sub property values) in the entire (excluding\n * columns with use_in_search === false), because we convert the record to a space-separated\n * string containing all the value properties (recursively).\n * Users can ignore filtering on specific fields, or on only certain fields,\n */\n return function ffn(row: Irow) {\n\n // Generated function returns true if the criteria matches part of\n // the serialized data, otherwise false\n var regExp = utilsClass.stringtoRegEx(search_string);\n return regExp.test(utilsClass.stringifyRowValues(row, columns));\n };\n\n\n }\n\n\n /**\n * Build the RegExp (no need for global flag, as we only need\n * to find the value once in the string)\n * @param {string} str: The input text\n * @return {RegExp} The returned regex match\n */\n static stringtoRegEx(str: string): RegExp {\n str = utilsClass.matchMultipleSpace(utilsClass.escapeRegExp(str))\n\n return new RegExp(\".*\" + str + \".*\", 'i');\n }\n\n //white space representation in RegEX format\n static RX_SPACES$1 = /[\\s\\uFEFF\\xA0]+/g;\n //convert contiguous whitespace to \\s+ matches (Matches one or mutilples white spaces once)\n static matchMultipleSpace(str: string): string {\n return str.replace(utilsClass.RX_SPACES$1, '\\\\s+');\n }\n\n\n /**\n * Borrowed this function from SENTRY(The remote error loggers)\n *\n * Escapes special characters, except for whitespace, in a string to be\n * used inside a regular expression as a string literal.\n * @param {string} text The string.\n * @return {string} The escaped string literal.\n */\n static escapeRegExp(text: string): string {\n // $& means the whole matched string\n return text.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n /**\n * This function helps me paginate data and present the paginated data to the table component\n *\n * @param {string} rows The rows of data to be paginated.\n * @param {string} per_page An integer \n * @param {object} retain_expage_map Recently, I wanted to re-render components while using an updated row data(page_row_array)\n * but retaining all other property in the page_map. Thus I used this to do keep the \n * former pagemap I will be getting the data from\n * @return {ItableLinks} The Final data containing the paginated data and an array of all\n * pages involved in the pagination i.e 1,2,3,4,5 ..... n\n */\n static TableNumberLinks(rows: Irow[], per_page: number = 2, retain_expage_map?: IretainPage): ItableLinks {\n if (per_page < 1) throw Error(\"The rows per page must be greater than or equal to one(1)\");\n\n var page_maximum = per_page\n\n var rows_length = rows.length;\n\n var number_of_pages = Math.ceil(rows_length / page_maximum);\n\n var end_of_this_record: number, beginning_of_next_record: number = 0,\n remaining_rows: number, current_page: number = 0,\n page_number_list: number[] = [],\n page_map: IPaginated = {},\n total_data_count = rows.length;\n\n for (var i = 0; i < number_of_pages; ++i) {\n current_page++;\n\n end_of_this_record = page_maximum * current_page; //Get the end of record on this page\n\n //if there are 19 records, page_maximum = 5, when current_page = 4,\n //this number will be -1(negative), This is an instance\n remaining_rows = rows_length - end_of_this_record; //this can be negative\n\n page_number_list.push(current_page);\n\n var page_row_array: Irow[] | null = rows.slice(beginning_of_next_record, end_of_this_record);\n\n page_map[current_page] = {\n page_row_array: page_row_array,\n back_button_clickable: current_page === 1 ? false : true,\n forward_button_clickable: false,\n is_active: retain_expage_map ? retain_expage_map.active_number === current_page : current_page === 1,\n from_index: beginning_of_next_record,\n\n checked_set: retain_expage_map && retain_expage_map.page_map ?\n retain_expage_map.page_map[current_page].checked_set : new Set()\n }\n\n //check if there is a next page\n if (remaining_rows > 0) {\n page_map[current_page].forward_button_clickable = true;\n }\n //Delete the reference to this array here, So thr Gabage collector does not \n //Work too hard\n page_row_array = null;\n\n //Set the beginning of the next iteration\n beginning_of_next_record = end_of_this_record;\n }\n\n return {\n page_map,\n page_number_list,\n total_data_count\n }\n }\n\n}","import React from \"react\";\n\ninterface buttonProps extends Record<string, any>{\n\tuppercase ?: boolean;\n\ttext ?: string;\n\tpx ?: string;\n\tpy ?: string;\n\tchildren?:string;\n\tbg_color: string\n}\n\nexport default function Button(props: buttonProps) {\n\tconst {uppercase,className, text, px, py, children,bg_color, ...others} = props;\n\t\n\tvar myclass = `${uppercase ? 'uppercase ':' ' } ${px ? px:'px-5'} ${px ? px:'px-5'} ${py ? py:'py-2'}\n\t\t\t\t ${bg_color} \n\t\t\t\t appearance-none text-white rounded`;\n\tif (props.className) myclass = myclass+ \" \"+props.className;\n\n\t\n\t\n\treturn (\n\t\t<button className={myclass} {...others}>\n\t\t\t{props.children ? props.children : props.text}\n\t\t</button>\n\t)\n}\n\n\nButton.defaultProps = {\n uppercase: true\n};","import React from \"react\";\nexport default function CheckedBox<T extends Record<string, any>>(props?: T) {\n\treturn (\n\t\t<svg viewBox=\"0 0 512 512\" {...props} xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t<path d=\"m452 512h-392c-33.085938 0-60-26.914062-60-60v-392c0-33.085938 26.914062-60 60-60h392c33.085938 0 60 26.914062 60 60v392c0 33.085938-26.914062 60-60 60zm-392-472c-11.027344 0-20 8.972656-20 20v392c0 11.027344 8.972656 20 20 20h392c11.027344 0 20-8.972656 20-20v-392c0-11.027344-8.972656-20-20-20zm370.898438 111.34375-29.800782-26.6875-184.964844 206.566406-107.351562-102.046875-27.558594 28.988281 137.21875 130.445313zm0 0\"/>\n\t\t</svg>\n\t)\n}","import React from \"react\";\n\nexport default function UnCheckedBox<T extends Record<string, any>>(props?: T) {\n\treturn (\n\t\t<svg {...props} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.381 15.381\">\n\t\t\t<path d=\"M12.016 15.381h-8.65A2.83 2.83 0 01.54 12.556v-9.73A2.83 2.83 0 013.366 0h8.65a2.829 2.829 0 012.825 2.826v9.73a2.828 2.828 0 01-2.825 2.825zM3.366 1.305c-.839 0-1.521.683-1.521 1.521v9.73c0 .838.683 1.521 1.521 1.521h8.65c.839 0 1.521-.684 1.521-1.521v-9.73c0-.839-.683-1.521-1.521-1.521h-8.65z\" \n\t\t\t/>\n\t\t</svg> \n\t)\n}\n\n","import React from \"react\";\nexport default function IndeterminateCheckBox<T extends Record<string, any>>(props?: T) {\n\treturn (\n\t\t<svg {...props} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n\t\t\t<path d=\"M160.48 0h32v32h-32zM224.48 0h32v32h-32z\"/>\n\t\t\t<path d=\"M432 0H288.464v32H432c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H80c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h48.464V0H80C35.839.053.053 35.839 0 80v352c.053 44.161 35.839 79.947 80 80h352c44.161-.053 79.947-35.839 80-80V80c-.053-44.161-35.839-79.947-80-80z\"/>\n\t\t\t<path d=\"M128 240h256v32H128z\"/>\n\t\t</svg>\n\t)\n}","import React from \"react\";\nexport default function Import<T extends Record<string, any>>(props?: T) {\n\treturn (\n\t\t<svg {...props} viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t<path d=\"M13.6027 6.82763C13.55 6.8274 13.4977 6.83845 13.449 6.86013C13.4002 6.88182 13.3559 6.91371 13.3186 6.95396C13.2813 6.99422 13.2518 7.04204 13.2317 7.09468C13.2116 7.14732 13.2013 7.20373 13.2016 7.26066V11.1988C13.2009 11.7132 13.0113 12.2063 12.6744 12.57C12.3374 12.9337 11.8806 13.1383 11.4041 13.139H2.59988C2.12334 13.1383 1.66651 12.9337 1.32955 12.57C0.992586 12.2063 0.803007 11.7132 0.802382 11.1988V7.19614C0.802382 7.08129 0.760114 6.97115 0.684876 6.88993C0.609638 6.80872 0.507594 6.76309 0.401191 6.76309C0.294789 6.76309 0.192744 6.80872 0.117506 6.88993C0.0422682 6.97115 0 7.08129 0 7.19614V11.198C0.00166179 11.9406 0.275696 12.6522 0.76217 13.1773C1.24864 13.7024 1.90797 13.9982 2.59594 14H11.4041C12.092 13.9982 12.7514 13.7024 13.2378 13.1773C13.7243 12.6522 13.9983 11.9406 14 11.198V7.25982C13.9998 7.14585 13.958 7.03656 13.8836 6.95565C13.8092 6.87474 13.7083 6.82874 13.6027 6.82763Z\" />\n\t\t\t<path d=\"M7.28669 0.128207C7.21182 0.04706 7.11037 0.000998497 7.00428 -8.58307e-06C6.95166 -0.000116348 6.89955 0.0111771 6.85104 0.0332003C6.80253 0.0552235 6.7586 0.0875301 6.72187 0.128207L4.17234 2.88015C4.10036 2.96203 4.06085 3.07102 4.06222 3.18389C4.0636 3.29676 4.10575 3.40459 4.1797 3.48441C4.25365 3.56423 4.35355 3.60973 4.45812 3.61121C4.56268 3.61269 4.66366 3.57004 4.73952 3.49235L6.60308 1.48252L6.60308 10.2622C6.60308 10.3771 6.64536 10.4872 6.7206 10.5684C6.79584 10.6497 6.89788 10.6953 7.00428 10.6953C7.11069 10.6953 7.21273 10.6497 7.28797 10.5684C7.36321 10.4872 7.40547 10.3771 7.40547 10.2622L7.40547 1.48252L9.26825 3.49235C9.34412 3.57004 9.44509 3.61269 9.54966 3.61121C9.65423 3.60973 9.75413 3.56423 9.82808 3.48441C9.90202 3.40459 9.94418 3.29676 9.94555 3.18389C9.94693 3.07102 9.90741 2.96203 9.83543 2.88015L7.28669 0.128207Z\" />\n\t\t</svg>\n\t)\n}","import React from \"react\";\nexport default function Search<T extends Record<string, any>>(props?: T) {\n\treturn (\n\t\t<svg {...props} width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t<path opacity=\"0.5\" fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M12.764 11.6423L10.0844 8.99884C10.8382 8.05293 11.2918 6.86284 11.2918 5.56947C11.2918 2.4985 8.75914 0 5.64628 0C2.53269 0 0 2.4985 0 5.56947C0 8.63976 2.53269 11.1383 5.64628 11.1383C6.86596 11.1383 7.99377 10.7498 8.9183 10.0986L11.6232 12.7675C11.7809 12.9227 11.987 13 12.1939 13C12.4001 13 12.6063 12.9227 12.764 12.7675C13.0787 12.4569 13.0787 11.9535 12.764 11.6423ZM1.6127 5.56943C1.6127 3.37597 3.42269 1.59152 5.64648 1.59152C7.87027 1.59152 9.67881 3.37597 9.67881 5.56943C9.67881 7.76288 7.87027 9.54664 5.64648 9.54664C3.42269 9.54664 1.6127 7.76288 1.6127 5.56943Z\" fill=\"#626262\" />\n\t\t</svg>\n\t)\n}","import React, {Fragment, useState } from \"react\";\nimport Button from \"./Button\";\nimport CheckedBox from \"./svgs/CheckedBox\";\nimport UnCheckedBox from \"./svgs/UnCheckedBox\";\nimport IndeterminateCheckBox from \"./svgs/IndeterminateCheckBox\";\nimport Import from \"./svgs/Import\";\nimport Search from \"./svgs/search\";\nimport { Icolumn, Irow, renderFunction, IPaginated, IPerPage, stringRenderFunc } from \"./table-types\";\nimport utilsClass from \"./utilsClass\";\n\nexport interface ItableRow {\n\trow: Irow,\n\tcolumns: Icolumn[],\n\t/**\n\t * If users want to enable using bulk selects, then they have to pass in an array of strings of actions.\n\t * If that array of string is empty, then this will be false\n\t */\n\tuse_bulk_action: boolean,\n\tindex: number,\n\trender?: renderFunction,\n\tchecked_set: Set<number>,\n\tactive_page_number: number,\n\t/**\n\t * Whenever a single checkbox in a table row is clicked, this is invoked. Since I'm using a cotrolled input,\n\t * I therefore trigger an event up the tree to notify about this click. This is then recorded on the \n\t * `Set` that holds data of clicked rows for this page. \n\t */\n\tsetCheck: (page_number: number, index: number, ischecked: boolean) => void,\n\tis_striped: boolean,\n\tis_bordered:boolean,\n\tis_hovered:boolean,\n\trow_style: string,\n\tdata_style:string\n}\n\nexport function TableRow(props: ItableRow) {\n\n\treturn (\n\t\t<tr className={`${props.is_hovered ? \"hover:bg-gray-50 \":\"\"} \n\t\t\t\t\t\t${props.is_bordered ? \"border-b border-gray-200 \":\"\"} \n\t\t\t\t\t\t${utilsClass.isEven(props.index + 1) && props.is_striped? 'bg-gray-50 ' : ''}`\n\t\t\t\t\t\t+ props.row_style}>\n\n\t\t\t{props.use_bulk_action &&\n\t\t\t\t<td className={\"px-2 py-4 pl-4 text-base \"+ props.data_style}>\n\t\t\t\t\t<input className=\"w-4 h-4\" type=\"checkbox\"\n\t\t\t\t\t\tchecked={props.checked_set.has(props.index)}\n\t\t\t\t\t\tonChange={(ev) => props.setCheck(props.active_page_number, props.index, ev.target.checked)} />\n\t\t\t\t</td>\n\t\t\t}\n\n\t\t\t{\n\t\t\t\tprops.columns.map((column: Icolumn, index: number) => {\n\t\t\t\t\treturn <TableData key={index.toString()} \n\t\t\t\t\t\t\t\t\t col={column} \n\t\t\t\t\t\t\t\t\t row={props.row} \n\t\t\t\t\t\t\t\t\t render={props.render}\n\t\t\t\t\t\t\t\t\t style={props.data_style} />\n\t\t\t\t})\n\t\t\t}\n\t\t</tr>\n\t)\n}\n\n\n\nexport function TableData(props: { col: Icolumn, row: Irow, render?: renderFunction, style:string }) {\n\n\tvar display_value = utilsClass.unwindObject(props.row, props.col.field);\n\treturn (\n\t\t<td className={\"px-2 py-4 text-sm \"+props.style} >\n\n\t\t\t{\n\t\t\t\t(props.render && props.render(props.row, props.col, display_value)) || display_value\n\t\t\t}\n\t\t</td>\n\t)\n}\n\ninterface Ithead {\n\tcolumns: Icolumn[],\n\tuse_bulk_action: boolean,\n\tpage_data: IPerPage,\n\tactive_page_number: number,\n\tmass_checking: (page_number: number, action: \"check-all\" | \"uncheck-all\") => void,\n\trow_style: string,\n\tdata_style: string\n}\n\nexport function TableHead(props: Ithead) {\n\n\tlet page = props.active_page_number;\n\tlet rows_lenth : number = 0;\n\tlet checked_length : number = 0;\n\tlet all_is_checked : boolean = false;\n\tlet some_ischecked : boolean = false;\n\tlet none_is_checked : boolean = false;\n\n\t//Only run this calculations if user opted to use bulk select api and the table data is not empty\n\tif(props.use_bulk_action){\n\t\t//This data might be undefined, so use this operator\n\t\trows_lenth = props.page_data?.page_row_array.length;\n\t\tchecked_length = props.page_data?.checked_set.size;\n\t\tall_is_checked = rows_lenth === checked_length && rows_lenth !== 0;\n\t\tsome_ischecked = checked_length > 0 && !all_is_checked;\n\t\tnone_is_checked = checked_length === 0;\n\t}\n\n\n\tconst display_columns = props.columns.filter((column: Icolumn) => {\n\t\t//Dont show columns the developer indicated should be false\n\t\treturn column.use_in_display !== false;\n\t});\n\n\treturn <tr className={\"bg-yellow-50 text-left \"+props.row_style} >\n\n\t\t{\n\t\t\tprops.use_bulk_action &&\n\t\t\t<th className={\"text-base font-semibold text-gray-700 py-3.5 px-2 pl-4 \"+props.data_style} >\n\t\t\t\t{\n\t\t\t\t\tall_is_checked && < CheckedBox onClick={() => props.mass_checking(page, 'uncheck-all')}\n\t\t\t\t\t\tclassName=\"bulk-checkbox fill-current w-5 h-5 cursor-pointer\" />\n\t\t\t\t}\n\n\t\t\t\t{\n\t\t\t\t\tsome_ischecked && < IndeterminateCheckBox onClick={() => props.mass_checking(page, 'check-all')}\n\t\t\t\t\t\tclassName=\"bulk-checkbox indeterminate fill-current w-5 h-5 cursor-pointer\" />\n\t\t\t\t}\n\n\t\t\t\t{\n\t\t\t\t\tnone_is_checked && < UnCheckedBox onClick={() => props.mass_checking(page, 'check-all')}\n\t\t\t\t\t\tclassName=\"bulk-checkbox fill-current w-5 h-5 cursor-pointer\" />\n\t\t\t\t}\n\t\t\t</th>\n\t\t}\n\n\t\t{\n\t\t\tdisplay_columns.map((column: Icolumn, index) => {\n\t\t\t\t// if item is the first in array, then padd left\n\t\t\t\t// if it is last, then pad right\n\t\t\t\treturn <th key={index.toString()}\n\t\t\t\t\t\t className={`text-base font-semibold text-black py-3.5 px-2 \n\t\t\t \t\t\t\t\t${!props.use_bulk_action && index === 0 ? 'pl-4 ' : ''}\n\t\t\t \t\t\t\t\t${index === (display_columns.length - 1) ? 'pr-4 ' : ''} ` +props.data_style}\n\t\t\t\t\t\t>\n\t\t\t\t\t{column.use ? column.use : column.field}\n\t\t\t\t</th>\n\n\t\t\t})\n\t\t}\n\t</tr>\n}\n\nexport function TableCaption(props: { text: string, style:string }) {\n\treturn <div className={\"flex mt-4 px-4 mb-1 text-base font-semibold tracking-wide leading-7 text-gray-700 \"+ props.style}>\n\t\t<h4 className=\" ml-1 react-table-top-caption\">\n\t\t\t{props.text}\n\t\t</h4>\n\t</div>\n}\n\n\nexport function TableSearch(props: { onSearch: (text: string) => void, style: string }) {\n\n\treturn <div className=\"relative flex items-center mt-3 md:mt-0 table-top-search\">\n\t\t<input type=\"text\" name=\"search\"\n\t\t\tclassName={`text-xs py-2 h-10 px-4 pl-6 w-52 md:w-auto focus:outline-none leading-9 tracking-wide \n\t\t\ttext-gray-700 border border-gray-300 bg-gray-100 rounded-lg `+ props.style}\n\t\t\tplaceholder=\"SEARCH\"\n\t\t\tonChange={(ev: React.ChangeEvent<HTMLInputElement>) => props.onSearch(ev.target.value)} />\n\t\t<Search className=\"absolute w-2.5 h-2.5 ml-2\" style={{ top: '0.9rem' }} />\n\t</div>\n\n}\n\ninterface IexportProps {\n\texport_text: string, \n\tpaginated_data: IPaginated, \n\tcols: Icolumn[], \n\tfile_name: string, \n\tprocessFunc?: stringRenderFunc, \n\tbg_color?: string, \n\ttext_color: string,\n\tstyle: string\n}\nexport function TableExport(props: IexportProps) {\n\treturn <div className={`export-btn flex items-center ${props.text_color} cursor-pointer order-first md:order-none self-end md:self-auto `+props.style}\n\t\tonClick={() => processDownload(props.paginated_data, props.cols,props.file_name, props.processFunc)} id=\"export-it\">\n\t\t<Import className=\"fill-current w-3 h-3 mr-2 \" />\n\t\t<p className=\"font-normal text-base\">{props.export_text}</p>\n\t</div>\n\n}\n\nexport function TableTop(props: { children?: React.ReactNode, style:string }) {\n\treturn <Fragment>\n\t\t{\n\t\t\tprops.children && <div className={\"flex flex-col md:flex-row md:items-center py-2 justify-between px-4 mt-4 mb-2 react-table-top \"+props.style} >\n\t\t\t\t{props.children}\n\t\t\t</div>\n\t\t}\n\t</Fragment>\n\n}\n\n\nexport interface ItableActProps { \n\taction_options: string[], \n\teventSelected: (option: string) => void, \n\tbg_color : string, \n\ttext_color ?: string,\n\tdropdown_style: string,\n\tbutton_style: string,\n\tbutton_text: string\n}\nexport function TableBulkAction(props: ItableActProps) {\n\n\tconst [currentOption, setOption] = useState('nothing');\n\tlet isNothing = currentOption === 'nothing';\n\n\tfunction optionChange(event: React.ChangeEvent<HTMLSelectElement>) {\n\t\tlet value = event.target.value;\n\t\tsetOption(value)\n\t}\n\n\t/**\n\t * When the `Button` element below is pressed, this function fires the event to the prop passed in by the user.\n\t */\n\tfunction takeAction(){\n\t\tif (!isNothing) {\n\t\t\t//The rows selected are not passed in here, the parent table component is allowed to figure out\n\t\t\t//The logic of getting the currently selected rows and sending to the user\n\t\t\tprops.eventSelected(currentOption);\n\t\t}\n\t}\n\n\treturn <div className=\"flex items-center mt-3 md:mt-0 bulk-select-dropdown\">\n\t\t<div className=\"w-52 md:w-48 relative mr-2 flex \">\n\t\t\t<select\n\t\t\t\tonChange={optionChange}\n\t\t\t\tvalue={currentOption}\n\t\t\t\tclassName={`leading-tight block appearance-none w-full bg-white flex-shrink \n\t\t\t\t\t\t\t\t border border-gray-200 px-3 py-2 pr-8 rounded `+ props.dropdown_style}>\n\t\t\t\t<option value=\"nothing\">Select ...</option>\n\t\t\t\t{\n\t\t\t\t\tprops.action_options.map((value: string, index: number) => {\n\t\t\t\t\t\treturn <option key={index.toString()} value={value}>{value}</option>\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t</select>\n\t\t\t<div className=\"pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-gray-300\">\n\t\t\t\t<svg className=\"fill-current h-4 w-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n\t\t\t\t\t<path d=\"M9.293 12.95l.707.707L15.657 8l-1.414-1.414L10 10.828 5.757 6.586 4.343 8z\" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<Button bg_color={props.bg_color} px=\"px-4\" \n\t\t\t\tclassName={`bulk-action-button ${isNothing?'opacity-50':''} leading-4 `+props.button_style} \n\t\t\t\tdisabled={isNothing}\n\t\t\t\tuppercase={false} \n\t\t\t\tonClick={takeAction} >{props.button_text}</Button>\n\t</div>\n}\n\n\ninterface Ifooter {\n\tpage_number_list: number[],\n\tpaginated_map: IPaginated,\n\tactive_page: number,\n\ttotal_pages: number,\n\tonPageChange: (page_number: number) => void,\n\tbg_color: string,\n\tmain_style: string,\n\tstatistics_main_style: string,\n\tstatistics_number_style: string,\n\tnumber_box_Style: string\n}\n\nexport function Footer(props: Ifooter) {\n\tconst { active_page, page_number_list, paginated_map,main_style,\n\t\t\tstatistics_main_style,statistics_number_style,number_box_Style} = props;\n\t// statistics_number_style\n\n\tlet page_count = props.page_number_list.length;\n\n\n\tfunction pageClick(page_number: number) {\n\t\tprops.onPageChange(page_number);\n\t}\n\n\tfunction nextBackBtnClick(direction: \"nxt\" | \"bck\") {\n\t\tif (direction === \"nxt\" && paginated_map[active_page].forward_button_clickable) {\n\t\t\tprops.onPageChange(active_page + 1);\n\t\t\treturn;\n\t\t}\n\t\tif (direction === \"bck\" && paginated_map[active_page].back_button_clickable) {\n\t\t\tprops.onPageChange(active_page - 1);\n\t\t\treturn;\n\t\t}\n\n\t}\n\n\treturn page_count > 0 ?\n\t\t<div className={\"flex flex-col md:flex-row justify-between mt-6 items-center px-2 w-full md:w-auto \"+main_style}>\n\t\t\t<div>\n\t\t\t\t<p className={\"text-sm \"+statistics_main_style}>\n\t\t\t\t\tShowing\n\t\t\t\t<span className={\"font-bold \"+statistics_number_style}> {paginated_map[active_page].from_index + 1} </span> \n\t\t\t\tto\n\t\t\t\t<span className={\"font-bold \"+statistics_number_style}> {paginated_map[active_page].from_index + paginated_map[active_page].page_row_array.length} </span> \n\t\t\t\tof\n\t\t\t\t<span className={\"font-bold \"+statistics_number_style}> {props.total_pages} </span>entries\n\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t<div className=\"flex rounded overflow-hidden border mt-2 md:mt-0 w-full md:w-auto\">\n\n\t\t\t\t<div className={`back-button text-sm w-7 h-7 md:w-8 md:h-8 flex items-center justify-around border-r \n\t\t\t\t\t\t\t ${paginated_map[active_page].back_button_clickable ?\n\t\t\t\t\t\t\t ' cursor-pointer ' : ' cursor-not-allowed '} \n\t\t\t\t\t\t\t ${paginated_map[active_page].back_button_clickable ?'text-gray-700' : 'text-gray-400'} \n\t\t\t\t\t\t\t `+number_box_Style}\n\t\t\t\t\t onClick={() => nextBackBtnClick('bck')}>\n\t\t\t\t\t<p>\n\t\t\t\t\t\t<svg className=\"transform rotate-180 fill-current\" width=\"6\" height=\"10\" viewBox=\"0 0 6 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t<path d=\"M0.772277 9.90938L0.837937 9.85312L5.73111 5.60312C5.89682 5.45937 6 5.24375 6 5.00313C6 4.7625 5.89369 4.54688 5.73111 4.40312L0.847317 0.15625L0.766024 0.0843749C0.687858 0.0312499 0.59406 0 0.494007 0C0.221991 0 0 0.23125 0 0.51875V9.48125C0 9.76875 0.221991 10 0.494007 10C0.597186 10 0.694111 9.96562 0.772277 9.90938Z\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\n\t\t\t\t{\n\t\t\t\t\t/**\n\t\t\t\t\t * I want each line to have between 7-9 boxes of pagination, This logic solved it\n\t\t\t\t\t * This implementation also had mobile view in mind. To make sure the pagination numbers do not \n\t\t\t\t\t * over stretch the mobile screen\n\t\t\t\t\t */\n\n\t\t\t\t\t/* Else */\n\t\t\t\t\tpage_number_list.length <= 7 ?\n\t\t\t\t\t\t//If total number of items in list is just less than or equal to seven\n\t\t\t\t\t\t//Then don't border implementing the algorithm below\n\t\t\t\t\t\tpage_number_list.map((page_number) => {\n\t\t\t\t\t\t\tlet is_active_page = page_number === active_page;\n\t\t\t\t\t\t\treturn <NumberBox key={page_number} \n\t\t\t\t\t\t\t\t\t\t\t is_active_page={is_active_page}\n\t\t\t\t\t\t\t\t\t\t\t page_number={page_number} \n\t\t\t\t\t\t\t\t\t\t\t pageClick={pageClick}\n\t\t\t\t\t\t\t\t\t\t\t bg_color={props.bg_color}\n\t\t\t\t\t\t\t\t\t\t\t style={number_box_Style} />\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\t/* Else IF */\n\t\t\t\t\t\t: active_page >= 1 && active_page <= 6 ?\n\t\t\t\t\t\t\t/* if the active page is nin the beginning of the pagination list*/\n\t\t\t\t\t\t\t<ActivePageBegining pageClick={pageClick} page_number_list={page_number_list}\n\t\t\t\t\t\t\t\tactive_page={active_page} bg_color={props.bg_color} style={number_box_Style} />\n\n\t\t\t\t\t\t\t/* Else IF The current active page is at the ending of the Pagination list*/\n\t\t\t\t\t\t\t: active_page >= page_count - 5 && active_page <= page_count ?\n\t\t\t\t\t\t\t\t<ActivePageEnding pageClick={pageClick} page_number_list={page_number_list}\n\t\t\t\t\t\t\t\t\tactive_page={active_page} bg_color={props.bg_color} style={number_box_Style} />\n\n\t\t\t\t\t\t\t\t/* Else the active page is in the middle of the pagination list*/\n\t\t\t\t\t\t\t\t: <ActivePageMiddle pageClick={pageClick} page_number_list={page_number_list}\n\t\t\t\t\t\t\t\t\tactive_page={active_page} bg_color={props.bg_color} style={number_box_Style}/>\n\t\t\t\t}\n\n\n\n\t\t\t\t<div className={`next-button text-sm w-7 h-7 md:w-8 md:h-8 flex items-center justify-around border-r \n\t\t\t\t\t\t\t ${paginated_map[active_page].forward_button_clickable ?\n\t\t\t\t\t\t\t ' cursor-pointer ' : ' cursor-not-allowed '} \n\t\t\t\t\t\t\t ${paginated_map[active_page].forward_button_clickable ?'text-gray-700' : 'text-gray-400'} \n\t\t\t\t\t\t\t `+number_box_Style}\n\t\t\t\t\tonClick={() => nextBackBtnClick('nxt')}>\n\t\t\t\t\t<p >\n\t\t\t\t\t\t<svg className=\"fill-current\" width=\"6\" height=\"10\" viewBox=\"0 0 6 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t<path d=\"M0.772277 9.90938L0.837937 9.85312L5.73111 5.60312C5.89682 5.45937 6 5.24375 6 5.00313C6 4.7625 5.89369 4.54688 5.73111 4.40312L0.847317 0.15625L0.766024 0.0843749C0.687858 0.0312499 0.59406 0 0.494007 0C0.221991 0 0 0.23125 0 0.51875V9.48125C0 9.76875 0.221991 10 0.494007 10C0.597186 10 0.694111 9.96562 0.772277 9.90938Z\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\n\n\t\t\t</div>\n\t\t</div>\n\n\t\t: null;\n}\n\nexport interface IPageNumberGroup{\n\tpage_number_list: number[]; \n\tactive_page: number; \n\tpageClick: (page: number) => void, \n\tbg_color: string, \n\tstyle: string \n}\n\nfunction ActivePageBegining(props:IPageNumberGroup) {\n\n\t//Get the page that is last\n\tlet last_page: number = props.page_number_list[props.page_number_list.length - 1];\n\treturn <Fragment>\n\t\t{\n\t\t\tprops.page_number_list.slice(0, 7).map((page_number) => {\n\t\t\t\tlet is_active_page = page_number === props.active_page;\n\t\t\t\treturn <NumberBox key={page_number} is_active_page={is_active_page} style={props.style}\n\t\t\t\t\t\t\t\t page_number={page_number} pageClick={props.pageClick} bg_color={props.bg_color} />\n\t\t\t})\n\t\t}\n\n\t\t<DottedBox />\n\n\t\t<NumberBox page_number={last_page} is_active_page={false} style={props.style}\n\t\t\t\t pageClick={props.pageClick} bg_color={props.bg_color}/>\n\n\t</Fragment>\n\n}\n\nfunction ActivePageMiddle(props: IPageNumberGroup) {\n\n\t//Get the page that is last\n\tlet first_page: number = props.page_number_list[0];\n\tlet page_count = props.page_number_list.length;\n\tlet last_page: number = props.page_number_list[page_count - 1];\n\n\treturn <Fragment>\n\n\t\t{/* The First */}\n\t\t<NumberBox page_number={first_page} is_active_page={false} style={props.style}\n\t\t\t\t pageClick={props.pageClick} bg_color={props.bg_color} />\n\n\t\t<DottedBox />\n\n\t\t{\n\t\t\tprops.page_number_list.slice(props.active_page - 4, props.active_page + 3).map((page_number) => {\n\t\t\t\tlet is_active_page = page_number === props.active_page;\n\t\t\t\treturn <NumberBox key={page_number} is_active_page={is_active_page} style={props.style}\n\t\t\t\t\t\t\t\t page_number={page_number} pageClick={props.pageClick} bg_color={props.bg_color} />\n\t\t\t})\n\t\t}\n\n\t\t<DottedBox />\n\t\t{/* The last */}\n\n\t\t<NumberBox page_number={last_page} is_active_page={false} style={props.style}\n\t\t\t\t pageClick={props.pageClick} bg_color={props.bg_color} />\n\n\n\t</Fragment>\n\n}\n\n\n\nfunction ActivePageEnding(props:IPageNumberGroup) {\n\n\t//Get the page that is last\n\tlet first_page: number = props.page_number_list[0];\n\tlet page_count = props.page_number_list.length;\n\treturn <Fragment>\n\n\t\t<NumberBox page_number={first_page} is_active_page={false} style={props.style}\n\t\t\t\t pageClick={props.pageClick} bg_color={props.bg_color} />\n\n\t\t<DottedBox />\n\t\t{\n\t\t\tprops.page_number_list.slice(page_count - 7, page_count).map((page_number) => {\n\t\t\t\tlet is_active_page = page_number === props.active_page;\n\t\t\t\treturn <NumberBox key={page_number} is_active_page={is_active_page} style={props.style}\n\t\t\t\t\t\t\t\t page_number={page_number} pageClick={props.pageClick} bg_color={props.bg_color} />\n\t\t\t})\n\t\t}\n\n\t</Fragment>\n\n}\n\n\n\nfunction DottedBox() {\n\n\treturn <div className=\"w-7 h-7 md:w-8 md:h-8 flex flex-grow items-center justify-around border-r \">\n\t\t<p className=\"text-sm text-gray-700 \">\n\t\t\t<span className=\"hidden md:flex\"> . . . </span>\n\t\t\t<span className=\"flex md:hidden\"> ... </span>\n\t\t</p>\n\t</div>\n}\n\nexport interface IBoxNumber{ \n\tpage_number: number, \n\tis_active_page: boolean, \n\tpageClick: (page: number) => void, \n\tbg_color:string,\n\tstyle:string\n}\n\nfunction NumberBox(props: IBoxNumber) {\n\treturn <div className={`text-sm w-7 h-7 md:w-8 md:h-8 flex items-center flex-grow flex-shrink \n\t\t\t\t\t\t\tmd:flex-shrink-0 justify-around border-r cursor-pointer \n\t\t\t\t\t\t\t${props.is_active_page ? props.bg_color : ''}\n\t\t\t\t\t\t\t${props.is_active_page ? ' text-white ' : ''}`+ props.style}\n\t\tonClick={() => props.pageClick(props.page_number)}>\n\t\t<p>\n\t\t\t{\n\t\t\t\tprops.page_number\n\t\t\t}\n\t\t</p>\n\t</div>\n}\n\n\nasync function processDownload(paginated_data: IPaginated, colums: Icolumn[],file_name: string, processFunc?: stringRenderFunc) {\n\n\tlet all_rows: Irow[] | null = [];\n\tvar page: string; //suppose to be :number\n\t file_name = file_name +\".csv\";\n\tfor (page in paginated_data) {\n\t\tall_rows = all_rows.concat(paginated_data[page].page_row_array)\n\t}\n\n\n\tlet blob = await utilsClass.generateCSV(colums, all_rows, processFunc), \n\t\turl = window.URL.createObjectURL(blob);\n\n\t// @ts-ignore\n\tif (window.navigator.msSaveOrOpenBlob) // IE hack; see http://msdn.microsoft.com/en-us/library/ie/hh779016.aspx\n\t\twindow.navigator.msSaveBlob(blob, file_name);\n\telse {\n\t\tvar link = document.createElement(\"a\");\n\t\tlink.setAttribute(\"href\", url);\n\t\tlink.setAttribute(\"download\", file_name);\n\t\tdocument.body.appendChild(link); // Required for Fire fox\n\n\t\tlink.click(); // This will download the data file named \"my_data.csv\".\n\n\t\tsetTimeout(() => {\n\t\t\twindow.URL.revokeObjectURL(url);\n\t\t\tdocument.body.removeChild(link);\n\t\t\tall_rows = null;\n\t\t}, 0)\n\t}\n}\n\n","import PropTypes from 'prop-types';\nimport React from \"react\";\nimport { Icolumn, Iprop, Irow, Istate, ItableLinks, IPerPage, IretainPage, ItableStyle } from \"./table-types\";\nimport utilsClass from \"./utilsClass\";\nimport {\n\tFooter, TableBulkAction, TableCaption, TableExport,\n\tTableHead, TableRow, TableSearch, TableTop\n} from \"./table-sub-components\";\nimport \"./css/tailwind.css\";\nexport * from \"./table-types\";\n\nexport default class ReactTailwindTable extends React.Component<Iprop, Istate> {\n\n\tstatic propTypes: {};\n\tstatic defaultProps: {};\n\tpublic state: Istate;\n\n\t/**\n\t * When ever a search happens, it is debounced for `this.props.debounce_search` seconds in case user \n\t * input is steady. This property holds the debounced funtion gotten from @see {@link utilsClass.debounce}\n\t */\n\tprivate processFilterdebounce !: (...input: any) => void;\n\n\tconstructor(public props: Iprop) {\n\t\tsuper(props);\n\n\t\tthis.state = this.initialPaginateSetup(this.props.rows, this.props.per_page as number);\n\t}\n\n\t//remmber the render function has been called before we perform these margics\n\tcomponentDidUpdate(prevProps: Iprop, prevState: Istate, _snapshot: any) {\n\t\t//If the component update was initiated inside the component it self \n\t\t//Then do not recompute changes\n\t\tif (prevState !== this.state) return;\n\n\t\t//Since this calculation can get expensive for large data set, I decided to run it in a \n\t\t// promise\n\t\tnew Promise((resolve, _reject) => {\n\t\t\t//If the length of the data sent in has changed, then recompute entirely, Don't border about retaining\n\t\t\t//state or active page number\n\t\t\tif (this.props.rows.length !== prevProps.rows.length || this.props.per_page !== prevProps.per_page) {\n\t\t\t\tthis.setState(this.initialPaginateSetup(this.props.rows, this.props.per_page as number));\n\t\t\t} else {\n\n\t\t\t\tthis.setState(this.initialPaginateSetup(this.props.rows, this.props.per_page as number, {\n\t\t\t\t\tactive_number: this.state.active_page_number,\n\t\t\t\t\tpage_map: this.state.paginated_map\n\t\t\t\t}));\n\t\t\t}\n\n\t\t\tresolve(true);\n\t\t})\n\t\t// console.log(prevProps === this.props,\"Props are the same\");\n\t\t// console.log(prevState === this.state,\"States are the same\");\n\t}\n\n\tprivate bulkActClick = (_option: string) => {\n\t\n\t\tif(this.props.on_bulk_action){\n\t\t\t//The set containing page numbers of selected rows\n\t\t\tlet selectedIndexes = this.state.paginated_map[this.state.active_page_number].checked_set;\n\t\t\tlet selectedRows = this.state.active_rows.filter((_val,index) => selectedIndexes.has(index));\n\n\t\t\tthis.props.on_bulk_action(_option,selectedRows);\n\t\t}\n\n\t}\n\n\tprivate onSearch = (search_text: string) => {\n\n\t\tlet trim_search = utilsClass.ltrim(search_text, \" \", \"\", true);\n\t\ttrim_search = utilsClass.rtrim(trim_search, \" \", \"\", true);\n\n\t\t//If search text is an empty or space string, then do not bother searching\n\t\tif (trim_search) {\n\t\t\t//Make sure The debounce function is set only once\n\t\t\tif (!this.processFilterdebounce) {\n\t\t\t\tthis.processFilterdebounce = utilsClass.debounce(this.processFilter, this.props.debounce_search as number);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Still search with the original input. \n\t\t\t * Note that the search debounce is now calling `this.processFilter` function as registered above.\n\t\t\t * Sending in the filterFunctionas its input\n\t\t\t */\n\t\t\tthis.processFilterdebounce(utilsClass.filterFunction(search_text, this.props.columns),search_text); \n\n\t\t} else { //Once the search field is cleared totally. Load the table with the original data from the user\n\t\t\t//clear all active debaounces set from if statement above\n\t\t\t(this.processFilterdebounce as any)?.clear()\n\t\t\tnew Promise((resolve, _reject) => {\n\n\t\t\t\tthis.setState(this.initialPaginateSetup(this.props.rows, this.props.per_page as number));\n\t\t\t\tresolve(true);\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * A function that uses a promise to filter all rows using a search keyword typed into the \n\t * Search input bar.\n\t * @param filter_function \n\t */\n\tprivate processFilter = (filter_function: (row: Irow) => boolean, search_word:string) => {\n\t\t// The Rows been searched can be very long, So I put this action\n\t\t//In a Promise, So it does not slow down The UI\n\t\tnew Promise<Irow[]>((resolve) => {\n\t\t\tlet result = this.props.rows.filter(filter_function)\n\t\t\tthis.setState(this.initialPaginateSetup(result, this.props.per_page as number));\n\t\t\tresolve(result)\n\t\t}).then((rows: Irow[]) => {\n\t\t\t//Once the re-render has been processed, fire an event if the user registered a listener\n\t\t\tif(this.props.on_search) this.props.on_search(search_word, rows);\n\t\t})\n\n\t}\n\n\tprivate massChecking = (page_number: number, action: \"check-all\" | \"uncheck-all\") => {\n\t\t//Clone the current state, no need to recompute the pagination logic\n\t\tlet state_clone: Istate | null = { ...this.state };\n\t\tlet page_data: IPerPage | null = state_clone.paginated_map[page_number];\n\n\t\tpage_data.page_row_array.forEach((_value, index) => {\n\t\t\tif (action === 'check-all') (page_data as IPerPage).checked_set.add(index);\n\t\t\telse if (action === 'uncheck-all') (page_data as IPerPage).checked_set.delete(index);\n\t\t});\n\t\tthis.setState(state_clone);\n\n\t\tstate_clone = null;\n\t\tpage_data = null;\n\n\t}\n\n\tprivate checkBoxCheck = (page_number: number, index: number, ischecked: boolean) => {\n\t\tlet state_clone: Istate | null = { ...this.state };\n\t\t//Once any member of the checkbox is checked, quickly set it in the state\n\t\tlet set = state_clone.paginated_map[page_number].checked_set;\n\t\tif (ischecked) set.add(index);\n\t\telse set.delete(index)\n\n\t\tthis.setState(state_clone);\n\t\t//Let the garbage collector do cleaning easier\n\t\tstate_clone = null;\n\n\t}\n\n\tprivate getTotalPages(): number {\n\t\t// return this.props.total_page_count ?? this.state.total_rows_count;\n\t\treturn this.state.total_rows_count;\n\t}\n\n\tprivate onPageChange = (page_number: number) => {\n\t\tlet state_clone: Istate | null = { ...this.state };\n\n\t\t//Set the active status of the `about to be former page` to false\n\t\tstate_clone.paginated_map[state_clone.active_page_number].is_active = false;\n\t\tstate_clone.active_page_number = page_number;\n\n\t\t//Set the now new page to active\n\t\tstate_clone.paginated_map[page_number].is_active = true;\n\t\tstate_clone.active_rows = state_clone.paginated_map[page_number].page_row_array;\n\n\t\tthis.setState(state_clone);\n\n\t\t//Let the garbage collector do cleaning easier\n\t\tstate_clone = null;\n\t}\n\n\n\tprivate initialPaginateSetup(rows: Irow[], rows_count: number, retain_page?: IretainPage): Istate {\n\n\t\tlet paginated_values: ItableLinks = utilsClass.TableNumberLinks(rows, rows_count, retain_page);\n\t\tconst active_pg_num = retain_page ? retain_page.active_number : 1;\n\t\treturn {\n\t\t\tactive_rows: paginated_values.page_number_list.length > 0 ? \n\t\t\t\tpaginated_values.page_map[active_pg_num].page_row_array : [],\n\t\t\tpage_number_list: paginated_values.page_number_list,\n\t\t\tpaginated_map: paginated_values.page_map,\n\t\t\tactive_page_number: active_pg_num,\n\t\t\ttotal_rows_count: paginated_values.total_data_count\n\t\t}\n\t}\n\n\t/**\n\t * Checks if there are bulk selected items in the table\n\t * @returns boolean\n\t */\n\tprivate isBulkSelected(): boolean {\n\t\tlet setOfSelectedRowsIndexes = this.state.paginated_map[this.state.active_page_number]?.checked_set;\n\n\t\treturn setOfSelectedRowsIndexes ? setOfSelectedRowsIndexes.size > 0 : false;\n\n\t}\n\n\tprivate getStylingProps(): ItableStyle{\n\t\tlet styling = this.props.styling as ItableStyle;\n\t\tif(styling ){\n\t\t\tstyling.base_bg_color = styling.base_bg_color ?? base_bg_color;\n\t\t\tstyling.base_text_color = styling.base_text_color ?? base_text_color;\n\t\t}\n\t\telse{\n\t\t\tstyling = {\n\t\t\t\tbase_bg_color: base_bg_color,\n\t\t\t\tbase_text_color: base_text_color\n\t\t\t}\n\t\t}\n\n\t\treturn styling;\n\t}\n\n\n\trender() {\n\t\tlet styling = this.getStylingProps();\n\t\tconst display_columns = this.props.columns.filter((column: Icolumn) => {\n\t\t\t//Dont show columns the developer indicated should be false\n\t\t\treturn column.use_in_display !== false;\n\t\t});\n\n\t\t//dont show the bulk select button if there are no data from user or from search\n\t\t//Also don't show the bulk select if then user did not send in an array of `bulk_select_options` props\n\t\tconst useBulk = this.state.page_number_list.length < 1 ?\n\t\t\tfalse : (this.props.bulk_select_options as string[]).length > 0 ? true : false\n\t\treturn <div className={`bg-white w-full flex flex-col pb-5 ${styling.main ?? ''}`} style={{ \"boxShadow\": \"0px 2px 8px rgba(0, 0, 0, 0.04)\" }}>\n\t\t\t{/* Table Caption*/\n\t\t\t\tthis.props.table_header && <TableCaption text={this.props.table_header} style={styling?.top?.title ?? \"\"} />\n\t\t\t}\n\n\t\t\t{\n\t\t\t\t<TableTop style={styling?.top?.elements?.main ?? \"\"}>\n\t\t\t\t\t{ this.props.show_search && \n\t\t\t\t\t\t<TableSearch onSearch={this.onSearch} style={styling?.top?.elements?.search ?? \"\"} />}\n\t\t\t\t\t{\n\t\t\t\t\t\tuseBulk && this.isBulkSelected() ? <TableBulkAction action_options={this.props.bulk_select_options as string[]} \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\teventSelected={this.bulkActClick}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbutton_text={this.props.bulk_select_button_text as string}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbg_color={styling.base_bg_color as string}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdropdown_style={styling?.top?.elements?.bulk_select?.main ?? \"\"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbutton_style ={styling?.top?.elements?.bulk_select?.button ?? \"\"} />\n\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t{ \n\t\t\t\t\t\tthis.props.should_export && <TableExport export_text={this.props.export_text as string}\n\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t paginated_data={this.state.paginated_map}\n\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t cols={this.props.columns}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t file_name={this.props.export_csv_file as string}\n\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t processFunc={this.props.export_modify}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t text_color={styling.base_text_color as string}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t style={styling?.top?.elements?.export ?? \"\"}/> \n\t\t\t\t\t}\n\n\t\t\t\t</TableTop>\n\t\t\t}\n\t\t<div className=\"overflow-x-auto\">\n\t\t\t<table className=\"table-auto border-collapse w-full\">\n\t\t\t\t<thead >\n\t\t\t\t\t<TableHead columns={display_columns} use_bulk_action={useBulk}\n\t\t\t\t\t\tactive_page_number={this.state.active_page_number}\n\t\t\t\t\t\tpage_data={this.state.paginated_map[this.state.active_page_number]}\n\t\t\t\t\t\tmass_checking={this.massChecking} \n\t\t\t\t\t\trow_style={styling?.table_head?.table_row ?? \"\"}\n\t\t\t\t\t\tdata_style={styling?.table_head?.table_data ?? \"\"} />\n\t\t\t\t</thead>\n\n\t\t\t\t<tbody className={\"text-sm font-normal text-gray-700 \"+styling?.table_body?.main??\"\"}>\n\t\t\t\t\t{\n\t\t\t\t\t\t(this.state.active_rows.length > 0 &&\n\t\t\t\t\t\t\t(this.state.active_rows as Irow[]).map((row: Irow, index: number) =>\n\t\t\t\t\t\t\t\t<TableRow key={index.toString()} row={row} columns={display_columns}\n\t\t\t\t\t\t\t\t\tuse_bulk_action={useBulk}\n\t\t\t\t\t\t\t\t\trender={this.props.row_render} index={index}\n\t\t\t\t\t\t\t\t\tactive_page_number={this.state.active_page_number}\n\t\t\t\t\t\t\t\t\tchecked_set={this.state.paginated_map[this.state.active_page_number].checked_set}\n\t\t\t\t\t\t\t\t\tsetCheck={this.checkBoxCheck}\n\t\t\t\t\t\t\t\t\tis_striped ={this.props.striped as boolean}\n\t\t\t\t\t\t\t\t\tis_bordered ={this.props.bordered as boolean}\n\t\t\t\t\t\t\t\t\tis_hovered={this.props.hovered as boolean} \n\t\t\t\t\t\t\t\t\trow_style={styling?.table_body?.table_row ?? \"\"}\n\t\t\t\t\t\t\t\t\tdata_style={styling?.table_body?.table_data ?? \"\"} />\n\t\t\t\t\t\t\t)) ||\n\n\t\t\t\t\t\t<tr className=\"hover:bg-table-col bg-table-col border-b border-gray-200 \">\n\t\t\t\t\t\t\t<td className=\"px-4 py-4 text-center\"\n\t\t\t\t\t\t\t\tcolSpan={display_columns.length} >\n\n\t\t\t\t\t\t\t\t{this.props.no_content_text}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t\t\t<Footer page_number_list={this.state.page_number_list}\n\t\t\t\tpaginated_map={this.state.paginated_map}\n\t\t\t\tactive_page={this.state.active_page_number}\n\t\t\t\ttotal_pages={this.getTotalPages()}\n\t\t\t\tonPageChange={this.onPageChange}\n\t\t\t\tbg_color={styling.base_bg_color as string}\n\t\t\t\tmain_style = {styling?.footer?.main ?? \"\"} \n\t\t\t\tstatistics_main_style = {styling?.footer?.statistics?.main ?? \"\"}\n\t\t\t\tstatistics_number_style = {styling?.footer?.statistics?.bold_numbers ?? \"\"} \n\t\t\t\tnumber_box_Style = {styling?.footer?.page_numbers ?? \"\"}/>\n\t\t</div>\n\t}\n\n}\n\nconst tableTopProps = PropTypes.shape({\n\ttitle: PropTypes.string,\n\telements: PropTypes.shape({\n\t\tmain: PropTypes.string,\n\t\tsearch: PropTypes.string,\n\t\tbulk_select: PropTypes.shape({\n\t\t\tmain: PropTypes.string,\n\t\t\tbutton: PropTypes.string\n\t\t}),\n\t\texport: PropTypes.string\n\t})\n})\n\nReactTailwindTable.propTypes = {\n\t/**\n\t * TODO: Implement server side render for table \n\t * @param props \n\t * @param propName \n\t * @param componentName \n\t * @returns \n\tuse_server_side: function(props: Record<string, any>, propName: string, componentName: string): Error | undefined {\n\t\tlet value = props[propName];\n\t\tif (value === undefined) return;\n\t\t\n\t\tif (typeof value !== \"boolean\") {\n\t\t\treturn new Error(\n\t\t\t\t`Prop '${propName}' must be boolean '${typeof value}' given. \" \n\t\t\t\t '${componentName}' Validation failed.`)\n\t\t}\n\t\tif (value === true && !utilsClass.isInteger(props['total_page_count'])) {\n\t\t\treturn new Error(\n\t\t\t\t`If prop ' ${propName} ' is 'true', Then total_page_count must be supplied too. \n\t\t\t\t '${componentName}' Validation failed.`\n\t\t\t);\n\t\t}\n\n\t\treturn;\n\n\t},\n\t*/\n\n\tshow_search: PropTypes.bool,\n\tshould_export: PropTypes.bool,\n\t// use_server_side: PropTypes.bool,\n\tdebounce_search: PropTypes.number,\n\ttotal_page_count: PropTypes.number,\n\tper_page: PropTypes.number,\n\n\trows: PropTypes.array.isRequired,\n\tcolumns: PropTypes.array.isRequired,\n\n\trow_render: PropTypes.func,\n\texport_modify: PropTypes.func,\n\ton_search: PropTypes.func,\n\ton_bulk_action: PropTypes.func,\n\n\tno_content_text: PropTypes.node,\n\ttable_header: PropTypes.string,\n\texport_text: PropTypes.string,\n\tbulk_select_options: PropTypes.arrayOf(PropTypes.string),\n\tstriped: PropTypes.bool,\n\tbordered: PropTypes.bool,\n\tstyling: PropTypes.shape({\n\t\tbase_bg_color: PropTypes.string,\n\t\tbase_text_color: PropTypes.string,\n\t\tmain: PropTypes.string,\n\t\ttop: tableTopProps,\n\t\ttable_head: PropTypes.shape({\n\t\t\ttable_row: PropTypes.string,\n\t\t\ttable_data: PropTypes.string\n\t\t}),\n\t\ttable_body:PropTypes.shape({\n\t\t\tmain: PropTypes.string,\n\t\t\ttable_row: PropTypes.string,\n\t\t\ttable_data: PropTypes.string\n\t\t}),\n\t\tfooter: PropTypes.shape({\n\t\t\tmain: PropTypes.string,\n\t\t\tstatistics: PropTypes.shape({\n\t\t\t\tmain: PropTypes.string,\n\t\t\t\tbold_numbers: PropTypes.string\n\t\t\t}),\n\t\t\tpage_numbers: PropTypes.string\n\t\t})\n\t}),\n}\n\nReactTailwindTable.defaultProps = {\n\tno_content_text: 'No Data Availaible',\n\tper_page: 10,\n\tdebounce_search: 300,\n\tshow_search: true,\n\tshould_export: true,\n\tbulk_select_options: [],\n\texport_text: 'Export',\n\texport_csv_file: \"download\",\n\tbulk_select_button_text:\"Apply\",\n\tstriped: true,\n\tbordered: true,\n\thovered:true,\n};\n\nconst base_bg_color = \"bg-pink-700\";\nconst base_text_color = \"text-pink-700\"\n\n"],"names":["b","Symbol","for","c","d","e","f","g","h","k","l","m","n","p","q","r","t","v","w","x","y","z","a","u","$$typeof","type","A","process","env","NODE_ENV","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","typeOf","object","$$typeofType","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isConcurrentMode","exports","console","module","require$$0","require$$1","getOwnPropertySymbols","Object","hasOwnProperty","prototype","propIsEnumerable","propertyIsEnumerable","toObject","val","TypeError","assign","test1","String","getOwnPropertyNames","test2","i","fromCharCode","map","join","test3","split","forEach","letter","keys","err","shouldUseNative","target","source","from","symbols","to","s","arguments","length","key","call","printWarning","ReactPropTypesSecret","loggedTypeFailures","has","Function","bind","text","message","error","Error","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","name","ex","stack","resetWarningCache","emptyFunctionThatReturnsNull","emptyFunction","emptyFunctionWithReset","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","ReactPropTypes","array","createPrimitiveTypeChecker","bool","func","number","string","symbol","any","createChainableTypeChecker","arrayOf","typeChecker","props","propName","propFullName","PropTypeError","propValue","Array","isArray","getPropType","element","elementType","ReactIs","isValidElementType","instanceOf","expectedClass","constructor","node","isNode","objectOf","propType","oneOf","expectedValues","validate","is","valuesString","JSON","stringify","value","getPreciseType","oneOfType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","shape","shapeTypes","exact","allKeys","this","checkType","isRequired","secret","chainedCheckType","expectedType","every","iteratorFn","maybeIterable","getIteratorFn","step","entries","next","done","entry","RegExp","isSymbol","Date","PropTypes","isElement","shim","getShim","require$$2","utilsClass","ltrim","trimString","regexp","replaceWith","more","allowRegex","trim","isInteger","input","Number","isFinite","Math","floor","rtrim","dir","regex_special","includes","regMe","add","replace","isObjectEqual","other","toString","indexOf","valueLen","compare","item1","item2","itemType","isEven","limit","wait","debounce","timeout","throtBounce","context","args","throttler","undefined","apply","window","clearTimeout","setTimeout","clear","unwindObject","obj","field","fields","field_length","recuObje","rolled_time","generateCSV","columns","items","exportModify","columns_array","final_csv","column","use_in_export","push","use","Promise","resolve","row","rowArray","display_value","Blob","stringifyObjectValues","sort","filter","sanitizeRow","final_obj","len","use_in_search","stringifyRowValues","filterFunction","search_string","stringtoRegEx","test","str","matchMultipleSpace","escapeRegExp","RX_SPACES$1","TableNumberLinks","rows","per_page","retain_expage_map","end_of_this_record","remaining_rows","page_maximum","rows_length","number_of_pages","ceil","beginning_of_next_record","current_page","page_number_list","page_map","total_data_count","page_row_array","slice","back_button_clickable","forward_button_clickable","is_active","active_number","from_index","checked_set","Set","Button","uppercase","px","py","bg_color","others","myclass","className","React","children","CheckedBox","viewBox","xmlns","UnCheckedBox","IndeterminateCheckBox","Import","fill","Search","width","height","opacity","fillRule","clipRule","TableRow","is_hovered","is_bordered","index","is_striped","row_style","use_bulk_action","data_style","checked","onChange","ev","setCheck","active_page_number","TableData","col","render","style","TableHead","page","rows_lenth","checked_length","all_is_checked","some_ischecked","none_is_checked","page_data","_props$page_data","_props$page_data2","size","display_columns","use_in_display","onClick","mass_checking","TableCaption","TableSearch","placeholder","onSearch","top","TableExport","text_color","paginated_data","colums","file_name","processFunc","all_rows","concat","blob","url","URL","createObjectURL","navigator","msSaveOrOpenBlob","msSaveBlob","link","document","createElement","setAttribute","body","appendChild","click","revokeObjectURL","removeChild","processDownload","cols","id","export_text","TableTop","TableBulkAction","useState","currentOption","setOption","isNothing","event","dropdown_style","action_options","button_style","disabled","eventSelected","button_text","Footer","active_page","paginated_map","statistics_number_style","number_box_Style","page_count","pageClick","page_number","onPageChange","nextBackBtnClick","direction","main_style","statistics_main_style","total_pages","NumberBox","is_active_page","ActivePageBegining","ActivePageEnding","ActivePageMiddle","last_page","DottedBox","defaultProps","ReactTailwindTable","_this","_option","on_bulk_action","selectedIndexes","state","selectedRows","active_rows","_val","search_text","trim_search","processFilterdebounce","processFilter","debounce_search","_reject","setState","initialPaginateSetup","filter_function","search_word","result","then","on_search","action","state_clone","_value","ischecked","set","componentDidUpdate","prevProps","prevState","_snapshot","_this2","getTotalPages","total_rows_count","rows_count","retain_page","paginated_values","active_pg_num","isBulkSelected","setOfSelectedRowsIndexes","_this$state$paginated","getStylingProps","styling","base_bg_color","base_text_color","useBulk","bulk_select_options","main","boxShadow","table_header","_styling$top","title","_styling$top2","elements","_styling$top2$element","show_search","_styling$top3","_styling$top3$element","search","bulkActClick","bulk_select_button_text","_styling$top4","_styling$top4$element","bulk_select","_styling$top4$element2","_styling$top5","_styling$top5$element","_styling$top5$element2","button","should_export","export_csv_file","export_modify","_styling$top6","_styling$top6$element","massChecking","table_head","_styling$table_head","table_row","_styling$table_head2","table_data","table_body","_styling$table_body","_this3","row_render","checkBoxCheck","striped","bordered","hovered","_styling$table_body2","_styling$table_body3","colSpan","no_content_text","footer","_styling$footer","_styling$footer2","statistics","_styling$footer2$stat","_styling$footer3","_styling$footer3$stat","bold_numbers","_styling$footer4","page_numbers","Component","tableTopProps","export","propTypes","total_page_count"],"mappings":"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"}
|