schummar-table 0.11.0 → 0.12.0

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 (76) hide show
  1. package/package.json +19 -17
  2. package/dist/cjs/index.js +0 -3005
  3. package/dist/cjs/index.js.map +0 -1
  4. package/dist/cjs/mui4Theme.js +0 -98
  5. package/dist/cjs/mui4Theme.js.map +0 -1
  6. package/dist/cjs/mui5Theme.js +0 -102
  7. package/dist/cjs/mui5Theme.js.map +0 -1
  8. package/dist/cjs/package.json +0 -1
  9. package/dist/cjs/tableTheme.js +0 -248
  10. package/dist/cjs/tableTheme.js.map +0 -1
  11. package/dist/es/index.js +0 -2983
  12. package/dist/es/index.js.map +0 -1
  13. package/dist/es/mui4Theme.js +0 -94
  14. package/dist/es/mui4Theme.js.map +0 -1
  15. package/dist/es/mui5Theme.js +0 -98
  16. package/dist/es/mui5Theme.js.map +0 -1
  17. package/dist/es/tableTheme.js +0 -238
  18. package/dist/es/tableTheme.js.map +0 -1
  19. package/dist/types/components/autoFocusTextField.d.ts +0 -5
  20. package/dist/types/components/cell.d.ts +0 -6
  21. package/dist/types/components/clearFiltersButton.d.ts +0 -1
  22. package/dist/types/components/columnFooter.d.ts +0 -1
  23. package/dist/types/components/columnHeader.d.ts +0 -6
  24. package/dist/types/components/columnSelection.d.ts +0 -2
  25. package/dist/types/components/dateFilter.d.ts +0 -11
  26. package/dist/types/components/dateInput.d.ts +0 -5
  27. package/dist/types/components/datePicker.d.ts +0 -25
  28. package/dist/types/components/expandControl.d.ts +0 -6
  29. package/dist/types/components/export.d.ts +0 -2
  30. package/dist/types/components/filterControl.d.ts +0 -3
  31. package/dist/types/components/formControlLabel.d.ts +0 -6
  32. package/dist/types/components/resizeHandle.d.ts +0 -5
  33. package/dist/types/components/row.d.ts +0 -7
  34. package/dist/types/components/selectComponent.d.ts +0 -5
  35. package/dist/types/components/selectFilter.d.ts +0 -12
  36. package/dist/types/components/sortComponent.d.ts +0 -4
  37. package/dist/types/components/spinnner.d.ts +0 -3
  38. package/dist/types/components/table.d.ts +0 -9
  39. package/dist/types/components/textFilter.d.ts +0 -8
  40. package/dist/types/components/virtualized.d.ts +0 -7
  41. package/dist/types/hooks/useFilter.d.ts +0 -7
  42. package/dist/types/hooks/useMemoMap.d.ts +0 -2
  43. package/dist/types/hooks/useTableMemo.d.ts +0 -6
  44. package/dist/types/hooks/useTheme.d.ts +0 -2
  45. package/dist/types/index.d.ts +0 -13
  46. package/dist/types/internalState/calcItems.d.ts +0 -3
  47. package/dist/types/internalState/calcProps.d.ts +0 -2
  48. package/dist/types/internalState/cleanupState.d.ts +0 -3
  49. package/dist/types/internalState/filterColumns.d.ts +0 -3
  50. package/dist/types/internalState/normalizeExpanded.d.ts +0 -3
  51. package/dist/types/internalState/syncSelections.d.ts +0 -3
  52. package/dist/types/internalState/tableStateStorage.d.ts +0 -13
  53. package/dist/types/internalState/useTableState.d.ts +0 -3
  54. package/dist/types/misc/csvExport.d.ts +0 -7
  55. package/dist/types/misc/debounce.d.ts +0 -4
  56. package/dist/types/misc/helpers.d.ts +0 -16
  57. package/dist/types/misc/queue.d.ts +0 -7
  58. package/dist/types/misc/textMatch.d.ts +0 -2
  59. package/dist/types/misc/throttle.d.ts +0 -5
  60. package/dist/types/theme/defaultTheme/badge.d.ts +0 -2
  61. package/dist/types/theme/defaultTheme/button.d.ts +0 -2
  62. package/dist/types/theme/defaultTheme/checkbox.d.ts +0 -2
  63. package/dist/types/theme/defaultTheme/defaultClasses.d.ts +0 -19
  64. package/dist/types/theme/defaultTheme/defaultColors.d.ts +0 -2
  65. package/dist/types/theme/defaultTheme/defaultComponents.d.ts +0 -2
  66. package/dist/types/theme/defaultTheme/defaultIcons.d.ts +0 -2
  67. package/dist/types/theme/defaultTheme/defaultTexts.d.ts +0 -2
  68. package/dist/types/theme/defaultTheme/iconButton.d.ts +0 -2
  69. package/dist/types/theme/defaultTheme/index.d.ts +0 -2
  70. package/dist/types/theme/defaultTheme/popover.d.ts +0 -7
  71. package/dist/types/theme/defaultTheme/textField.d.ts +0 -2
  72. package/dist/types/theme/mui4Theme/index.d.ts +0 -7
  73. package/dist/types/theme/mui5Theme/index.d.ts +0 -7
  74. package/dist/types/theme/tableTheme.d.ts +0 -10
  75. package/dist/types/theme/useCssVariables.d.ts +0 -9
  76. package/dist/types/types.d.ts +0 -330
@@ -1,102 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __defProps = Object.defineProperties;
4
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
- var __spreadValues = (a, b) => {
10
- for (var prop in b || (b = {}))
11
- if (__hasOwnProp.call(b, prop))
12
- __defNormalProp(a, prop, b[prop]);
13
- if (__getOwnPropSymbols)
14
- for (var prop of __getOwnPropSymbols(b)) {
15
- if (__propIsEnum.call(b, prop))
16
- __defNormalProp(a, prop, b[prop]);
17
- }
18
- return a;
19
- };
20
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
- var __objRest = (source, exclude) => {
22
- var target = {};
23
- for (var prop in source)
24
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
25
- target[prop] = source[prop];
26
- if (source != null && __getOwnPropSymbols)
27
- for (var prop of __getOwnPropSymbols(source)) {
28
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
29
- target[prop] = source[prop];
30
- }
31
- return target;
32
- };
33
- Object.defineProperty(exports, "__esModule", { value: true });
34
- exports[Symbol.toStringTag] = "Module";
35
- var material = require("@mui/material");
36
- var react = require("react");
37
- var tableTheme = require("./tableTheme.js");
38
- var jsxRuntime = require("@emotion/react/jsx-runtime");
39
- require("react-dom");
40
- require("@emotion/react");
41
- const mui5Theme = {
42
- components: {
43
- Button: (props) => /* @__PURE__ */ jsxRuntime.jsx(material.Button, __spreadProps(__spreadValues({}, props), {
44
- size: "small",
45
- fullWidth: true,
46
- css: {
47
- justifyContent: "start !important"
48
- },
49
- color: props.variant === "contained" ? "primary" : "inherit"
50
- })),
51
- IconButton: (props) => /* @__PURE__ */ jsxRuntime.jsx(material.IconButton, __spreadProps(__spreadValues({}, props), {
52
- size: "small",
53
- css: {
54
- fontSize: "0.8em"
55
- },
56
- color: "inherit"
57
- })),
58
- Checkbox: (props) => /* @__PURE__ */ jsxRuntime.jsx(material.Checkbox, __spreadProps(__spreadValues({}, props), {
59
- color: "primary",
60
- size: "small"
61
- })),
62
- Popover: tableTheme.Popover,
63
- Badge: material.Badge,
64
- TextField: (_a) => {
65
- var _b = _a, {
66
- endIcon
67
- } = _b, props = __objRest(_b, [
68
- "endIcon"
69
- ]);
70
- return /* @__PURE__ */ jsxRuntime.jsx(material.TextField, __spreadProps(__spreadValues({}, props), {
71
- InputProps: {
72
- endAdornment: endIcon
73
- },
74
- size: "small"
75
- }));
76
- },
77
- Spinner: (props) => /* @__PURE__ */ jsxRuntime.jsx(material.CircularProgress, __spreadProps(__spreadValues({}, props), {
78
- size: 20
79
- }))
80
- }
81
- };
82
- function Mui5TableThemeProvider({
83
- theme,
84
- children
85
- }) {
86
- const muiTheme = material.useTheme();
87
- const _theme = react.useMemo(() => {
88
- return tableTheme.mergeThemes({
89
- colors: {
90
- primary: muiTheme.palette.primary,
91
- secondary: muiTheme.palette.secondary
92
- }
93
- }, mui5Theme, theme != null ? theme : {});
94
- }, [muiTheme, theme]);
95
- return /* @__PURE__ */ jsxRuntime.jsx(tableTheme.TableThemeContext.Provider, {
96
- value: _theme,
97
- children
98
- });
99
- }
100
- exports.Mui5TableThemeProvider = Mui5TableThemeProvider;
101
- exports.mui5Theme = mui5Theme;
102
- //# sourceMappingURL=mui5Theme.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mui5Theme.js","sources":["../../src/theme/mui5Theme/index.tsx"],"sourcesContent":["import { Badge, Button, Checkbox, CircularProgress, IconButton, TextField, useTheme } from '@mui/material';\nimport { ReactNode, useMemo } from 'react';\nimport { PartialTableTheme } from '../../types';\nimport { Popover } from '../defaultTheme/popover';\nimport { mergeThemes, TableThemeContext } from '../tableTheme';\n\nexport const mui5Theme: PartialTableTheme = {\n components: {\n Button: (props) => (\n <Button\n {...props}\n size=\"small\"\n fullWidth\n css={{ justifyContent: 'start !important' }}\n color={props.variant === 'contained' ? 'primary' : 'inherit'}\n />\n ),\n IconButton: (props) => <IconButton {...props} size=\"small\" css={{ fontSize: '0.8em' }} color=\"inherit\" />,\n Checkbox: (props) => <Checkbox {...props} color=\"primary\" size=\"small\" />,\n Popover,\n Badge,\n TextField: ({ endIcon, ...props }) => <TextField {...props} InputProps={{ endAdornment: endIcon }} size=\"small\" />,\n Spinner: (props) => <CircularProgress {...props} size={20} />,\n },\n};\n\nexport function Mui5TableThemeProvider({ theme, children }: { theme?: PartialTableTheme; children: ReactNode }) {\n const muiTheme = useTheme();\n\n const _theme = useMemo(() => {\n return mergeThemes(\n {\n colors: {\n primary: muiTheme.palette.primary,\n secondary: muiTheme.palette.secondary,\n },\n },\n mui5Theme,\n theme ?? {},\n );\n }, [muiTheme, theme]);\n\n return <TableThemeContext.Provider value={_theme}>{children}</TableThemeContext.Provider>;\n}\n"],"names":["mui5Theme","components","Button","props","justifyContent","variant","IconButton","fontSize","Checkbox","Popover","Badge","TextField","endIcon","endAdornment","Spinner","CircularProgress","theme","children","muiTheme","useTheme","_theme","useMemo","mergeThemes","colors","primary","palette","secondary","TableThemeContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAMaA,YAA+B;AAAA,EAC1CC,YAAY;AAAA,IACVC,QAASC,0CACND,kDACKC;MACJ,MAAK;AAAA,MACL;MACA,KAAK;AAAA,QAAEC,gBAAgB;AAAA;MACvB,OAAOD,MAAME,YAAY,cAAc,YAAY;AAAA;IAGvDC,YAAaH,0CAAWG,sDAAeH;MAAO,MAAK;AAAA,MAAQ,KAAK;AAAA,QAAEI,UAAU;AAAA;MAAW,OAAM;AAAA;IAC7FC,UAAWL,0CAAWK,oDAAaL;MAAO,OAAM;AAAA,MAAU,MAAK;AAAA;aAC/DM;WACAC;IACAC,WAAW,CAAC;AAAA,mBAAEC;AAAAA;AAAAA,UAAF,IAAcT,kBAAd,IAAcA;AAAAA,QAAZS;AAAAA;4CAAyBD,qDAAcR;QAAO,YAAY;AAAA,UAAEU,cAAcD;AAAAA;QAAW,MAAK;AAAA;;IACxGE,SAAUX,0CAAWY,4DAAqBZ;MAAO,MAAM;AAAA;;AAhBf;gCAoBL;AAAA,EAAEa;AAAAA,EAAOC;AAAAA,GAAgE;QACxGC,WAAWC;QAEXC,SAASC,cAAQ,MAAM;WACpBC,uBACL;AAAA,MACEC,QAAQ;AAAA,QACNC,SAASN,SAASO,QAAQD;AAAAA,QAC1BE,WAAWR,SAASO,QAAQC;AAAAA;OAGhC1B,WACAgB,wBAAS,EARO;AAAA,KAUjB,CAACE,UAAUF,KAAX,CAXmB;wCAadW,6BAAkB;IAAS,OAAOP;AAAAA;;AAC3C;;;"}
@@ -1 +0,0 @@
1
- {"type":"commonjs"}
@@ -1,248 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __defProps = Object.defineProperties;
4
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
- var __spreadValues = (a, b) => {
10
- for (var prop in b || (b = {}))
11
- if (__hasOwnProp.call(b, prop))
12
- __defNormalProp(a, prop, b[prop]);
13
- if (__getOwnPropSymbols)
14
- for (var prop of __getOwnPropSymbols(b)) {
15
- if (__propIsEnum.call(b, prop))
16
- __defNormalProp(a, prop, b[prop]);
17
- }
18
- return a;
19
- };
20
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
- var react$1 = require("react");
22
- var reactDom = require("react-dom");
23
- var react = require("@emotion/react");
24
- var jsxRuntime = require("@emotion/react/jsx-runtime");
25
- const white = "#ffffff";
26
- const lightGray = "#eeeeee";
27
- const gray = "#bdbdbd";
28
- const darkGray = "#777";
29
- const cell = react.css({
30
- padding: `calc(var(--spacing) * 0.1) calc(2 * var(--spacing))`,
31
- display: "flex",
32
- alignItems: "center",
33
- borderBottom: `1px solid #dfe2e9`,
34
- whiteSpace: "nowrap",
35
- overflow: "hidden",
36
- background: "white"
37
- });
38
- const defaultClasses = {
39
- table: react.css({
40
- position: "relative",
41
- display: "grid"
42
- }),
43
- cell,
44
- cellFill: react.css({
45
- borderBottom: `1px solid ${lightGray}`
46
- }),
47
- headerCell: react.css(cell, {
48
- padding: `var(--spacing) 0 var(--spacing) calc(2 * var(--spacing))`,
49
- borderBottom: `1px solid #c9cfda`
50
- }),
51
- footerCell: react.css(cell, {
52
- padding: `var(--spacing) calc(2 * var(--spacing))`,
53
- borderTop: `1px solid #c9cfda`,
54
- borderBottom: "none"
55
- }),
56
- firstCell: react.css({
57
- justifyContent: "start"
58
- }),
59
- sticky: react.css({
60
- position: "sticky",
61
- top: 0,
62
- zIndex: 2
63
- }),
64
- stickyBottom: react.css({
65
- position: "sticky",
66
- bottom: 0,
67
- zIndex: 2
68
- }),
69
- headerFill: react.css({
70
- borderBottom: `1px solid #c9cfda`,
71
- background: white
72
- }),
73
- footerFill: react.css({
74
- borderTop: `1px solid #c9cfda`,
75
- background: white
76
- }),
77
- text: react.css({
78
- minWidth: 0,
79
- overflow: "hidden",
80
- textOverflow: "ellipsis"
81
- }),
82
- card: react.css({
83
- borderRadius: 4,
84
- boxShadow: "0px 3px 14px 2px rgb(0 0 0 / 12%)",
85
- background: "white"
86
- }),
87
- clearFiltersButton: react.css({
88
- padding: `0 calc(2 * var(--spacing))`,
89
- fontWeight: "bold",
90
- position: "sticky",
91
- left: 0,
92
- maxWidth: "fit-content",
93
- gridColumn: "2/-1",
94
- button: {
95
- color: "var(--primaryMain) !important",
96
- border: "solid 1px",
97
- borderColor: "var(--primaryMain) !important",
98
- margin: "var(--spacing)"
99
- }
100
- })
101
- };
102
- const MARGIN = 10;
103
- const MAX_OFFSET = 20;
104
- const PopoverContext = react$1.createContext({
105
- depth: 0,
106
- visible: false
107
- });
108
- const Popover = ({
109
- anchorEl,
110
- open,
111
- hidden,
112
- onClose,
113
- children,
114
- className,
115
- align
116
- }) => {
117
- const popper = react$1.useRef(null);
118
- const [position, setPosition] = react$1.useState();
119
- react$1.useLayoutEffect(() => {
120
- if (!anchorEl || !open) {
121
- setPosition(void 0);
122
- return;
123
- }
124
- let last;
125
- function check() {
126
- var _a, _b;
127
- if (!anchorEl)
128
- return;
129
- const {
130
- left: anchorLeft,
131
- bottom: anchorBottom,
132
- width: anchorWidth
133
- } = anchorEl.getBoundingClientRect();
134
- const {
135
- width: popperWidth = 0,
136
- height: popperHeight = 0
137
- } = (_b = (_a = popper.current) == null ? void 0 : _a.getBoundingClientRect()) != null ? _b : {};
138
- const viewportWidth = document.documentElement.clientWidth;
139
- const viewportHeight = document.documentElement.clientHeight;
140
- const next = {
141
- left: align === "center" ? anchorLeft + anchorWidth / 2 - popperWidth / 2 : anchorLeft - Math.min(popperWidth ? popperWidth / 2 : Infinity, MAX_OFFSET),
142
- top: anchorBottom
143
- };
144
- if (next.left + popperWidth + MARGIN > viewportWidth) {
145
- next.left = viewportWidth - popperWidth - MARGIN;
146
- }
147
- if (next.top + popperHeight + MARGIN > viewportHeight) {
148
- next.top = viewportHeight - popperHeight - MARGIN;
149
- }
150
- if (next.left !== (last == null ? void 0 : last.left) || next.top !== (last == null ? void 0 : last.top)) {
151
- setPosition(next);
152
- }
153
- last = next;
154
- }
155
- check();
156
- const handle = setInterval(check, 16);
157
- return () => {
158
- clearInterval(handle);
159
- };
160
- }, [anchorEl, open]);
161
- const {
162
- depth
163
- } = react$1.useContext(PopoverContext);
164
- const visible = !hidden && !!position;
165
- const context = react$1.useMemo(() => ({
166
- depth: depth + 1,
167
- visible
168
- }), [depth, visible]);
169
- if (!open)
170
- return null;
171
- return /* @__PURE__ */ jsxRuntime.jsx(PopoverContext.Provider, {
172
- value: context,
173
- children: reactDom.createPortal(/* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
174
- children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
175
- css: [{
176
- position: "fixed",
177
- left: 0,
178
- right: 0,
179
- top: 0,
180
- bottom: 0,
181
- zIndex: 1e3 + depth * 2
182
- }, hidden && {
183
- display: "none"
184
- }],
185
- onClick: () => onClose()
186
- }), /* @__PURE__ */ jsxRuntime.jsx("div", {
187
- ref: popper,
188
- className,
189
- css: [defaultClasses.card, __spreadProps(__spreadValues({
190
- position: "fixed",
191
- maxWidth: document.documentElement.clientWidth,
192
- maxHeight: document.documentElement.clientHeight
193
- }, position), {
194
- zIndex: 1001 + depth * 2
195
- }), hidden && {
196
- display: "none"
197
- }, !position && {
198
- visibility: "hidden"
199
- }],
200
- children
201
- })]
202
- }), document.body)
203
- });
204
- };
205
- exports.globalTableTheme = {};
206
- function configureTableTheme(tableTheme) {
207
- exports.globalTableTheme = tableTheme;
208
- }
209
- const TableThemeContext = react$1.createContext({});
210
- function TableThemeProvider({
211
- theme,
212
- children
213
- }) {
214
- return /* @__PURE__ */ jsxRuntime.jsx(TableThemeContext.Provider, {
215
- value: theme,
216
- children
217
- });
218
- }
219
- function mergeThemes(...themes) {
220
- return {
221
- text: Object.assign({}, ...themes.map((theme) => theme.text)),
222
- classes: Object.assign({}, ...themes.map((theme) => theme.classes)),
223
- components: Object.assign({}, ...themes.map((theme) => theme.components)),
224
- icons: Object.assign({}, ...themes.map((theme) => theme.icons)),
225
- colors: {
226
- primary: Object.assign({}, ...themes.map((theme) => {
227
- var _a;
228
- return (_a = theme.colors) == null ? void 0 : _a.primary;
229
- })),
230
- secondary: Object.assign({}, ...themes.map((theme) => {
231
- var _a;
232
- return (_a = theme.colors) == null ? void 0 : _a.secondary;
233
- }))
234
- },
235
- spacing: themes.map((theme) => theme.spacing).reverse().find((x) => x !== void 0)
236
- };
237
- }
238
- exports.Popover = Popover;
239
- exports.PopoverContext = PopoverContext;
240
- exports.TableThemeContext = TableThemeContext;
241
- exports.TableThemeProvider = TableThemeProvider;
242
- exports.configureTableTheme = configureTableTheme;
243
- exports.darkGray = darkGray;
244
- exports.defaultClasses = defaultClasses;
245
- exports.gray = gray;
246
- exports.lightGray = lightGray;
247
- exports.mergeThemes = mergeThemes;
248
- //# sourceMappingURL=tableTheme.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tableTheme.js","sources":["../../src/theme/defaultTheme/defaultClasses.ts","../../src/theme/defaultTheme/popover.tsx","../../src/theme/tableTheme.tsx"],"sourcesContent":["import { css } from '@emotion/react';\n\nexport const white = '#ffffff';\nexport const lightGray = '#eeeeee';\nexport const gray = '#bdbdbd';\nexport const darkGray = '#777';\n\nconst cell = css({\n padding: `calc(var(--spacing) * 0.1) calc(2 * var(--spacing))`,\n display: 'flex',\n alignItems: 'center',\n borderBottom: `1px solid #dfe2e9`,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n background: 'white',\n});\n\nexport const defaultClasses = {\n table: css({\n position: 'relative',\n display: 'grid',\n }),\n\n cell,\n\n cellFill: css({\n borderBottom: `1px solid ${lightGray}`,\n }),\n\n headerCell: css(cell, {\n padding: `var(--spacing) 0 var(--spacing) calc(2 * var(--spacing))`,\n borderBottom: `1px solid #c9cfda`,\n }),\n\n footerCell: css(cell, {\n padding: `var(--spacing) calc(2 * var(--spacing))`,\n borderTop: `1px solid #c9cfda`,\n borderBottom: 'none',\n }),\n\n firstCell: css({\n justifyContent: 'start',\n }),\n\n sticky: css({\n position: 'sticky',\n top: 0,\n zIndex: 2,\n }),\n\n stickyBottom: css({\n position: 'sticky',\n bottom: 0,\n zIndex: 2,\n }),\n\n headerFill: css({\n borderBottom: `1px solid #c9cfda`,\n background: white,\n }),\n\n footerFill: css({\n borderTop: `1px solid #c9cfda`,\n background: white,\n }),\n\n text: css({\n minWidth: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }),\n\n card: css({\n borderRadius: 4,\n boxShadow: '0px 3px 14px 2px rgb(0 0 0 / 12%)',\n background: 'white',\n }),\n\n clearFiltersButton: css({\n padding: `0 calc(2 * var(--spacing))`,\n fontWeight: 'bold',\n position: 'sticky',\n left: 0,\n maxWidth: 'fit-content',\n gridColumn: '2/-1',\n button: {\n color: 'var(--primaryMain) !important',\n border: 'solid 1px',\n borderColor: 'var(--primaryMain) !important',\n margin: 'var(--spacing)',\n },\n }),\n};\n","import React, { createContext, useContext, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { TableTheme } from '../../types';\nimport { defaultClasses } from './defaultClasses';\n\nconst MARGIN = 10;\nconst MAX_OFFSET = 20;\n\nexport const PopoverContext = createContext({ depth: 0, visible: false });\n\nexport const Popover: TableTheme['components']['Popover'] = ({ anchorEl, open, hidden, onClose, children, className, align }) => {\n const popper = useRef<HTMLDivElement>(null);\n const [position, setPosition] = useState<{ left: number; top: number }>();\n\n useLayoutEffect(() => {\n if (!anchorEl || !open) {\n setPosition(undefined);\n return;\n }\n\n let last: { left: number; top: number } | undefined;\n\n function check() {\n if (!anchorEl) return;\n const { left: anchorLeft, bottom: anchorBottom, width: anchorWidth } = anchorEl.getBoundingClientRect();\n const { width: popperWidth = 0, height: popperHeight = 0 } = popper.current?.getBoundingClientRect() ?? {};\n const viewportWidth = document.documentElement.clientWidth;\n const viewportHeight = document.documentElement.clientHeight;\n\n const next = {\n left:\n align === 'center'\n ? anchorLeft + anchorWidth / 2 - popperWidth / 2\n : anchorLeft - Math.min(popperWidth ? popperWidth / 2 : Infinity, MAX_OFFSET),\n top: anchorBottom,\n };\n\n if (next.left + popperWidth + MARGIN > viewportWidth) {\n next.left = viewportWidth - popperWidth - MARGIN;\n }\n if (next.top + popperHeight + MARGIN > viewportHeight) {\n next.top = viewportHeight - popperHeight - MARGIN;\n }\n\n if (next.left !== last?.left || next.top !== last?.top) {\n setPosition(next);\n }\n\n last = next;\n }\n check();\n\n const handle = setInterval(check, 16);\n return () => {\n clearInterval(handle);\n };\n }, [anchorEl, open]);\n\n const { depth } = useContext(PopoverContext);\n const visible = !hidden && !!position;\n const context = useMemo(() => ({ depth: depth + 1, visible }), [depth, visible]);\n\n if (!open) return null;\n\n return (\n <PopoverContext.Provider value={context}>\n {createPortal(\n <>\n <div\n css={[\n {\n position: 'fixed',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n zIndex: 1000 + depth * 2,\n },\n hidden && { display: 'none' },\n ]}\n onClick={() => onClose()}\n />\n\n <div\n ref={popper}\n className={className}\n css={[\n defaultClasses.card,\n {\n position: 'fixed',\n maxWidth: document.documentElement.clientWidth,\n maxHeight: document.documentElement.clientHeight,\n ...position,\n zIndex: 1001 + depth * 2,\n },\n hidden && { display: 'none' },\n !position && { visibility: 'hidden' },\n ]}\n >\n {children}\n </div>\n </>,\n document.body,\n )}\n </PopoverContext.Provider>\n );\n};\n","import { createContext, ReactNode } from 'react';\nimport { PartialTableTheme } from '../types';\n\nexport let globalTableTheme: PartialTableTheme = {};\nexport function configureTableTheme(tableTheme: PartialTableTheme) {\n globalTableTheme = tableTheme;\n}\n\nexport const TableThemeContext = createContext<PartialTableTheme>({});\n\nexport function TableThemeProvider({ theme, children }: { theme: PartialTableTheme; children: ReactNode }) {\n return <TableThemeContext.Provider value={theme}>{children}</TableThemeContext.Provider>;\n}\n\nexport function mergeThemes<T>(...themes: PartialTableTheme<T>[]): PartialTableTheme<T> {\n return {\n text: Object.assign({}, ...themes.map((theme) => theme.text)),\n classes: Object.assign({}, ...themes.map((theme) => theme.classes)),\n components: Object.assign({}, ...themes.map((theme) => theme.components)),\n icons: Object.assign({}, ...themes.map((theme) => theme.icons)),\n colors: {\n primary: Object.assign({}, ...themes.map((theme) => theme.colors?.primary)),\n secondary: Object.assign({}, ...themes.map((theme) => theme.colors?.secondary)),\n },\n spacing: themes\n .map((theme) => theme.spacing)\n .reverse()\n .find((x) => x !== undefined),\n };\n}\n"],"names":["css","MARGIN","MAX_OFFSET","PopoverContext","createContext","depth","visible","Popover","anchorEl","open","hidden","onClose","children","className","align","popper","useRef","position","setPosition","useState","undefined","last","left","anchorLeft","bottom","anchorBottom","width","anchorWidth","getBoundingClientRect","popperWidth","height","popperHeight","current","viewportWidth","document","documentElement","clientWidth","viewportHeight","clientHeight","next","Math","min","Infinity","top","handle","setInterval","check","useContext","context","useMemo","createPortal","right","zIndex","display","defaultClasses","card","maxWidth","maxHeight","visibility","body","globalTableTheme","tableTheme","TableThemeContext","theme","themes","text","Object","assign","map","classes","components","icons","colors","primary","secondary","spacing","reverse","find","x"],"mappings":"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"}