schummar-table 0.4.0 → 0.5.0-beta-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.
Files changed (155) hide show
  1. package/dist/cjs/index.js +3800 -16
  2. package/dist/cjs/index.js.map +1 -0
  3. package/dist/cjs/mui4Theme.js +96 -0
  4. package/dist/cjs/mui4Theme.js.map +1 -0
  5. package/dist/cjs/mui5Theme.js +100 -0
  6. package/dist/cjs/mui5Theme.js.map +1 -0
  7. package/dist/es/index.js +3783 -0
  8. package/dist/es/index.js.map +1 -0
  9. package/dist/es/mui4Theme.js +92 -0
  10. package/dist/es/mui4Theme.js.map +1 -0
  11. package/dist/es/mui5Theme.js +96 -0
  12. package/dist/es/mui5Theme.js.map +1 -0
  13. package/dist/tableTheme.js +1990 -0
  14. package/dist/tableTheme.js.map +1 -0
  15. package/dist/{cjs → types}/components/cell.d.ts +1 -1
  16. package/dist/types/components/columnHeader.d.ts +7 -0
  17. package/dist/{cjs → types}/components/columnSelection.d.ts +0 -0
  18. package/dist/types/components/dateFilter.d.ts +8 -0
  19. package/dist/types/components/datePicker.d.ts +16 -0
  20. package/dist/types/components/expandControl.d.ts +6 -0
  21. package/dist/{cjs → types}/components/export.d.ts +0 -0
  22. package/dist/types/components/filterControl.d.ts +2 -0
  23. package/dist/types/components/formControlLabel.d.ts +5 -0
  24. package/dist/types/components/resizeHandle.d.ts +1 -0
  25. package/dist/{cjs → types}/components/row.d.ts +1 -1
  26. package/dist/{cjs → types}/components/selectComponent.d.ts +0 -0
  27. package/dist/types/components/selectFilter.d.ts +8 -0
  28. package/dist/{cjs → types}/components/sortComponent.d.ts +0 -0
  29. package/dist/types/components/spinnner.d.ts +3 -0
  30. package/dist/{cjs → types/components}/table.d.ts +1 -4
  31. package/dist/types/components/textFilter.d.ts +5 -0
  32. package/dist/{cjs → types}/components/virtualized.d.ts +0 -0
  33. package/dist/types/hooks/useFilter.d.ts +5 -0
  34. package/dist/types/hooks/useTheme.d.ts +1 -0
  35. package/dist/types/index.d.ts +10 -0
  36. package/dist/{cjs → types}/internalState/calcItems.d.ts +0 -0
  37. package/dist/{cjs → types}/internalState/calcProps.d.ts +0 -0
  38. package/dist/{cjs → types}/internalState/cleanupState.d.ts +0 -0
  39. package/dist/{cjs → types}/internalState/filterColumns.d.ts +0 -0
  40. package/dist/{cjs → types}/internalState/syncSelections.d.ts +0 -0
  41. package/dist/{cjs → types}/internalState/tableStateStorage.d.ts +1 -1
  42. package/dist/{cjs → types}/internalState/useTableState.d.ts +0 -0
  43. package/dist/{cjs → types}/misc/csvExport.d.ts +0 -0
  44. package/dist/types/misc/debounce.d.ts +4 -0
  45. package/dist/types/misc/deepPartial.d.ts +3 -0
  46. package/dist/{cjs → types}/misc/helpers.d.ts +2 -1
  47. package/dist/{cjs → types}/misc/queue.d.ts +1 -1
  48. package/dist/{cjs → types}/misc/textMatch.d.ts +0 -0
  49. package/dist/types/misc/throttle.d.ts +4 -0
  50. package/dist/types/theme/defaultClasses.d.ts +15 -0
  51. package/dist/types/theme/defaultColors.d.ts +2 -0
  52. package/dist/types/theme/defaultIcons.d.ts +2 -0
  53. package/dist/types/theme/defaultTexts.d.ts +2 -0
  54. package/dist/types/theme/defaultTheme/badge.d.ts +2 -0
  55. package/dist/types/theme/defaultTheme/button.d.ts +2 -0
  56. package/dist/types/theme/defaultTheme/checkbox.d.ts +2 -0
  57. package/dist/types/theme/defaultTheme/iconButton.d.ts +2 -0
  58. package/dist/types/theme/defaultTheme/index.d.ts +2 -0
  59. package/dist/types/theme/defaultTheme/popover.d.ts +4 -0
  60. package/dist/types/theme/defaultTheme/textField.d.ts +2 -0
  61. package/dist/types/theme/mui4Theme/index.d.ts +8 -0
  62. package/dist/types/theme/mui5Theme/index.d.ts +8 -0
  63. package/dist/types/theme/tableTheme.d.ts +11 -0
  64. package/dist/types/theme/useCssVariables.d.ts +9 -0
  65. package/dist/types/types.d.ts +285 -0
  66. package/package.json +76 -37
  67. package/dist/cjs/components/cell.js +0 -31
  68. package/dist/cjs/components/columnSelection.js +0 -37
  69. package/dist/cjs/components/defaultFilterComponent.d.ts +0 -22
  70. package/dist/cjs/components/defaultFilterComponent.js +0 -91
  71. package/dist/cjs/components/expandComponent.d.ts +0 -5
  72. package/dist/cjs/components/expandComponent.js +0 -38
  73. package/dist/cjs/components/export.js +0 -48
  74. package/dist/cjs/components/filterComponent.d.ts +0 -5
  75. package/dist/cjs/components/filterComponent.js +0 -25
  76. package/dist/cjs/components/row.js +0 -51
  77. package/dist/cjs/components/selectComponent.js +0 -61
  78. package/dist/cjs/components/sortComponent.js +0 -52
  79. package/dist/cjs/components/textFilterComponent.d.ts +0 -11
  80. package/dist/cjs/components/textFilterComponent.js +0 -70
  81. package/dist/cjs/components/useCommonClasses.d.ts +0 -1
  82. package/dist/cjs/components/useCommonClasses.js +0 -49
  83. package/dist/cjs/components/virtualized.js +0 -98
  84. package/dist/cjs/index.d.ts +0 -6
  85. package/dist/cjs/internalState/calcItems.js +0 -85
  86. package/dist/cjs/internalState/calcProps.js +0 -89
  87. package/dist/cjs/internalState/cleanupState.js +0 -43
  88. package/dist/cjs/internalState/filterColumns.js +0 -10
  89. package/dist/cjs/internalState/syncSelections.js +0 -22
  90. package/dist/cjs/internalState/tableStateStorage.js +0 -74
  91. package/dist/cjs/internalState/useTableState.js +0 -62
  92. package/dist/cjs/misc/csvExport.js +0 -15
  93. package/dist/cjs/misc/helpers.js +0 -91
  94. package/dist/cjs/misc/queue.js +0 -42
  95. package/dist/cjs/misc/textMatch.js +0 -23
  96. package/dist/cjs/misc/throttle.d.ts +0 -1
  97. package/dist/cjs/misc/throttle.js +0 -30
  98. package/dist/cjs/package.json +0 -1
  99. package/dist/cjs/table.js +0 -80
  100. package/dist/cjs/types.d.ts +0 -146
  101. package/dist/cjs/types.js +0 -2
  102. package/dist/esm/components/cell.d.ts +0 -6
  103. package/dist/esm/components/cell.js +0 -28
  104. package/dist/esm/components/columnSelection.d.ts +0 -2
  105. package/dist/esm/components/columnSelection.js +0 -33
  106. package/dist/esm/components/defaultFilterComponent.d.ts +0 -22
  107. package/dist/esm/components/defaultFilterComponent.js +0 -86
  108. package/dist/esm/components/expandComponent.d.ts +0 -5
  109. package/dist/esm/components/expandComponent.js +0 -34
  110. package/dist/esm/components/export.d.ts +0 -2
  111. package/dist/esm/components/export.js +0 -44
  112. package/dist/esm/components/filterComponent.d.ts +0 -5
  113. package/dist/esm/components/filterComponent.js +0 -21
  114. package/dist/esm/components/row.d.ts +0 -7
  115. package/dist/esm/components/row.js +0 -47
  116. package/dist/esm/components/selectComponent.d.ts +0 -5
  117. package/dist/esm/components/selectComponent.js +0 -57
  118. package/dist/esm/components/sortComponent.d.ts +0 -4
  119. package/dist/esm/components/sortComponent.js +0 -48
  120. package/dist/esm/components/textFilterComponent.d.ts +0 -11
  121. package/dist/esm/components/textFilterComponent.js +0 -65
  122. package/dist/esm/components/useCommonClasses.d.ts +0 -1
  123. package/dist/esm/components/useCommonClasses.js +0 -46
  124. package/dist/esm/components/virtualized.d.ts +0 -6
  125. package/dist/esm/components/virtualized.js +0 -94
  126. package/dist/esm/index.d.ts +0 -6
  127. package/dist/esm/index.js +0 -4
  128. package/dist/esm/internalState/calcItems.d.ts +0 -3
  129. package/dist/esm/internalState/calcItems.js +0 -81
  130. package/dist/esm/internalState/calcProps.d.ts +0 -2
  131. package/dist/esm/internalState/calcProps.js +0 -85
  132. package/dist/esm/internalState/cleanupState.d.ts +0 -3
  133. package/dist/esm/internalState/cleanupState.js +0 -39
  134. package/dist/esm/internalState/filterColumns.d.ts +0 -3
  135. package/dist/esm/internalState/filterColumns.js +0 -6
  136. package/dist/esm/internalState/syncSelections.d.ts +0 -3
  137. package/dist/esm/internalState/syncSelections.js +0 -18
  138. package/dist/esm/internalState/tableStateStorage.d.ts +0 -11
  139. package/dist/esm/internalState/tableStateStorage.js +0 -70
  140. package/dist/esm/internalState/useTableState.d.ts +0 -3
  141. package/dist/esm/internalState/useTableState.js +0 -58
  142. package/dist/esm/misc/csvExport.d.ts +0 -7
  143. package/dist/esm/misc/csvExport.js +0 -11
  144. package/dist/esm/misc/helpers.d.ts +0 -14
  145. package/dist/esm/misc/helpers.js +0 -77
  146. package/dist/esm/misc/queue.d.ts +0 -6
  147. package/dist/esm/misc/queue.js +0 -38
  148. package/dist/esm/misc/textMatch.d.ts +0 -2
  149. package/dist/esm/misc/textMatch.js +0 -18
  150. package/dist/esm/misc/throttle.d.ts +0 -1
  151. package/dist/esm/misc/throttle.js +0 -26
  152. package/dist/esm/table.d.ts +0 -11
  153. package/dist/esm/table.js +0 -73
  154. package/dist/esm/types.d.ts +0 -146
  155. package/dist/esm/types.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../node_modules/prop-types/factoryWithThrowingShims.js","../../node_modules/prop-types/index.js","../../node_modules/dayzed/dist/dayzed.esm.js","../../src/theme/useCssVariables.ts","../../src/components/datePicker.tsx","../../src/components/dateFilter.tsx","../../src/misc/helpers.ts","../../src/components/formControlLabel.tsx","../../src/misc/queue.ts","../../src/internalState/tableStateStorage.ts","../../node_modules/immer/dist/immer.esm.js","../../node_modules/fast-deep-equal/es6/react.js","../../node_modules/schummar-state/dist/esm/helpers/stringSelector.js","../../node_modules/schummar-state/dist/esm/helpers/throttle.js","../../node_modules/schummar-state/dist/esm/store.js","../../node_modules/schummar-state/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../node_modules/schummar-state/node_modules/use-sync-external-store/shim/index.js","../../node_modules/schummar-state/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../node_modules/schummar-state/node_modules/use-sync-external-store/shim/with-selector.js","../../node_modules/schummar-state/dist/esm/react/useStoreState.js","../../node_modules/schummar-state/dist/esm/react/useStoreProp.js","../../node_modules/schummar-state/dist/esm/react/store.js","../../node_modules/schummar-state/dist/esm/react/storeScope.js","../../src/internalState/calcItems.ts","../../src/internalState/calcProps.ts","../../src/internalState/cleanupState.ts","../../src/internalState/filterColumns.ts","../../src/internalState/syncSelections.ts","../../src/internalState/useTableState.ts","../../src/components/columnHeader.tsx","../../src/components/columnSelection.tsx","../../src/misc/csvExport.ts","../../src/components/export.tsx","../../src/hooks/useTheme.ts","../../src/components/filterControl.tsx","../../src/components/resizeHandle.tsx","../../src/components/cell.tsx","../../src/components/expandControl.tsx","../../src/components/selectComponent.tsx","../../src/components/row.tsx","../../src/components/sortComponent.tsx","../../src/misc/throttle.ts","../../src/components/virtualized.tsx","../../src/components/table.tsx","../../src/components/selectFilter.tsx","../../src/misc/debounce.ts","../../src/hooks/useFilter.ts","../../src/misc/textMatch.ts","../../src/components/textFilter.tsx"],"sourcesContent":["/**\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 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 bigint: 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 { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nfunction toDate(argument) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added\n * @returns {Date} the new date with the days added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * var result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nfunction addDays(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n date.setDate(date.getDate() + amount);\n return date;\n}\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\n\nfunction isBefore(dirtyDate, dirtyDateToCompare) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * var result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nfunction startOfDay(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day?\n *\n * @description\n * Are the given dates in the same day?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n */\n\nfunction isSameDay(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}\n\n/**\n * @name isToday\n * @category Day Helpers\n * @summary Is the given date today?\n * @pure false\n *\n * @description\n * Is the given date today?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is today\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * var result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\n\nfunction isToday(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n return isSameDay(dirtyDate, Date.now());\n}\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\n\nfunction differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}\n\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls\n * `event.preventDefault()`. Not sure this is the best\n * way to do this, but it seems legit...\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nfunction composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return fns.some(function (fn) {\n fn && fn.apply(void 0, [event].concat(args));\n return event.defaultPrevented;\n });\n };\n}\n/**\n * Throws a helpful error message for required properties. Useful\n * to be used as a default in destructuring or object params.\n * @param {String} fnName the function name\n * @param {String} propName the prop name\n */\n\nfunction requiredProp(fnName, propName) {\n throw new Error(\"The property \\\"\" + propName + \"\\\" is required in \\\"\" + fnName + \"\\\"\");\n}\n/**\n * Takes an argument and if it's an array, returns the first item in the array\n * otherwise returns the argument.\n * @param {*} arg the maybe-array\n * @return {*} the arg or it's first item\n */\n\nfunction unwrapChildrenForPreact(arg) {\n arg = Array.isArray(arg) ?\n /* istanbul ignore next (preact) */\n arg[0] : arg;\n return arg || noop;\n}\n\nfunction noop() {}\n/**\n * Takes a calendars array and figures out the number of months to subtract\n * based on the current offset and the minDate allowed.\n * @param {Object} param The param object\n * @param {Array} param.calendars The calendars array created by the getCalendars function\n * @param {Number} param.offset The num of months to be subtracted\n * @param {Date} param.minDate The earliest date we are allow to subtract back to\n * @returns {Number} The number of months to subtract\n */\n\n\nfunction subtractMonth(_ref) {\n var calendars = _ref.calendars,\n offset = _ref.offset,\n minDate = _ref.minDate;\n\n if (offset > 1 && minDate) {\n var firstDayOfMonth = calendars[0].firstDayOfMonth;\n var diffInMonths = differenceInCalendarMonths(firstDayOfMonth, minDate);\n\n if (diffInMonths < offset) {\n offset = diffInMonths;\n }\n }\n\n return offset;\n}\n/**\n * Takes a calendars array and figures out the number of months to add\n * based on the current offset and the maxDate allowed.\n * @param {Object} param The param object\n * @param {Array} param.calendars The calendars array created by the getCalendars function\n * @param {Number} param.offset The num of months to be added\n * @param {Date} param.maxDate The furthest date we are allow to add forward to\n * @returns {Number} The number of months to add\n */\n\nfunction addMonth(_ref2) {\n var calendars = _ref2.calendars,\n offset = _ref2.offset,\n maxDate = _ref2.maxDate;\n\n if (offset > 1 && maxDate) {\n var lastDayOfMonth = calendars[calendars.length - 1].lastDayOfMonth;\n var diffInMonths = differenceInCalendarMonths(maxDate, lastDayOfMonth);\n\n if (diffInMonths < offset) {\n offset = diffInMonths;\n }\n }\n\n return offset;\n}\n/**\n * Takes a calendars array and figures out if the back button should be\n * disabled based on the minDate allowed.\n * @param {Object} param The param object\n * @param {Array} param.calendars The calendars array created by the getCalendars function\n * @param {Date} param.minDate The earliest date available\n * @returns {Boolean} Whether the back button should be disabled.\n */\n\nfunction isBackDisabled(_ref3) {\n var calendars = _ref3.calendars,\n minDate = _ref3.minDate;\n\n if (!minDate) {\n return false;\n }\n\n var firstDayOfMonth = calendars[0].firstDayOfMonth;\n var firstDayOfMonthMinusOne = addDays(firstDayOfMonth, -1);\n\n if (isBefore(firstDayOfMonthMinusOne, minDate)) {\n return true;\n }\n\n return false;\n}\n/**\n * Takes a calendars array and figures out if the forward button should be\n * disabled based on the maxDate allowed.\n * @param {Object} param The param object\n * @param {Array} param.calendars The calendars array created by the getCalendars function\n * @param {Date} param.maxDate The furthest date available\n * @returns {Boolean} Whether the forward button should be disabled.\n */\n\nfunction isForwardDisabled(_ref4) {\n var calendars = _ref4.calendars,\n maxDate = _ref4.maxDate;\n\n if (!maxDate) {\n return false;\n }\n\n var lastDayOfMonth = calendars[calendars.length - 1].lastDayOfMonth;\n var lastDayOfMonthPlusOne = addDays(lastDayOfMonth, 1);\n\n if (isBefore(maxDate, lastDayOfMonthPlusOne)) {\n return true;\n }\n\n return false;\n}\n/**\n * Figures out the months data needed based off the number of monthsToDisplay\n * and other options provided.\n * @param {Object} param The param object\n * @param {Date} param.date The date to start the calendar at\n * @param {Array.<Date>} param.selected An array of dates currently selected\n * @param {Number} param.monthsToDisplay The number of months to return in the calendar view\n * @param {Number} param.offset The number of months to offset based off the param.date given\n * @param {Date} param.minDate The earliest date available\n * @param {Date} param.maxDate The furthest date available\n * @param {Number} param.firstDayOfWeek First day of week, 0-6 (Sunday to Saturday)\n * @param {Bool} param.showOutsideDays Flag to fill front and back weeks with dates from adjacent months\n * @returns {Array.<Object>} An array of objects with month data\n */\n\nfunction getCalendars(_ref5) {\n var date = _ref5.date,\n selected = _ref5.selected,\n monthsToDisplay = _ref5.monthsToDisplay,\n offset = _ref5.offset,\n minDate = _ref5.minDate,\n maxDate = _ref5.maxDate,\n firstDayOfWeek = _ref5.firstDayOfWeek,\n showOutsideDays = _ref5.showOutsideDays;\n var months = [];\n var startDate = getStartDate(date, minDate, maxDate);\n\n for (var i = 0; i < monthsToDisplay; i++) {\n var calendarDates = getMonths({\n month: startDate.getMonth() + i + offset,\n year: startDate.getFullYear(),\n selectedDates: selected,\n minDate: minDate,\n maxDate: maxDate,\n firstDayOfWeek: firstDayOfWeek,\n showOutsideDays: showOutsideDays\n });\n months.push(calendarDates);\n }\n\n return months;\n}\n/**\n * Figures out the actual start date based on\n * the min and max dates available.\n * @param {Date} date The we want to start the calendar at\n * @param {Date} minDate The earliest date available to start at\n * @param {Date} maxDate The latest date available to start at\n * @returns {Date} The actual start date\n */\n\nfunction getStartDate(date, minDate, maxDate) {\n var startDate = startOfDay(date);\n\n if (minDate) {\n var minDateNormalized = startOfDay(minDate);\n\n if (isBefore(startDate, minDateNormalized)) {\n startDate = minDateNormalized;\n }\n }\n\n if (maxDate) {\n var maxDateNormalized = startOfDay(maxDate);\n\n if (isBefore(maxDateNormalized, startDate)) {\n startDate = maxDateNormalized;\n }\n }\n\n return startDate;\n}\n/**\n * Figures what week/day data to return for the given month\n * and year. Adds flags to day data if found in the given selectedDates,\n * if is selectable inside the given min and max dates, or is today.\n * @param {Object} param The param object\n * @param {Number} param.month The month to grab data for\n * @param {Number} param.year The year to grab data for\n * @param {Array.<Date>} sparam.electedDates An array of dates currently selected\n * @param {Date} param.minDate The earliest date available\n * @param {Date} param.maxDate The furthest date available\n * @param {Number} param.firstDayOfWeek First day of week, 0-6 (Sunday to Saturday)\n * @param {Bool} param.showOutsideDays Flag to fill front and back weeks with dates from adjacent months\n * @returns {Object} The data for the selected month/year\n */\n\n\nfunction getMonths(_ref6) {\n var month = _ref6.month,\n year = _ref6.year,\n selectedDates = _ref6.selectedDates,\n minDate = _ref6.minDate,\n maxDate = _ref6.maxDate,\n firstDayOfWeek = _ref6.firstDayOfWeek,\n showOutsideDays = _ref6.showOutsideDays;\n // Get the normalized month and year, along with days in the month.\n var daysMonthYear = getNumDaysMonthYear(month, year);\n var daysInMonth = daysMonthYear.daysInMonth;\n month = daysMonthYear.month;\n year = daysMonthYear.year; // Fill out the dates for the month.\n\n var dates = [];\n\n for (var day = 1; day <= daysInMonth; day++) {\n var date = new Date(year, month, day);\n var dateObj = {\n date: date,\n selected: isSelected(selectedDates, date),\n selectable: isSelectable(minDate, maxDate, date),\n today: isToday(date),\n prevMonth: false,\n nextMonth: false\n };\n dates.push(dateObj);\n }\n\n var firstDayOfMonth = new Date(year, month, 1);\n var lastDayOfMonth = new Date(year, month, daysInMonth);\n var frontWeekBuffer = fillFrontWeek({\n firstDayOfMonth: firstDayOfMonth,\n minDate: minDate,\n maxDate: maxDate,\n selectedDates: selectedDates,\n firstDayOfWeek: firstDayOfWeek,\n showOutsideDays: showOutsideDays\n });\n var backWeekBuffer = fillBackWeek({\n lastDayOfMonth: lastDayOfMonth,\n minDate: minDate,\n maxDate: maxDate,\n selectedDates: selectedDates,\n firstDayOfWeek: firstDayOfWeek,\n showOutsideDays: showOutsideDays\n });\n dates.unshift.apply(dates, frontWeekBuffer);\n dates.push.apply(dates, backWeekBuffer); // Get the filled out weeks for the\n // given dates.\n\n var weeks = getWeeks(dates); // return the calendar data.\n\n return {\n firstDayOfMonth: firstDayOfMonth,\n lastDayOfMonth: lastDayOfMonth,\n month: month,\n year: year,\n weeks: weeks\n };\n}\n/**\n * Fill front week with either empty buffer or dates from previous month,\n * depending on showOutsideDays flag\n * @param {Object} param The param object\n * @param {Array.<Date>} param.selectedDates An array of dates currently selected\n * @param {Date} param.minDate The earliest date available\n * @param {Date} param.maxDate The furthest date available\n * @param {Date} param.firstDayOfMonth First day of the month\n * @param {Number} param.firstDayOfWeek First day of week, 0-6 (Sunday to Saturday)\n * @param {Bool} param.showOutsideDays Flag to fill front and back weeks with dates from adjacent months\n * @returns {Array.<Date>} Buffer to fill front week\n */\n\n\nfunction fillFrontWeek(_ref7) {\n var firstDayOfMonth = _ref7.firstDayOfMonth,\n minDate = _ref7.minDate,\n maxDate = _ref7.maxDate,\n selectedDates = _ref7.selectedDates,\n firstDayOfWeek = _ref7.firstDayOfWeek,\n showOutsideDays = _ref7.showOutsideDays;\n var dates = [];\n var firstDay = (firstDayOfMonth.getDay() + 7 - firstDayOfWeek) % 7;\n\n if (showOutsideDays) {\n var lastDayOfPrevMonth = addDays(firstDayOfMonth, -1);\n var prevDate = lastDayOfPrevMonth.getDate();\n var prevDateMonth = lastDayOfPrevMonth.getMonth();\n var prevDateYear = lastDayOfPrevMonth.getFullYear(); // Fill out front week for days from\n // preceding month with dates from previous month.\n\n var counter = 0;\n\n while (counter < firstDay) {\n var date = new Date(prevDateYear, prevDateMonth, prevDate - counter);\n var dateObj = {\n date: date,\n selected: isSelected(selectedDates, date),\n selectable: isSelectable(minDate, maxDate, date),\n today: false,\n prevMonth: true,\n nextMonth: false\n };\n dates.unshift(dateObj);\n counter++;\n }\n } else {\n // Fill out front week for days from\n // preceding month with buffer.\n while (firstDay > 0) {\n dates.unshift('');\n firstDay--;\n }\n }\n\n return dates;\n}\n/**\n * Fill back weeks with either empty buffer or dates from next month,\n * depending on showOutsideDays flag\n * @param {Object} param The param object\n * @param {Array.<Date>} param.selectedDates An array of dates currently selected\n * @param {Date} param.minDate The earliest date available\n * @param {Date} param.maxDate The furthest date available\n * @param {Date} param.lastDayOfMonth Last day of the month\n * @param {Number} param.firstDayOfWeek First day of week, 0-6 (Sunday to Saturday)\n * @param {Bool} param.showOutsideDays Flag to fill front and back weeks with dates from adjacent months\n * @returns {Array.<Date>} Buffer to fill back week\n */\n\n\nfunction fillBackWeek(_ref8) {\n var lastDayOfMonth = _ref8.lastDayOfMonth,\n minDate = _ref8.minDate,\n maxDate = _ref8.maxDate,\n selectedDates = _ref8.selectedDates,\n firstDayOfWeek = _ref8.firstDayOfWeek,\n showOutsideDays = _ref8.showOutsideDays;\n var dates = [];\n var lastDay = (lastDayOfMonth.getDay() + 7 - firstDayOfWeek) % 7;\n\n if (showOutsideDays) {\n var firstDayOfNextMonth = addDays(lastDayOfMonth, 1);\n var nextDateMonth = firstDayOfNextMonth.getMonth();\n var nextDateYear = firstDayOfNextMonth.getFullYear(); // Fill out back week for days from\n // following month with dates from next month.\n\n var counter = 0;\n\n while (counter < 6 - lastDay) {\n var date = new Date(nextDateYear, nextDateMonth, 1 + counter);\n var dateObj = {\n date: date,\n selected: isSelected(selectedDates, date),\n selectable: isSelectable(minDate, maxDate, date),\n today: false,\n prevMonth: false,\n nextMonth: true\n };\n dates.push(dateObj);\n counter++;\n }\n } else {\n // Fill out back week for days from\n // following month with buffer.\n while (lastDay < 6) {\n dates.push('');\n lastDay++;\n }\n }\n\n return dates;\n}\n/**\n * Normalizes month (could be overflow) and year pairs and returns the\n * normalized month and year along with the number of days in the month.\n * @param {Number} month The month to normalize\n * @param {Number} year The year to normalize\n * @returns {Object} The normalized month and year along with the number of days in the month\n */\n\n\nfunction getNumDaysMonthYear(month, year) {\n // If a parameter you specify is outside of the expected range for Month or Day,\n // JS Date attempts to update the date information in the Date object accordingly!\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMonth\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setDate\n // Let Date handle the overflow of the month,\n // which should return the normalized month and year.\n var normalizedMonthYear = new Date(year, month, 1);\n month = normalizedMonthYear.getMonth();\n year = normalizedMonthYear.getFullYear(); // Overflow the date to the next month, then subtract the difference\n // to get the number of days in the previous month.\n // This will also account for leap years!\n\n var daysInMonth = 32 - new Date(year, month, 32).getDate();\n return {\n daysInMonth: daysInMonth,\n month: month,\n year: year\n };\n}\n/**\n * Takes an array of dates, and turns them into a multi dimensional\n * array with 7 entries for each week.\n * @param {Array.<Object>} dates An array of dates\n * @returns {Array} The weeks as a multi dimensional array\n */\n\n\nfunction getWeeks(dates) {\n var weeksLength = Math.ceil(dates.length / 7);\n var weeks = [];\n\n for (var i = 0; i < weeksLength; i++) {\n weeks[i] = [];\n\n for (var x = 0; x < 7; x++) {\n weeks[i].push(dates[i * 7 + x]);\n }\n }\n\n return weeks;\n}\n/**\n * Normalizes dates to the beginning of the day,\n * then checks to see if the day given is found\n * in the selectedDates.\n * @param {Array.<Date>} selectedDates An array of dates currently selected\n * @param {Date} date The date to search with against selectedDates\n * @returns {Boolean} Whether day is found in selectedDates\n */\n\n\nfunction isSelected(selectedDates, date) {\n selectedDates = Array.isArray(selectedDates) ? selectedDates : [selectedDates];\n return selectedDates.some(function (selectedDate) {\n if (selectedDate instanceof Date && startOfDay(selectedDate).getTime() === startOfDay(date).getTime()) {\n return true;\n }\n\n return false;\n });\n}\n/**\n * Checks to see if the date given is\n * between the min and max dates.\n * @param {Date} minDate The earliest date available\n * @param {Date} maxDate The furthest date available\n * @param {Date} date The date to compare with\n * @returns {Boolean} Whether the date is between min and max date\n */\n\n\nfunction isSelectable(minDate, maxDate, date) {\n if (minDate && isBefore(date, minDate) || maxDate && isBefore(maxDate, date)) {\n return false;\n }\n\n return true;\n}\n\nfunction isOffsetControlled(propOffset) {\n return propOffset !== undefined;\n}\n\nfunction getOffset(prop, state) {\n return isOffsetControlled(prop) ? prop : state;\n}\n\nfunction getDateProps(onDateSelected, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n onClick = _ref.onClick,\n _ref$dateObj = _ref.dateObj,\n dateObj = _ref$dateObj === void 0 ? requiredProp('getDateProps', 'dateObj') : _ref$dateObj,\n rest = _objectWithoutPropertiesLoose(_ref, [\"onClick\", \"dateObj\"]);\n\n return _extends({\n onClick: composeEventHandlers(onClick, function (event) {\n onDateSelected(dateObj, event);\n }),\n disabled: !dateObj.selectable,\n 'aria-label': dateObj.date.toDateString(),\n 'aria-pressed': dateObj.selected,\n role: 'button'\n }, rest);\n}\n\nfunction getBackProps(_ref2, _temp2) {\n var minDate = _ref2.minDate,\n offsetMonth = _ref2.offsetMonth,\n handleOffsetChanged = _ref2.handleOffsetChanged;\n\n var _ref3 = _temp2 === void 0 ? {} : _temp2,\n onClick = _ref3.onClick,\n _ref3$offset = _ref3.offset,\n offset = _ref3$offset === void 0 ? 1 : _ref3$offset,\n _ref3$calendars = _ref3.calendars,\n calendars = _ref3$calendars === void 0 ? requiredProp('getBackProps', 'calendars') : _ref3$calendars,\n rest = _objectWithoutPropertiesLoose(_ref3, [\"onClick\", \"offset\", \"calendars\"]);\n\n return _extends({\n onClick: composeEventHandlers(onClick, function () {\n handleOffsetChanged(offsetMonth - subtractMonth({\n calendars: calendars,\n offset: offset,\n minDate: minDate\n }));\n }),\n disabled: isBackDisabled({\n calendars: calendars,\n offset: offset,\n minDate: minDate\n }),\n 'aria-label': \"Go back \" + offset + \" month\" + (offset === 1 ? '' : 's')\n }, rest);\n}\n\nfunction getForwardProps(_ref4, _temp3) {\n var maxDate = _ref4.maxDate,\n offsetMonth = _ref4.offsetMonth,\n handleOffsetChanged = _ref4.handleOffsetChanged;\n\n var _ref5 = _temp3 === void 0 ? {} : _temp3,\n onClick = _ref5.onClick,\n _ref5$offset = _ref5.offset,\n offset = _ref5$offset === void 0 ? 1 : _ref5$offset,\n _ref5$calendars = _ref5.calendars,\n calendars = _ref5$calendars === void 0 ? requiredProp('getForwardProps', 'calendars') : _ref5$calendars,\n rest = _objectWithoutPropertiesLoose(_ref5, [\"onClick\", \"offset\", \"calendars\"]);\n\n return _extends({\n onClick: composeEventHandlers(onClick, function () {\n handleOffsetChanged(offsetMonth + addMonth({\n calendars: calendars,\n offset: offset,\n maxDate: maxDate\n }));\n }),\n disabled: isForwardDisabled({\n calendars: calendars,\n offset: offset,\n maxDate: maxDate\n }),\n 'aria-label': \"Go forward \" + offset + \" month\" + (offset === 1 ? '' : 's')\n }, rest);\n}\n\nfunction useDayzed(_ref6) {\n var _ref6$date = _ref6.date,\n date = _ref6$date === void 0 ? new Date() : _ref6$date,\n maxDate = _ref6.maxDate,\n minDate = _ref6.minDate,\n _ref6$monthsToDisplay = _ref6.monthsToDisplay,\n monthsToDisplay = _ref6$monthsToDisplay === void 0 ? 1 : _ref6$monthsToDisplay,\n _ref6$firstDayOfWeek = _ref6.firstDayOfWeek,\n firstDayOfWeek = _ref6$firstDayOfWeek === void 0 ? 0 : _ref6$firstDayOfWeek,\n _ref6$showOutsideDays = _ref6.showOutsideDays,\n showOutsideDays = _ref6$showOutsideDays === void 0 ? false : _ref6$showOutsideDays,\n offset = _ref6.offset,\n onDateSelected = _ref6.onDateSelected,\n _ref6$onOffsetChanged = _ref6.onOffsetChanged,\n onOffsetChanged = _ref6$onOffsetChanged === void 0 ? function () {} : _ref6$onOffsetChanged,\n selected = _ref6.selected;\n\n var _useState = useState(0),\n stateOffset = _useState[0],\n setStateOffset = _useState[1];\n\n var offsetMonth = getOffset(offset, stateOffset);\n\n function handleOffsetChanged(newOffset) {\n if (!isOffsetControlled(offset)) {\n setStateOffset(newOffset);\n }\n\n onOffsetChanged(newOffset);\n }\n\n var calendars = getCalendars({\n date: date,\n selected: selected,\n monthsToDisplay: monthsToDisplay,\n minDate: minDate,\n maxDate: maxDate,\n offset: offsetMonth,\n firstDayOfWeek: firstDayOfWeek,\n showOutsideDays: showOutsideDays\n });\n return {\n calendars: calendars,\n getDateProps: getDateProps.bind(null, onDateSelected),\n getBackProps: getBackProps.bind(null, {\n minDate: minDate,\n offsetMonth: offsetMonth,\n handleOffsetChanged: handleOffsetChanged\n }),\n getForwardProps: getForwardProps.bind(null, {\n maxDate: maxDate,\n offsetMonth: offsetMonth,\n handleOffsetChanged: handleOffsetChanged\n })\n };\n}\n\nfunction Dayzed(props) {\n var dayzedCalendar = useDayzed(props);\n var children = unwrapChildrenForPreact(props.render || props.children);\n return children(dayzedCalendar);\n}\n\nDayzed.defaultProps = {\n date: new Date(),\n monthsToDisplay: 1,\n onOffsetChanged: function onOffsetChanged() {},\n firstDayOfWeek: 0,\n showOutsideDays: false\n};\nDayzed.propTypes = {\n render: PropTypes.func,\n children: PropTypes.func,\n date: PropTypes.instanceOf(Date),\n maxDate: PropTypes.instanceOf(Date),\n minDate: PropTypes.instanceOf(Date),\n monthsToDisplay: PropTypes.number,\n firstDayOfWeek: PropTypes.number,\n showOutsideDays: PropTypes.bool,\n offset: PropTypes.number,\n onDateSelected: PropTypes.func.isRequired,\n onOffsetChanged: PropTypes.func,\n selected: PropTypes.oneOfType([PropTypes.arrayOf(Date), PropTypes.instanceOf(Date)])\n};\n\nexport default Dayzed;\nexport { useDayzed };\n","import { useTableContext } from '..';\n\nexport function useCssVariables() {\n const table = useTableContext();\n return table.useState((state) => ({\n '--spacing': state.theme.spacing,\n '--primaryMain': state.theme.colors.primary.main,\n '--primaryLight': state.theme.colors.primary.light,\n '--primaryContrastText': state.theme.colors.primary.contrastText,\n '--secondaryMain': state.theme.colors.secondary.main,\n '--secondaryLight': state.theme.colors.secondary.light,\n '--secondaryContrastText': state.theme.colors.secondary.contrastText,\n }));\n}\n","import { useDayzed } from 'dayzed';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTheme } from '..';\nimport { gray } from '../theme/defaultClasses';\nimport { useCssVariables } from '../theme/useCssVariables';\n\nexport type DateRange = { min: Date; max: Date };\n\nexport type DatePickerProps = {\n value: Date | DateRange | null;\n onChange: (value: Date | DateRange | null) => void;\n rangeSelect?: boolean;\n locale?: string;\n firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n};\n\nconst weekDays = [0, 1, 2, 3, 4, 5, 6] as const;\nconst months = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] as const;\n\nexport const startOfDay = (d: Date) => new Date(d.getFullYear(), d.getMonth(), d.getDate());\n\nexport const endOfDay = (d: Date) => new Date(d.getFullYear(), d.getMonth(), d.getDate() + 1, 0, 0, 0, -1);\n\nexport const today = (): DateRange => {\n const today = startOfDay(new Date());\n return { min: today, max: today };\n};\n\nexport function dateIntersect(a: Date | null | DateRange, b: Date | null | DateRange) {\n if (a instanceof Date) {\n a = { min: a, max: a };\n }\n if (b instanceof Date) {\n b = { min: b, max: b };\n }\n\n if (!a?.min || !a.max || !b?.min || !b.max) {\n return false;\n }\n\n return !(endOfDay(a.max) < startOfDay(b.min) || startOfDay(a.min) > endOfDay(b.max));\n}\n\nexport function DatePicker({ value, onChange, rangeSelect, locale, firstDayOfWeek = 0 }: DatePickerProps) {\n const {\n components: { IconButton },\n icons: { ChevronRight },\n } = useTheme();\n\n const [baseDate] = useState(new Date());\n const [dateInView, setDateInView] = useState<Date>(baseDate);\n const [currentMin, setCurrentMin] = useState<Date>();\n const [hovered, setHovered] = useState<Date>();\n\n const min = currentMin ?? (value instanceof Date ? value : value?.min);\n const max = currentMin ? undefined : value instanceof Date ? value : value?.max;\n\n const { calendars, getBackProps, getForwardProps, getDateProps } = useDayzed({\n onDateSelected: () => undefined,\n firstDayOfWeek,\n showOutsideDays: true,\n date: dateInView,\n onOffsetChanged: (offset) => setDateInView(new Date(dateInView.getFullYear(), dateInView.getMonth() + offset)),\n offset: 0,\n });\n\n const formatWeekday = useMemo(() => {\n const { format } = new Intl.DateTimeFormat(locale, { weekday: 'short' });\n return (weekDay: number) => format(new Date(Date.UTC(2021, 5, weekDay)));\n }, [locale]);\n\n useEffect(() => setDateInView(value === null ? new Date() : value instanceof Date ? value : value.max), [value]);\n\n return (\n <div>\n {calendars.map(({ month, year, weeks }) => (\n <div key={`${month}${year}`}>\n <div\n css={{\n margin: 'calc(var(--spacing) * 4) 0',\n display: 'grid',\n gridAutoFlow: 'column',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <IconButton {...getBackProps({ calendars })}>\n <ChevronRight css={{ transform: 'rotate3d(0, 0, 1, 180deg)' }} />\n </IconButton>\n\n <div css={{ display: 'flex' }}>\n <MonthSelector value={month} onChange={(month) => setDateInView(new Date(year, month))} locale={locale} />\n\n <YearSelector value={year} onChange={(year) => setDateInView(new Date(year, month))} />\n </div>\n\n <IconButton {...getForwardProps({ calendars })}>\n <ChevronRight />\n </IconButton>\n </div>\n\n <div\n css={{\n display: 'grid',\n gridTemplateColumns: 'repeat(7, max-content)',\n fontWeight: 'bold',\n }}\n >\n {weekDays.map((_v, weekDay) => (\n <div key={weekDay} css={{ justifySelf: 'center', marginBottom: 'var(--spacing)' }}>\n {formatWeekday(weekDay)}\n </div>\n ))}\n\n {weeks.map((week, index) =>\n week.map((dateObj, dayIndex) => {\n if (!dateObj) {\n return <div />;\n }\n\n const { prevMonth, nextMonth, date, today } = dateObj;\n\n const selected = date.getTime() === min?.getTime() || (min && max && dateIntersect(date, { min, max }));\n const preSelected =\n !selected &&\n (date.getTime() === hovered?.getTime() ||\n (min && !max && hovered && dateIntersect(date, min <= hovered ? { min, max: hovered } : { min: hovered, max: min })));\n\n return (\n <button\n key={`${index}-${dayIndex}`}\n css={[\n {\n padding: 10,\n border: '1px solid transparent',\n background: 'transparent',\n cursor: 'pointer',\n },\n (prevMonth || nextMonth) && {\n color: gray,\n },\n today && {\n border: '1px solid var(--secondaryMain)',\n },\n selected && {\n background: 'var(--primaryMain)',\n color: 'var(--primaryContrastText)',\n },\n preSelected && {\n background: 'var(--primaryLight)',\n color: 'var(--primaryContrastText)',\n },\n ]}\n {...getDateProps({ dateObj })}\n onClick={() => {\n if (!rangeSelect) {\n setCurrentMin(undefined);\n onChange(date);\n } else if (min && !max) {\n setCurrentMin(undefined);\n if (date > min) {\n onChange({ min, max: date });\n } else {\n onChange({ min: date, max: min });\n }\n } else {\n setCurrentMin(date);\n }\n }}\n onPointerOver={() => setHovered(date)}\n onPointerOut={() => setHovered(undefined)}\n >\n {date.getDate()}\n </button>\n );\n }),\n )}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\nfunction MonthSelector({ value, onChange, locale }: { value: number; onChange: (month: number) => void; locale?: string }) {\n const {\n components: { Popover },\n } = useTheme();\n const cssVariables = useCssVariables();\n\n const [anchor, setAnchor] = useState<Element>();\n\n const formatMonth = useMemo(() => {\n const { format } = new Intl.DateTimeFormat(locale, { month: 'long' });\n return (month: number) => format(new Date(2021, month));\n }, [locale]);\n\n return (\n <>\n <button\n css={{\n border: 'none',\n background: 'transparent',\n fontSize: 'inherit',\n cursor: 'pointer',\n }}\n onClick={(e) => setAnchor(e.currentTarget)}\n >\n {formatMonth(value)}\n </button>\n\n <Popover open={!!anchor} anchorEl={anchor ?? null} onClose={() => setAnchor(undefined)} align=\"center\" css={cssVariables}>\n <div\n css={{\n display: 'grid',\n }}\n >\n {months.map((month) => (\n <button\n key={month}\n css={[\n {\n padding: 'var(--spacing)',\n border: 'none',\n background: 'transparent',\n\n '&:hover': {\n background: 'var(--primaryLight)',\n },\n },\n month === value && { background: 'var(--primaryMain)' },\n ]}\n onClick={() => onChange(month)}\n >\n {formatMonth(month)}\n </button>\n ))}\n </div>\n </Popover>\n </>\n );\n}\n\nfunction YearSelector({ value, onChange, locale }: { value: number; onChange: (year: number) => void; locale?: string }) {\n const [input, setInput] = useState<string>();\n\n function apply() {\n onChange(Number(input));\n setInput(undefined);\n }\n\n const formatYear = useMemo(() => {\n const { format } = new Intl.DateTimeFormat(locale, { year: 'numeric' });\n return (year: number) => format(new Date(year, 0, 1));\n }, [locale]);\n\n if (input === undefined) {\n return <div onClick={() => setInput(String(value))}>{formatYear(value)}</div>;\n }\n\n return (\n <input\n css={{ width: '4ch' }}\n value={input}\n onChange={(e) => {\n if (e.target.value.match(/^\\d{0,4}$/)) {\n setInput(e.target.value);\n }\n }}\n onBlur={apply}\n onKeyPress={(e) => e.key === 'Enter' && apply()}\n ></input>\n );\n}\n","import React, { useMemo } from 'react';\nimport { useFilter, useTheme } from '..';\nimport { CommonFilterProps } from '../types';\nimport { dateIntersect, DatePicker, DatePickerProps, DateRange, today } from './datePicker';\n\nfunction convertDate(x: unknown): Date | null {\n if (x instanceof Date) return x;\n if (typeof x === 'number' || typeof x === 'string') return new Date(x);\n return null;\n}\n\nfunction convertDateOrRange(x: unknown): Date | DateRange | null {\n if (x instanceof Object && 'min' in x && 'max' in x) {\n const range = {\n min: convertDate((x as any).min),\n max: convertDate((x as any).max),\n };\n return range.min && range.max ? (range as DateRange) : null;\n }\n return convertDate(x);\n}\n\nfunction convertDateOrArray(x: unknown): Date | DateRange | (Date | DateRange)[] | null {\n if (x instanceof Array) return x.map(convertDateOrRange).filter(Boolean) as (Date | DateRange)[];\n return convertDateOrRange(x);\n}\n\nexport function DateFilter<T, V>({\n locale,\n firstDayOfWeek,\n singleSelect,\n filterBy = convertDateOrArray,\n ...props\n}: {\n locale?: string;\n firstDayOfWeek?: DatePickerProps['firstDayOfWeek'];\n singleSelect?: boolean;\n} & CommonFilterProps<T, V, Date | DateRange | null, Date | DateRange | null>): JSX.Element {\n const {\n components: { Button },\n text,\n } = useTheme();\n\n const { value = null, onChange } = useFilter({\n ...props,\n filterBy,\n\n id: 'dateFilter',\n\n isActive(filterValue) {\n return !!filterValue;\n },\n\n test(filterValue, value) {\n return dateIntersect(filterValue, value);\n },\n });\n\n const formatDate = useMemo(() => {\n const { format } = new Intl.DateTimeFormat(locale, { dateStyle: 'medium' });\n return format;\n }, [locale]);\n\n return (\n <div\n css={{\n padding: 'calc(var(--spacing) * 2)',\n display: 'grid',\n gap: 'var(--spacing)',\n justifyItems: 'center',\n }}\n >\n <div\n css={{\n marginBottom: 'var(--spacing)',\n display: 'grid',\n gridAutoFlow: 'column',\n gap: 'calc(var(--spacing) * 4)',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <div css={{ minWidth: '22ch' }}>\n {!value\n ? text.dateFilter\n : value instanceof Date\n ? formatDate(value)\n : [formatDate(value.min), formatDate(value.max)].join(' - ')}\n </div>\n\n <div css={{ display: 'grid', gridAutoFlow: 'column', gap: 'var(--spacing)' }}>\n <Button variant=\"contained\" onClick={() => onChange(today())}>\n {text.today}\n </Button>\n <Button variant=\"contained\" onClick={() => onChange(null)}>\n {text.reset}\n </Button>\n </div>\n </div>\n\n <DatePicker rangeSelect={!singleSelect} value={value} onChange={onChange} locale={locale} firstDayOfWeek={firstDayOfWeek} />\n </div>\n );\n}\n","import { Id, TableItem } from '../types';\n\nexport const flatMap = <T, S>(arr: Iterable<T>, flatMap: (t: T) => S[]): S[] => {\n return [...arr].reduce<S[]>((out, cur) => out.concat(flatMap(cur)), []);\n};\n\nexport const orderBy = <T>(arr: T[], selectors: ((t: T) => any)[] = [], direction: ('desc' | 'asc')[] = []): T[] => {\n if (selectors.length === 0) selectors = [(t) => t];\n\n return [...arr].sort((a, b) => {\n for (let i = 0; i < selectors.length; i++) {\n const _a = selectors[i]?.(a);\n const _b = selectors[i]?.(b);\n const dir = direction[i] === 'desc' ? -1 : 1;\n if (_a > _b) return dir;\n if (_a < _b) return -dir;\n }\n return 0;\n });\n};\n\nexport const uniq = <T>(arr: T[]): T[] => {\n const set = new Set<T>();\n for (const t of arr) set.add(t);\n return [...set.values()];\n};\n\nexport const intersect = <T>(a: Iterable<T>, b: { has(t: T): boolean }): Set<T> => {\n const result = new Set<T>();\n for (const x of a) if (b.has(x)) result.add(x);\n return result;\n};\n\nexport const getAncestors = <T>(activeItemsById: Map<Id, TableItem<T>>, ...items: TableItem<T>[]): Set<Id> => {\n const result = new Set<Id>();\n\n const find = ({ parentId }: TableItem<T>): void => {\n const parent = parentId ? activeItemsById.get(parentId) : undefined;\n if (parent && !result.has(parent.id)) {\n result.add(parent.id);\n find(parent);\n }\n };\n items.forEach(find);\n return result;\n};\n\nexport const getDescendants = <T>(...items: TableItem<T>[]): Set<Id> => {\n const result = new Set<Id>();\n\n const find = (item: TableItem<T>): void => {\n for (const child of item.children) {\n if (!result.has(child.id)) {\n result.add(child.id);\n find(child);\n }\n }\n };\n items.forEach(find);\n return result;\n};\n\nexport const identity = (x: unknown): any => x;\n\nexport const asString = (x: unknown): string => {\n if (x instanceof Array) return x.map(asString).join(', ');\n if (x instanceof Object) return JSON.stringify(x);\n return String(x ?? '');\n};\n\nexport const asStringOrArray = (x: unknown): string | string[] => {\n if (x instanceof Array) return x.map(asString);\n return asString(x);\n};\n\nexport const defaultEquals = (a: unknown, b: unknown): boolean => a === b;\n\nexport const subStringMatch = (a: string, b: string): boolean => a.toLowerCase().includes(b.toLowerCase());\n\nexport const castArray = <T>(a: T | T[]) => (a instanceof Array ? a : [a]);\n","import { ReactNode } from 'react';\n\nexport function FormControlLabel({ control, label }: { control: ReactNode; label: ReactNode }) {\n return (\n <label\n css={{\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n userSelect: 'none',\n\n '& > *': {\n cursor: 'pointer',\n },\n }}\n >\n {control}\n <span css={{ marginLeft: 'var(--spacing)' }}>{label}</span>\n </label>\n );\n}\n","export class Queue {\n private q = new Array<{ job: () => Promise<any>; resolve: (value: any) => void; reject: (reason?: any) => void }>();\n private isRunning = false;\n\n run<T>(job: () => Promise<T>, replace?: boolean) {\n return new Promise<T>((resolve, reject) => {\n if (replace) {\n this.q = [];\n }\n this.q.push({ job, resolve, reject });\n\n if (!this.isRunning) this.start();\n });\n }\n\n private async start() {\n this.isRunning = true;\n\n let next;\n while ((next = this.q.shift())) {\n try {\n const result = await next.job();\n next.resolve(result);\n } catch (e) {\n next.reject(e);\n }\n }\n\n this.isRunning = false;\n }\n}\n","import { useEffect, useState } from 'react';\nimport { useTableContext } from '..';\nimport { Queue } from '../misc/queue';\nimport { SerializableValue } from '../types';\n\nconst KEYS = ['sort', 'selection', 'expanded', 'hiddenColumns', 'filterValues', 'columnWidths', 'columnOrder'] as const;\n\nexport type TableStateStorage = {\n getItem: (key: string) => string | null | Promise<string | null>;\n setItem: (key: string, value: string) => unknown | Promise<unknown>;\n removeItem: (key: string) => unknown | Promise<unknown>;\n} & (\n | {\n keys: () => string[] | Promise<string[]>;\n }\n | {\n length: number | (() => number | Promise<number>);\n key: (keyIndex: number) => string | null | Promise<string | null>;\n }\n);\n\nfunction stringify(value: SerializableValue) {\n function prepare(value: SerializableValue): any {\n if (value instanceof Date) {\n return { __date: value.toJSON() };\n }\n\n if (value instanceof Set) {\n return { __set: Array.from(value).map(prepare) };\n }\n\n if (value instanceof Map) {\n return { __map: Array.from(value.entries()).map((entry) => entry.map(prepare)) };\n }\n\n if (value instanceof Array) {\n return value.map(prepare);\n }\n\n if (value instanceof Object) {\n return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, prepare(v)]));\n }\n\n return value;\n }\n\n return JSON.stringify(prepare(value));\n}\n\nfunction parse(value: string) {\n return JSON.parse(value, (_key, value) => {\n if (value instanceof Object && '__date' in value) {\n return new Date(value.__date);\n }\n\n if (value instanceof Object && '__set' in value) {\n return new Set(value.__set);\n }\n\n if (value instanceof Object && '__map' in value) {\n return new Map(value.__map);\n }\n\n return value;\n });\n}\n\nexport function useTableStateStorage() {\n const table = useTableContext();\n const [isHydrated, setIsHydrated] = useState(false);\n\n // On mount: load\n useEffect(() => {\n const { persist } = table.getState().props;\n if (!persist) {\n setIsHydrated(true);\n return;\n }\n\n let isCanceled = false;\n\n (async () => {\n try {\n const { storage, id = 'table', include, exclude } = persist;\n const json = await storage.getItem(`${id}_state`);\n if (isCanceled || !json) return;\n\n const data = parse(json);\n table.getState().props.debug?.('load', json, data);\n\n table.update((state) => {\n for (const key of KEYS) {\n if (\n //\n (!include || include.includes(key)) &&\n !exclude?.includes(key) &&\n key in data\n ) {\n if (key === 'filterValues') {\n for (const [id, value] of data[key]) {\n if (state.filters.get(id)?.persist ?? true) {\n state.filterValues.set(id, value);\n }\n }\n } else {\n state[key] = data[key];\n\n if (key === 'expanded' || key === 'hiddenColumns' || key === 'selection' || key === 'sort') {\n state.props[`on${(key.slice(0, 1).toUpperCase() + key.slice(1)) as Capitalize<typeof key>}Change`]?.(data[key]);\n }\n }\n }\n }\n });\n } catch (e) {\n console.error('Failed to load table state:', e);\n } finally {\n setIsHydrated(true);\n }\n })();\n\n return () => {\n isCanceled = true;\n };\n }, []);\n\n // After isHydrated, watch and save state\n useEffect(() => {\n if (!isHydrated) return;\n\n const q = new Queue();\n\n return table.subscribe(\n (state) => {\n if (!state.props.persist) return;\n\n const { storage, id = 'table', include, exclude } = state.props.persist;\n const data: any = {};\n\n for (const key of KEYS) {\n if (\n //\n (!include || include.includes(key)) &&\n !exclude?.includes(key)\n ) {\n if (key === 'filterValues') {\n data[key] = new Map();\n for (const [id, value] of state.filterValues) {\n if (state.filters.get(id)?.persist ?? true) {\n data.filterValues.set(id, value);\n }\n }\n } else {\n data[key] = state[key];\n }\n }\n }\n\n return { storage, id, data };\n },\n (props) => {\n if (!props) return;\n const { storage, id, data } = props;\n\n table.getState().props.debug?.('save', data, stringify(data));\n q.run(async () => {\n await storage.setItem(`${id}_state`, stringify(data));\n }, true);\n },\n { throttle: 1000 },\n );\n }, [isHydrated]);\n\n return isHydrated;\n}\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!n.constructor[L]||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?(n.delete(r),n.add(t)):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)?n:(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0),n)}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function O(n){g(n),n.p.forEach(S),n.p=null}function g(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.O=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.g||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(O(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),O(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o;i(3===e.i?new Set(o):o,(function(r,i){return A(n,e,o,r,i,t)})),x(n,o,!1),t&&n.u&&b(\"Patches\").R(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var v=M(e,c,s&&i&&3!==i.i&&!u(i.D,a)?s.concat(a):void 0);if(f(o,a,v),!r(v))return;e.m=!1}if(t(c)&&!y(c)){if(!e.h.F&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),n.h.F&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function R(n,r,t){var e=s(r)?b(\"MapSet\").N(r,t):v(r)?b(\"MapSet\").T(r,t):n.g?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function D(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=F(r,c),u.I=!1}else e=F(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function F(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function N(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.O&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:i,o:null,O:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.D,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=\"\"+i[s];0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},R:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.D,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.D,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.D=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=R(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.O&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,D:void 0,t:n,k:this,C:!1,O:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.D.set(n,!0),t.o.set(n,r),t.D.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.D.set(n,!1):r.D.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.D=new Map,i(n.t,(function(r){n.D.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=R(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,O:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{N:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){N(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=R(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.D[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&\"number\"!=typeof t&&(void 0!==t||r in n.o)||(n.o[r]=t,n.D[r]=!0,!0)},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.D[r]=!1,E(n),k(n)):delete n.D[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.g=B,this.F=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=R(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?O(c):g(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw O(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.F&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=D(e));var i=w(this),o=R(this,e,void 0);return o[Q].C=!0,g(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.F=n},i.setUseProxies=function(r){r&&!B&&n(20),this.g=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,D as current,J as enableAllPlugins,N as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n var envHasBigInt64Array = typeof BigInt64Array !== 'undefined';\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n if ((a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n for (i of a.entries())\n if (!equal(i[1], b.get(i[0]))) return false;\n return true;\n }\n\n if ((a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n return true;\n }\n\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n continue;\n }\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","export function createSelector(stringSelector) {\n const parts = stringSelector.split('.');\n return (state) => parts.reduce((v, p) => (v instanceof Object && p in v ? v[p] : undefined), state);\n}\nexport function setWithSelector(state, stringSelector, value) {\n const parts = stringSelector.split('.');\n const prefix = parts.slice(0, -1);\n const last = parts[parts.length - 1];\n for (const part of prefix) {\n if (state instanceof Object && part in state) {\n state = state[part];\n }\n else {\n throw Error(`Could not set ${stringSelector} because path ${stringSelector} doesn't exist`);\n }\n }\n if (state instanceof Object) {\n state[last] = value;\n }\n else {\n throw Error(`Could not set ${stringSelector} because path ${stringSelector} doesn't exist`);\n }\n}\n","export function throttle(fn, ms) {\n let last = 0;\n let lastArgs;\n let timeout;\n function run() {\n const args = lastArgs;\n last = Date.now();\n lastArgs = undefined;\n timeout = undefined;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n fn(...args);\n }\n return function (...args) {\n const now = Date.now();\n lastArgs = args;\n if (timeout) {\n // do nothing\n }\n else if (now < last + ms) {\n timeout = setTimeout(run, last + ms - now);\n }\n else {\n run();\n }\n };\n}\n","import eq from 'fast-deep-equal/es6/react';\nimport { applyPatches, enableMapSet, enablePatches, freeze, produce } from 'immer';\nimport { createSelector } from './helpers/stringSelector';\nimport { throttle as throttleFn } from './helpers/throttle';\nconst RESTART_UPDATE = Symbol('RESTART_UPDATE');\nexport class Store {\n constructor(state, { log = (...data) => console.error(...data) } = {}) {\n this.state = state;\n this.subscriptions = new Set();\n this.batchCounter = 0;\n this.reactions = new Set();\n this.patches = new Array();\n freeze(state, true);\n enableMapSet();\n enablePatches();\n this.options = {\n log,\n };\n }\n getState() {\n return this.state;\n }\n update(update) {\n this.state = produce(this.state, (draft) => update(draft, this.state), (patches) => this.patches.push(...patches));\n this.notify();\n }\n set(state) {\n this.state = produce(this.state, () => state, (patches) => this.patches.push(...patches));\n this.notify();\n }\n applyPatches(patches) {\n this.state = applyPatches(this.state, patches);\n this.patches.push(...patches);\n this.notify();\n }\n batchUpdates(fn) {\n try {\n this.batchCounter++;\n fn();\n }\n finally {\n this.batchCounter--;\n if (this.batchCounter === 0) {\n this.notify();\n }\n }\n }\n subscribe(...args) {\n let selector, listener, options;\n if (args[1] instanceof Function) {\n [selector, listener, options] = args;\n if (typeof selector === 'string') {\n selector = createSelector(selector);\n }\n }\n else {\n [selector, listener, options] = [(x) => x, ...args];\n }\n const { runNow = true, throttle = 0, compare = eq } = options !== null && options !== void 0 ? options : {};\n const throttledListener = throttle ? throttleFn(listener, throttle) : listener;\n let value = selector(this.state);\n const internalListener = (state, _patches, init) => {\n try {\n this.lock = 'subscription';\n const oldValue = value;\n value = selector(state);\n if (!init && compare(value, oldValue))\n return;\n (init ? listener : throttledListener)(value, oldValue, this.state);\n }\n catch (e) {\n this.options.log('Failed to execute listener:', e);\n }\n finally {\n delete this.lock;\n }\n };\n this.subscriptions.add(internalListener);\n if (runNow)\n internalListener(this.state, [], true);\n return () => {\n this.subscriptions.delete(internalListener);\n };\n }\n addReaction(...args) {\n let selector, reaction, options;\n if (args[1] instanceof Function) {\n [selector, reaction, options] = args;\n if (typeof selector === 'string') {\n selector = createSelector(selector);\n }\n }\n else {\n [selector, reaction, options] = [(x) => x, ...args];\n }\n const { runNow = true, compare = eq } = options !== null && options !== void 0 ? options : {};\n let value = selector(this.state);\n const internalListener = (init) => {\n let hasChanged = false;\n try {\n this.lock = 'reaction';\n const oldValue = value;\n value = selector(this.state);\n if (!init && compare(value, oldValue))\n return;\n this.state = produce(this.state, (draft) => reaction(value, draft, this.state, oldValue), (patches) => {\n hasChanged = true;\n this.patches.push(...patches);\n });\n }\n catch (e) {\n this.options.log('Failed to execute reaction:', e);\n }\n finally {\n delete this.lock;\n }\n if (hasChanged && !init)\n throw RESTART_UPDATE;\n if (hasChanged && init)\n this.notify();\n };\n this.reactions.add(internalListener);\n if (runNow)\n internalListener(true);\n return () => {\n this.reactions.delete(internalListener);\n };\n }\n subscribePatches(listener) {\n const internalListener = (_state, patches) => {\n try {\n listener(patches);\n }\n catch (e) {\n this.options.log('Failed to execute patch listener:', e);\n }\n };\n this.subscriptions.add(internalListener);\n return () => {\n this.subscriptions.delete(internalListener);\n };\n }\n checkLock() {\n if (this.lock === 'reaction') {\n throw Error('You cannot call update from within a reaction. Use the passed draft instead.');\n }\n else if (this.lock === 'subscription') {\n throw Error('You cannot call update from within a subscription.');\n }\n }\n notify() {\n if (this.batchCounter > 0 || this.patches.length === 0)\n return;\n try {\n for (const reaction of this.reactions) {\n reaction();\n }\n }\n catch (e) {\n return this.notify();\n }\n const patches = this.patches;\n this.patches = [];\n this.batchUpdates(() => {\n for (const subscription of this.subscriptions) {\n subscription(this.state, patches);\n }\n });\n }\n}\n","/**\n * @license React\n * use-sync-external-store-shim.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'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.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'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import eq from 'fast-deep-equal/es6/react';\nimport { useCallback, useDebugValue } from 'react';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport { createSelector } from '../helpers/stringSelector';\nexport function useStoreState(store, ...args) {\n var _a, _b, _c, _d;\n let selector, options;\n if (args[0] instanceof Function) {\n selector = args[0];\n options = (_a = args[1]) !== null && _a !== void 0 ? _a : {};\n }\n else if (typeof args[0] === 'string') {\n selector = createSelector(args[0]);\n options = (_b = args[1]) !== null && _b !== void 0 ? _b : {};\n }\n else {\n selector = (x) => x;\n options = (_c = args[0]) !== null && _c !== void 0 ? _c : {};\n }\n const subscribe = useCallback((listener) => {\n return store.subscribe((x) => x, listener, {\n throttle: options.throttle,\n runNow: false,\n compare: (a, b) => a === b,\n });\n }, [store, options.throttle]);\n const value = useSyncExternalStoreWithSelector(\n //\n subscribe, () => store.getState(), undefined, selector, (_d = options.compare) !== null && _d !== void 0 ? _d : eq);\n useDebugValue(value);\n return value;\n}\n","import { setWithSelector } from '../helpers/stringSelector';\nimport { useStoreState } from './useStoreState';\nexport function useStoreProp(store, selector) {\n const value = useStoreState(store, selector);\n const update = (value) => store.update((state) => setWithSelector(state, selector, value));\n return [value, update];\n}\n","import { Store as BaseStore } from '../store';\nimport { useStoreProp } from './useStoreProp';\nimport { useStoreState } from './useStoreState';\nexport class Store extends BaseStore {\n useState(...args) {\n return useStoreState(this, ...args);\n }\n useProp(selector) {\n return useStoreProp(this, selector);\n }\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createContext, useContext, useMemo } from 'react';\nimport { Store } from './store';\nimport { useStoreProp } from './useStoreProp';\nimport { useStoreState } from './useStoreState';\nexport class StoreScope {\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n this.Provider = ({ children, store }) => {\n const _store = useMemo(() => store !== null && store !== void 0 ? store : new Store(this.defaultValue), [store]);\n return _jsx(this.context.Provider, Object.assign({ value: _store }, { children: children }), void 0);\n };\n this.withScope = (Component) => {\n return (args) => (_jsx(this.Provider, { children: _jsx(Component, Object.assign({}, args), void 0) }, void 0));\n };\n this.context = createContext(new Store(defaultValue));\n }\n useStore() {\n return useContext(this.context);\n }\n useState(...args) {\n const store = this.useStore();\n return useStoreState(store, ...args);\n }\n useProp(selector) {\n const store = this.useStore();\n return useStoreProp(store, selector);\n }\n}\n","import { castDraft } from 'immer';\nimport { useEffect } from 'react';\nimport { Store } from 'schummar-state/react';\nimport { castArray, flatMap, orderBy } from '../misc/helpers';\nimport { Id, InternalTableState, TableItem } from '../types';\n\nexport function calcItems<T>(state: Store<InternalTableState<T>>): void {\n useEffect(\n () =>\n state.addReaction(\n (state) =>\n [\n state.props.items,\n state.props.id,\n state.props.parentId,\n state.props.revealFiltered,\n state.sort,\n state.filters,\n state.filterValues,\n state.activeColumns,\n state.expanded,\n ] as const,\n ([items = [], id, parentId, revealFiltered, sort, filters, filterValues, activeColumns], draft) => {\n const tableItems = items.map<TableItem<T>>((item) => ({\n ...item,\n id: id(item),\n parentId: parentId?.(item),\n children: [],\n }));\n\n let sorted;\n if (sort.length === 0) {\n sorted = tableItems;\n } else {\n const selectors = flatMap(sort, (sort) => {\n const column = activeColumns.find((column) => column.id === sort.columnId);\n if (!column) return [];\n const sortBy = column.sortBy instanceof Array ? column.sortBy : [column.sortBy];\n return sortBy.map((sortBy) => ({ selector: (item: T) => sortBy(column.value(item), item), direction: sort.direction }));\n }).filter(Boolean);\n\n sorted = orderBy(\n tableItems,\n selectors.map((x) => x.selector),\n selectors.map((x) => x.direction),\n );\n }\n\n const lookup = new Map<Id, TableItem<T>>();\n for (const item of sorted) {\n lookup.set(item.id, item);\n }\n\n for (const item of sorted) {\n const parent = item.parentId !== undefined ? lookup.get(item.parentId) : undefined;\n parent?.children.push(item);\n }\n\n const allItems = new Array<TableItem<T>>();\n const allItemsById = new Map<Id, TableItem<T>>();\n\n const traverse = (items: TableItem<T>[]): void => {\n for (const item of items) {\n allItems.push(item);\n allItemsById.set(item.id, item);\n traverse(item.children);\n }\n };\n traverse(sorted.filter((item) => item.parentId === undefined));\n\n let expandedChanged = false;\n const activeItemsById = new Map<Id, TableItem<T>>();\n const activeSet = new Set<Id>();\n const activeItems = [...allItems]\n .reverse()\n .filter((item) => {\n let isActive = activeSet.has(item.id);\n\n isActive ||= activeColumns.every((column) => {\n const filter = filters.get(column.id);\n if (!filter) return true;\n\n const filterValue = filterValues.get(column.id);\n if (filterValue === undefined || !filter.isActive(filterValue)) return true;\n\n const filterBy = filter.filterBy ?? ((x) => x);\n const value = filterBy(column.value(item), item);\n return castArray(value).some((value) => filter.test(filterValue, value));\n });\n\n if (isActive && item.parentId !== undefined) {\n if (\n revealFiltered &&\n [...filters.entries()].some(([id, filter]) => {\n const filterValue = filterValues.get(id);\n return !!filter && filterValue !== undefined && filter.isActive(filterValue);\n })\n ) {\n expandedChanged ||= !draft.expanded.has(item.parentId);\n draft.expanded.add(item.parentId);\n } else if (!draft.expanded.has(item.parentId)) {\n isActive = false;\n }\n }\n\n if (isActive && item.parentId !== undefined) {\n activeSet.add(item.parentId);\n }\n if (isActive) {\n activeItemsById.set(item.id, item);\n }\n\n return isActive;\n })\n .reverse();\n\n draft.items = castDraft(allItems);\n draft.itemsById = castDraft(allItemsById);\n draft.activeItems = castDraft(activeItems);\n draft.activeItemsById = castDraft(activeItemsById);\n\n if (expandedChanged) {\n setTimeout(() => {\n state.getState().props.onExpandedChange?.(state.getState().expanded);\n });\n }\n },\n { runNow: true },\n ),\n [state],\n );\n}\n","import { useMemo, useRef } from 'react';\nimport { asString } from '../misc/helpers';\nimport { Column, Id, InternalColumn, InternalTableProps, TableProps } from '../types';\n\nconst noopParentId = () => undefined;\n\nexport function calcProps<T>(props: TableProps<T>): InternalTableProps<T> {\n const columnCache = useRef(new Map<string | number, [any[], InternalColumn<T, any>]>());\n\n return useMemo(() => {\n let id;\n if (props.id instanceof Function) {\n id = props.id;\n } else {\n id = (item: T) => item[props.id as keyof T] as unknown as Id;\n }\n\n let parentId;\n if (props.parentId instanceof Function) {\n parentId = props.parentId;\n } else if (typeof props.parentId === 'string') {\n parentId = (item: T) => item[props.parentId as keyof T] as unknown as Id | undefined;\n } else {\n parentId = noopParentId;\n }\n\n let inputColumns;\n if (props.columns instanceof Function) {\n inputColumns = props.columns((value, column) => ({ ...column, value }));\n } else {\n inputColumns = props.columns.map((column) => ({ ...column, dependecies: undefined }));\n }\n\n const newColumnCache = new Map<string | number, [any[], InternalColumn<T, any>]>();\n\n const columns = inputColumns.map<InternalColumn<T, any>>(function <V>(\n {\n id,\n header = null,\n renderCell = asString,\n exportCell = asString,\n sortBy = (v) => (typeof v === 'number' || v instanceof Date ? v : String(v)),\n dependencies = [],\n ...props\n }: Column<T, V>,\n index: number,\n ) {\n const [depsInCache, columnInCache] = columnCache.current.get(id ?? index) ?? [];\n\n let column;\n if (\n depsInCache &&\n columnInCache &&\n depsInCache.length === dependencies.length &&\n depsInCache.every((x, i) => dependencies[i] === x)\n ) {\n column = columnInCache;\n } else {\n column = {\n id: id ?? index,\n header,\n renderCell,\n exportCell,\n sortBy,\n dependencies,\n ...props,\n };\n }\n\n newColumnCache.set(id ?? index, [dependencies, column]);\n return column;\n });\n\n columnCache.current = newColumnCache;\n\n let copy;\n if (props.enableExport === true || (props.enableExport instanceof Object && props.enableExport.copy === true)) {\n copy = { separator: '\\t' };\n } else if (props.enableExport && props.enableExport.copy instanceof Object) {\n copy = props.enableExport.copy;\n }\n\n let download;\n if (props.enableExport === true || (props.enableExport instanceof Object && props.enableExport.download === true)) {\n download = { sepPrefix: true };\n } else if (props.enableExport && props.enableExport.download instanceof Object) {\n download = props.enableExport.download;\n }\n\n const enableExport = { copy, download };\n\n return {\n ...props,\n id,\n parentId,\n columns,\n enableSelection: props.enableSelection ?? true,\n selectSyncChildren: props.selectSyncChildren ?? true,\n stickyHeader: props.stickyHeader ?? true,\n enableExport,\n enableColumnSelection: props.enableColumnSelection ?? true,\n enableColumnResize: props.enableColumnResize ?? true,\n enableColumnReorder: props.enableColumnReorder ?? true,\n };\n }, [props]);\n}\n","import { useEffect } from 'react';\nimport { Store } from 'schummar-state/react';\nimport { intersect } from '../misc/helpers';\nimport { InternalTableState } from '../types';\n\nexport function cleanupState<T>(state: Store<InternalTableState<T>>): void {\n useEffect(\n () =>\n state.addReaction(\n (state) => [state.props.columns, state.itemsById, state.activeItemsById, state.activeColumns] as const,\n ([columns, itemsById, activeItemsById, activeColumns], draft) => {\n const columnIds = new Set(columns.map((column) => column.id));\n const activeColumnIds = new Set(activeColumns.map((column) => column.id));\n\n // Remove sort entries for non active columns\n const newSort = draft.sort.filter((s) => activeColumnIds.has(s.columnId));\n if (newSort.length < draft.sort.length) {\n draft.sort = newSort;\n draft.props.onSortChange?.(newSort);\n }\n\n // Remove filters for non active columns\n for (const id of draft.filters.keys()) {\n if (!activeColumnIds.has(id)) draft.filters.delete(id);\n }\n\n // Remove filterValues for non active columns\n for (const id of draft.filterValues.keys()) {\n if (!activeColumnIds.has(id)) draft.filterValues.delete(id);\n }\n\n // Remove hiddenColumns for non existing columns\n for (const id of draft.hiddenColumns.keys()) {\n if (!columnIds.has(id)) draft.hiddenColumns.delete(id);\n }\n\n // Remove columnWidth for non existing columns\n for (const id of draft.columnWidths.keys()) {\n if (!columnIds.has(id)) draft.columnWidths.delete(id);\n }\n\n // Remove non existing columns from columnOrder\n for (const id of draft.columnOrder) {\n if (!columnIds.has(id)) draft.columnOrder = draft.columnOrder.filter((x) => x !== id);\n }\n\n if (draft.props.items) {\n // Remove selection for non active items\n const newSelection = intersect(draft.selection, activeItemsById);\n if (newSelection.size !== draft.selection.size) {\n draft.selection = newSelection;\n draft.props.onSelectionChange?.(newSelection);\n }\n\n // Remove expanded for non existing items\n const newExpanded = intersect(draft.expanded, itemsById);\n if (newExpanded.size < draft.expanded.size) {\n draft.expanded = newExpanded;\n draft.props.onExpandedChange?.(newExpanded);\n }\n }\n },\n { runNow: true },\n ),\n [state],\n );\n}\n","import { useEffect } from 'react';\nimport { Store } from 'schummar-state/react';\nimport { orderBy } from '../misc/helpers';\nimport { InternalTableState } from '../types';\n\nexport function filterColumns<T>(state: Store<InternalTableState<T>>): void {\n useEffect(\n () =>\n state.addReaction(\n (state) => [state.props.columns, state.hiddenColumns, state.columnOrder] as const,\n ([columns, hiddenColumns, columnOrder], draft) => {\n draft.activeColumns = orderBy(\n columns.filter((column) => !hiddenColumns.has(column.id)),\n [(column) => columnOrder.indexOf(column.id)],\n );\n },\n { runNow: true },\n ),\n [state],\n );\n}\n","import { useEffect } from 'react';\nimport { Store } from 'schummar-state/react';\nimport { InternalTableState } from '../types';\n\nexport function syncSelections<T>(state: Store<InternalTableState<T>>): void {\n useEffect(\n () =>\n state.addReaction(\n (state) => [state.props.selectSyncChildren, state.selection, state.activeItems] as const,\n ([selectSyncChildren, selection, activeItems], state) => {\n if (!selectSyncChildren) return;\n\n const newSelection = new Set(selection);\n for (const item of activeItems) {\n if (item.parentId !== undefined && newSelection.has(item.parentId)) {\n newSelection.add(item.id);\n }\n }\n\n if (newSelection.size !== selection.size) {\n state.selection = newSelection;\n state.props.onSelectionChange?.(newSelection);\n }\n },\n { runNow: true },\n ),\n [state],\n );\n}\n","import { castDraft } from 'immer';\nimport { useEffect, useMemo } from 'react';\nimport { Store } from 'schummar-state/react';\nimport { useTableTheme } from '../theme/tableTheme';\nimport { InternalTableState, TableProps } from '../types';\nimport { calcItems } from './calcItems';\nimport { calcProps } from './calcProps';\nimport { cleanupState } from './cleanupState';\nimport { filterColumns } from './filterColumns';\nimport { syncSelections } from './syncSelections';\n\nexport function useTableState<T>(_props: TableProps<T>): Store<InternalTableState<T>> {\n const props = calcProps(_props);\n const theme = useTableTheme(props);\n\n const state = useMemo(\n () =>\n new Store<InternalTableState<T>>({\n props,\n theme,\n\n sort: props.defaultSort ?? [],\n selection: props.defaultSelection ?? new Set(),\n expanded: props.defaultExpanded ?? new Set(),\n rowHeights: new Map(),\n filters: new Map(),\n filterValues: new Map(),\n hiddenColumns: props.defaultHiddenColumns ?? new Set(),\n columnWidths: new Map(),\n columnOrder: props.columns.map((column) => column.id),\n columnStyleOverride: new Map(),\n\n activeColumns: [],\n items: [],\n itemsById: new Map(),\n activeItems: [],\n activeItemsById: new Map(),\n lastSelectedId: undefined,\n }),\n [],\n );\n\n filterColumns(state);\n calcItems(state);\n syncSelections(state);\n cleanupState(state);\n\n useEffect(() => {\n state.update((state) => {\n state.props = castDraft(props);\n if (props.sort) state.sort = props.sort;\n if (props.selection) state.selection = props.selection;\n if (props.expanded) state.expanded = props.expanded;\n if (props.hiddenColumns) state.hiddenColumns = props.hiddenColumns;\n for (const column of props.columns) {\n if (!state.columnOrder.includes(column.id)) {\n const index = props.columns.indexOf(column);\n state.columnOrder.splice(index, 0, column.id);\n }\n }\n state.theme = theme;\n });\n }, [state, props]);\n\n return state;\n}\n","import { castDraft } from 'immer';\nimport React, { HTMLProps, useEffect, useRef } from 'react';\nimport { StoreScope } from 'schummar-state/react';\nimport { Id, useColumnContext, useTableContext } from '..';\n\nexport const ColumnHeaderContext = new StoreScope({\n items: new Map<Id, HTMLDivElement>(),\n});\n\nexport function ColumnHeader(props: HTMLProps<HTMLDivElement>) {\n const ref = useRef<HTMLDivElement>(null);\n const columnId = useColumnContext();\n const table = useTableContext();\n const enabled = table.useState('props.enableColumnReorder');\n\n const store = ColumnHeaderContext.useStore();\n const draggingStart = useRef<{ mouseX: number; bounds: DOMRect }>();\n const clone = useRef<HTMLDivElement>();\n\n // Track each headers div in a store\n useEffect(() => {\n const div = ref.current;\n if (!div) return;\n\n store.update((state) => {\n state.items.set(columnId, castDraft(div));\n });\n\n return () => {\n store.update((state) => {\n state.items.delete(columnId);\n });\n };\n }, [ref.current, store, columnId]);\n\n // Calculate which index the current header would get, given the current offset\n function calcTargetIndex(offsetLeft: number) {\n const cols = table.getState().columnOrder.map((id) => ({ id, div: store.getState().items.get(id) }));\n\n const otherCols = cols.filter((col) => col.id !== columnId);\n\n const firstOffsetleft = cols.find((col) => col.div)?.div?.offsetLeft ?? 0;\n\n let sum = 0;\n const targetIndex = otherCols.findIndex((col) => {\n const width = col.div?.offsetWidth ?? 0;\n if (sum + width / 2 > offsetLeft - firstOffsetleft) return true;\n sum += width;\n return false;\n });\n\n return targetIndex === -1 ? otherCols.length : targetIndex;\n }\n\n // When starting clicking: Record initial mouse and div's bounds\n function onPointerDown(e: React.PointerEvent) {\n const div = ref.current;\n if (!div) return;\n draggingStart.current = { mouseX: e.clientX, bounds: div.getBoundingClientRect() };\n }\n\n // When mouse moves while clicked: Calculate transforms\n function onPointerMove(e: React.PointerEvent) {\n table.update((state) => {\n const div = ref.current;\n if (!div || draggingStart.current === undefined || Math.abs(e.clientX - draggingStart.current.mouseX) < 5) return;\n\n e.stopPropagation();\n div.setPointerCapture(e.pointerId);\n\n // Create clone of header div to move around with mouse\n if (!clone.current) {\n clone.current = div.cloneNode(true) as HTMLDivElement;\n document.body.append(clone.current);\n\n for (const [key, value] of Object.entries(getComputedStyle(div))) {\n try {\n clone.current.style[key as any] = value;\n } catch {\n // ignore\n }\n }\n\n Object.assign(clone.current.style, {\n pointerEvents: 'none',\n position: 'fixed',\n boxShadow: '0px 5px 5px -3px rgb(0 0 0 / 20%), 0px 8px 10px 1px rgb(0 0 0 / 14%), 0px 3px 14px 2px rgb(0 0 0 / 12%)',\n left: `${draggingStart.current.bounds.left}px`,\n top: `${draggingStart.current.bounds.top}px`,\n });\n\n div.style.color = 'rgba(0, 0, 0, 0.2)';\n }\n\n // Update clone's position each time\n clone.current.style.left = `${draggingStart.current.bounds.left + e.clientX - draggingStart.current.mouseX}px`;\n\n // Calculate target index\n const index = state.columnOrder.indexOf(columnId);\n const targetIndex = calcTargetIndex(div.offsetLeft + e.clientX - draggingStart.current.mouseX);\n\n // Apply transforms to each column\n const columns = table\n .getState()\n .columnOrder.map((id, index) => ({ id, index, width: store.getState().items.get(id)?.offsetWidth ?? 0 }));\n\n state.columnOrder.forEach((id, i) => {\n let offset = 0;\n if (i === index) {\n // Current column: Move to target pos\n if (targetIndex > index) {\n offset = columns.slice(index + 1, targetIndex + 1).reduce((sum, col) => sum + col.width, 0);\n } else if (targetIndex < index) {\n offset = -columns.slice(targetIndex, index).reduce((sum, col) => sum + col.width, 0);\n }\n } else if (i >= targetIndex && i < index) {\n // Left columns: Move right to make room if needed\n offset = div.offsetWidth;\n } else if (i > index && i <= targetIndex) {\n // Right columns: Move left to make room if needed\n offset = -div.offsetWidth;\n }\n\n state.columnStyleOverride.set(id, {\n transition: 'transform 500ms',\n transform: `translate3d(${offset}px, 0, 0)`,\n zIndex: i === index ? 1 : undefined,\n });\n });\n });\n }\n\n // When releasing mouse: Reset draggin state and apply column move\n function onPointerUp(e: React.PointerEvent) {\n table.update((state) => {\n const div = ref.current;\n if (!div || draggingStart.current === undefined) return;\n\n // Apply column move\n const index = state.columnOrder.indexOf(columnId);\n const targetIndex = calcTargetIndex(div.offsetLeft + e.clientX - draggingStart.current.mouseX);\n\n state.columnOrder.splice(index, 1);\n state.columnOrder.splice(targetIndex, 0, columnId);\n\n // Cleanup\n clone.current?.remove();\n div.style.color = '';\n state.columnStyleOverride.clear();\n draggingStart.current = undefined;\n clone.current = undefined;\n });\n }\n\n return (\n <div\n {...props}\n css={{\n position: 'relative',\n userSelect: 'none',\n }}\n ref={ref}\n onPointerDown={enabled ? onPointerDown : undefined}\n onPointerMove={enabled ? onPointerMove : undefined}\n onPointerUp={enabled ? onPointerUp : undefined}\n >\n {props.children}\n </div>\n );\n}\n","import React, { useState } from 'react';\nimport { useTheme } from '..';\nimport { useCssVariables } from '../theme/useCssVariables';\nimport { InternalColumn } from '../types';\nimport { FormControlLabel } from './formControlLabel';\nimport { useTableContext } from './table';\n\nexport function ColumnSelection<T>(): JSX.Element {\n const {\n components: { IconButton, Popover, Checkbox },\n icons: { Settings },\n text,\n } = useTheme();\n const cssVariables = useCssVariables();\n\n const table = useTableContext<T>();\n const columns = table.useState('props.columns');\n const hiddenColumns = table.useState('hiddenColumns');\n\n const [anchorEl, setAnchorEl] = useState<Element | null>(null);\n\n const toggle = (column: InternalColumn<T, unknown>) => {\n const {\n props: { hiddenColumns: controlledHiddenColumns, onHiddenColumnsChange },\n } = table.getState();\n\n const newValue = new Set(hiddenColumns);\n if (hiddenColumns.has(column.id)) newValue.delete(column.id);\n else newValue.add(column.id);\n\n if (!controlledHiddenColumns) {\n table.update((state) => {\n state.hiddenColumns = newValue;\n });\n }\n\n onHiddenColumnsChange?.(newValue);\n };\n\n return (\n <>\n <IconButton onClick={(e) => setAnchorEl(anchorEl ? null : e.currentTarget)}>\n <Settings />\n </IconButton>\n\n <Popover anchorEl={anchorEl} open={!!anchorEl} onClose={() => setAnchorEl(null)} css={cssVariables}>\n <div css={{ padding: `calc(var(--spacing) * 2)`, display: 'grid' }}>\n <div css={{ marginBottom: 'var(--spacing)' }}>{text.selectColumns}</div>\n\n {columns.map((column) => (\n <FormControlLabel\n key={column.id}\n control={<Checkbox checked={!hiddenColumns.has(column.id)} onChange={() => toggle(column)} disabled={column.cannotHide} />}\n label={column.header}\n ></FormControlLabel>\n ))}\n </div>\n </Popover>\n </>\n );\n}\n","export type CsvExportOptions = { sepPrefix?: boolean; separator?: string; quote?: string; eol?: string };\n\nexport function csvExport(\n data: (string | number)[][],\n { sepPrefix, separator = ',', quote = '\"', eol = '\\n' }: CsvExportOptions = {},\n): string {\n const cells = data.map((line) =>\n line.map((value) => {\n if (typeof value === 'number') return String(value);\n if (![separator, quote, eol].some((c) => value.includes(c))) return value;\n\n const clean = value.replace(new RegExp(quote, 'g'), `${quote}${quote}`);\n return `${quote}${clean}${quote}`;\n }),\n );\n\n return (sepPrefix ? `SEP=${separator}\\n` : '') + cells.map((line) => line.join(separator)).join(eol);\n}\n","import React, { useState } from 'react';\nimport { useTheme } from '..';\nimport { csvExport, CsvExportOptions } from '../misc/csvExport';\nimport { useCssVariables } from '../theme/useCssVariables';\nimport { useTableContext } from './table';\n\nexport function Export<T>(): JSX.Element {\n const table = useTableContext<T>();\n const {\n components: { Button, IconButton, Popover },\n icons: { Export, Clipboard },\n text,\n } = useTheme();\n const cssVariables = useCssVariables();\n\n const [anchor, setAnchor] = useState<Element | null>(null);\n\n const generate = (options?: CsvExportOptions) => {\n const { activeColumns, activeItems } = table.getState();\n\n const data = [\n activeColumns.map((column) => String(column.id)),\n ...activeItems.map((item) => activeColumns.map((column) => column.exportCell(column.value(item), item))),\n ];\n return csvExport(data, options);\n };\n\n const copy = () => {\n navigator.clipboard.writeText(generate(table.getState().props.enableExport.copy));\n };\n\n const download = () => {\n const a = document.createElement('a');\n a.href = 'data:text/csv;charset=utf-8,' + encodeURIComponent(generate(table.getState().props.enableExport.download));\n a.download = 'export.csv';\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n };\n\n return (\n <>\n <IconButton onClick={(e) => setAnchor(anchor ? null : e.currentTarget)}>\n <Export />\n </IconButton>\n\n <Popover open={!!anchor} onClose={() => setAnchor(null)} anchorEl={anchor} css={cssVariables}>\n <div\n css={{\n padding: `calc(var(--spacing) * 2)`,\n display: 'grid',\n justifyItems: 'stretch',\n gap: 'var(--spacing)',\n\n '& > *': {\n justifyContent: 'start',\n },\n }}\n >\n <div css={{ marginBottom: 'var(--spacing)' }}>{text.exportTitle}</div>\n <Button startIcon={<Clipboard />} onClick={copy}>\n {text.exportCopy}\n </Button>\n <Button startIcon={<Export />} onClick={download}>\n {text.exportDownload}\n </Button>\n </div>\n </Popover>\n </>\n );\n}\n","import { useTableContext } from '..';\n\nexport function useTheme() {\n const table = useTableContext();\n return table.useState('theme');\n}\n","import React, { useState } from 'react';\nimport { useTheme } from '../hooks/useTheme';\nimport { useCssVariables } from '../theme/useCssVariables';\nimport { useColumnContext, useTableContext } from './table';\n\nexport function FilterControl<T>(): JSX.Element | null {\n const table = useTableContext<T>();\n const columnId = useColumnContext();\n const {\n components: { IconButton, Popover },\n icons: { FilterList, ArrowDropDown },\n } = useTheme();\n const cssVariables = useCssVariables();\n\n const [anchor, setAnchor] = useState<Element | null>(null);\n const isActive = table.useState((state) => {\n const filter = state.filters.get(columnId);\n const filterValue = state.filterValues.get(columnId);\n return filter !== undefined && filterValue !== undefined && filter.isActive(filterValue);\n });\n const filter = table.useState((state) => state.activeColumns.find((column) => column.id === columnId)?.filter);\n\n if (!filter) return null;\n\n return (\n <>\n <IconButton\n onClick={(e) => setAnchor(e.currentTarget)}\n css={[isActive && { color: 'white !important', backgroundColor: 'var(--primaryMain) !important' }]}\n >\n {isActive ? <FilterList /> : <ArrowDropDown />}\n </IconButton>\n\n <div\n onPointerDown={(e) => {\n e.stopPropagation();\n }}\n onPointerMove={(e) => {\n e.stopPropagation();\n }}\n >\n <Popover open hidden={!anchor} onClose={() => setAnchor(null)} anchorEl={anchor ?? document.body} css={cssVariables}>\n {filter}\n </Popover>\n </div>\n </>\n );\n}\n","import React from 'react';\nimport { useColumnContext, useTableContext } from '..';\n\nexport function ResizeHandle() {\n const table = useTableContext();\n const columnId = useColumnContext();\n const enabled = table.useState('props.enableColumnResize');\n\n function onPointerDown(e: React.PointerEvent) {\n e.stopPropagation();\n\n const div = e.target as HTMLDivElement;\n div.setPointerCapture(e.pointerId);\n }\n\n function onPointerMove(e: React.PointerEvent) {\n e.stopPropagation();\n\n const div = e.target as HTMLDivElement;\n if (!div.hasPointerCapture(e.pointerId)) return;\n\n const parent = div.parentElement as HTMLDivElement;\n const width = Math.max(e.clientX - parent.getBoundingClientRect().left + 5, 50);\n\n table.update((state) => {\n state.columnWidths.set(columnId, `${width}px`);\n });\n }\n\n function onPointerUp(e: React.PointerEvent) {\n e.stopPropagation();\n\n const div = e.target as HTMLDivElement;\n div.releasePointerCapture(e.pointerId);\n }\n\n function onDoubleClick(e: React.MouseEvent) {\n table.update((state) => {\n if (e.getModifierState('Control')) {\n state.columnWidths.delete(columnId);\n } else {\n state.columnWidths.set(columnId, 'max-content');\n }\n });\n }\n\n return (\n <div\n css={{\n alignSelf: 'stretch',\n padding: '0 5px',\n cursor: enabled ? 'col-resize' : 'initial',\n display: 'flex',\n alignItems: 'center',\n\n '&:after': {\n content: '\"\"',\n width: 1,\n height: '1.2em',\n background: 'currentColor',\n transition: 'transform 300ms',\n },\n }}\n onPointerDown={enabled ? onPointerDown : undefined}\n onPointerMove={enabled ? onPointerMove : undefined}\n onPointerUp={enabled ? onPointerUp : undefined}\n onDoubleClick={enabled ? onDoubleClick : undefined}\n />\n );\n}\n","import React, { memo } from 'react';\nimport { Id, useColumnContext, useTableContext, useTheme } from '..';\nimport { defaultClasses } from '../theme/defaultClasses';\nimport { calcClassNames } from './row';\n\nexport const Cell = memo(function Cell<T>({ itemId, rowIndex }: { itemId: Id; rowIndex: number }) {\n const table = useTableContext<T>();\n const columnId = useColumnContext();\n const { css } = useTheme();\n\n const column = table.useState((state) => state.activeColumns.find((column) => column.id === columnId));\n const item = table.useState((state) => state.activeItemsById.get(itemId));\n const columnStyleOverride = table.useState((state) => state.columnStyleOverride.get(columnId), { throttle: 16 });\n\n if (!column || !item) return null;\n table.getState().props.debugRender?.('render cell', itemId, columnId);\n\n const classNames = [...calcClassNames(css, item, rowIndex), ...calcClassNames(column?.css, item, rowIndex)];\n const content = column.renderCell(column.value(item), item);\n\n return (\n <div css={[defaultClasses.cell, classNames, columnStyleOverride]}>\n {typeof content === 'string' ? <span css={defaultClasses.text}>{content}</span> : content}\n </div>\n );\n});\n","import React from 'react';\nimport { useTheme } from '..';\nimport { getAncestors } from '../misc/helpers';\nimport { Id } from '../types';\nimport { useTableContext } from './table';\n\nexport function ExpandControl<T>({ itemId, hasDeferredChildren }: { itemId: Id; hasDeferredChildren?: boolean }): JSX.Element {\n const {\n components: { IconButton, Spinner },\n icons: { ChevronRight },\n } = useTheme();\n\n const table = useTableContext<T>();\n const isExpanded = table.useState((state) => state.expanded.has(itemId));\n const hasChildren = table.useState((state) => !!state.activeItemsById.get(itemId)?.children.length);\n\n function toggle() {\n const {\n props: { expanded: controlledExpanded, expandOnlyOne, onExpandedChange },\n expanded,\n activeItemsById,\n } = table.getState();\n\n const newExpanded = new Set(expanded);\n if (expandOnlyOne) newExpanded.clear();\n if (isExpanded) newExpanded.delete(itemId);\n else {\n newExpanded.add(itemId);\n\n const item = activeItemsById.get(itemId);\n for (const ancestor of item ? getAncestors(activeItemsById, item) : []) {\n newExpanded.add(ancestor);\n }\n }\n\n onExpandedChange?.(newExpanded);\n\n if (!controlledExpanded) {\n table.update((state) => {\n state.expanded = newExpanded;\n });\n }\n }\n\n if (isExpanded && hasDeferredChildren && !hasChildren) {\n return <Spinner css={{ margin: '0 var(--spacing)' }} />;\n }\n\n return (\n <IconButton onClick={toggle}>\n <span\n css={{\n display: 'inline-flex',\n transition: 'all 300ms',\n transform: isExpanded ? 'rotate3d(0, 0, 1, 90deg)' : 'rotate3d(0, 0, 1, 0deg)',\n }}\n >\n <ChevronRight />\n </span>\n </IconButton>\n );\n}\n","import React from 'react';\nimport { useTheme } from '..';\nimport { getAncestors, getDescendants } from '../misc/helpers';\nimport { Id } from '../types';\nimport { useTableContext } from './table';\n\nexport function SelectComponent<T>({ itemId }: { itemId?: Id }): JSX.Element {\n const table = useTableContext<T>();\n const {\n components: { Checkbox },\n } = useTheme();\n\n const isSelected = table.useState((state) => {\n const itemIds = itemId ? [itemId] : [...state.activeItemsById.keys()];\n return state.activeItemsById.size > 0 && itemIds.every((itemId) => state.selection.has(itemId));\n });\n\n function toggle(e: React.ChangeEvent) {\n const mouseEvent = e.nativeEvent as MouseEvent;\n\n const {\n activeItems,\n activeItemsById,\n lastSelectedId,\n selection,\n props: { selectSyncChildren, selection: controlledSelection, onSelectionChange },\n } = table.getState();\n\n let range;\n if (mouseEvent.shiftKey && itemId) {\n const a = lastSelectedId ? activeItems.findIndex((i) => lastSelectedId === i.id) : 0;\n const b = activeItems.findIndex((item) => item.id === itemId);\n range = activeItems.slice(Math.min(a, b), Math.max(a, b) + 1);\n } else {\n const item = itemId ? activeItemsById.get(itemId) : undefined;\n range = item ? [item] : activeItems;\n }\n\n const newSelection = new Set(selection);\n for (const item of range) {\n if (isSelected) newSelection.delete(item.id);\n else newSelection.add(item.id);\n }\n\n if (selectSyncChildren && isSelected) {\n for (const ancestor of getAncestors(activeItemsById, ...range)) {\n newSelection.delete(ancestor);\n }\n for (const descendant of getDescendants(...range)) {\n newSelection.delete(descendant);\n }\n }\n\n onSelectionChange?.(newSelection);\n\n if (!controlledSelection) {\n table.update((state) => {\n state.selection = newSelection;\n });\n }\n\n table.update((state) => {\n state.lastSelectedId = itemId;\n });\n }\n\n return (\n <Checkbox\n css={{\n justifySelf: 'start',\n color: 'inherit',\n }}\n checked={isSelected}\n onChange={toggle}\n />\n );\n}\n","import React, { memo, useEffect, useRef } from 'react';\nimport { getAncestors } from '../misc/helpers';\nimport { defaultClasses } from '../theme/defaultClasses';\nimport { Id, InternalColumn } from '../types';\nimport { Cell } from './cell';\nimport { ExpandControl } from './expandControl';\nimport { SelectComponent } from './selectComponent';\nimport { ColumnContext, useTableContext } from './table';\n\nexport function calcClassNames<T>(css: InternalColumn<any, any>['css'] | undefined, item: T, index: number) {\n return [\n css?.cell instanceof Function ? css.cell(item, index) : css?.cell,\n index % 2 === 0 && css?.evenCell,\n index % 2 === 1 && css?.oddCell,\n ];\n}\n\nexport const Row = memo(function Row<T>({ itemId, rowIndex }: { itemId: Id; rowIndex: number }): JSX.Element | null {\n const table = useTableContext<T>();\n const divRef = useRef<HTMLDivElement>(null);\n\n const { className, indent, hasChildren, hasDeferredChildren, columnIds, enableSelection, rowAction } = table.useState((state) => {\n const item = state.activeItemsById.get(itemId);\n const index = !item ? -1 : state.activeItems.indexOf(item);\n\n return {\n className: calcClassNames(state.props.css, item, index),\n indent: item ? getAncestors(state.activeItemsById, item).size : 0,\n hasChildren: !!item?.children.length,\n hasDeferredChildren: item && state.props.hasDeferredChildren?.(item),\n columnIds: state.activeColumns.map((column) => column.id),\n enableSelection: state.props.enableSelection,\n rowAction: state.props.rowAction instanceof Function ? (item ? state.props.rowAction(item, index) : null) : state.props.rowAction,\n };\n });\n\n useEffect(() => {\n const div = divRef.current;\n if (!div) return;\n\n const o = new ResizeObserver(() => {\n if (!document.contains(div)) return;\n table.update((state) => {\n state.rowHeights.set(itemId, div.offsetHeight);\n });\n });\n o.observe(div);\n\n return () => o.disconnect();\n }, [divRef.current]);\n\n table.getState().props.debugRender?.('render row', itemId);\n\n return (\n <>\n <div css={[defaultClasses.cellFill, className]} ref={divRef} />\n\n <div css={[defaultClasses.cell, defaultClasses.firstCell, className]}>\n <div css={{ width: indent * 20 }} />\n\n {enableSelection && <SelectComponent itemId={itemId} />}\n\n {(hasChildren || hasDeferredChildren) && <ExpandControl itemId={itemId} hasDeferredChildren={hasDeferredChildren} />}\n\n {rowAction}\n </div>\n\n {columnIds.map((columnId) => (\n <ColumnContext.Provider key={columnId} value={columnId}>\n <Cell itemId={itemId} rowIndex={rowIndex} />\n </ColumnContext.Provider>\n ))}\n\n <div css={[defaultClasses.cellFill, className]} />\n </>\n );\n});\n","import React, { ReactNode } from 'react';\nimport { useTheme } from '..';\nimport { useColumnContext, useTableContext } from './table';\n\nexport function SortComponent<T>({ children }: { children: ReactNode }): JSX.Element {\n const table = useTableContext<T>();\n const columnId = useColumnContext();\n const {\n components: { Badge },\n icons: { ArrowUpward },\n } = useTheme();\n\n const { direction, index } = table.useState((state) => {\n const index = state.sort.findIndex((s) => s.columnId === columnId) ?? -1;\n return {\n direction: state.sort[index]?.direction,\n index: index >= 0 && state.sort.length > 1 ? index + 1 : undefined,\n };\n });\n\n function toggle(e: React.MouseEvent) {\n const {\n props: { sort: controlledSort, onSortChange },\n } = table.getState();\n\n const newDirection = direction === 'asc' ? 'desc' : 'asc';\n const newSort = (e.getModifierState('Control') ? table.getState().sort.filter((s) => s.columnId !== columnId) : []).concat({\n columnId,\n direction: newDirection,\n });\n\n onSortChange?.(newSort);\n\n if (!controlledSort) {\n table.update((state) => {\n state.sort = newSort;\n });\n }\n }\n\n return (\n <div\n css={{\n userSelect: 'none',\n display: 'grid',\n gridTemplateColumns: 'minmax(0, 1fr) max-content',\n alignItems: 'center',\n cursor: 'pointer',\n\n '& > div': {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n }}\n onClick={toggle}\n >\n <div>{children}</div>\n\n <Badge badgeContent={index}>\n <span\n css={[\n { transition: 'all 300ms', fontSize: '0.8em' },\n !direction && { opacity: 0 },\n direction === 'desc' && { transform: 'rotate3d(0, 0, 1, 180deg)' },\n ]}\n >\n <ArrowUpward />\n </span>\n </Badge>\n </div>\n );\n}\n","export function throttle<Args extends any[]>(fn: (...args: Args) => void, ms: number): { (...args: Args): void; flush(): void } {\n let last = 0;\n let lastArgs: Args | undefined;\n let timeout: NodeJS.Timeout | undefined;\n\n function run() {\n const args = lastArgs;\n\n last = Date.now();\n lastArgs = undefined;\n timeout = undefined;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n fn(...args!);\n }\n\n return Object.assign(\n function (...args: Args) {\n const now = Date.now();\n lastArgs = args;\n\n if (timeout) {\n // do nothing\n } else if (now < last + ms) {\n timeout = setTimeout(run, last + ms - now);\n } else {\n run();\n }\n },\n {\n flush() {\n if (lastArgs) {\n run();\n }\n },\n },\n );\n}\n","import React, { HTMLProps, ReactNode, useEffect, useMemo, useRef, useState } from 'react';\nimport { throttle } from '../misc/throttle';\nimport { useTableContext } from './table';\nimport { Id } from '../types';\n\nconst onAncestorScroll = (x: HTMLElement, onScroll: () => void): (() => void) => {\n const find = (x: HTMLElement): Node[] => (x.parentElement ? [x.parentElement, ...find(x.parentElement)] : [document]);\n const ancestors = find(x);\n for (const ancestor of ancestors) {\n ancestor.addEventListener('scroll', onScroll);\n }\n\n return () => {\n for (const ancestor of ancestors) {\n ancestor.removeEventListener('scroll', onScroll);\n }\n };\n};\n\nconst findScrollRoot = (x: HTMLElement): HTMLElement => {\n const parent = x.parentElement;\n if (!parent) return document.documentElement;\n if (parent.scrollHeight > parent.clientHeight) return parent;\n return findScrollRoot(parent);\n};\n\nconst relativeOffset = (x: HTMLElement, y: HTMLElement): number => {\n if (x.offsetParent === y.offsetParent || !x.offsetParent) return x.offsetTop - y.offsetTop;\n if (x.offsetParent instanceof HTMLElement) return relativeOffset(x.offsetParent, y) + x.offsetTop;\n return 0;\n};\n\nexport function Virtualized<T>({\n header,\n children,\n ...props\n}: { header: ReactNode; children: (itemIds: Id[], startIndex: number) => ReactNode } & HTMLProps<HTMLDivElement>): JSX.Element {\n const table = useTableContext<T>();\n const virtual = table.useState('props.virtual');\n const probeRef = useRef<HTMLDivElement>(null);\n const [, setCounter] = useState(0);\n\n const {\n itemIds = [],\n from = 0,\n to,\n before = 0,\n after = 0,\n } = table.useState((state) => {\n const itemIds = state.activeItems.map((item) => item.id);\n const root = probeRef.current && findScrollRoot(probeRef.current);\n if (!state.props.virtual) return { itemIds };\n if (!probeRef.current || !root || !document.contains(root)) return {};\n\n const {\n rowHeight,\n initalRowHeight,\n overscan = 200,\n overscanTop,\n overscanBottom,\n } = (state.props.virtual instanceof Object ? state.props.virtual : undefined) ?? {};\n\n let totalHeight = 0;\n const rowHeights = itemIds.map((itemId, index) => {\n const h = rowHeight ?? state.rowHeights.get(itemId) ?? initalRowHeight ?? (index === 0 ? 100 : totalHeight / index);\n totalHeight += h;\n return h;\n });\n\n const probeOffset = relativeOffset(probeRef.current, root);\n const headerHeight = probeRef.current.offsetTop;\n const topOfTable = root.scrollTop - probeOffset + headerHeight;\n const bottomOfTable = topOfTable + root.clientHeight - headerHeight;\n\n let from = 0,\n to = itemIds.length,\n before = 0,\n after = 0;\n for (const h of rowHeights) {\n if (before + h > topOfTable - (overscanTop ?? overscan)) break;\n from++;\n before += h;\n }\n\n for (const h of rowHeights.reverse()) {\n if (after + h > totalHeight - bottomOfTable - (overscanBottom ?? overscan)) break;\n to--;\n after += h;\n }\n\n return { itemIds: itemIds.slice(from, to), from, to, before, after };\n });\n\n const throttleScroll = (typeof virtual === 'boolean' ? undefined : virtual)?.throttleScroll ?? 500;\n const incCounter = useMemo(() => throttle(() => setCounter((c) => c + 1), throttleScroll), [throttleScroll]);\n\n useEffect(() => {\n if (!virtual || !probeRef.current) return;\n return onAncestorScroll(probeRef.current, incCounter);\n }, [probeRef.current, incCounter]);\n\n table.getState().props.debugRender?.(`Virtualalized render ${from} to ${to}`);\n\n return (\n <div {...props}>\n {header}\n\n {virtual && <div style={{ gridColumn: '1 / -1', height: before }} ref={probeRef} />}\n\n {children(itemIds, from)}\n\n {virtual && <div style={{ gridColumn: '1 / -1', height: after }} />}\n </div>\n );\n}\n","import React, { createContext, memo, useContext, useEffect, useState } from 'react';\nimport { Store } from 'schummar-state/react';\nimport { useTheme } from '..';\nimport { useTableStateStorage } from '../internalState/tableStateStorage';\nimport { useTableState } from '../internalState/useTableState';\nimport { defaultClasses } from '../theme/defaultClasses';\nimport { useCssVariables } from '../theme/useCssVariables';\nimport { Id, InternalTableState, TableProps } from '../types';\nimport { ColumnHeader, ColumnHeaderContext } from './columnHeader';\nimport { ColumnSelection } from './columnSelection';\nimport { Export } from './export';\nimport { FilterControl } from './filterControl';\nimport { ResizeHandle } from './resizeHandle';\nimport { Row } from './row';\nimport { SelectComponent } from './selectComponent';\nimport { SortComponent } from './sortComponent';\nimport { Virtualized } from './virtualized';\n\nexport const TableContext = createContext<Store<InternalTableState<any>> | null>(null);\nexport const ColumnContext = createContext<Id | null>(null);\nexport function useTableContext<T>(): Store<InternalTableState<T>> {\n const value = useContext(TableContext);\n if (!value) throw Error('No table context available');\n return value as Store<InternalTableState<T>>;\n}\nexport function useColumnContext(): Id {\n const value = useContext(ColumnContext);\n if (value === null) throw Error('No column context available');\n return value;\n}\n\nexport function Table<T>(props: TableProps<T>): JSX.Element {\n const table = useTableState(props);\n\n table.getState().props.debugRender?.('render table');\n\n return (\n <TableContext.Provider value={table}>\n <TableLoadingState />\n </TableContext.Provider>\n );\n}\n\nfunction TableLoadingState() {\n const { text } = useTheme();\n const isHydrated = useTableStateStorage();\n const [showLoading, setShowLoading] = useState(false);\n\n useEffect(() => {\n const handle = setTimeout(() => setShowLoading(true), 500);\n return () => clearTimeout(handle);\n });\n\n return (\n <>\n {!isHydrated && showLoading && <div>{text.loading}</div>}\n <TableInner hidden={!isHydrated} />\n </>\n );\n}\n\nconst TableInner = memo(function TableInner<T>({ hidden }: { hidden: boolean }) {\n const table = useTableContext<T>();\n const fullWidth = table.useState('props.fullWidth');\n const activeColumns = table.useState((state) =>\n state.activeColumns.map((column) => ({\n id: column.id,\n width: column.width,\n css: column.css,\n header: column.header,\n })),\n );\n const columnWidths = table.useState('columnWidths', { throttle: 16 });\n const columnStyleOverride = table.useState('columnStyleOverride', { throttle: 16 });\n const defaultWidth = table.useState('props.defaultWidth');\n const css = table.useState('props.css');\n const stickyHeader = table.useState('props.stickyHeader');\n const enableSelection = table.useState('props.enableSelection');\n const enableColumnSelection = table.useState('props.enableColumnSelection');\n const enableExport = table.useState((state) => !!state.props.enableExport.copy || !!state.props.enableExport.download);\n const cssVariables = useCssVariables();\n\n table.getState().props.debugRender?.('render table inner');\n\n return (\n <Virtualized\n css={[\n cssVariables,\n defaultClasses.table,\n css?.table,\n {\n gridTemplateColumns: [\n //\n fullWidth === 'right' || fullWidth === true ? 'auto' : '0',\n 'max-content',\n ...activeColumns.map((column) => columnWidths.get(column.id) ?? column.width ?? defaultWidth ?? 'max-content'),\n fullWidth === 'left' || fullWidth === true ? 'auto' : '0',\n ].join(' '),\n },\n hidden && { visibility: 'hidden' },\n ]}\n header={\n <>\n <div css={[defaultClasses.headerFill, stickyHeader && defaultClasses.sticky, css?.headerCell]} />\n\n <div css={[defaultClasses.headerCell, stickyHeader && defaultClasses.sticky, css?.headerCell]}>\n {enableSelection && <SelectComponent />}\n\n {enableColumnSelection && <ColumnSelection />}\n\n {enableExport && <Export />}\n </div>\n\n <ColumnHeaderContext.Provider>\n {activeColumns.map((column) => (\n <ColumnContext.Provider key={column.id} value={column.id}>\n <ColumnHeader\n css={[\n defaultClasses.headerCell,\n css?.headerCell,\n column.css?.headerCell,\n columnStyleOverride.get(column.id),\n stickyHeader && defaultClasses.sticky,\n ]}\n key={column.id}\n >\n <FilterControl />\n <SortComponent>{column.header}</SortComponent>\n <div css={{ flex: 1 }} />\n <ResizeHandle />\n </ColumnHeader>\n </ColumnContext.Provider>\n ))}\n </ColumnHeaderContext.Provider>\n\n <div css={[defaultClasses.headerFill, stickyHeader && defaultClasses.sticky, css?.headerCell]} />\n </>\n }\n >\n {(itemIds, startIndex) => itemIds.map((itemId, index) => <Row key={itemId} itemId={itemId} rowIndex={startIndex + index} />)}\n </Virtualized>\n );\n});\n","import React, { ReactNode, useState } from 'react';\nimport { useColumnContext, useFilter, useTheme } from '..';\nimport { asString, castArray, flatMap, uniq } from '../misc/helpers';\nimport { CommonFilterProps, InternalColumn, SerializableValue } from '../types';\nimport { FormControlLabel } from './formControlLabel';\nimport { useTableContext } from './table';\n\nfunction toggle<T>(set: Set<T>, value: T, singleSelect?: boolean) {\n const newSet = new Set(singleSelect ? [] : set);\n if (set.has(value)) {\n newSet.delete(value);\n } else {\n newSet.add(value);\n }\n\n return newSet;\n}\n\nexport function SelectFilter<T, V, F extends SerializableValue>({\n options: providedOptions,\n stringValue = asString,\n render = stringValue,\n singleSelect,\n ...props\n}: {\n options?: F[];\n stringValue?: (value: F) => string;\n render?: (value: F) => ReactNode;\n singleSelect?: boolean;\n} & CommonFilterProps<T, V, F, Set<F>>): JSX.Element {\n const {\n components: { TextField, Button, IconButton, Checkbox },\n icons: { Search, Clear },\n text,\n } = useTheme();\n\n const table = useTableContext<T>();\n const columnId = useColumnContext();\n\n const options = table.useState((state) => {\n if (providedOptions) return uniq(providedOptions);\n\n const column = state.activeColumns.find((column) => column.id === columnId) as InternalColumn<T, V> | undefined;\n if (!column) return [];\n\n const filterBy = props.filterBy ?? ((x) => x as unknown as F | F[]);\n\n return uniq(flatMap(state.items, (item) => castArray(filterBy(column.value(item), item))));\n });\n\n const [query, setQuery] = useState('');\n const filtered = options.filter((option) => !query || stringValue(option).toLowerCase().includes(query.toLowerCase()));\n\n const { value = new Set<F>(), onChange } = useFilter({\n ...props,\n\n id: 'selectFilter',\n\n isActive(filterValue) {\n return filterValue.size > 0;\n },\n\n test(filterValue, value) {\n return filterValue.has(value);\n },\n });\n\n return (\n <div\n css={{\n padding: 'calc(var(--spacing) * 2)',\n display: 'grid',\n gap: 'var(--spacing)',\n }}\n >\n <div\n css={{\n marginBottom: 'var(--spacing)',\n display: 'grid',\n gridAutoFlow: 'column',\n gap: 'var(--spacing)',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <div>{text.selectFilter}</div>\n <Button variant=\"contained\" onClick={() => onChange(new Set())} disabled={value.size === 0}>\n {text.reset}\n </Button>\n </div>\n\n <TextField\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n endIcon={<IconButton onClick={() => setQuery('')}>{!query ? <Search /> : <Clear />}</IconButton>}\n css={{ marginBottom: 'var(--spacing)' }}\n />\n\n {filtered.map((option, index) => (\n <FormControlLabel\n key={index}\n control={<Checkbox checked={value.has(option)} onChange={() => onChange(toggle(value, option, singleSelect))} />}\n label={render(option)}\n ></FormControlLabel>\n ))}\n\n {filtered.length === 0 && <span css={{ textAlign: 'center' }}>{text.noResults}</span>}\n </div>\n );\n}\n","export function debounce<Args extends any[]>(fn: (...args: Args) => void, ms: number): { (...args: Args): void; flush(): void } {\n let lastArgs: Args | undefined;\n let timeout: NodeJS.Timeout | undefined;\n\n function run() {\n const args = lastArgs;\n\n lastArgs = undefined;\n timeout = undefined;\n\n fn(...(args as Args));\n }\n\n return Object.assign(\n function (...args: Args) {\n lastArgs = args;\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n timeout = setTimeout(run, ms);\n },\n {\n flush() {\n if (timeout) {\n clearTimeout(timeout);\n run();\n }\n },\n },\n );\n}\n","import { castDraft } from 'immer';\nimport { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useColumnContext, useTableContext } from '..';\nimport { debounce } from '../misc/debounce';\nimport { FilterImplementation, SerializableValue } from '../types';\n\nexport function useFilter<T, V, F, S extends SerializableValue>(impl: FilterImplementation<T, V, F, S>) {\n const table = useTableContext<T>();\n const columnId = useColumnContext();\n\n // Update implementation\n useEffect(() => {\n table.update((state) => {\n if (impl.defaultValue !== undefined) {\n state.filterValues.set(columnId, impl.defaultValue);\n }\n });\n }, []);\n\n useEffect(() => {\n table.update((state) => {\n state.filters.set(columnId, castDraft(impl));\n\n if (impl.value !== undefined) {\n state.filterValues.set(columnId, impl.value);\n }\n });\n\n return () => {\n table.update((state) => {\n state.filters.delete(columnId);\n });\n };\n }, [table, columnId, ...(impl.dependencies ?? [impl])]);\n\n // Track local value and update it globally after delay\n const value = table.useState((state) => state.filterValues.get(columnId) as S | undefined);\n const [dirtyValue, setDirtyValue] = useState<S>();\n const implRef = useRef(impl);\n\n useLayoutEffect(() => {\n implRef.current = impl;\n });\n\n const delayedUpdate = useMemo(\n () =>\n debounce((value?: S) => {\n const { value: controlledValue, onChange } = implRef.current;\n\n if (controlledValue === undefined) {\n table.update((state) => {\n state.filterValues.set(columnId, value);\n });\n }\n\n onChange?.(value);\n }, 500),\n [table],\n );\n\n function onChange(value?: S) {\n setDirtyValue(value);\n delayedUpdate(value);\n }\n\n useEffect(() => delayedUpdate.flush(), [delayedUpdate]);\n\n return {\n value: dirtyValue ?? value,\n onChange,\n };\n}\n","export const textMatch = (text: string, query: string): boolean => {\n text = text.toLowerCase();\n query = query.toLowerCase();\n return query.split(/\\s+/).every((part) => termMatch(text, part));\n};\n\nexport const termMatch = (text: string, query: string): boolean => {\n let i = 0;\n outer: for (const char of query) {\n for (; i < text.length; i++) {\n if (text[i] === char) {\n i++;\n continue outer;\n }\n }\n return false;\n }\n return true;\n};\n","import React from 'react';\nimport { useFilter } from '../hooks/useFilter';\nimport { useTheme } from '../hooks/useTheme';\nimport { asStringOrArray } from '../misc/helpers';\nimport { textMatch } from '../misc/textMatch';\nimport { CommonFilterProps } from '../types';\n\nexport function TextFilter<T, V>({\n compare = textMatch,\n filterBy = asStringOrArray,\n ...props\n}: {\n compare?: (a: string, b: string) => boolean;\n} & CommonFilterProps<T, V, string, string>): JSX.Element {\n const {\n components: { TextField, IconButton, Button },\n icons: { Search, Clear },\n text,\n } = useTheme();\n\n const { value = '', onChange } = useFilter({\n ...props,\n filterBy,\n\n id: 'textFilter',\n\n isActive(filterValue) {\n return !!filterValue;\n },\n\n test(filterValue, value) {\n return compare(value, filterValue);\n },\n });\n\n return (\n <div\n css={{\n padding: `calc(var(--spacing) * 2)`,\n display: 'grid',\n gap: 'var(--spacing)',\n }}\n >\n <div\n css={{\n marginBottom: 'var(--spacing)',\n display: 'grid',\n gridAutoFlow: 'column',\n gap: 'var(--spacing)',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <div>{text.textFilter}</div>\n <Button variant=\"contained\" onClick={() => onChange('')} disabled={!value}>\n {text.reset}\n </Button>\n </div>\n\n <TextField\n value={value}\n onChange={(e) => onChange(e.target.value)}\n endIcon={<IconButton onClick={() => onChange('')}>{!value ? <Search /> : <Clear />}</IconButton>}\n />\n </div>\n );\n}\n"],"names":["ReactPropTypesSecret","require$$0","propTypesModule","startOfDay","weekDays","months","d","Date","getFullYear","getMonth","getDate","endOfDay","today","min","max","a","b","value","onChange","rangeSelect","locale","firstDayOfWeek","components","IconButton","icons","ChevronRight","useTheme","baseDate","useState","dateInView","setDateInView","currentMin","setCurrentMin","hovered","setHovered","undefined","calendars","getBackProps","getForwardProps","getDateProps","useDayzed","onDateSelected","showOutsideDays","date","onOffsetChanged","offset","formatWeekday","useMemo","format","Intl","DateTimeFormat","weekday","weekDay","UTC","_jsx","map","month","year","weeks","_jsxs","margin","display","gridAutoFlow","justifyContent","alignItems","transform","gridTemplateColumns","fontWeight","_v","justifySelf","marginBottom","week","index","dateObj","dayIndex","prevMonth","nextMonth","selected","getTime","dateIntersect","preSelected","padding","border","background","cursor","color","gray","Popover","cssVariables","useCssVariables","anchor","setAnchor","formatMonth","fontSize","e","currentTarget","input","setInput","Number","formatYear","String","width","target","match","apply","key","x","Object","range","convertDate","Array","convertDateOrRange","filter","Boolean","singleSelect","filterBy","convertDateOrArray","props","Button","text","useFilter","id","isActive","filterValue","test","formatDate","dateStyle","gap","justifyItems","minWidth","dateFilter","join","reset","control","label","userSelect","marginLeft","v","q","r","t","h","n","l","u","p","k","m","w","freeze","enableMapSet","enablePatches","produce","applyPatches","eq","throttleFn","shimModule","require$$1","withSelectorModule","useSyncExternalStoreWithSelector","BaseStore","castDraft","ColumnHeaderContext","StoreScope","items","Map","ref","useRef","columnId","useColumnContext","table","useTableContext","enabled","store","useStore","draggingStart","clone","div","current","update","state","set","delete","offsetLeft","cols","getState","columnOrder","get","otherCols","col","firstOffsetleft","find","sum","targetIndex","findIndex","offsetWidth","length","mouseX","clientX","bounds","getBoundingClientRect","Math","abs","stopPropagation","setPointerCapture","pointerId","cloneNode","body","append","entries","getComputedStyle","style","assign","pointerEvents","position","boxShadow","left","top","indexOf","calcTargetIndex","columns","forEach","i","slice","reduce","columnStyleOverride","transition","zIndex","splice","remove","clear","onPointerDown","onPointerMove","onPointerUp","children","Checkbox","Settings","hiddenColumns","anchorEl","setAnchorEl","toggle","column","controlledHiddenColumns","onHiddenColumnsChange","newValue","Set","has","add","selectColumns","cannotHide","header","Export","Clipboard","generate","options","activeColumns","activeItems","data","item","exportCell","csvExport","copy","clipboard","writeText","enableExport","download","document","createElement","href","encodeURIComponent","appendChild","click","removeChild","exportTitle","exportCopy","exportDownload","FilterList","ArrowDropDown","filters","filterValues","backgroundColor","hasPointerCapture","parent","parentElement","columnWidths","releasePointerCapture","getModifierState","alignSelf","content","height","onDoubleClick","Cell","memo","itemId","rowIndex","css","activeItemsById","throttle","debugRender","classNames","calcClassNames","renderCell","defaultClasses","cell","hasDeferredChildren","Spinner","isExpanded","expanded","hasChildren","controlledExpanded","expandOnlyOne","onExpandedChange","newExpanded","ancestor","getAncestors","isSelected","itemIds","keys","size","every","selection","mouseEvent","nativeEvent","lastSelectedId","selectSyncChildren","controlledSelection","onSelectionChange","shiftKey","newSelection","descendant","getDescendants","Function","evenCell","oddCell","Row","divRef","className","indent","columnIds","enableSelection","rowAction","o","ResizeObserver","contains","rowHeights","offsetHeight","observe","disconnect","cellFill","firstCell","Badge","ArrowUpward","direction","sort","s","controlledSort","onSortChange","newDirection","newSort","concat","overflow","textOverflow","opacity","onAncestorScroll","onScroll","ancestors","addEventListener","removeEventListener","findScrollRoot","documentElement","scrollHeight","clientHeight","relativeOffset","y","offsetParent","offsetTop","HTMLElement","virtual","probeRef","setCounter","from","to","before","after","root","rowHeight","initalRowHeight","overscan","overscanTop","overscanBottom","totalHeight","probeOffset","headerHeight","topOfTable","scrollTop","bottomOfTable","reverse","throttleScroll","incCounter","c","gridColumn","TableContext","createContext","ColumnContext","useContext","Error","useTableState","isHydrated","useTableStateStorage","showLoading","setShowLoading","handle","setTimeout","clearTimeout","loading","TableInner","hidden","fullWidth","defaultWidth","stickyHeader","enableColumnSelection","visibility","headerFill","sticky","headerCell","flex","startIndex","newSet","providedOptions","stringValue","asString","render","TextField","Search","Clear","uniq","flatMap","castArray","query","setQuery","filtered","option","toLowerCase","includes","selectFilter","textAlign","noResults","compare","textMatch","asStringOrArray","textFilter"],"mappings":"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"}