schummar-table 0.3.2 → 0.5.0-beta-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/tableTheme.0eb513b0.js +215 -0
- package/dist/assets/tableTheme.0eb513b0.js.map +1 -0
- package/dist/assets/tableTheme.65fea986.js +214 -0
- package/dist/assets/tableTheme.65fea986.js.map +1 -0
- package/dist/assets/vendor.a5ec605d.js +2475 -0
- package/dist/assets/vendor.a5ec605d.js.map +1 -0
- package/dist/assets/vendor.c9c3328b.js +2464 -0
- package/dist/assets/vendor.c9c3328b.js.map +1 -0
- package/dist/cjs/mui4Theme.js +7 -0
- package/dist/cjs/mui4Theme.js.map +1 -0
- package/dist/cjs/mui5Theme.js +7 -0
- package/dist/cjs/mui5Theme.js.map +1 -0
- package/dist/cjs/schummar-table.js +1042 -0
- package/dist/cjs/schummar-table.js.map +1 -0
- package/dist/esm/mui4Theme.js +6 -0
- package/dist/esm/mui4Theme.js.map +1 -0
- package/dist/esm/mui5Theme.js +6 -0
- package/dist/esm/mui5Theme.js.map +1 -0
- package/dist/esm/schummar-table.js +1041 -0
- package/dist/esm/schummar-table.js.map +1 -0
- package/dist/{cjs → types}/components/cell.d.ts +1 -1
- package/dist/types/components/columnHeader.d.ts +7 -0
- package/dist/{cjs → types}/components/columnSelection.d.ts +0 -0
- package/dist/types/components/dateFilter.d.ts +8 -0
- package/dist/types/components/datePicker.d.ts +16 -0
- package/dist/types/components/expandControl.d.ts +6 -0
- package/dist/{cjs → types}/components/export.d.ts +0 -0
- package/dist/types/components/filterControl.d.ts +2 -0
- package/dist/types/components/formControlLabel.d.ts +5 -0
- package/dist/types/components/resizeHandle.d.ts +1 -0
- package/dist/{cjs → types}/components/row.d.ts +1 -1
- package/dist/{cjs → types}/components/selectComponent.d.ts +0 -0
- package/dist/types/components/selectFilter.d.ts +8 -0
- package/dist/{cjs → types}/components/sortComponent.d.ts +0 -0
- package/dist/types/components/spinnner.d.ts +3 -0
- package/dist/{cjs → types/components}/table.d.ts +1 -1
- package/dist/types/components/textFilter.d.ts +5 -0
- package/dist/{cjs → types}/components/virtualized.d.ts +0 -0
- package/dist/types/hooks/useFilter.d.ts +5 -0
- package/dist/types/hooks/useTheme.d.ts +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/{cjs → types}/internalState/calcItems.d.ts +0 -0
- package/dist/{cjs → types}/internalState/calcProps.d.ts +0 -0
- package/dist/{cjs → types}/internalState/cleanupState.d.ts +0 -0
- package/dist/{cjs → types}/internalState/filterColumns.d.ts +0 -0
- package/dist/{cjs → types}/internalState/syncSelections.d.ts +0 -0
- package/dist/types/internalState/tableStateStorage.d.ts +11 -0
- package/dist/{cjs → types}/internalState/useTableState.d.ts +0 -0
- package/dist/{cjs → types}/misc/csvExport.d.ts +0 -0
- package/dist/types/misc/debounce.d.ts +4 -0
- package/dist/types/misc/deepPartial.d.ts +3 -0
- package/dist/{cjs → types}/misc/helpers.d.ts +2 -1
- package/dist/types/misc/queue.d.ts +6 -0
- package/dist/{cjs → types}/misc/textMatch.d.ts +0 -0
- package/dist/types/misc/throttle.d.ts +4 -0
- package/dist/types/theme/defaultClasses.d.ts +15 -0
- package/dist/types/theme/defaultColors.d.ts +2 -0
- package/dist/types/theme/defaultIcons.d.ts +2 -0
- package/dist/types/theme/defaultTexts.d.ts +2 -0
- package/dist/types/theme/defaultTheme/badge.d.ts +2 -0
- package/dist/types/theme/defaultTheme/button.d.ts +2 -0
- package/dist/types/theme/defaultTheme/checkbox.d.ts +2 -0
- package/dist/types/theme/defaultTheme/iconButton.d.ts +2 -0
- package/dist/types/theme/defaultTheme/index.d.ts +2 -0
- package/dist/types/theme/defaultTheme/popover.d.ts +4 -0
- package/dist/types/theme/defaultTheme/textField.d.ts +2 -0
- package/dist/types/theme/mui4Theme/index.d.ts +8 -0
- package/dist/types/theme/mui5Theme/index.d.ts +8 -0
- package/dist/types/theme/tableTheme.d.ts +11 -0
- package/dist/types/theme/useCssVariables.d.ts +9 -0
- package/dist/types/types.d.ts +285 -0
- package/package.json +78 -38
- package/dist/cjs/components/cell.js +0 -31
- package/dist/cjs/components/columnSelection.js +0 -37
- package/dist/cjs/components/defaultFilterComponent.d.ts +0 -22
- package/dist/cjs/components/defaultFilterComponent.js +0 -91
- package/dist/cjs/components/expandComponent.d.ts +0 -5
- package/dist/cjs/components/expandComponent.js +0 -38
- package/dist/cjs/components/export.js +0 -48
- package/dist/cjs/components/filterComponent.d.ts +0 -5
- package/dist/cjs/components/filterComponent.js +0 -25
- package/dist/cjs/components/row.js +0 -48
- package/dist/cjs/components/selectComponent.js +0 -61
- package/dist/cjs/components/sortComponent.js +0 -52
- package/dist/cjs/components/textFilterComponent.d.ts +0 -11
- package/dist/cjs/components/textFilterComponent.js +0 -70
- package/dist/cjs/components/useCommonClasses.d.ts +0 -1
- package/dist/cjs/components/useCommonClasses.js +0 -49
- package/dist/cjs/components/virtualized.js +0 -98
- package/dist/cjs/index.d.ts +0 -6
- package/dist/cjs/index.js +0 -18
- package/dist/cjs/internalState/calcItems.js +0 -85
- package/dist/cjs/internalState/calcProps.js +0 -89
- package/dist/cjs/internalState/cleanupState.js +0 -43
- package/dist/cjs/internalState/filterColumns.js +0 -10
- package/dist/cjs/internalState/syncSelections.js +0 -22
- package/dist/cjs/internalState/useTableState.js +0 -62
- package/dist/cjs/misc/csvExport.js +0 -15
- package/dist/cjs/misc/helpers.js +0 -91
- package/dist/cjs/misc/textMatch.js +0 -23
- package/dist/cjs/misc/throttle.d.ts +0 -1
- package/dist/cjs/misc/throttle.js +0 -30
- package/dist/cjs/package.json +0 -1
- package/dist/cjs/table.js +0 -69
- package/dist/cjs/types.d.ts +0 -134
- package/dist/cjs/types.js +0 -2
- package/dist/esm/components/cell.d.ts +0 -6
- package/dist/esm/components/cell.js +0 -28
- package/dist/esm/components/columnSelection.d.ts +0 -2
- package/dist/esm/components/columnSelection.js +0 -33
- package/dist/esm/components/defaultFilterComponent.d.ts +0 -22
- package/dist/esm/components/defaultFilterComponent.js +0 -86
- package/dist/esm/components/expandComponent.d.ts +0 -5
- package/dist/esm/components/expandComponent.js +0 -34
- package/dist/esm/components/export.d.ts +0 -2
- package/dist/esm/components/export.js +0 -44
- package/dist/esm/components/filterComponent.d.ts +0 -5
- package/dist/esm/components/filterComponent.js +0 -21
- package/dist/esm/components/row.d.ts +0 -7
- package/dist/esm/components/row.js +0 -44
- package/dist/esm/components/selectComponent.d.ts +0 -5
- package/dist/esm/components/selectComponent.js +0 -57
- package/dist/esm/components/sortComponent.d.ts +0 -4
- package/dist/esm/components/sortComponent.js +0 -48
- package/dist/esm/components/textFilterComponent.d.ts +0 -11
- package/dist/esm/components/textFilterComponent.js +0 -65
- package/dist/esm/components/useCommonClasses.d.ts +0 -1
- package/dist/esm/components/useCommonClasses.js +0 -46
- package/dist/esm/components/virtualized.d.ts +0 -6
- package/dist/esm/components/virtualized.js +0 -94
- package/dist/esm/index.d.ts +0 -6
- package/dist/esm/index.js +0 -4
- package/dist/esm/internalState/calcItems.d.ts +0 -3
- package/dist/esm/internalState/calcItems.js +0 -81
- package/dist/esm/internalState/calcProps.d.ts +0 -2
- package/dist/esm/internalState/calcProps.js +0 -85
- package/dist/esm/internalState/cleanupState.d.ts +0 -3
- package/dist/esm/internalState/cleanupState.js +0 -39
- package/dist/esm/internalState/filterColumns.d.ts +0 -3
- package/dist/esm/internalState/filterColumns.js +0 -6
- package/dist/esm/internalState/syncSelections.d.ts +0 -3
- package/dist/esm/internalState/syncSelections.js +0 -18
- package/dist/esm/internalState/useTableState.d.ts +0 -3
- package/dist/esm/internalState/useTableState.js +0 -58
- package/dist/esm/misc/csvExport.d.ts +0 -7
- package/dist/esm/misc/csvExport.js +0 -11
- package/dist/esm/misc/helpers.d.ts +0 -14
- package/dist/esm/misc/helpers.js +0 -77
- package/dist/esm/misc/textMatch.d.ts +0 -2
- package/dist/esm/misc/textMatch.js +0 -18
- package/dist/esm/misc/throttle.d.ts +0 -1
- package/dist/esm/misc/throttle.js +0 -26
- package/dist/esm/table.d.ts +0 -8
- package/dist/esm/table.js +0 -63
- package/dist/esm/types.d.ts +0 -134
- package/dist/esm/types.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schummar-table.js","sources":["../../src/theme/useCssVariables.ts","../../src/misc/helpers.ts","../../src/components/formControlLabel.tsx","../../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"],"sourcesContent":["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 { 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","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"],"names":["control","label","_jsxs","display","alignItems","cursor","userSelect","_jsx","marginLeft","ColumnHeaderContext","StoreScope","items","Map","props","ref","useRef","columnId","useColumnContext","table","useTableContext","enabled","useState","store","useStore","draggingStart","clone","div","current","update","state","set","castDraft","delete","offsetLeft","cols","getState","columnOrder","map","id","get","otherCols","filter","col","firstOffsetleft","find","sum","targetIndex","findIndex","width","offsetWidth","length","e","mouseX","clientX","bounds","getBoundingClientRect","undefined","Math","abs","stopPropagation","setPointerCapture","pointerId","cloneNode","body","append","key","value","Object","entries","getComputedStyle","style","assign","pointerEvents","position","boxShadow","left","top","color","index","indexOf","calcTargetIndex","columns","forEach","i","offset","slice","reduce","columnStyleOverride","transition","transform","zIndex","splice","remove","clear","onPointerDown","onPointerMove","onPointerUp","children","components","IconButton","Popover","Checkbox","icons","Settings","text","useTheme","cssVariables","useCssVariables","hiddenColumns","anchorEl","setAnchorEl","toggle","column","controlledHiddenColumns","onHiddenColumnsChange","newValue","Set","has","add","currentTarget","padding","marginBottom","selectColumns","cannotHide","header","Button","Export","Clipboard","anchor","setAnchor","generate","options","activeColumns","activeItems","data","String","item","exportCell","csvExport","copy","clipboard","writeText","enableExport","download","a","document","createElement","href","encodeURIComponent","appendChild","click","removeChild","justifyItems","gap","justifyContent","exportTitle","exportCopy","exportDownload","FilterList","ArrowDropDown","isActive","filters","filterValue","filterValues","backgroundColor","target","hasPointerCapture","parent","parentElement","max","columnWidths","releasePointerCapture","getModifierState","alignSelf","content","height","background","onDoubleClick","Cell","memo","itemId","rowIndex","css","activeItemsById","throttle","debugRender","classNames","calcClassNames","renderCell","defaultClasses","cell","hasDeferredChildren","Spinner","ChevronRight","isExpanded","expanded","hasChildren","controlledExpanded","expandOnlyOne","onExpandedChange","newExpanded","ancestor","getAncestors","margin","isSelected","itemIds","keys","size","every","selection","mouseEvent","nativeEvent","lastSelectedId","selectSyncChildren","controlledSelection","onSelectionChange","range","shiftKey","b","min","newSelection","descendant","getDescendants","justifySelf","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","gridTemplateColumns","overflow","textOverflow","fontSize","opacity","onAncestorScroll","x","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","h","probeOffset","headerHeight","topOfTable","scrollTop","bottomOfTable","reverse","throttleScroll","incCounter","useMemo","c","gridColumn","TableContext","createContext","ColumnContext","useContext","Error","hidden","fullWidth","defaultWidth","stickyHeader","enableColumnSelection","join","visibility","headerFill","sticky","headerCell","flex","startIndex"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mui4Theme.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mui5Theme.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|