schummar-table 0.12.2 → 0.12.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/hooks/useTableMemo.tsx","../../src/misc/queue.ts","../../src/internalState/tableStateStorage.ts","../../src/misc/helpers.ts","../../src/internalState/calcItems.ts","../../src/internalState/calcProps.ts","../../src/internalState/cleanupState.ts","../../src/internalState/filterColumns.ts","../../src/internalState/normalizeExpanded.ts","../../src/internalState/syncSelections.ts","../../src/internalState/useTableState.ts","../../src/theme/defaultTheme/defaultClasses.ts","../../src/theme/useCssVariables.ts","../../src/components/clearFiltersButton.tsx","../../src/components/columnFooter.tsx","../../src/components/filterControl.tsx","../../src/components/resizeHandle.tsx","../../src/components/sortComponent.tsx","../../src/components/columnHeader.tsx","../../src/components/formControlLabel.tsx","../../src/components/columnSelection.tsx","../../src/misc/csvExport.ts","../../src/components/export.tsx","../../src/components/cell.tsx","../../src/components/expandControl.tsx","../../src/components/selectComponent.tsx","../../src/components/row.tsx","../../src/misc/throttle.ts","../../src/components/virtualized.tsx","../../src/components/table.tsx","../../src/theme/defaultTheme/defaultColors.ts","../../src/components/spinnner.tsx","../../src/theme/defaultTheme/badge.tsx","../../src/theme/defaultTheme/button.tsx","../../src/theme/defaultTheme/checkbox.tsx","../../src/theme/defaultTheme/iconButton.tsx","../../src/theme/defaultTheme/popover.tsx","../../src/theme/defaultTheme/textField.tsx","../../src/theme/defaultTheme/defaultComponents.ts","../../src/theme/defaultTheme/defaultIcons.tsx","../../src/theme/defaultTheme/defaultTexts.tsx","../../src/theme/defaultTheme/index.tsx","../../src/theme/tableTheme.tsx","../../src/hooks/useTheme.ts","../../src/components/autoFocusTextField.tsx","../../src/components/dateInput.tsx","../../src/components/datePicker.tsx","../../src/components/dateFilter.tsx","../../src/components/selectFilter.tsx","../../src/misc/debounce.ts","../../src/hooks/useFilter.ts","../../src/misc/textMatch.ts","../../src/components/textFilter.tsx"],"sourcesContent":["import { createContext, DependencyList, ReactNode, useContext, useMemo } from 'react';\nimport { FunctionWithDeps } from '../types';\n\nconst TableMemoContext = createContext(new Map<string, [value: any, deps: DependencyList]>());\n\nexport function TableMemoContextProvider({ children }: { children: ReactNode }) {\n return <TableMemoContext.Provider value={useMemo(() => new Map(), [])}>{children}</TableMemoContext.Provider>;\n}\n\nexport function useTableMemo() {\n const memoCache = useContext(TableMemoContext);\n\n return <Fn extends (...args: any[]) => any>(key: string, fn: FunctionWithDeps<Fn>): Fn => {\n let deps: DependencyList;\n if (Array.isArray(fn)) {\n deps = fn.slice(1);\n fn = fn[0];\n } else {\n deps = [fn.toString()];\n }\n\n let cachedValue = memoCache.get(key);\n const hit = cachedValue && cachedValue[1].length === deps.length && cachedValue[1].every((x, i) => x === deps[i]);\n if (!cachedValue || !hit) {\n cachedValue = [fn, deps];\n memoCache.set(key, cachedValue);\n }\n return cachedValue[0];\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 clear() {\n this.q = [];\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 { Store } from 'schummar-state/react';\nimport { Queue } from '../misc/queue';\nimport { InternalTableState, SerializableValue } from '../types';\n\nconst KEYS = ['sort', 'selection', 'expanded', 'hiddenColumns', 'filterValues', 'columnWidths', 'columnOrder'] as const;\n\nconst storageName = (id: string) => `schummar-table_state-v1_${id}`;\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(table: Store<InternalTableState<any>>) {\n const [isHydrated, setIsHydrated] = useState(false);\n const [q] = useState(() => new Queue());\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, include, exclude } = persist;\n const json = await storage.getItem(storageName(id));\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 return table.subscribe(\n (state) => {\n if (!state.props.persist) return;\n\n const { storage, id, 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(storageName(id), stringify(data));\n }, true);\n },\n { throttle: 1000 },\n );\n }, [isHydrated]);\n\n async function clear() {\n await q.run(async () => {\n const persist = table.getState().props.persist;\n if (!persist) {\n return;\n }\n\n const { storage } = persist;\n const keys =\n 'keys' in storage\n ? await storage.keys()\n : await Promise.all(\n Array(storage.length)\n .fill(0)\n .map((_x, i) => storage.key(i)),\n );\n\n for (const key of keys) {\n if (key !== null) {\n await storage.removeItem(key);\n }\n }\n\n q.clear();\n });\n }\n\n return [isHydrated, clear] as const;\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 Array.from(set);\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\nexport const cx = (...classNames: (string | false | undefined | null | Record<string, boolean>)[]) =>\n classNames\n .flatMap((entry) => {\n if (!entry) return [];\n if (typeof entry === 'string') return [entry];\n return Object.entries(entry)\n .filter(([, predicate]) => predicate)\n .map(([className]) => className);\n })\n .join(' ');\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.props.externalSort,\n state.sort,\n state.filters,\n state.filterValues,\n state.activeColumns,\n state.expanded,\n ] as const,\n ([items = [], id, parentId, revealFiltered, externalSort, sort, filters, filterValues, activeColumns], draft) => {\n const tableItems = items.map<TableItem<T>>((item) => ({\n id: id(item),\n parentId: parentId?.(item),\n children: [],\n value: item,\n }));\n\n let sorted;\n if (sort.length === 0 || externalSort) {\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 return column.sortBy.map((sortBy) => ({\n selector: (item: T) => sortBy(column.value(item), item),\n direction: sort.direction,\n }));\n }).filter(Boolean);\n\n sorted = orderBy(\n tableItems,\n selectors.map((x) => (item) => x.selector(item.value)),\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 || filter.external) 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.value), item.value);\n return castArray(value).some((value) => filter.test(filterValue, value));\n });\n\n if (isActive && item.parentId !== undefined) {\n if (\n revealFiltered &&\n Array.from(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 } from 'react';\nimport { useTableMemo } from '../hooks/useTableMemo';\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 cache = useTableMemo();\n\n return useMemo(() => {\n let id;\n if (props.id instanceof Function || Array.isArray(props.id)) {\n id = cache('id', props.id);\n } else {\n id = cache('id', [(item: T) => item[props.id as keyof T] as unknown as Id, props.id]);\n }\n\n let parentId;\n if (props.parentId instanceof Function || Array.isArray(props.parentId)) {\n parentId = cache('parentId', props.parentId);\n } else if (props.parentId !== undefined) {\n parentId = cache('parentId', [(item: T) => item[props.parentId as keyof T] as unknown as Id | undefined, props.parentId]);\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 defCol = props.defaultColumnProps;\n const mapColumn = <V>(\n {\n id: _id,\n header = defCol?.header ?? null,\n footer = defCol?.footer ?? null,\n value,\n renderCell = defCol?.renderCell ?? asString,\n exportCell = defCol?.exportCell ?? asString,\n sortBy = defCol?.sortBy ?? [(v) => (typeof v === 'number' || v instanceof Date ? v : String(v))],\n cannotHide = defCol?.cannotHide,\n classes = defCol?.classes,\n filter = defCol?.filter,\n width = defCol?.width,\n }: Column<T, V>,\n index: number,\n ): InternalColumn<T, V> => {\n const id = _id ?? index;\n const cacheKey = typeof id === 'string' ? `s${id}` : `n${id}`;\n\n return {\n id,\n header: header instanceof Function ? cache(`columns.${cacheKey}.header`, header) : header,\n footer: footer instanceof Function ? cache(`columns.${cacheKey}.footer`, footer) : footer,\n value: cache(`columns.${cacheKey}.value`, value),\n renderCell: cache(`columns.${cacheKey}.renderCell`, renderCell),\n exportCell,\n sortBy: sortBy.map((fn, i) => cache(`columns.${cacheKey}.sortBy.${i}`, fn)),\n cannotHide,\n classes,\n filter,\n width,\n };\n };\n\n const columns = inputColumns.map(mapColumn);\n\n const wrapCell = props.wrapCell && cache('wrapCell', props.wrapCell);\n\n const rowAction =\n props.rowAction instanceof Function || Array.isArray(props.rowAction) ? cache('rowAction', props.rowAction) : props.rowAction;\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 wrapCell,\n rowAction,\n enableSelection: props.enableSelection ?? true,\n selectSyncChildren: props.selectSyncChildren ?? true,\n stickyHeader: props.stickyHeader ?? true,\n stickyFooter: props.stickyFooter ?? true,\n enableExport,\n enableColumnSelection: props.enableColumnSelection ?? true,\n enableClearFiltersButton: props.enableClearFiltersButton ?? false,\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 setTimeout(() => {\n state.getState().props.onSortChange?.(newSort);\n });\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 setTimeout(() => {\n state.getState().props.onSelectionChange?.(newSelection);\n });\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 setTimeout(() => {\n state.getState().props.onExpandedChange?.(newExpanded);\n });\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 { getAncestors, orderBy } from '../misc/helpers';\nimport { Id, InternalTableState } from '../types';\n\nexport function normalizeExpanded<T>(table: Store<InternalTableState<T>>): void {\n useEffect(\n () =>\n table.addReaction(\n (state) => [state.props.expandOnlyOne, state.expanded, state.itemsById] as const,\n ([expandOnlyOne, , itemsById], state) => {\n let expanded = state.expanded;\n let hasChanged = false;\n\n const allAncestors = [...expanded].map((id) => {\n const item = itemsById.get(id);\n return {\n id,\n ancestors: item ? getAncestors(itemsById, item) : new Set<Id>(),\n };\n });\n\n // If only one branch may be expanded, check if there are more and close if necessary\n if (expandOnlyOne) {\n const withMostAncestors = orderBy(allAncestors, [(x) => x.ancestors.size], ['desc'])[0];\n\n if ([...expanded].some((id) => id !== withMostAncestors?.id && !withMostAncestors?.ancestors.has(id))) {\n expanded = state.expanded = withMostAncestors?.ancestors ?? new Set();\n\n state.props.onExpandedChange?.(expanded);\n return;\n }\n }\n\n for (const { ancestors } of allAncestors) {\n for (const ancestor of ancestors ?? []) {\n if (!expanded.has(ancestor)) {\n expanded.add(ancestor);\n hasChanged = true;\n }\n }\n }\n\n if (hasChanged) {\n state.props.onExpandedChange?.(new Set(expanded));\n }\n },\n { runNow: true },\n ),\n [table],\n );\n}\n","import { useEffect } from 'react';\nimport { Store } from 'schummar-state/react';\nimport { InternalTableState } from '../types';\n\nexport function syncSelections<T>(table: Store<InternalTableState<T>>): void {\n useEffect(\n () =>\n table.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 setTimeout(() => {\n table.getState().props.onSelectionChange?.(newSelection);\n });\n }\n },\n { runNow: true },\n ),\n [table],\n );\n}\n","import { castDraft } from 'immer';\nimport { useEffect, useMemo, useState } from 'react';\nimport { Store } from 'schummar-state/react';\nimport { InternalTableState, TableProps } from '../types';\nimport { calcItems } from './calcItems';\nimport { calcProps } from './calcProps';\nimport { cleanupState } from './cleanupState';\nimport { filterColumns } from './filterColumns';\nimport { normalizeExpanded } from './normalizeExpanded';\nimport { syncSelections } from './syncSelections';\n\nexport function useTableState<T>(_props: TableProps<T>): [Store<InternalTableState<T>>, () => void] {\n const [key, setKey] = useState({});\n const props = calcProps(_props);\n\n function reset() {\n setKey({});\n\n if (props.sort === undefined) {\n props.onSortChange?.(props.defaultSort ?? []);\n }\n\n if (props.expanded === undefined) {\n props.onExpandedChange?.(props.defaultExpanded ?? new Set());\n }\n\n if (props.selection === undefined) {\n props.onSelectionChange?.(props.defaultSelection ?? new Set());\n }\n\n if (props.hiddenColumns === undefined) {\n props.onHiddenColumnsChange?.(props.defaultHiddenColumns ?? new Set());\n }\n\n props.onReset?.();\n }\n\n const state = useMemo(\n () =>\n new Store<InternalTableState<T>>({\n props,\n\n key,\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 [key],\n );\n\n filterColumns(state);\n calcItems(state);\n normalizeExpanded(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 });\n }, [state, props]);\n\n return [state, reset];\n}\n","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 { useTheme } from '../hooks/useTheme';\n\nexport function useCssVariables() {\n return useTheme(({ spacing, colors }) => ({\n '--spacing': spacing,\n '--primaryMain': colors.primary.main,\n '--primaryLight': colors.primary.light,\n '--primaryContrastText': colors.primary.contrastText,\n '--secondaryMain': colors.secondary.main,\n '--secondaryLight': colors.secondary.light,\n '--secondaryContrastText': colors.secondary.contrastText,\n }));\n}\n","import React from 'react';\nimport { defaultClasses } from '../theme/defaultTheme/defaultClasses';\nimport { useTableContext, useTheme } from '..';\n\nexport default function ClearFiltersButton<T>() {\n const Button = useTheme((t) => t.components.Button);\n const textClearFilters = useTheme((t) => t.text.clearFilters);\n const table = useTableContext<T>();\n\n return (\n <div css={defaultClasses.clearFiltersButton}>\n <Button\n variant=\"outlined\"\n onClick={() => {\n table.update((state) => {\n state.activeColumns.forEach((column) => {\n state.filterValues.delete(column.id);\n });\n });\n }}\n >\n {textClearFilters}\n </Button>\n </div>\n );\n}\n","import { useTheme } from '../hooks/useTheme';\nimport { cx } from '../misc/helpers';\nimport { defaultClasses } from '../theme/defaultTheme/defaultClasses';\nimport { useColumnContext, useTableContext } from './table';\n\nexport function ColumnFooter() {\n const table = useTableContext();\n const columnId = useColumnContext();\n const stickyFooter = table.useState('props.stickyFooter');\n const columnStyleOverride = table.useState((state) => state.columnStyleOverride.get(columnId), { throttle: 16 });\n const columnClasses = table.useState((state) => state.activeColumns.find((column) => column.id === columnId)?.classes);\n const classes = useTheme((theme) => theme.classes);\n\n const content = table.useState((state) => {\n const column = state.activeColumns.find((column) => column.id === columnId);\n\n if (column?.footer instanceof Function) {\n const items = state.activeItems;\n const values = items.map((item) => column?.value(item.value));\n return column?.footer(values, items);\n }\n\n return column?.footer;\n });\n\n return (\n <div\n className={cx(classes?.footerCell, columnClasses?.footerCell)}\n css={[\n defaultClasses.footerCell,\n columnStyleOverride,\n stickyFooter && defaultClasses.stickyBottom,\n stickyFooter instanceof Object && stickyFooter,\n ]}\n >\n {content}\n </div>\n );\n}\n","import React, { createContext, useCallback, useState } from 'react';\nimport { useTheme } from '../hooks/useTheme';\nimport { useCssVariables } from '../theme/useCssVariables';\nimport { useColumnContext, useTableContext } from './table';\n\nexport const FilterControlContext = createContext((): void => void 0);\n\nexport function FilterControl<T>(): JSX.Element | null {\n const table = useTableContext<T>();\n const columnId = useColumnContext();\n const IconButton = useTheme((t) => t.components.IconButton);\n const Popover = useTheme((t) => t.components.Popover);\n const FilterList = useTheme((t) => t.icons.FilterList);\n const ArrowDropDown = useTheme((t) => t.icons.ArrowDropDown);\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 function reset() {\n table.update((state) => {\n state.filterValues.delete(columnId);\n });\n }\n\n const close = useCallback(function () {\n setAnchor(null);\n }, []);\n\n if (!filter) return null;\n\n return (\n <FilterControlContext.Provider value={close}>\n <div\n onClick={(e) => setAnchor(e.currentTarget)}\n onContextMenu={(e) => {\n reset();\n e.preventDefault();\n return false;\n }}\n >\n <IconButton\n css={[\n { color: '#b0bac9' },\n isActive && {\n color: 'var(--primaryMain) !important',\n },\n ]}\n >\n {isActive ? <FilterList /> : <ArrowDropDown />}\n </IconButton>\n </div>\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 </FilterControlContext.Provider>\n );\n}\n","import React, { HTMLProps } 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 <ResizeHandleView\n enabled={enabled}\n onPointerDown={enabled ? onPointerDown : undefined}\n onPointerMove={enabled ? onPointerMove : undefined}\n onPointerUp={enabled ? onPointerUp : undefined}\n onDoubleClick={enabled ? onDoubleClick : undefined}\n />\n );\n}\n\nexport function ResizeHandleView({ enabled, ...props }: HTMLProps<HTMLDivElement> & { enabled?: boolean }) {\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.5em',\n background: '#c9cfda',\n transition: 'transform 300ms',\n },\n }}\n {...props}\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 Badge = useTheme((t) => t.components.Badge);\n const ArrowUpward = useTheme((t) => t.icons.ArrowUpward);\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, off?: boolean) {\n const {\n props: { sort: controlledSort, onSortChange },\n } = table.getState();\n\n const newDirection = direction === 'asc' ? 'desc' : 'asc';\n const newSort = e.getModifierState('Control') || off ? table.getState().sort.filter((s) => s.columnId !== columnId) : [];\n if (!off) {\n newSort.push({\n columnId,\n direction: newDirection,\n });\n }\n\n onSortChange?.(newSort);\n\n if (!controlledSort) {\n table.update((state) => {\n state.sort = newSort;\n });\n }\n\n e.preventDefault();\n return false;\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={(e) => toggle(e)}\n onContextMenu={(e) => toggle(e, true)}\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","import { castDraft } from 'immer';\nimport React, { useEffect, useRef } from 'react';\nimport { StoreScope } from 'schummar-state/react';\nimport { Id, useColumnContext, useTableContext } from '..';\nimport { useTheme } from '../hooks/useTheme';\nimport { cx } from '../misc/helpers';\nimport { defaultClasses } from '../theme/defaultTheme/defaultClasses';\nimport { FilterControl } from './filterControl';\nimport { ResizeHandle } from './resizeHandle';\nimport { SortComponent } from './sortComponent';\n\nexport const ColumnHeaderContext = new StoreScope({\n items: new Map<Id, HTMLDivElement>(),\n});\n\nexport function ColumnHeader() {\n const ref = useRef<HTMLDivElement>(null);\n const columnId = useColumnContext();\n const table = useTableContext();\n const enabled = table.useState('props.enableColumnReorder');\n const columnStyleOverride = table.useState((state) => state.columnStyleOverride.get(columnId), { throttle: 16 });\n const stickyHeader = table.useState('props.stickyHeader');\n const classes = useTheme((theme) => theme.classes);\n\n const { header, columnClasses } = table.useState((state) => {\n const column = state.activeColumns.find((column) => column.id === columnId);\n return {\n header: column?.header,\n columnClasses: column?.classes,\n };\n });\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 ref={ref}\n className={cx(classes?.headerCell, columnClasses?.headerCell)}\n css={[\n {\n position: 'relative',\n userSelect: 'none',\n },\n defaultClasses.headerCell,\n columnStyleOverride,\n stickyHeader && defaultClasses.sticky,\n stickyHeader instanceof Object && stickyHeader,\n ]}\n onPointerDown={enabled ? onPointerDown : undefined}\n onPointerMove={enabled ? onPointerMove : undefined}\n onPointerUp={enabled ? onPointerUp : undefined}\n >\n <SortComponent>{header}</SortComponent>\n <div css={{ flex: 1 }} />\n <FilterControl />\n <ResizeHandle />\n </div>\n );\n}\n","import { ReactNode } from 'react';\n\nexport function FormControlLabel({ control, label, disabled }: { control: ReactNode; label: ReactNode; disabled?: boolean }) {\n return (\n <label\n css={[\n {\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n userSelect: 'none',\n\n '& > *': {\n cursor: 'pointer',\n },\n },\n disabled && { color: 'rgba(0, 0, 0, 0.26)' },\n ]}\n >\n {control}\n <span css={{ marginLeft: 'var(--spacing)' }}>{label}</span>\n </label>\n );\n}\n","import React, { useContext, useState } from 'react';\nimport { useTheme } from '..';\nimport { useCssVariables } from '../theme/useCssVariables';\nimport { InternalColumn } from '../types';\nimport { FormControlLabel } from './formControlLabel';\nimport { TableResetContext, useTableContext } from './table';\n\nexport function ColumnSelection<T>(): JSX.Element {\n const IconButton = useTheme((t) => t.components.IconButton);\n const Popover = useTheme((t) => t.components.Popover);\n const Checkbox = useTheme((t) => t.components.Checkbox);\n const Button = useTheme((t) => t.components.Button);\n const Settings = useTheme((t) => t.icons.Settings);\n const selectColumns = useTheme((t) => t.text.selectColumns);\n const resetAll = useTheme((t) => t.text.resetAll);\n const cssVariables = useCssVariables();\n\n const table = useTableContext<T>();\n const reset = useContext(TableResetContext);\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)' }}>{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\n <Button variant=\"outlined\" onClick={reset}>\n {resetAll}\n </Button>\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 Button = useTheme((t) => t.components.Button);\n const IconButton = useTheme((t) => t.components.IconButton);\n const Popover = useTheme((t) => t.components.Popover);\n const Export = useTheme((t) => t.icons.Export);\n const Clipboard = useTheme((t) => t.icons.Clipboard);\n const exportTitle = useTheme((t) => t.text.exportTitle);\n const exportCopy = useTheme((t) => t.text.exportCopy);\n const exportDownload = useTheme((t) => t.text.exportDownload);\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.value), item.value))),\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 css={!!anchor && { color: 'var(--primaryMain)' }} />\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)' }}>{exportTitle}</div>\n <Button startIcon={<Clipboard />} onClick={copy}>\n {exportCopy}\n </Button>\n <Button startIcon={<Export />} onClick={download}>\n {exportDownload}\n </Button>\n </div>\n </Popover>\n </>\n );\n}\n","import React, { memo, ReactNode, useLayoutEffect } from 'react';\nimport { Id, useColumnContext, useTableContext, useTheme } from '..';\nimport { cx } from '../misc/helpers';\nimport { defaultClasses } from '../theme/defaultTheme/defaultClasses';\nimport { calcClassNames } from './row';\n\nconst defaultWrapCell = (content: ReactNode) => {\n if (typeof content === 'string') {\n return (\n <span css={defaultClasses.text} title={content}>\n {content}\n </span>\n );\n }\n return content;\n};\n\nexport const Cell = memo(function Cell<T>({ itemId, rowIndex }: { itemId: Id; rowIndex: number }) {\n const table = useTableContext<T>();\n const columnId = useColumnContext();\n\n const column = table.useState((state) => {\n const col = state.activeColumns.find((column) => column.id === columnId);\n return (\n col && {\n value: col.value,\n renderCell: col.renderCell,\n }\n );\n });\n const wrapCell = table.useState((state) => state.props.wrapCell) ?? defaultWrapCell;\n const item = table.useState((state) => state.activeItemsById.get(itemId));\n const columnStyleOverride = table.useState((state) => state.columnStyleOverride.get(columnId), { throttle: 16 });\n\n useLayoutEffect(() => table.getState().props.debugRender?.('render cell', itemId, columnId));\n const className = useTheme((t) => cx(...calcClassNames(t.classes, item, rowIndex)));\n\n if (!column || !item) return null;\n\n const content = column.renderCell(column.value(item.value), item.value);\n\n return (\n <div className={className} css={[defaultClasses.cell, columnStyleOverride]}>\n {wrapCell(content, column.value(item.value), item.value, rowIndex)}\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 IconButton = useTheme((t) => t.components.IconButton);\n const Spinner = useTheme((t) => t.components.Spinner);\n const ChevronRight = useTheme((t) => t.icons.ChevronRight);\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\n if (expandOnlyOne) {\n newExpanded.clear();\n\n const item = activeItemsById.get(itemId);\n for (const ancestor of item ? getAncestors(activeItemsById, item) : []) {\n newExpanded.add(ancestor);\n }\n }\n\n if (isExpanded) {\n newExpanded.delete(itemId);\n } else {\n newExpanded.add(itemId);\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 Checkbox = useTheme((t) => t.components.Checkbox);\n\n const isSelected = table.useState((state) => {\n const itemIds = itemId ? [itemId] : Array.from(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: '#c9cfda',\n }}\n checked={isSelected}\n onChange={toggle}\n />\n );\n}\n","import React, { memo, useEffect, useLayoutEffect, useRef } from 'react';\nimport { useTheme } from '../hooks/useTheme';\nimport { cx, getAncestors } from '../misc/helpers';\nimport { defaultClasses } from '../theme/defaultTheme/defaultClasses';\nimport { Id, MemoizedTableTheme } from '../types';\nimport { Cell } from './cell';\nimport { ExpandControl } from './expandControl';\nimport { SelectComponent } from './selectComponent';\nimport { ColumnContext, useTableContext } from './table';\n\nexport function calcClassNames<T>(classes: MemoizedTableTheme<any>['classes'] | undefined, item: T, index: number) {\n return [\n classes?.cell instanceof Function ? classes.cell(item, index) : classes?.cell,\n index % 2 === 0 && classes?.evenCell,\n index % 2 === 1 && classes?.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 classes = useTheme((t) => t.classes);\n\n const { className, indent, hasChildren, hasDeferredChildren, columnIds, enableSelection, rowAction } = table.useState((state) => {\n const item = state.activeItemsById.get(itemId);\n\n return {\n className: cx(...calcClassNames(classes, item, rowIndex)),\n indent: item ? getAncestors(state.activeItemsById, item).size : 0,\n hasChildren: !!item?.children.length,\n hasDeferredChildren: item && state.props.hasDeferredChildren?.(item.value),\n columnIds: state.activeColumns.map((column) => column.id),\n enableSelection: state.props.enableSelection,\n rowAction:\n state.props.rowAction instanceof Function ? (item ? state.props.rowAction(item.value, rowIndex) : 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 useLayoutEffect(() => table.getState().props.debugRender?.('render row', itemId));\n\n return (\n <>\n <div className={className} css={[defaultClasses.cellFill]} ref={divRef} />\n\n <div className={className} css={[defaultClasses.cell, defaultClasses.firstCell]}>\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 className={className} css={[defaultClasses.cellFill]} />\n </>\n );\n});\n","export function throttle<Args extends any[]>(\n fn: (...args: Args) => void,\n ms: number,\n): { (...args: Args): void; flush(): void; cancel(): void } {\n let last = 0;\n let lastArgs: Args | undefined;\n let timeout: ReturnType<typeof setTimeout> | 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 cancel() {\n if (timeout) {\n clearTimeout(timeout);\n }\n },\n },\n );\n}\n","import React, { HTMLProps, ReactNode, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { throttle } from '../misc/throttle';\nimport { Id } from '../types';\nimport { useTableContext } from './table';\n\nconst findScrollRoot = (x: HTMLElement): HTMLElement => {\n const parent = x.parentElement;\n if (!parent) return document.documentElement;\n if (parent.scrollHeight > parent.clientHeight && getComputedStyle(parent).overflowY !== 'visible') 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 footer,\n children,\n ...props\n}: {\n header: ReactNode;\n footer: ReactNode;\n children: (itemIds: Id[], startIndex: number) => ReactNode;\n} & 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(\n (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 = 100,\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 { throttle: 16 },\n );\n\n const throttleScroll = (typeof virtual === 'boolean' ? undefined : virtual)?.throttleScroll ?? 16;\n const incCounter = useMemo(() => throttle(() => setCounter((c) => c + 1), throttleScroll), [throttleScroll]);\n\n useEffect(() => {\n if (!virtual || !probeRef.current) return;\n\n window.addEventListener('scroll', incCounter, true);\n window.addEventListener('resize', incCounter, true);\n return () => {\n window.removeEventListener('scroll', incCounter, true);\n window.removeEventListener('resize', incCounter, true);\n };\n }, [probeRef.current, incCounter]);\n\n useEffect(() => incCounter.cancel, [incCounter]);\n\n useLayoutEffect(() => 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\n {footer}\n </div>\n );\n}\n","import React, { createContext, memo, useContext, useEffect, useLayoutEffect, useState } from 'react';\nimport { Store } from 'schummar-state/react';\nimport { useTheme } from '..';\nimport { TableMemoContextProvider } from '../hooks/useTableMemo';\nimport { useTableStateStorage } from '../internalState/tableStateStorage';\nimport { useTableState } from '../internalState/useTableState';\nimport { defaultClasses } from '../theme/defaultTheme/defaultClasses';\nimport { useCssVariables } from '../theme/useCssVariables';\nimport { Id, InternalTableState, TableProps } from '../types';\nimport ClearFiltersButton from './clearFiltersButton';\nimport { ColumnFooter } from './columnFooter';\nimport { ColumnHeader, ColumnHeaderContext } from './columnHeader';\nimport { ColumnSelection } from './columnSelection';\nimport { Export } from './export';\nimport { ResizeHandleView } from './resizeHandle';\nimport { Row } from './row';\nimport { SelectComponent } from './selectComponent';\nimport { Virtualized } from './virtualized';\n\nexport const TableContext = createContext<Store<InternalTableState<any>> | null>(null);\nexport const TableResetContext = createContext<() => void>(() => undefined);\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, resetState] = useTableState(props);\n const [isHydrated, clearStorage] = useTableStateStorage(table);\n\n async function reset() {\n await clearStorage();\n resetState();\n }\n\n useLayoutEffect(() => table.getState().props.debugRender?.('render table'));\n\n return (\n <TableContext.Provider value={table}>\n <TableResetContext.Provider value={reset}>\n <TableMemoContextProvider>\n <TableLoadingState isHydrated={isHydrated} />\n </TableMemoContextProvider>\n </TableResetContext.Provider>\n </TableContext.Provider>\n );\n}\n\nfunction TableLoadingState({ isHydrated }: { isHydrated: boolean }) {\n const loadingText = useTheme((t) => t.text.loading);\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>{loadingText}</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 classes: column.classes,\n })),\n );\n const hasActiveFilters = table.useState((state) => {\n return state.activeColumns.some((column) => {\n const filter = state.filters.get(column.id);\n const filterValue = state.filterValues.get(column.id);\n return filter !== undefined && filterValue !== undefined && filter.isActive(filterValue);\n });\n });\n const columnWidths = table.useState('columnWidths', { throttle: 16 });\n const hasFooter = table.useState((state) => state.activeColumns.some((column) => column.footer));\n\n const classes = useTheme((theme) => theme.classes);\n const stickyHeader = table.useState('props.stickyHeader');\n const stickyFooter = table.useState('props.stickyFooter');\n\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 const enableClearFiltersButton = table.useState('props.enableClearFiltersButton');\n\n useLayoutEffect(() => table.getState().props.debugRender?.('render table inner'));\n\n return (\n <Virtualized\n className={classes?.table}\n css={[\n cssVariables,\n defaultClasses.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 ?? 'max-content'),\n fullWidth === 'left' || fullWidth === true ? 'auto' : '0',\n ].join(' '),\n },\n hidden && { visibility: 'hidden' },\n ]}\n header={\n <>\n <div\n className={classes?.headerCell}\n css={[defaultClasses.headerFill, stickyHeader && defaultClasses.sticky, stickyHeader instanceof Object && stickyHeader]}\n />\n\n <div\n className={classes?.headerCell}\n css={[defaultClasses.headerCell, stickyHeader && defaultClasses.sticky, stickyHeader instanceof Object && stickyHeader]}\n >\n {enableSelection && <SelectComponent />}\n\n {enableColumnSelection && <ColumnSelection />}\n\n {enableExport && <Export />}\n\n <div css={{ flex: 1 }} />\n <ResizeHandleView />\n </div>\n\n <ColumnHeaderContext.Provider>\n {activeColumns.map((column) => (\n <ColumnContext.Provider key={column.id} value={column.id}>\n <ColumnHeader />\n </ColumnContext.Provider>\n ))}\n </ColumnHeaderContext.Provider>\n\n <div\n className={classes?.headerCell}\n css={[defaultClasses.headerFill, stickyHeader && defaultClasses.sticky, stickyHeader instanceof Object && stickyHeader]}\n />\n </>\n }\n footer={\n <>\n {enableClearFiltersButton && hasActiveFilters && <ClearFiltersButton />}\n {hasFooter && (\n <>\n <div\n className={classes?.footerCell}\n css={[\n defaultClasses.footerFill,\n stickyFooter && defaultClasses.stickyBottom,\n stickyFooter instanceof Object && stickyFooter,\n ]}\n />\n <div\n className={classes?.footerCell}\n css={[\n defaultClasses.footerFill,\n stickyFooter && defaultClasses.stickyBottom,\n stickyFooter instanceof Object && stickyFooter,\n ]}\n />\n\n {activeColumns.map((column) => (\n <ColumnContext.Provider key={column.id} value={column.id}>\n <ColumnFooter />\n </ColumnContext.Provider>\n ))}\n\n <div\n className={classes?.footerCell}\n css={[\n defaultClasses.footerFill,\n stickyFooter && defaultClasses.stickyBottom,\n stickyFooter instanceof Object && stickyFooter,\n ]}\n />\n </>\n )}\n </>\n }\n >\n {(itemIds, startIndex) => itemIds.map((itemId, index) => <Row key={itemId} itemId={itemId} rowIndex={startIndex + index} />)}\n </Virtualized>\n );\n});\n","import { TableTheme } from '../../types';\n\nexport const defaultColors: TableTheme['colors'] = {\n primary: { main: '#1976d2', light: '#42a5f5', contrastText: '#fff' },\n secondary: { main: '#9c27b0', light: '#ba68c8', contrastText: '#fff' },\n};\n","import { css } from '@emotion/react';\n\nexport function Spinner({ className }: { className?: string }) {\n return (\n <div\n className={className}\n css={css`\n display: inline-block;\n position: relative;\n width: 1em;\n height: 1em;\n\n div {\n box-sizing: border-box;\n display: block;\n position: absolute;\n width: 0.8em;\n height: 0.8em;\n margin: 0.1em;\n border: 0.1em solid #fff;\n border-radius: 50%;\n animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-color: currentColor transparent transparent transparent;\n }\n div:nth-of-type(1) {\n animation-delay: -0.45s;\n }\n div:nth-of-type(2) {\n animation-delay: -0.3s;\n }\n div:nth-of-type(3) {\n animation-delay: -0.15s;\n }\n @keyframes lds-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n `}\n >\n <div />\n <div />\n <div />\n </div>\n );\n}\n","import { TableTheme } from '../../types';\n\nexport const Badge: TableTheme['components']['Badge'] = ({ badgeContent, children }) => {\n if (!open) return null;\n\n return (\n <span\n css={{\n display: 'inline-flex',\n position: 'relative',\n flexShrink: 0,\n verticalAlign: 'middle',\n }}\n >\n {children}\n\n <span\n css={[\n {\n top: 0,\n right: 0,\n transform: 'scale(1) translate(50%, -50%)',\n transformOrigin: '100% 0%',\n height: 20,\n display: 'flex',\n padding: '0 6px',\n zIndex: 1,\n position: 'absolute',\n flexWrap: 'wrap',\n minWidth: 20,\n transition: 'transform 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms',\n alignItems: 'center',\n lineHeight: 1,\n alignContent: 'center',\n borderRadius: 10,\n justifyContent: 'center',\n fontSize: '0.8em',\n },\n !badgeContent && {\n transform: 'scale(0) translate(50%, -50%)',\n transition: 'transform 195ms cubic-bezier(0.4, 0, 0.2, 1) 0ms',\n },\n ]}\n >\n {badgeContent}\n </span>\n </span>\n );\n};\n","import { TableTheme } from '../../types';\nimport { darkGray, lightGray } from './defaultClasses';\n\nexport const Button: TableTheme['components']['Button'] = ({ startIcon, children, variant = 'text', ...props }) => {\n return (\n <button\n css={[\n {\n padding: `var(--spacing) calc(var(--spacing) * 2)`,\n display: 'inline-flex',\n alignItems: 'center',\n transition: 'background-color 150ms',\n border: 'none',\n cursor: 'pointer',\n background: 'transparent',\n borderRadius: 4,\n\n '&:active:not(:disabled)': {\n transform: 'scale3d(0.95, 0.95, 1)',\n },\n },\n variant === 'text' && {\n '&:hover': {\n background: 'rgba(0, 0, 0, 0.1)',\n },\n },\n variant === 'outlined' && {\n border: `1px solid ${darkGray}`,\n\n '&:disabled': {\n borderColor: lightGray,\n },\n },\n variant === 'contained' && {\n color: 'var(--primaryContrastText)',\n backgroundColor: 'var(--primaryMain)',\n boxShadow: '0px 3px 1px -2px rgb(0 0 0 / 20%), 0px 2px 2px 0px rgb(0 0 0 / 14%), 0px 1px 5px 0px rgb(0 0 0 / 12%)',\n\n '&:hover': {\n filter: 'brightness(0.9)',\n },\n\n '&:disabled': {\n filter: 'grayscale()',\n opacity: 0.5,\n },\n },\n ]}\n {...props}\n >\n {startIcon && <span css={{ marginRight: `calc(var(--spacing) * 2)` }}>{startIcon}</span>}\n <span>{children}</span>\n </button>\n );\n};\n","import { TableTheme } from '../../types';\n\nexport const Checkbox: TableTheme['components']['Checkbox'] = ({ className, ...props }) => {\n return (\n <label\n css={[\n {\n padding: 'calc(var(--spacing) * 1.8)',\n display: 'flex',\n color: 'currentcolor',\n userSelect: 'none',\n\n '& input': {\n appearance: 'none',\n margin: 0,\n },\n },\n props.disabled && { color: 'rgba(0, 0, 0, 0.26)' },\n ]}\n className={className}\n >\n <input type=\"checkbox\" {...props} />\n\n {props.checked ? (\n <svg\n css={{ fontSize: '1.25rem', width: '1em', height: '1em', fill: 'var(--primaryMain)' }}\n focusable=\"false\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path d=\"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"></path>\n </svg>\n ) : (\n <svg\n css={{ fontSize: '1.25rem', width: '1em', height: '1em', fill: 'currentColor' }}\n focusable=\"false\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path d=\"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"></path>\n </svg>\n )}\n </label>\n );\n};\n","import { TableTheme } from '../../types';\n\nexport const IconButton: TableTheme['components']['IconButton'] = (props) => {\n return (\n <button\n css={{\n padding: 'var(--spacing)',\n borderRadius: '50%',\n display: 'inline-flex',\n justifyContent: 'center',\n alignItems: 'center',\n transition: 'background-color 150ms',\n border: 'none',\n cursor: 'pointer',\n color: 'inherit',\n background: 'transparent',\n\n '&:hover': {\n backgroundColor: 'rgba(0, 0, 0, 0.04)',\n },\n\n '&:active': {\n transformColor: 'scale3d(0.95, 0.95, 1)',\n },\n }}\n {...props}\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 { useState } from 'react';\nimport { TableTheme } from '../../types';\nimport { darkGray } from './defaultClasses';\n\nexport const TextField: TableTheme['components']['TextField'] = ({ endIcon, className, inputRef, ...props }) => {\n const [focus, setFocus] = useState(false);\n\n return (\n <div className={className} css={{ display: 'flex' }}>\n <span\n css={[\n {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n border: `1px solid ${darkGray}`,\n borderRadius: 4,\n },\n focus && { border: '2px solid var(--primaryMain)', margin: -1 },\n ]}\n >\n <input\n ref={inputRef}\n {...props}\n value={props.value ?? ''}\n onFocus={() => setFocus(true)}\n onBlur={() => setFocus(false)}\n css={{\n flex: 1,\n border: 'none',\n outline: 'none',\n borderRadius: 4,\n padding: 'calc(var(--spacing) * 2)',\n paddingRight: 0,\n transition: 'outline 500ms',\n }}\n />\n\n {endIcon}\n </span>\n </div>\n );\n};\n","import { Spinner } from '../../components/spinnner';\nimport { TableTheme } from '../../types';\nimport { Badge } from './badge';\nimport { Button } from './button';\nimport { Checkbox } from './checkbox';\nimport { IconButton } from './iconButton';\nimport { Popover } from './popover';\nimport { TextField } from './textField';\n\nexport const defaultComponents: TableTheme['components'] = {\n IconButton,\n Checkbox,\n Popover,\n Button,\n Badge,\n TextField,\n Spinner,\n};\n","import { ClassNames, css } from '@emotion/react';\nimport { cloneElement, HTMLProps } from 'react';\nimport { TableTheme } from '../../types';\n\nconst IconDefaultStyle = css({\n width: '1.5em',\n height: '1.5em',\n color: 'inherit',\n});\n\nfunction Icon(svg: JSX.Element) {\n return (props: HTMLProps<Element>) => (\n <ClassNames>\n {({ css }) =>\n cloneElement(svg, {\n ...props,\n className: css(IconDefaultStyle, props.className),\n })\n }\n </ClassNames>\n );\n}\n\nconst Settings = Icon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M3 17v2h6v-2H3zM3 5v2h10V5H3zm10 16v-2h8v-2h-8v-2h-2v6h2zM7 9v2H3v2h4v2h2V9H7zm14 4v-2H11v2h10zm-6-4h2V7h4V5h-4V3h-2v6z\" />\n </svg>,\n);\n\nconst Export = Icon(\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n enableBackground=\"new 0 0 24 24\"\n height=\"24px\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n fill=\"currentColor\"\n >\n <g>\n <rect fill=\"none\" height=\"24\" width=\"24\" />\n </g>\n <g>\n <path d=\"M18,15v3H6v-3H4v3c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2v-3H18z M17,11l-1.41-1.41L13,12.17V4h-2v8.17L8.41,9.59L7,11l5,5 L17,11z\" />\n </g>\n </svg>,\n);\n\nconst Clipboard = Icon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M19 2h-4.18C14.4.84 13.3 0 12 0S9.6.84 9.18 2H5c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm7 18H5V4h2v3h10V4h2v16z\" />\n </svg>,\n);\n\nconst ChevronRight = Icon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6-6-6z\" />\n </svg>,\n);\n\nconst Search = Icon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\" />\n </svg>,\n);\n\nconst Clear = Icon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\" />\n </svg>,\n);\n\nconst ArrowDropDown = Icon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M7 10l5 5 5-5H7z\" />\n </svg>,\n);\n\nconst FilterList = Icon(\n <svg viewBox=\"0 0 24 24\">\n <path\n fill=\"currentColor\"\n d=\"M14,12V19.88C14.04,20.18 13.94,20.5 13.71,20.71C13.32,21.1 12.69,21.1 12.3,20.71L10.29,18.7C10.06,18.47 9.96,18.16 10,17.87V12H9.97L4.21,4.62C3.87,4.19 3.95,3.56 4.38,3.22C4.57,3.08 4.78,3 5,3V3H19V3C19.22,3 19.43,3.08 19.62,3.22C20.05,3.56 20.13,4.19 19.79,4.62L14.03,12H14Z\"\n />\n </svg>,\n);\n\nconst ArrowUpward = Icon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\" />\n </svg>,\n);\n\nexport const defaultIcons: TableTheme['icons'] = {\n Settings,\n Export,\n Clipboard,\n ChevronRight,\n Search,\n Clear,\n ArrowDropDown,\n FilterList,\n ArrowUpward,\n};\n","import { TableTheme } from '../../types';\n\nexport const defaultTexts: TableTheme['text'] = {\n selectColumns: 'Select visible columns',\n noResults: 'No results',\n exportTitle: 'Export',\n exportCopy: 'To clipboard',\n exportDownload: 'Download',\n today: 'Today',\n thisWeek: 'This week',\n clearFilters: 'Clear all filters',\n reset: 'Reset',\n loading: 'Loading',\n deselectAll: 'Deselect all',\n resetAll: 'Reset table state',\n};\n","import { TableTheme } from '../../types';\nimport { defaultColors } from './defaultColors';\nimport { defaultComponents } from './defaultComponents';\nimport { defaultIcons } from './defaultIcons';\nimport { defaultTexts } from './defaultTexts';\n\nexport const defaultTableTheme: TableTheme = {\n text: defaultTexts,\n components: defaultComponents,\n icons: defaultIcons,\n colors: defaultColors,\n spacing: '5px',\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","import { useContext } from 'react';\nimport { Store } from 'schummar-state/react';\nimport { ColumnContext, TableContext } from '../components/table';\nimport { defaultTableTheme } from '../theme/defaultTheme';\nimport { globalTableTheme, mergeThemes, TableThemeContext } from '../theme/tableTheme';\nimport { MemoizedTableTheme, TableTheme } from '../types';\nimport { useTableMemo } from './useTableMemo';\n\nconst emptyStore = new Store(undefined);\n\nexport function useTheme<T, S>(selector: (theme: MemoizedTableTheme<T>) => S): S {\n const contextTableTheme = useContext(TableThemeContext);\n const table = useContext(TableContext);\n const columnId = useContext(ColumnContext);\n const memo = useTableMemo();\n\n const process = (t: TableTheme<T>): MemoizedTableTheme<T> => {\n const cell = t.classes?.cell;\n\n return {\n ...t,\n classes: {\n ...t.classes,\n cell: cell instanceof Function || Array.isArray(cell) ? memo('theme.classes.cell', cell) : cell,\n },\n text: {\n ...t.text,\n },\n };\n };\n\n const theme =\n table?.useState((state) => {\n const localTheme = {\n text: state.props.text,\n classes: state.props.classes,\n components: state.props.components,\n icons: state.props.icons,\n colors: state.props.colors,\n spacing: state.props.spacing,\n };\n\n const column = state.activeColumns.find((column) => column.id === columnId);\n const columnsTheme = {\n classes: column?.classes,\n };\n\n const theme = mergeThemes(defaultTableTheme, globalTableTheme, contextTableTheme, localTheme, columnsTheme) as TableTheme<T>;\n\n return selector(process(theme));\n }) ??\n emptyStore.useState() ??\n selector(process(mergeThemes(defaultTableTheme, globalTableTheme, contextTableTheme) as TableTheme<T>));\n\n return theme;\n}\n","import { ComponentType, useContext, useLayoutEffect, useRef } from 'react';\nimport { useTheme } from '../hooks/useTheme';\nimport { PopoverContext } from '../theme/defaultTheme/popover';\nimport { TableTheme } from '../types';\n\ntype Props = TableTheme['components']['TextField'] extends ComponentType<infer T> ? T : never;\n\nexport function AutoFocusTextField(props: Omit<Props, 'inputRef'>) {\n const TextField = useTheme((t) => t.components.TextField);\n\n const ref = useRef<HTMLInputElement>(null);\n const { visible } = useContext(PopoverContext);\n\n useLayoutEffect(() => {\n if (visible && ref.current) {\n ref.current.focus();\n }\n }, [visible]);\n\n return <TextField {...props} inputRef={ref} />;\n}\n","import { Fragment, useMemo, useState } from 'react';\n\nconst className = 'schummar-table-date-input';\n\nconst defaultDate = new Date(1970, 0, 1);\n\nconst isIncludedType = (type: Intl.DateTimeFormatPartTypes): type is 'day' | 'month' | 'year' =>\n type === 'day' || type === 'month' || type === 'year';\n\nconst defaultLengths = {\n day: 2,\n month: 2,\n year: 4,\n};\n\nconst maxLengths = {\n day: 2,\n month: 2,\n year: Infinity,\n};\n\nconst length = (type: 'day' | 'month' | 'year', value: string) => Math.max(value.length, defaultLengths[type]);\n\nconst tabNext = (e: Element) => {\n const all = Array.from(document.querySelectorAll(`.${className}`));\n const index = all.indexOf(e);\n const next = all[(index + 1) % all.length];\n\n if (next instanceof HTMLElement) {\n next.focus();\n }\n};\n\nexport function DateInput({ value, onChange, locale }: { value: Date | null; onChange: (date: Date | null) => void; locale?: string }) {\n const [override, setOverride] = useState<{ type: string; value: string }>();\n\n const commit = () => {\n if (!override) {\n return;\n }\n\n setOverride(undefined);\n\n if (!override.value) {\n onChange(null);\n return;\n }\n\n const newValue = value ? new Date(value) : new Date();\n if (override.type === 'day') {\n newValue.setDate(Number(override.value));\n } else if (override.type === 'month') {\n newValue.setMonth(Number(override.value) - 1);\n } else if (override.type === 'year') {\n newValue.setFullYear(Number(override.value));\n }\n\n onChange(newValue);\n };\n\n const format = useMemo(\n () =>\n new Intl.DateTimeFormat(locale, {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n }),\n [locale],\n );\n const parts = format.formatToParts(value ?? defaultDate);\n const isEmpty = !value;\n\n return (\n <div\n css={{\n display: 'flex',\n alignItems: 'baseline',\n }}\n >\n {parts.map(({ type, value }, index) => (\n <Fragment key={index}>\n {isIncludedType(type) ? (\n <input\n className={className}\n css={{\n width: `${length(type, value)}ch`,\n boxSizing: 'content-box',\n overflow: 'visible',\n border: 'none',\n borderBottom: '2px solid transparent',\n outline: 'none',\n fontSize: 'inherit',\n\n '&:focus': {\n borderBottom: '2px solid var(--primaryMain)',\n },\n }}\n placeholder={''.padEnd(length(type, value), '0')}\n value={override?.type === type ? override.value : !isEmpty ? value : ''}\n onChange={(e) => {\n setOverride({ type, value: e.target.value });\n if (e.target.value.length >= maxLengths[type]) {\n setTimeout(() => tabNext(e.target));\n }\n }}\n onFocus={(e) => e.target.select()}\n onBlur={commit}\n />\n ) : type === 'literal' ? (\n <span>{value}</span>\n ) : null}\n </Fragment>\n ))}\n </div>\n );\n}\n","import { useDayzed } from 'dayzed';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTheme } from '..';\nimport { gray } from '../theme/defaultTheme/defaultClasses';\nimport { useCssVariables } from '../theme/useCssVariables';\nimport { DateInput } from './dateInput';\n\nexport type DateRange = { min: Date; max: Date };\n\nexport type DatePickerProps = {\n /** Currently selected day or range of days. */\n value: Date | DateRange | null;\n /** Callback for when the day (range) changes. */\n onChange: (value: Date | DateRange | null) => void;\n /** If enabled, ranges can be selected. */\n rangeSelect?: boolean;\n /** Which locale to use to render the calendar. */\n locale?: string;\n /** Which day of the week should be in the first column. */\n firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n};\n\nconst weekDays = [0, 1, 2, 3, 4, 5, 6] as const;\n\n/** Rounds a date down to the start of the day. */\nexport const startOfDay = (d: Date) => new Date(d.getFullYear(), d.getMonth(), d.getDate());\n\n/** Rounds a date up to the end of the day. */\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 const thisWeek = (firstDayOfWeek = 0): DateRange => {\n const now = new Date();\n const min = new Date(now);\n\n let diff = min.getDay() - firstDayOfWeek;\n if (diff < 0) {\n diff += 7;\n }\n min.setDate(min.getDate() - diff);\n\n const max = new Date(min);\n max.setDate(max.getDate() + 6);\n\n return { min: startOfDay(min), max: endOfDay(max) };\n};\n\n/** Returns whether two dates and/or date ranges intersect. Intersection is considered per day. */\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 Button = useTheme((t) => t.components.Button);\n const IconButton = useTheme((t) => t.components.IconButton);\n const ChevronRight = useTheme((t) => t.icons.ChevronRight);\n const textToday = useTheme((t) => t.text.today);\n const textThisWeek = useTheme((t) => t.text.thisWeek);\n const textReset = useTheme((t) => t.text.reset);\n const cssVariables = useCssVariables();\n\n const [baseDate] = useState(new Date());\n const [dateInView, setDateInView] = useState<Date>(baseDate);\n const [dirty, setDirty] = useState<Partial<DateRange>>();\n const [hovered, setHovered] = useState<Date>();\n\n const min = dirty ? dirty.min : value instanceof Date ? value : value?.min;\n const max = dirty ? dirty.max : 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 useEffect(() => {\n if (!rangeSelect) {\n setDirty(undefined);\n }\n }, [rangeSelect]);\n\n function set(min?: Date, max?: Date, edit?: 'min' | 'max') {\n if (!rangeSelect) {\n onChange(min ?? null);\n return;\n }\n\n if (min && max && min > max) {\n if (edit === 'min') {\n max = min;\n } else if (edit === 'max') {\n min = max;\n } else {\n [min, max] = [max, min];\n }\n }\n\n if (!min === !max) {\n setDirty(undefined);\n onChange(min && max ? { min, max } : null);\n } else {\n setDirty({ min, max });\n }\n }\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 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 return (\n <div css={cssVariables}>\n <div css={{ display: 'grid', gridAutoFlow: 'column', justifyContent: 'center', alignItems: 'baseline', gap: 'var(--spacing)' }}>\n <DateInput value={min ?? null} onChange={(date) => set(date ?? undefined, max, 'min')} locale={locale} />\n\n {rangeSelect && (\n <>\n {' - '}\n <DateInput value={max ?? null} onChange={(date) => set(min, date ?? undefined, 'max')} locale={locale} />\n </>\n )}\n </div>\n\n {calendars.map(({ month, year, weeks }) => (\n <div key={`${month}${year}`} css={{ display: 'grid' }}>\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 {formatMonth(month)} {formatYear(year)}\n </div>\n\n <IconButton {...getForwardProps({ calendars })}>\n <ChevronRight />\n </IconButton>\n </div>\n\n <div\n css={{\n justifySelf: 'center',\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 (dirty) {\n if (min) set(min, date);\n else set(date, max);\n } else {\n set(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\n <div css={{ marginTop: 'var(--spacing)', display: 'grid', gridAutoFlow: 'column', justifyContent: 'center' }}>\n <Button\n variant=\"text\"\n onClick={() => {\n setDirty(undefined);\n onChange(today());\n }}\n >\n {textToday}\n </Button>\n\n <Button\n variant=\"text\"\n onClick={() => {\n setDirty(undefined);\n onChange(thisWeek(firstDayOfWeek));\n }}\n >\n {textThisWeek}\n </Button>\n\n <Button\n variant=\"text\"\n onClick={() => {\n setDirty(undefined);\n onChange(null);\n }}\n >\n {textReset}\n </Button>\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport { useFilter } from '..';\nimport { CommonFilterProps } from '../types';\nimport { dateIntersect, DatePicker, DatePickerProps, DateRange } 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 /** Which locale to use to render the calendar. */\n locale?: string;\n /** Which day of the week should be in the first column. */\n firstDayOfWeek?: DatePickerProps['firstDayOfWeek'];\n /** If enabled, only single days can be selected. Ranges otherwise. */\n singleSelect?: boolean;\n} & CommonFilterProps<T, V, Date | DateRange | null, Date | DateRange | null>): JSX.Element {\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 return (\n <div\n css={{\n padding: 'calc(var(--spacing) * 2)',\n display: 'grid',\n }}\n >\n <DatePicker rangeSelect={!singleSelect} value={value} onChange={onChange} locale={locale} firstDayOfWeek={firstDayOfWeek} />\n </div>\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 { AutoFocusTextField } from './autoFocusTextField';\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 /** Which options are provided to select. By default all unique item values are used. */\n options?: F[];\n /** String representation of a value. Used to filter options via the text field. */\n stringValue?: (value: F) => string;\n /** Render values. By default a string representation of the value is used. */\n render?: (value: F) => ReactNode;\n /** If enabled, only one option can be selected at a time. */\n singleSelect?: boolean;\n} & CommonFilterProps<T, V, F, Set<F>>): JSX.Element {\n const IconButton = useTheme((t) => t.components.IconButton);\n const Checkbox = useTheme((t) => t.components.Checkbox);\n const Search = useTheme((t) => t.icons.Search);\n const Clear = useTheme((t) => t.icons.Clear);\n const deselectAll = useTheme((t) => t.text.deselectAll);\n const noResults = useTheme((t) => t.text.noResults);\n\n const table = useTableContext<T>();\n const columnId = useColumnContext();\n\n const {\n value = new Set<F>(),\n onChange,\n filterBy,\n } = 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 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 return uniq(flatMap(state.items, (item) => castArray(filterBy(column.value(item.value), item.value))));\n });\n\n const [query, setQuery] = useState('');\n const filtered = options.filter((option) => !query || stringValue(option).toLowerCase().includes(query.toLowerCase()));\n\n const Button = useTheme((t) => t.components.Button);\n\n return (\n <div\n css={{\n padding: 'calc(var(--spacing) * 2)',\n display: 'grid',\n gap: 'var(--spacing)',\n }}\n >\n <AutoFocusTextField\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 <Button\n disabled={!(value.size > 0)}\n onClick={() => onChange(new Set())}\n variant=\"outlined\"\n css={{ justifyContent: 'center', width: '100%', marginBottom: 'var(--spacing)' }}\n >\n {deselectAll}\n </Button>\n\n <div css={{ maxHeight: '20em', overflowY: 'auto' }}>\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 </div>\n\n {filtered.length === 0 && <span css={{ textAlign: 'center' }}>{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: ReturnType<typeof setTimeout> | 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 { useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useColumnContext, useTableContext } from '..';\nimport { FilterControlContext } from '../components/filterControl';\nimport { debounce } from '../misc/debounce';\nimport { FilterImplementation, SerializableValue } from '../types';\nimport { useTableMemo } from './useTableMemo';\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 const cache = useTableMemo();\n const filterBy = impl.filterBy && cache('', impl.filterBy);\n\n // On mount and reset: Fire onChange\n useEffect(() => {\n if (impl.value === undefined) {\n impl.onChange?.(impl.defaultValue);\n }\n }, [table]);\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 }, [table]);\n\n useEffect(() => {\n table.update((state) => {\n state.filters.set(columnId, castDraft({ ...impl, filterBy }));\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]);\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 setDirtyValue(undefined);\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 close: useContext(FilterControlContext),\n filterBy: filterBy ?? ((x) => x as unknown as F | F[]),\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';\nimport { AutoFocusTextField } from './autoFocusTextField';\n\nexport function TextFilter<T, V>({\n compare = textMatch,\n filterBy = asStringOrArray,\n ...props\n}: {\n /** Custom comparison function. Should return true if an item value matches the current filter value.\n * By default a fuzzy text comparison is used.\n */\n compare?: (itemValue: string, filterValue: string) => boolean;\n} & CommonFilterProps<T, V, string, string>): JSX.Element {\n const IconButton = useTheme((t) => t.components.IconButton);\n const Search = useTheme((t) => t.icons.Search);\n const Clear = useTheme((t) => t.icons.Clear);\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 }}\n >\n <AutoFocusTextField\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":["TableMemoContext","createContext","Map","TableMemoContextProvider","children","_jsx","useMemo","useTableMemo","memoCache","useContext","key","fn","deps","Array","isArray","slice","toString","cachedValue","get","hit","length","every","x","i","set","Queue","q","isRunning","run","job","replace","Promise","resolve","reject","push","start","clear","next","shift","result","e","KEYS","storageName","id","stringify","value","prepare","Date","__date","toJSON","Set","__set","from","map","__map","entries","entry","Object","fromEntries","k","v","JSON","parse","_key","useTableStateStorage","table","isHydrated","setIsHydrated","useState","useEffect","persist","getState","props","isCanceled","storage","include","exclude","json","getItem","data","debug","update","state","includes","filters","filterValues","toUpperCase","error","subscribe","setItem","throttle","keys","all","fill","_x","removeItem","flatMap","arr","reduce","out","cur","concat","orderBy","selectors","direction","t","sort","a","b","_a","_b","dir","uniq","add","intersect","has","getAncestors","activeItemsById","items","find","parentId","parent","undefined","forEach","getDescendants","item","child","asString","join","String","asStringOrArray","castArray","cx","classNames","filter","predicate","className","calcItems","addReaction","revealFiltered","externalSort","activeColumns","expanded","draft","tableItems","sorted","column","columnId","sortBy","selector","Boolean","lookup","allItems","allItemsById","traverse","expandedChanged","activeSet","activeItems","reverse","isActive","external","filterValue","filterBy","some","test","castDraft","itemsById","setTimeout","onExpandedChange","runNow","noopParentId","calcProps","cache","Function","inputColumns","columns","dependecies","defCol","defaultColumnProps","mapColumn","_id","header","footer","renderCell","exportCell","cannotHide","classes","width","index","cacheKey","wrapCell","rowAction","copy","enableExport","separator","download","sepPrefix","enableSelection","selectSyncChildren","stickyHeader","stickyFooter","enableColumnSelection","enableClearFiltersButton","enableColumnResize","enableColumnReorder","cleanupState","columnIds","activeColumnIds","newSort","s","onSortChange","delete","hiddenColumns","columnWidths","columnOrder","newSelection","selection","size","onSelectionChange","newExpanded","filterColumns","indexOf","normalizeExpanded","expandOnlyOne","hasChanged","allAncestors","ancestors","withMostAncestors","ancestor","syncSelections","useTableState","_props","setKey","reset","defaultSort","defaultExpanded","defaultSelection","onHiddenColumnsChange","defaultHiddenColumns","onReset","Store","rowHeights","columnStyleOverride","lastSelectedId","splice","white","lightGray","gray","darkGray","cell","css","padding","display","alignItems","borderBottom","whiteSpace","overflow","background","defaultClasses","_EMOTION_STRINGIFIED_CSS_ERROR__","cellFill","headerCell","footerCell","borderTop","firstCell","sticky","stickyBottom","headerFill","footerFill","text","card","clearFiltersButton","fontWeight","position","left","maxWidth","gridColumn","button","color","border","borderColor","margin","useCssVariables","useTheme","spacing","colors","primary","main","light","contrastText","secondary","ClearFiltersButton","Button","components","textClearFilters","clearFilters","useTableContext","ColumnFooter","useColumnContext","columnClasses","theme","content","values","FilterControlContext","FilterControl","IconButton","Popover","FilterList","icons","ArrowDropDown","cssVariables","anchor","setAnchor","close","useCallback","_jsxs","currentTarget","preventDefault","stopPropagation","document","body","ResizeHandle","enabled","onPointerDown","div","target","setPointerCapture","pointerId","onPointerMove","hasPointerCapture","parentElement","Math","max","clientX","getBoundingClientRect","onPointerUp","releasePointerCapture","onDoubleClick","getModifierState","ResizeHandleView","_css","alignSelf","cursor","height","transition","SortComponent","Badge","ArrowUpward","findIndex","toggle","off","controlledSort","newDirection","_ref","opacity","transform","ColumnHeaderContext","StoreScope","ColumnHeader","ref","useRef","store","useStore","draggingStart","clone","current","calcTargetIndex","offsetLeft","cols","otherCols","col","firstOffsetleft","sum","targetIndex","offsetWidth","mouseX","bounds","abs","cloneNode","append","getComputedStyle","style","assign","pointerEvents","boxShadow","top","offset","zIndex","remove","FormControlLabel","control","label","disabled","ColumnSelection","Checkbox","Settings","selectColumns","resetAll","TableResetContext","anchorEl","setAnchorEl","controlledHiddenColumns","newValue","_Fragment","csvExport","quote","eol","cells","line","c","clean","RegExp","Export","Clipboard","exportTitle","exportCopy","exportDownload","generate","options","clipboard","writeText","createElement","href","encodeURIComponent","appendChild","click","removeChild","justifyItems","gap","justifyContent","defaultWrapCell","Cell","memo","itemId","rowIndex","useLayoutEffect","debugRender","calcClassNames","ExpandControl","hasDeferredChildren","Spinner","ChevronRight","isExpanded","hasChildren","controlledExpanded","SelectComponent","isSelected","itemIds","mouseEvent","nativeEvent","controlledSelection","range","shiftKey","min","descendant","evenCell","oddCell","Row","divRef","indent","o","ResizeObserver","contains","offsetHeight","observe","disconnect","ms","last","lastArgs","timeout","args","now","flush","cancel","clearTimeout","findScrollRoot","documentElement","scrollHeight","clientHeight","overflowY","relativeOffset","y","offsetParent","offsetTop","HTMLElement","Virtualized","virtual","probeRef","setCounter","to","before","after","root","rowHeight","initalRowHeight","overscan","overscanTop","overscanBottom","totalHeight","h","probeOffset","headerHeight","topOfTable","scrollTop","bottomOfTable","throttleScroll","incCounter","addEventListener","removeEventListener","TableContext","ColumnContext","Error","Table","resetState","clearStorage","TableLoadingState","loadingText","loading","showLoading","setShowLoading","handle","TableInner","hidden","fullWidth","hasActiveFilters","hasFooter","gridTemplateColumns","visibility","startIndex","defaultColors","badgeContent","open","startIcon","variant","borderRadius","backgroundColor","marginRight","checked","_ref2","MARGIN","MAX_OFFSET","PopoverContext","depth","visible","onClose","align","popper","setPosition","check","anchorLeft","bottom","anchorBottom","anchorWidth","popperWidth","popperHeight","viewportWidth","clientWidth","viewportHeight","Infinity","setInterval","clearInterval","context","createPortal","right","maxHeight","TextField","endIcon","inputRef","focus","setFocus","flex","defaultComponents","IconDefaultStyle","Icon","svg","ClassNames","cloneElement","Search","Clear","defaultIcons","defaultTexts","noResults","today","thisWeek","deselectAll","defaultTableTheme","globalTableTheme","configureTableTheme","tableTheme","TableThemeContext","TableThemeProvider","mergeThemes","themes","emptyStore","contextTableTheme","process","localTheme","columnsTheme","AutoFocusTextField","defaultDate","isIncludedType","type","defaultLengths","day","month","year","maxLengths","tabNext","querySelectorAll","DateInput","onChange","locale","override","setOverride","commit","setDate","Number","setMonth","setFullYear","format","Intl","DateTimeFormat","parts","formatToParts","isEmpty","Fragment","boxSizing","outline","fontSize","padEnd","select","weekDays","startOfDay","d","getFullYear","getMonth","getDate","endOfDay","firstDayOfWeek","diff","getDay","dateIntersect","DatePicker","rangeSelect","textToday","textThisWeek","textReset","baseDate","dateInView","setDateInView","dirty","setDirty","hovered","setHovered","calendars","getBackProps","getForwardProps","getDateProps","useDayzed","onDateSelected","showOutsideDays","date","onOffsetChanged","formatWeekday","weekday","weekDay","UTC","edit","formatMonth","formatYear","weeks","_ref3","_ref4","_ref5","_v","week","dateObj","dayIndex","prevMonth","nextMonth","selected","getTime","preSelected","convertDate","convertDateOrRange","convertDateOrArray","DateFilter","singleSelect","useFilter","newSet","SelectFilter","providedOptions","stringValue","render","query","setQuery","filtered","option","toLowerCase","debounce","impl","defaultValue","dirtyValue","setDirtyValue","implRef","delayedUpdate","controlledValue","textMatch","split","part","termMatch","outer","char","TextFilter","compare"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/hooks/useTableMemo.tsx","../../src/misc/queue.ts","../../src/internalState/tableStateStorage.ts","../../src/misc/helpers.ts","../../src/internalState/calcItems.ts","../../src/internalState/calcProps.ts","../../src/internalState/cleanupState.ts","../../src/internalState/filterColumns.ts","../../src/internalState/normalizeExpanded.ts","../../src/internalState/syncSelections.ts","../../src/internalState/useTableState.ts","../../src/theme/defaultTheme/defaultClasses.ts","../../src/theme/useCssVariables.ts","../../src/components/clearFiltersButton.tsx","../../src/components/columnFooter.tsx","../../src/components/filterControl.tsx","../../src/components/resizeHandle.tsx","../../src/components/sortComponent.tsx","../../src/components/columnHeader.tsx","../../src/components/formControlLabel.tsx","../../src/components/columnSelection.tsx","../../src/misc/csvExport.ts","../../src/components/export.tsx","../../src/components/cell.tsx","../../src/components/expandControl.tsx","../../src/components/selectComponent.tsx","../../src/components/row.tsx","../../src/misc/throttle.ts","../../src/components/virtualized.tsx","../../src/components/table.tsx","../../src/theme/defaultTheme/defaultColors.ts","../../src/components/spinnner.tsx","../../src/theme/defaultTheme/badge.tsx","../../src/theme/defaultTheme/button.tsx","../../src/theme/defaultTheme/checkbox.tsx","../../src/theme/defaultTheme/iconButton.tsx","../../src/theme/defaultTheme/popover.tsx","../../src/theme/defaultTheme/textField.tsx","../../src/theme/defaultTheme/defaultComponents.ts","../../src/theme/defaultTheme/defaultIcons.tsx","../../src/theme/defaultTheme/defaultTexts.tsx","../../src/theme/defaultTheme/index.tsx","../../src/theme/tableTheme.tsx","../../src/hooks/useTheme.ts","../../src/components/autoFocusTextField.tsx","../../src/components/dateInput.tsx","../../src/components/datePicker.tsx","../../src/components/dateFilter.tsx","../../src/components/selectFilter.tsx","../../src/misc/debounce.ts","../../src/hooks/useFilter.ts","../../src/misc/textMatch.ts","../../src/components/textFilter.tsx"],"sourcesContent":["import { createContext, DependencyList, ReactNode, useContext, useMemo } from 'react';\nimport { FunctionWithDeps } from '../types';\n\nconst TableMemoContext = createContext(new Map<string, [value: any, deps: DependencyList]>());\n\nexport function TableMemoContextProvider({ children }: { children: ReactNode }) {\n return <TableMemoContext.Provider value={useMemo(() => new Map(), [])}>{children}</TableMemoContext.Provider>;\n}\n\nexport function useTableMemo() {\n const memoCache = useContext(TableMemoContext);\n\n return <Fn extends (...args: any[]) => any>(key: string, fn: FunctionWithDeps<Fn>): Fn => {\n let deps: DependencyList;\n if (Array.isArray(fn)) {\n deps = fn.slice(1);\n fn = fn[0];\n } else {\n deps = [fn.toString()];\n }\n\n let cachedValue = memoCache.get(key);\n const hit = cachedValue && cachedValue[1].length === deps.length && cachedValue[1].every((x, i) => x === deps[i]);\n if (!cachedValue || !hit) {\n cachedValue = [fn, deps];\n memoCache.set(key, cachedValue);\n }\n return cachedValue[0];\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 clear() {\n this.q = [];\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 { Store } from 'schummar-state/react';\nimport { Queue } from '../misc/queue';\nimport { InternalTableState, SerializableValue } from '../types';\n\nconst KEYS = ['sort', 'selection', 'expanded', 'hiddenColumns', 'filterValues', 'columnWidths', 'columnOrder'] as const;\n\nconst storageName = (id: string) => `schummar-table_state-v1_${id}`;\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(table: Store<InternalTableState<any>>) {\n const [isHydrated, setIsHydrated] = useState(false);\n const [q] = useState(() => new Queue());\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, include, exclude } = persist;\n const json = await storage.getItem(storageName(id));\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 ?? state.filters.get(id)?.value === undefined) {\n state.filterValues.set(id, value);\n }\n }\n } else {\n if (key === 'expanded' || key === 'hiddenColumns' || key === 'selection' || key === 'sort') {\n if (state.props[key] !== undefined) {\n continue;\n }\n\n state.props[`on${(key.slice(0, 1).toUpperCase() + key.slice(1)) as Capitalize<typeof key>}Change`]?.(data[key]);\n }\n\n state[key] = data[key];\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 return table.subscribe(\n (state) => {\n if (!state.props.persist) return;\n\n const { storage, id, 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 ?? state.filters.get(id)?.value === undefined) {\n data.filterValues.set(id, value);\n }\n }\n } else {\n if (\n (key === 'expanded' || key === 'hiddenColumns' || key === 'selection' || key === 'sort') &&\n state.props[key] !== undefined\n ) {\n continue;\n }\n\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(storageName(id), stringify(data));\n }, true);\n },\n { throttle: 1000 },\n );\n }, [isHydrated]);\n\n async function clear() {\n await q.run(async () => {\n const persist = table.getState().props.persist;\n if (!persist) {\n return;\n }\n\n const { storage } = persist;\n const keys =\n 'keys' in storage\n ? await storage.keys()\n : await Promise.all(\n Array(storage.length)\n .fill(0)\n .map((_x, i) => storage.key(i)),\n );\n\n for (const key of keys) {\n if (key !== null) {\n await storage.removeItem(key);\n }\n }\n\n q.clear();\n });\n }\n\n return [isHydrated, clear] as const;\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 Array.from(set);\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\nexport const cx = (...classNames: (string | false | undefined | null | Record<string, boolean>)[]) =>\n classNames\n .flatMap((entry) => {\n if (!entry) return [];\n if (typeof entry === 'string') return [entry];\n return Object.entries(entry)\n .filter(([, predicate]) => predicate)\n .map(([className]) => className);\n })\n .join(' ');\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.props.externalSort,\n state.sort,\n state.filters,\n state.filterValues,\n state.activeColumns,\n state.expanded,\n ] as const,\n ([items = [], id, parentId, revealFiltered, externalSort, sort, filters, filterValues, activeColumns], draft) => {\n const tableItems = items.map<TableItem<T>>((item) => ({\n id: id(item),\n parentId: parentId?.(item),\n children: [],\n value: item,\n }));\n\n let sorted;\n if (sort.length === 0 || externalSort) {\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 return column.sortBy.map((sortBy) => ({\n selector: (item: T) => sortBy(column.value(item), item),\n direction: sort.direction,\n }));\n }).filter(Boolean);\n\n sorted = orderBy(\n tableItems,\n selectors.map((x) => (item) => x.selector(item.value)),\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 || filter.external) 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.value), item.value);\n return castArray(value).some((value) => filter.test(filterValue, value));\n });\n\n if (isActive && item.parentId !== undefined) {\n if (\n revealFiltered &&\n Array.from(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 } from 'react';\nimport { useTableMemo } from '../hooks/useTableMemo';\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 cache = useTableMemo();\n\n return useMemo(() => {\n let id;\n if (props.id instanceof Function || Array.isArray(props.id)) {\n id = cache('id', props.id);\n } else {\n id = cache('id', [(item: T) => item[props.id as keyof T] as unknown as Id, props.id]);\n }\n\n let parentId;\n if (props.parentId instanceof Function || Array.isArray(props.parentId)) {\n parentId = cache('parentId', props.parentId);\n } else if (props.parentId !== undefined) {\n parentId = cache('parentId', [(item: T) => item[props.parentId as keyof T] as unknown as Id | undefined, props.parentId]);\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 defCol = props.defaultColumnProps;\n const mapColumn = <V>(\n {\n id: _id,\n header = defCol?.header ?? null,\n footer = defCol?.footer ?? null,\n value,\n renderCell = defCol?.renderCell ?? asString,\n exportCell = defCol?.exportCell ?? asString,\n sortBy = defCol?.sortBy ?? [(v) => (typeof v === 'number' || v instanceof Date ? v : String(v))],\n cannotHide = defCol?.cannotHide,\n classes = defCol?.classes,\n filter = defCol?.filter,\n width = defCol?.width,\n }: Column<T, V>,\n index: number,\n ): InternalColumn<T, V> => {\n const id = _id ?? index;\n const cacheKey = typeof id === 'string' ? `s${id}` : `n${id}`;\n\n return {\n id,\n header: header instanceof Function ? cache(`columns.${cacheKey}.header`, header) : header,\n footer: footer instanceof Function ? cache(`columns.${cacheKey}.footer`, footer) : footer,\n value: cache(`columns.${cacheKey}.value`, value),\n renderCell: cache(`columns.${cacheKey}.renderCell`, renderCell),\n exportCell,\n sortBy: sortBy.map((fn, i) => cache(`columns.${cacheKey}.sortBy.${i}`, fn)),\n cannotHide,\n classes,\n filter,\n width,\n };\n };\n\n const columns = inputColumns.map(mapColumn);\n\n const wrapCell = props.wrapCell && cache('wrapCell', props.wrapCell);\n\n const rowAction =\n props.rowAction instanceof Function || Array.isArray(props.rowAction) ? cache('rowAction', props.rowAction) : props.rowAction;\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 wrapCell,\n rowAction,\n enableSelection: props.enableSelection ?? true,\n selectSyncChildren: props.selectSyncChildren ?? true,\n stickyHeader: props.stickyHeader ?? true,\n stickyFooter: props.stickyFooter ?? true,\n enableExport,\n enableColumnSelection: props.enableColumnSelection ?? true,\n enableClearFiltersButton: props.enableClearFiltersButton ?? false,\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 setTimeout(() => {\n state.getState().props.onSortChange?.(newSort);\n });\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 setTimeout(() => {\n state.getState().props.onSelectionChange?.(newSelection);\n });\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 setTimeout(() => {\n state.getState().props.onExpandedChange?.(newExpanded);\n });\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 { getAncestors, orderBy } from '../misc/helpers';\nimport { Id, InternalTableState } from '../types';\n\nexport function normalizeExpanded<T>(table: Store<InternalTableState<T>>): void {\n useEffect(\n () =>\n table.addReaction(\n (state) => [state.props.expandOnlyOne, state.expanded, state.itemsById] as const,\n ([expandOnlyOne, , itemsById], state) => {\n let expanded = state.expanded;\n let hasChanged = false;\n\n const allAncestors = [...expanded].map((id) => {\n const item = itemsById.get(id);\n return {\n id,\n ancestors: item ? getAncestors(itemsById, item) : new Set<Id>(),\n };\n });\n\n // If only one branch may be expanded, check if there are more and close if necessary\n if (expandOnlyOne) {\n const withMostAncestors = orderBy(allAncestors, [(x) => x.ancestors.size], ['desc'])[0];\n\n if ([...expanded].some((id) => id !== withMostAncestors?.id && !withMostAncestors?.ancestors.has(id))) {\n expanded = state.expanded = withMostAncestors?.ancestors ?? new Set();\n\n state.props.onExpandedChange?.(expanded);\n return;\n }\n }\n\n for (const { ancestors } of allAncestors) {\n for (const ancestor of ancestors ?? []) {\n if (!expanded.has(ancestor)) {\n expanded.add(ancestor);\n hasChanged = true;\n }\n }\n }\n\n if (hasChanged) {\n state.props.onExpandedChange?.(new Set(expanded));\n }\n },\n { runNow: true },\n ),\n [table],\n );\n}\n","import { useEffect } from 'react';\nimport { Store } from 'schummar-state/react';\nimport { InternalTableState } from '../types';\n\nexport function syncSelections<T>(table: Store<InternalTableState<T>>): void {\n useEffect(\n () =>\n table.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 setTimeout(() => {\n table.getState().props.onSelectionChange?.(newSelection);\n });\n }\n },\n { runNow: true },\n ),\n [table],\n );\n}\n","import { castDraft } from 'immer';\nimport { useEffect, useMemo, useState } from 'react';\nimport { Store } from 'schummar-state/react';\nimport { InternalTableState, TableProps } from '../types';\nimport { calcItems } from './calcItems';\nimport { calcProps } from './calcProps';\nimport { cleanupState } from './cleanupState';\nimport { filterColumns } from './filterColumns';\nimport { normalizeExpanded } from './normalizeExpanded';\nimport { syncSelections } from './syncSelections';\n\nexport function useTableState<T>(_props: TableProps<T>): [Store<InternalTableState<T>>, () => void] {\n const [key, setKey] = useState({});\n const props = calcProps(_props);\n\n function reset() {\n setKey({});\n\n if (props.sort === undefined) {\n props.onSortChange?.(props.defaultSort ?? []);\n }\n\n if (props.expanded === undefined) {\n props.onExpandedChange?.(props.defaultExpanded ?? new Set());\n }\n\n if (props.selection === undefined) {\n props.onSelectionChange?.(props.defaultSelection ?? new Set());\n }\n\n if (props.hiddenColumns === undefined) {\n props.onHiddenColumnsChange?.(props.defaultHiddenColumns ?? new Set());\n }\n\n props.onReset?.();\n }\n\n const state = useMemo(\n () =>\n new Store<InternalTableState<T>>({\n props,\n\n key,\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 [key],\n );\n\n filterColumns(state);\n calcItems(state);\n normalizeExpanded(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 });\n }, [state, props]);\n\n return [state, reset];\n}\n","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 { useTheme } from '../hooks/useTheme';\n\nexport function useCssVariables() {\n return useTheme(({ spacing, colors }) => ({\n '--spacing': spacing,\n '--primaryMain': colors.primary.main,\n '--primaryLight': colors.primary.light,\n '--primaryContrastText': colors.primary.contrastText,\n '--secondaryMain': colors.secondary.main,\n '--secondaryLight': colors.secondary.light,\n '--secondaryContrastText': colors.secondary.contrastText,\n }));\n}\n","import React from 'react';\nimport { defaultClasses } from '../theme/defaultTheme/defaultClasses';\nimport { useTableContext, useTheme } from '..';\n\nexport default function ClearFiltersButton<T>() {\n const Button = useTheme((t) => t.components.Button);\n const textClearFilters = useTheme((t) => t.text.clearFilters);\n const table = useTableContext<T>();\n\n return (\n <div css={defaultClasses.clearFiltersButton}>\n <Button\n variant=\"outlined\"\n onClick={() => {\n table.update((state) => {\n state.activeColumns.forEach((column) => {\n state.filterValues.delete(column.id);\n });\n });\n }}\n >\n {textClearFilters}\n </Button>\n </div>\n );\n}\n","import { useTheme } from '../hooks/useTheme';\nimport { cx } from '../misc/helpers';\nimport { defaultClasses } from '../theme/defaultTheme/defaultClasses';\nimport { useColumnContext, useTableContext } from './table';\n\nexport function ColumnFooter() {\n const table = useTableContext();\n const columnId = useColumnContext();\n const stickyFooter = table.useState('props.stickyFooter');\n const columnStyleOverride = table.useState((state) => state.columnStyleOverride.get(columnId), { throttle: 16 });\n const columnClasses = table.useState((state) => state.activeColumns.find((column) => column.id === columnId)?.classes);\n const classes = useTheme((theme) => theme.classes);\n\n const content = table.useState((state) => {\n const column = state.activeColumns.find((column) => column.id === columnId);\n\n if (column?.footer instanceof Function) {\n const items = state.activeItems;\n const values = items.map((item) => column?.value(item.value));\n return column?.footer(values, items);\n }\n\n return column?.footer;\n });\n\n return (\n <div\n className={cx(classes?.footerCell, columnClasses?.footerCell)}\n css={[\n defaultClasses.footerCell,\n columnStyleOverride,\n stickyFooter && defaultClasses.stickyBottom,\n stickyFooter instanceof Object && stickyFooter,\n ]}\n >\n {content}\n </div>\n );\n}\n","import React, { createContext, useCallback, useState } from 'react';\nimport { useTheme } from '../hooks/useTheme';\nimport { useCssVariables } from '../theme/useCssVariables';\nimport { useColumnContext, useTableContext } from './table';\n\nexport const FilterControlContext = createContext((): void => void 0);\n\nexport function FilterControl<T>(): JSX.Element | null {\n const table = useTableContext<T>();\n const columnId = useColumnContext();\n const IconButton = useTheme((t) => t.components.IconButton);\n const Popover = useTheme((t) => t.components.Popover);\n const FilterList = useTheme((t) => t.icons.FilterList);\n const ArrowDropDown = useTheme((t) => t.icons.ArrowDropDown);\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 function reset() {\n table.update((state) => {\n const impl = state.filters.get(columnId);\n\n impl?.onChange?.(undefined);\n\n if (impl?.value !== undefined) {\n state.filterValues.delete(columnId);\n }\n });\n }\n\n const close = useCallback(function () {\n setAnchor(null);\n }, []);\n\n if (!filter) return null;\n\n return (\n <FilterControlContext.Provider value={close}>\n <div\n onClick={(e) => setAnchor(e.currentTarget)}\n onContextMenu={(e) => {\n reset();\n e.preventDefault();\n return false;\n }}\n >\n <IconButton\n css={[\n { color: '#b0bac9' },\n isActive && {\n color: 'var(--primaryMain) !important',\n },\n ]}\n >\n {isActive ? <FilterList /> : <ArrowDropDown />}\n </IconButton>\n </div>\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 </FilterControlContext.Provider>\n );\n}\n","import React, { HTMLProps } 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 <ResizeHandleView\n enabled={enabled}\n onPointerDown={enabled ? onPointerDown : undefined}\n onPointerMove={enabled ? onPointerMove : undefined}\n onPointerUp={enabled ? onPointerUp : undefined}\n onDoubleClick={enabled ? onDoubleClick : undefined}\n />\n );\n}\n\nexport function ResizeHandleView({ enabled, ...props }: HTMLProps<HTMLDivElement> & { enabled?: boolean }) {\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.5em',\n background: '#c9cfda',\n transition: 'transform 300ms',\n },\n }}\n {...props}\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 Badge = useTheme((t) => t.components.Badge);\n const ArrowUpward = useTheme((t) => t.icons.ArrowUpward);\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, off?: boolean) {\n const {\n props: { sort: controlledSort, onSortChange },\n } = table.getState();\n\n const newDirection = direction === 'asc' ? 'desc' : 'asc';\n const newSort = e.getModifierState('Control') || off ? table.getState().sort.filter((s) => s.columnId !== columnId) : [];\n if (!off) {\n newSort.push({\n columnId,\n direction: newDirection,\n });\n }\n\n onSortChange?.(newSort);\n\n if (!controlledSort) {\n table.update((state) => {\n state.sort = newSort;\n });\n }\n\n e.preventDefault();\n return false;\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={(e) => toggle(e)}\n onContextMenu={(e) => toggle(e, true)}\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","import { castDraft } from 'immer';\nimport React, { useEffect, useRef } from 'react';\nimport { StoreScope } from 'schummar-state/react';\nimport { Id, useColumnContext, useTableContext } from '..';\nimport { useTheme } from '../hooks/useTheme';\nimport { cx } from '../misc/helpers';\nimport { defaultClasses } from '../theme/defaultTheme/defaultClasses';\nimport { FilterControl } from './filterControl';\nimport { ResizeHandle } from './resizeHandle';\nimport { SortComponent } from './sortComponent';\n\nexport const ColumnHeaderContext = new StoreScope({\n items: new Map<Id, HTMLDivElement>(),\n});\n\nexport function ColumnHeader() {\n const ref = useRef<HTMLDivElement>(null);\n const columnId = useColumnContext();\n const table = useTableContext();\n const enabled = table.useState('props.enableColumnReorder');\n const columnStyleOverride = table.useState((state) => state.columnStyleOverride.get(columnId), { throttle: 16 });\n const stickyHeader = table.useState('props.stickyHeader');\n const classes = useTheme((theme) => theme.classes);\n\n const { header, columnClasses } = table.useState((state) => {\n const column = state.activeColumns.find((column) => column.id === columnId);\n return {\n header: column?.header,\n columnClasses: column?.classes,\n };\n });\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 ref={ref}\n className={cx(classes?.headerCell, columnClasses?.headerCell)}\n css={[\n {\n position: 'relative',\n userSelect: 'none',\n },\n defaultClasses.headerCell,\n columnStyleOverride,\n stickyHeader && defaultClasses.sticky,\n stickyHeader instanceof Object && stickyHeader,\n ]}\n onPointerDown={enabled ? onPointerDown : undefined}\n onPointerMove={enabled ? onPointerMove : undefined}\n onPointerUp={enabled ? onPointerUp : undefined}\n >\n <SortComponent>{header}</SortComponent>\n <div css={{ flex: 1 }} />\n <FilterControl />\n <ResizeHandle />\n </div>\n );\n}\n","import { ReactNode } from 'react';\n\nexport function FormControlLabel({ control, label, disabled }: { control: ReactNode; label: ReactNode; disabled?: boolean }) {\n return (\n <label\n css={[\n {\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n userSelect: 'none',\n\n '& > *': {\n cursor: 'pointer',\n },\n },\n disabled && { color: 'rgba(0, 0, 0, 0.26)' },\n ]}\n >\n {control}\n <span css={{ marginLeft: 'var(--spacing)' }}>{label}</span>\n </label>\n );\n}\n","import React, { useContext, useState } from 'react';\nimport { useTheme } from '..';\nimport { useCssVariables } from '../theme/useCssVariables';\nimport { InternalColumn } from '../types';\nimport { FormControlLabel } from './formControlLabel';\nimport { TableResetContext, useTableContext } from './table';\n\nexport function ColumnSelection<T>(): JSX.Element {\n const IconButton = useTheme((t) => t.components.IconButton);\n const Popover = useTheme((t) => t.components.Popover);\n const Checkbox = useTheme((t) => t.components.Checkbox);\n const Button = useTheme((t) => t.components.Button);\n const Settings = useTheme((t) => t.icons.Settings);\n const selectColumns = useTheme((t) => t.text.selectColumns);\n const resetAll = useTheme((t) => t.text.resetAll);\n const cssVariables = useCssVariables();\n\n const table = useTableContext<T>();\n const reset = useContext(TableResetContext);\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)' }}>{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\n <Button variant=\"outlined\" onClick={reset}>\n {resetAll}\n </Button>\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 Button = useTheme((t) => t.components.Button);\n const IconButton = useTheme((t) => t.components.IconButton);\n const Popover = useTheme((t) => t.components.Popover);\n const Export = useTheme((t) => t.icons.Export);\n const Clipboard = useTheme((t) => t.icons.Clipboard);\n const exportTitle = useTheme((t) => t.text.exportTitle);\n const exportCopy = useTheme((t) => t.text.exportCopy);\n const exportDownload = useTheme((t) => t.text.exportDownload);\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.value), item.value))),\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 css={!!anchor && { color: 'var(--primaryMain)' }} />\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)' }}>{exportTitle}</div>\n <Button startIcon={<Clipboard />} onClick={copy}>\n {exportCopy}\n </Button>\n <Button startIcon={<Export />} onClick={download}>\n {exportDownload}\n </Button>\n </div>\n </Popover>\n </>\n );\n}\n","import React, { memo, ReactNode, useLayoutEffect } from 'react';\nimport { Id, useColumnContext, useTableContext, useTheme } from '..';\nimport { cx } from '../misc/helpers';\nimport { defaultClasses } from '../theme/defaultTheme/defaultClasses';\nimport { calcClassNames } from './row';\n\nconst defaultWrapCell = (content: ReactNode) => {\n if (typeof content === 'string') {\n return (\n <span css={defaultClasses.text} title={content}>\n {content}\n </span>\n );\n }\n return content;\n};\n\nexport const Cell = memo(function Cell<T>({ itemId, rowIndex }: { itemId: Id; rowIndex: number }) {\n const table = useTableContext<T>();\n const columnId = useColumnContext();\n\n const column = table.useState((state) => {\n const col = state.activeColumns.find((column) => column.id === columnId);\n return (\n col && {\n value: col.value,\n renderCell: col.renderCell,\n }\n );\n });\n const wrapCell = table.useState((state) => state.props.wrapCell) ?? defaultWrapCell;\n const item = table.useState((state) => state.activeItemsById.get(itemId));\n const columnStyleOverride = table.useState((state) => state.columnStyleOverride.get(columnId), { throttle: 16 });\n\n useLayoutEffect(() => table.getState().props.debugRender?.('render cell', itemId, columnId));\n const className = useTheme((t) => cx(...calcClassNames(t.classes, item, rowIndex)));\n\n if (!column || !item) return null;\n\n const content = column.renderCell(column.value(item.value), item.value);\n\n return (\n <div className={className} css={[defaultClasses.cell, columnStyleOverride]}>\n {wrapCell(content, column.value(item.value), item.value, rowIndex)}\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 IconButton = useTheme((t) => t.components.IconButton);\n const Spinner = useTheme((t) => t.components.Spinner);\n const ChevronRight = useTheme((t) => t.icons.ChevronRight);\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\n if (expandOnlyOne) {\n newExpanded.clear();\n\n const item = activeItemsById.get(itemId);\n for (const ancestor of item ? getAncestors(activeItemsById, item) : []) {\n newExpanded.add(ancestor);\n }\n }\n\n if (isExpanded) {\n newExpanded.delete(itemId);\n } else {\n newExpanded.add(itemId);\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 Checkbox = useTheme((t) => t.components.Checkbox);\n\n const isSelected = table.useState((state) => {\n const itemIds = itemId ? [itemId] : Array.from(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: '#c9cfda',\n }}\n checked={isSelected}\n onChange={toggle}\n />\n );\n}\n","import React, { memo, useEffect, useLayoutEffect, useRef } from 'react';\nimport { useTheme } from '../hooks/useTheme';\nimport { cx, getAncestors } from '../misc/helpers';\nimport { defaultClasses } from '../theme/defaultTheme/defaultClasses';\nimport { Id, MemoizedTableTheme } from '../types';\nimport { Cell } from './cell';\nimport { ExpandControl } from './expandControl';\nimport { SelectComponent } from './selectComponent';\nimport { ColumnContext, useTableContext } from './table';\n\nexport function calcClassNames<T>(classes: MemoizedTableTheme<any>['classes'] | undefined, item: T, index: number) {\n return [\n classes?.cell instanceof Function ? classes.cell(item, index) : classes?.cell,\n index % 2 === 0 && classes?.evenCell,\n index % 2 === 1 && classes?.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 classes = useTheme((t) => t.classes);\n\n const { className, indent, hasChildren, hasDeferredChildren, columnIds, enableSelection, rowAction } = table.useState((state) => {\n const item = state.activeItemsById.get(itemId);\n\n return {\n className: cx(...calcClassNames(classes, item, rowIndex)),\n indent: item ? getAncestors(state.activeItemsById, item).size : 0,\n hasChildren: !!item?.children.length,\n hasDeferredChildren: item && state.props.hasDeferredChildren?.(item.value),\n columnIds: state.activeColumns.map((column) => column.id),\n enableSelection: state.props.enableSelection,\n rowAction:\n state.props.rowAction instanceof Function ? (item ? state.props.rowAction(item.value, rowIndex) : 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 useLayoutEffect(() => table.getState().props.debugRender?.('render row', itemId));\n\n return (\n <>\n <div className={className} css={[defaultClasses.cellFill]} ref={divRef} />\n\n <div className={className} css={[defaultClasses.cell, defaultClasses.firstCell]}>\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 className={className} css={[defaultClasses.cellFill]} />\n </>\n );\n});\n","export function throttle<Args extends any[]>(\n fn: (...args: Args) => void,\n ms: number,\n): { (...args: Args): void; flush(): void; cancel(): void } {\n let last = 0;\n let lastArgs: Args | undefined;\n let timeout: ReturnType<typeof setTimeout> | 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 cancel() {\n if (timeout) {\n clearTimeout(timeout);\n }\n },\n },\n );\n}\n","import React, { HTMLProps, ReactNode, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { throttle } from '../misc/throttle';\nimport { Id } from '../types';\nimport { useTableContext } from './table';\n\nconst findScrollRoot = (x: HTMLElement): HTMLElement => {\n const parent = x.parentElement;\n if (!parent) return document.documentElement;\n if (parent.scrollHeight > parent.clientHeight && getComputedStyle(parent).overflowY !== 'visible') 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 footer,\n children,\n ...props\n}: {\n header: ReactNode;\n footer: ReactNode;\n children: (itemIds: Id[], startIndex: number) => ReactNode;\n} & 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(\n (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 = 100,\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 { throttle: 16 },\n );\n\n const throttleScroll = (typeof virtual === 'boolean' ? undefined : virtual)?.throttleScroll ?? 16;\n const incCounter = useMemo(() => throttle(() => setCounter((c) => c + 1), throttleScroll), [throttleScroll]);\n\n useEffect(() => {\n if (!virtual || !probeRef.current) return;\n\n window.addEventListener('scroll', incCounter, true);\n window.addEventListener('resize', incCounter, true);\n return () => {\n window.removeEventListener('scroll', incCounter, true);\n window.removeEventListener('resize', incCounter, true);\n };\n }, [probeRef.current, incCounter]);\n\n useEffect(() => incCounter.cancel, [incCounter]);\n\n useLayoutEffect(() => 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\n {footer}\n </div>\n );\n}\n","import React, { createContext, memo, useContext, useEffect, useLayoutEffect, useState } from 'react';\nimport { Store } from 'schummar-state/react';\nimport { useTheme } from '..';\nimport { TableMemoContextProvider } from '../hooks/useTableMemo';\nimport { useTableStateStorage } from '../internalState/tableStateStorage';\nimport { useTableState } from '../internalState/useTableState';\nimport { defaultClasses } from '../theme/defaultTheme/defaultClasses';\nimport { useCssVariables } from '../theme/useCssVariables';\nimport { Id, InternalTableState, TableProps } from '../types';\nimport ClearFiltersButton from './clearFiltersButton';\nimport { ColumnFooter } from './columnFooter';\nimport { ColumnHeader, ColumnHeaderContext } from './columnHeader';\nimport { ColumnSelection } from './columnSelection';\nimport { Export } from './export';\nimport { ResizeHandleView } from './resizeHandle';\nimport { Row } from './row';\nimport { SelectComponent } from './selectComponent';\nimport { Virtualized } from './virtualized';\n\nexport const TableContext = createContext<Store<InternalTableState<any>> | null>(null);\nexport const TableResetContext = createContext<() => void>(() => undefined);\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, resetState] = useTableState(props);\n const [isHydrated, clearStorage] = useTableStateStorage(table);\n\n async function reset() {\n await clearStorage();\n resetState();\n }\n\n useLayoutEffect(() => table.getState().props.debugRender?.('render table'));\n\n return (\n <TableContext.Provider value={table}>\n <TableResetContext.Provider value={reset}>\n <TableMemoContextProvider>\n <TableLoadingState isHydrated={isHydrated} />\n </TableMemoContextProvider>\n </TableResetContext.Provider>\n </TableContext.Provider>\n );\n}\n\nfunction TableLoadingState({ isHydrated }: { isHydrated: boolean }) {\n const loadingText = useTheme((t) => t.text.loading);\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>{loadingText}</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 classes: column.classes,\n })),\n );\n const hasActiveFilters = table.useState((state) => {\n return state.activeColumns.some((column) => {\n const filter = state.filters.get(column.id);\n const filterValue = state.filterValues.get(column.id);\n return filter !== undefined && filterValue !== undefined && filter.isActive(filterValue);\n });\n });\n const columnWidths = table.useState('columnWidths', { throttle: 16 });\n const hasFooter = table.useState((state) => state.activeColumns.some((column) => column.footer));\n\n const classes = useTheme((theme) => theme.classes);\n const stickyHeader = table.useState('props.stickyHeader');\n const stickyFooter = table.useState('props.stickyFooter');\n\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 const enableClearFiltersButton = table.useState('props.enableClearFiltersButton');\n\n useLayoutEffect(() => table.getState().props.debugRender?.('render table inner'));\n\n return (\n <Virtualized\n className={classes?.table}\n css={[\n cssVariables,\n defaultClasses.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 ?? 'max-content'),\n fullWidth === 'left' || fullWidth === true ? 'auto' : '0',\n ].join(' '),\n },\n hidden && { visibility: 'hidden' },\n ]}\n header={\n <>\n <div\n className={classes?.headerCell}\n css={[defaultClasses.headerFill, stickyHeader && defaultClasses.sticky, stickyHeader instanceof Object && stickyHeader]}\n />\n\n <div\n className={classes?.headerCell}\n css={[defaultClasses.headerCell, stickyHeader && defaultClasses.sticky, stickyHeader instanceof Object && stickyHeader]}\n >\n {enableSelection && <SelectComponent />}\n\n {enableColumnSelection && <ColumnSelection />}\n\n {enableExport && <Export />}\n\n <div css={{ flex: 1 }} />\n <ResizeHandleView />\n </div>\n\n <ColumnHeaderContext.Provider>\n {activeColumns.map((column) => (\n <ColumnContext.Provider key={column.id} value={column.id}>\n <ColumnHeader />\n </ColumnContext.Provider>\n ))}\n </ColumnHeaderContext.Provider>\n\n <div\n className={classes?.headerCell}\n css={[defaultClasses.headerFill, stickyHeader && defaultClasses.sticky, stickyHeader instanceof Object && stickyHeader]}\n />\n </>\n }\n footer={\n <>\n {enableClearFiltersButton && hasActiveFilters && <ClearFiltersButton />}\n {hasFooter && (\n <>\n <div\n className={classes?.footerCell}\n css={[\n defaultClasses.footerFill,\n stickyFooter && defaultClasses.stickyBottom,\n stickyFooter instanceof Object && stickyFooter,\n ]}\n />\n <div\n className={classes?.footerCell}\n css={[\n defaultClasses.footerFill,\n stickyFooter && defaultClasses.stickyBottom,\n stickyFooter instanceof Object && stickyFooter,\n ]}\n />\n\n {activeColumns.map((column) => (\n <ColumnContext.Provider key={column.id} value={column.id}>\n <ColumnFooter />\n </ColumnContext.Provider>\n ))}\n\n <div\n className={classes?.footerCell}\n css={[\n defaultClasses.footerFill,\n stickyFooter && defaultClasses.stickyBottom,\n stickyFooter instanceof Object && stickyFooter,\n ]}\n />\n </>\n )}\n </>\n }\n >\n {(itemIds, startIndex) => itemIds.map((itemId, index) => <Row key={itemId} itemId={itemId} rowIndex={startIndex + index} />)}\n </Virtualized>\n );\n});\n","import { TableTheme } from '../../types';\n\nexport const defaultColors: TableTheme['colors'] = {\n primary: { main: '#1976d2', light: '#42a5f5', contrastText: '#fff' },\n secondary: { main: '#9c27b0', light: '#ba68c8', contrastText: '#fff' },\n};\n","import { css } from '@emotion/react';\n\nexport function Spinner({ className }: { className?: string }) {\n return (\n <div\n className={className}\n css={css`\n display: inline-block;\n position: relative;\n width: 1em;\n height: 1em;\n\n div {\n box-sizing: border-box;\n display: block;\n position: absolute;\n width: 0.8em;\n height: 0.8em;\n margin: 0.1em;\n border: 0.1em solid #fff;\n border-radius: 50%;\n animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-color: currentColor transparent transparent transparent;\n }\n div:nth-of-type(1) {\n animation-delay: -0.45s;\n }\n div:nth-of-type(2) {\n animation-delay: -0.3s;\n }\n div:nth-of-type(3) {\n animation-delay: -0.15s;\n }\n @keyframes lds-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n `}\n >\n <div />\n <div />\n <div />\n </div>\n );\n}\n","import { TableTheme } from '../../types';\n\nexport const Badge: TableTheme['components']['Badge'] = ({ badgeContent, children }) => {\n if (!open) return null;\n\n return (\n <span\n css={{\n display: 'inline-flex',\n position: 'relative',\n flexShrink: 0,\n verticalAlign: 'middle',\n }}\n >\n {children}\n\n <span\n css={[\n {\n top: 0,\n right: 0,\n transform: 'scale(1) translate(50%, -50%)',\n transformOrigin: '100% 0%',\n height: 20,\n display: 'flex',\n padding: '0 6px',\n zIndex: 1,\n position: 'absolute',\n flexWrap: 'wrap',\n minWidth: 20,\n transition: 'transform 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms',\n alignItems: 'center',\n lineHeight: 1,\n alignContent: 'center',\n borderRadius: 10,\n justifyContent: 'center',\n fontSize: '0.8em',\n },\n !badgeContent && {\n transform: 'scale(0) translate(50%, -50%)',\n transition: 'transform 195ms cubic-bezier(0.4, 0, 0.2, 1) 0ms',\n },\n ]}\n >\n {badgeContent}\n </span>\n </span>\n );\n};\n","import { TableTheme } from '../../types';\nimport { darkGray, lightGray } from './defaultClasses';\n\nexport const Button: TableTheme['components']['Button'] = ({ startIcon, children, variant = 'text', ...props }) => {\n return (\n <button\n css={[\n {\n padding: `var(--spacing) calc(var(--spacing) * 2)`,\n display: 'inline-flex',\n alignItems: 'center',\n transition: 'background-color 150ms',\n border: 'none',\n cursor: 'pointer',\n background: 'transparent',\n borderRadius: 4,\n\n '&:active:not(:disabled)': {\n transform: 'scale3d(0.95, 0.95, 1)',\n },\n },\n variant === 'text' && {\n '&:hover': {\n background: 'rgba(0, 0, 0, 0.1)',\n },\n },\n variant === 'outlined' && {\n border: `1px solid ${darkGray}`,\n\n '&:disabled': {\n borderColor: lightGray,\n },\n },\n variant === 'contained' && {\n color: 'var(--primaryContrastText)',\n backgroundColor: 'var(--primaryMain)',\n boxShadow: '0px 3px 1px -2px rgb(0 0 0 / 20%), 0px 2px 2px 0px rgb(0 0 0 / 14%), 0px 1px 5px 0px rgb(0 0 0 / 12%)',\n\n '&:hover': {\n filter: 'brightness(0.9)',\n },\n\n '&:disabled': {\n filter: 'grayscale()',\n opacity: 0.5,\n },\n },\n ]}\n {...props}\n >\n {startIcon && <span css={{ marginRight: `calc(var(--spacing) * 2)` }}>{startIcon}</span>}\n <span>{children}</span>\n </button>\n );\n};\n","import { TableTheme } from '../../types';\n\nexport const Checkbox: TableTheme['components']['Checkbox'] = ({ className, ...props }) => {\n return (\n <label\n css={[\n {\n padding: 'calc(var(--spacing) * 1.8)',\n display: 'flex',\n color: 'currentcolor',\n userSelect: 'none',\n\n '& input': {\n appearance: 'none',\n margin: 0,\n },\n },\n props.disabled && { color: 'rgba(0, 0, 0, 0.26)' },\n ]}\n className={className}\n >\n <input type=\"checkbox\" {...props} />\n\n {props.checked ? (\n <svg\n css={{ fontSize: '1.25rem', width: '1em', height: '1em', fill: 'var(--primaryMain)' }}\n focusable=\"false\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path d=\"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"></path>\n </svg>\n ) : (\n <svg\n css={{ fontSize: '1.25rem', width: '1em', height: '1em', fill: 'currentColor' }}\n focusable=\"false\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path d=\"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"></path>\n </svg>\n )}\n </label>\n );\n};\n","import { TableTheme } from '../../types';\n\nexport const IconButton: TableTheme['components']['IconButton'] = (props) => {\n return (\n <button\n css={{\n padding: 'var(--spacing)',\n borderRadius: '50%',\n display: 'inline-flex',\n justifyContent: 'center',\n alignItems: 'center',\n transition: 'background-color 150ms',\n border: 'none',\n cursor: 'pointer',\n color: 'inherit',\n background: 'transparent',\n\n '&:hover': {\n backgroundColor: 'rgba(0, 0, 0, 0.04)',\n },\n\n '&:active': {\n transformColor: 'scale3d(0.95, 0.95, 1)',\n },\n }}\n {...props}\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 { useState } from 'react';\nimport { TableTheme } from '../../types';\nimport { darkGray } from './defaultClasses';\n\nexport const TextField: TableTheme['components']['TextField'] = ({ endIcon, className, inputRef, ...props }) => {\n const [focus, setFocus] = useState(false);\n\n return (\n <div className={className} css={{ display: 'flex' }}>\n <span\n css={[\n {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n border: `1px solid ${darkGray}`,\n borderRadius: 4,\n },\n focus && { border: '2px solid var(--primaryMain)', margin: -1 },\n ]}\n >\n <input\n ref={inputRef}\n {...props}\n value={props.value ?? ''}\n onFocus={() => setFocus(true)}\n onBlur={() => setFocus(false)}\n css={{\n flex: 1,\n border: 'none',\n outline: 'none',\n borderRadius: 4,\n padding: 'calc(var(--spacing) * 2)',\n paddingRight: 0,\n transition: 'outline 500ms',\n }}\n />\n\n {endIcon}\n </span>\n </div>\n );\n};\n","import { Spinner } from '../../components/spinnner';\nimport { TableTheme } from '../../types';\nimport { Badge } from './badge';\nimport { Button } from './button';\nimport { Checkbox } from './checkbox';\nimport { IconButton } from './iconButton';\nimport { Popover } from './popover';\nimport { TextField } from './textField';\n\nexport const defaultComponents: TableTheme['components'] = {\n IconButton,\n Checkbox,\n Popover,\n Button,\n Badge,\n TextField,\n Spinner,\n};\n","import { ClassNames, css } from '@emotion/react';\nimport { cloneElement, HTMLProps } from 'react';\nimport { TableTheme } from '../../types';\n\nconst IconDefaultStyle = css({\n width: '1.5em',\n height: '1.5em',\n color: 'inherit',\n});\n\nfunction Icon(svg: JSX.Element) {\n return (props: HTMLProps<Element>) => (\n <ClassNames>\n {({ css }) =>\n cloneElement(svg, {\n ...props,\n className: css(IconDefaultStyle, props.className),\n })\n }\n </ClassNames>\n );\n}\n\nconst Settings = Icon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M3 17v2h6v-2H3zM3 5v2h10V5H3zm10 16v-2h8v-2h-8v-2h-2v6h2zM7 9v2H3v2h4v2h2V9H7zm14 4v-2H11v2h10zm-6-4h2V7h4V5h-4V3h-2v6z\" />\n </svg>,\n);\n\nconst Export = Icon(\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n enableBackground=\"new 0 0 24 24\"\n height=\"24px\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n fill=\"currentColor\"\n >\n <g>\n <rect fill=\"none\" height=\"24\" width=\"24\" />\n </g>\n <g>\n <path d=\"M18,15v3H6v-3H4v3c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2v-3H18z M17,11l-1.41-1.41L13,12.17V4h-2v8.17L8.41,9.59L7,11l5,5 L17,11z\" />\n </g>\n </svg>,\n);\n\nconst Clipboard = Icon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M19 2h-4.18C14.4.84 13.3 0 12 0S9.6.84 9.18 2H5c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm7 18H5V4h2v3h10V4h2v16z\" />\n </svg>,\n);\n\nconst ChevronRight = Icon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6-6-6z\" />\n </svg>,\n);\n\nconst Search = Icon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\" />\n </svg>,\n);\n\nconst Clear = Icon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\" />\n </svg>,\n);\n\nconst ArrowDropDown = Icon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M7 10l5 5 5-5H7z\" />\n </svg>,\n);\n\nconst FilterList = Icon(\n <svg viewBox=\"0 0 24 24\">\n <path\n fill=\"currentColor\"\n d=\"M14,12V19.88C14.04,20.18 13.94,20.5 13.71,20.71C13.32,21.1 12.69,21.1 12.3,20.71L10.29,18.7C10.06,18.47 9.96,18.16 10,17.87V12H9.97L4.21,4.62C3.87,4.19 3.95,3.56 4.38,3.22C4.57,3.08 4.78,3 5,3V3H19V3C19.22,3 19.43,3.08 19.62,3.22C20.05,3.56 20.13,4.19 19.79,4.62L14.03,12H14Z\"\n />\n </svg>,\n);\n\nconst ArrowUpward = Icon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\" />\n </svg>,\n);\n\nexport const defaultIcons: TableTheme['icons'] = {\n Settings,\n Export,\n Clipboard,\n ChevronRight,\n Search,\n Clear,\n ArrowDropDown,\n FilterList,\n ArrowUpward,\n};\n","import { TableTheme } from '../../types';\n\nexport const defaultTexts: TableTheme['text'] = {\n selectColumns: 'Select visible columns',\n noResults: 'No results',\n exportTitle: 'Export',\n exportCopy: 'To clipboard',\n exportDownload: 'Download',\n today: 'Today',\n thisWeek: 'This week',\n clearFilters: 'Clear all filters',\n reset: 'Reset',\n loading: 'Loading',\n deselectAll: 'Deselect all',\n resetAll: 'Reset table state',\n};\n","import { TableTheme } from '../../types';\nimport { defaultColors } from './defaultColors';\nimport { defaultComponents } from './defaultComponents';\nimport { defaultIcons } from './defaultIcons';\nimport { defaultTexts } from './defaultTexts';\n\nexport const defaultTableTheme: TableTheme = {\n text: defaultTexts,\n components: defaultComponents,\n icons: defaultIcons,\n colors: defaultColors,\n spacing: '5px',\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","import { useContext } from 'react';\nimport { Store } from 'schummar-state/react';\nimport { ColumnContext, TableContext } from '../components/table';\nimport { defaultTableTheme } from '../theme/defaultTheme';\nimport { globalTableTheme, mergeThemes, TableThemeContext } from '../theme/tableTheme';\nimport { MemoizedTableTheme, TableTheme } from '../types';\nimport { useTableMemo } from './useTableMemo';\n\nconst emptyStore = new Store(undefined);\n\nexport function useTheme<T, S>(selector: (theme: MemoizedTableTheme<T>) => S): S {\n const contextTableTheme = useContext(TableThemeContext);\n const table = useContext(TableContext);\n const columnId = useContext(ColumnContext);\n const memo = useTableMemo();\n\n const process = (t: TableTheme<T>): MemoizedTableTheme<T> => {\n const cell = t.classes?.cell;\n\n return {\n ...t,\n classes: {\n ...t.classes,\n cell: cell instanceof Function || Array.isArray(cell) ? memo('theme.classes.cell', cell) : cell,\n },\n text: {\n ...t.text,\n },\n };\n };\n\n const theme =\n table?.useState((state) => {\n const localTheme = {\n text: state.props.text,\n classes: state.props.classes,\n components: state.props.components,\n icons: state.props.icons,\n colors: state.props.colors,\n spacing: state.props.spacing,\n };\n\n const column = state.activeColumns.find((column) => column.id === columnId);\n const columnsTheme = {\n classes: column?.classes,\n };\n\n const theme = mergeThemes(defaultTableTheme, globalTableTheme, contextTableTheme, localTheme, columnsTheme) as TableTheme<T>;\n\n return selector(process(theme));\n }) ??\n emptyStore.useState() ??\n selector(process(mergeThemes(defaultTableTheme, globalTableTheme, contextTableTheme) as TableTheme<T>));\n\n return theme;\n}\n","import { ComponentType, useContext, useLayoutEffect, useRef } from 'react';\nimport { useTheme } from '../hooks/useTheme';\nimport { PopoverContext } from '../theme/defaultTheme/popover';\nimport { TableTheme } from '../types';\n\ntype Props = TableTheme['components']['TextField'] extends ComponentType<infer T> ? T : never;\n\nexport function AutoFocusTextField(props: Omit<Props, 'inputRef'>) {\n const TextField = useTheme((t) => t.components.TextField);\n\n const ref = useRef<HTMLInputElement>(null);\n const { visible } = useContext(PopoverContext);\n\n useLayoutEffect(() => {\n if (visible && ref.current) {\n ref.current.focus();\n }\n }, [visible]);\n\n return <TextField {...props} inputRef={ref} />;\n}\n","import { Fragment, useMemo, useState } from 'react';\n\nconst className = 'schummar-table-date-input';\n\nconst defaultDate = new Date(1970, 0, 1);\n\nconst isIncludedType = (type: Intl.DateTimeFormatPartTypes): type is 'day' | 'month' | 'year' =>\n type === 'day' || type === 'month' || type === 'year';\n\nconst defaultLengths = {\n day: 2,\n month: 2,\n year: 4,\n};\n\nconst maxLengths = {\n day: 2,\n month: 2,\n year: Infinity,\n};\n\nconst length = (type: 'day' | 'month' | 'year', value: string) => Math.max(value.length, defaultLengths[type]);\n\nconst tabNext = (e: Element) => {\n const all = Array.from(document.querySelectorAll(`.${className}`));\n const index = all.indexOf(e);\n const next = all[(index + 1) % all.length];\n\n if (next instanceof HTMLElement) {\n next.focus();\n }\n};\n\nexport function DateInput({ value, onChange, locale }: { value: Date | null; onChange: (date: Date | null) => void; locale?: string }) {\n const [override, setOverride] = useState<{ type: string; value: string }>();\n\n const commit = () => {\n if (!override) {\n return;\n }\n\n setOverride(undefined);\n\n if (!override.value) {\n onChange(null);\n return;\n }\n\n const newValue = value ? new Date(value) : new Date();\n if (override.type === 'day') {\n newValue.setDate(Number(override.value));\n } else if (override.type === 'month') {\n newValue.setMonth(Number(override.value) - 1);\n } else if (override.type === 'year') {\n newValue.setFullYear(Number(override.value));\n }\n\n onChange(newValue);\n };\n\n const format = useMemo(\n () =>\n new Intl.DateTimeFormat(locale, {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n }),\n [locale],\n );\n const parts = format.formatToParts(value ?? defaultDate);\n const isEmpty = !value;\n\n return (\n <div\n css={{\n display: 'flex',\n alignItems: 'baseline',\n }}\n >\n {parts.map(({ type, value }, index) => (\n <Fragment key={index}>\n {isIncludedType(type) ? (\n <input\n className={className}\n css={{\n width: `${length(type, value)}ch`,\n boxSizing: 'content-box',\n overflow: 'visible',\n border: 'none',\n borderBottom: '2px solid transparent',\n outline: 'none',\n fontSize: 'inherit',\n\n '&:focus': {\n borderBottom: '2px solid var(--primaryMain)',\n },\n }}\n placeholder={''.padEnd(length(type, value), '0')}\n value={override?.type === type ? override.value : !isEmpty ? value : ''}\n onChange={(e) => {\n setOverride({ type, value: e.target.value });\n if (e.target.value.length >= maxLengths[type]) {\n setTimeout(() => tabNext(e.target));\n }\n }}\n onFocus={(e) => e.target.select()}\n onBlur={commit}\n />\n ) : type === 'literal' ? (\n <span>{value}</span>\n ) : null}\n </Fragment>\n ))}\n </div>\n );\n}\n","import { useDayzed } from 'dayzed';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTheme } from '..';\nimport { gray } from '../theme/defaultTheme/defaultClasses';\nimport { useCssVariables } from '../theme/useCssVariables';\nimport { DateInput } from './dateInput';\n\nexport type DateRange = { min: Date; max: Date };\n\nexport type DatePickerProps = {\n /** Currently selected day or range of days. */\n value: Date | DateRange | null;\n /** Callback for when the day (range) changes. */\n onChange: (value: Date | DateRange | null) => void;\n /** If enabled, ranges can be selected. */\n rangeSelect?: boolean;\n /** Which locale to use to render the calendar. */\n locale?: string;\n /** Which day of the week should be in the first column. */\n firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n};\n\nconst weekDays = [0, 1, 2, 3, 4, 5, 6] as const;\n\n/** Rounds a date down to the start of the day. */\nexport const startOfDay = (d: Date) => new Date(d.getFullYear(), d.getMonth(), d.getDate());\n\n/** Rounds a date up to the end of the day. */\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 const thisWeek = (firstDayOfWeek = 0): DateRange => {\n const now = new Date();\n const min = new Date(now);\n\n let diff = min.getDay() - firstDayOfWeek;\n if (diff < 0) {\n diff += 7;\n }\n min.setDate(min.getDate() - diff);\n\n const max = new Date(min);\n max.setDate(max.getDate() + 6);\n\n return { min: startOfDay(min), max: endOfDay(max) };\n};\n\n/** Returns whether two dates and/or date ranges intersect. Intersection is considered per day. */\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 Button = useTheme((t) => t.components.Button);\n const IconButton = useTheme((t) => t.components.IconButton);\n const ChevronRight = useTheme((t) => t.icons.ChevronRight);\n const textToday = useTheme((t) => t.text.today);\n const textThisWeek = useTheme((t) => t.text.thisWeek);\n const textReset = useTheme((t) => t.text.reset);\n const cssVariables = useCssVariables();\n\n const [baseDate] = useState(new Date());\n const [dateInView, setDateInView] = useState<Date>(baseDate);\n const [dirty, setDirty] = useState<Partial<DateRange>>();\n const [hovered, setHovered] = useState<Date>();\n\n const min = dirty ? dirty.min : value instanceof Date ? value : value?.min;\n const max = dirty ? dirty.max : 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 useEffect(() => {\n if (!rangeSelect) {\n setDirty(undefined);\n }\n }, [rangeSelect]);\n\n function set(min?: Date, max?: Date, edit?: 'min' | 'max') {\n if (!rangeSelect) {\n onChange(min ?? null);\n return;\n }\n\n if (min && max && min > max) {\n if (edit === 'min') {\n max = min;\n } else if (edit === 'max') {\n min = max;\n } else {\n [min, max] = [max, min];\n }\n }\n\n if (!min === !max) {\n setDirty(undefined);\n onChange(min && max ? { min, max } : null);\n } else {\n setDirty({ min, max });\n }\n }\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 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 return (\n <div css={cssVariables}>\n <div css={{ display: 'grid', gridAutoFlow: 'column', justifyContent: 'center', alignItems: 'baseline', gap: 'var(--spacing)' }}>\n <DateInput value={min ?? null} onChange={(date) => set(date ?? undefined, max, 'min')} locale={locale} />\n\n {rangeSelect && (\n <>\n {' - '}\n <DateInput value={max ?? null} onChange={(date) => set(min, date ?? undefined, 'max')} locale={locale} />\n </>\n )}\n </div>\n\n {calendars.map(({ month, year, weeks }) => (\n <div key={`${month}${year}`} css={{ display: 'grid' }}>\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 {formatMonth(month)} {formatYear(year)}\n </div>\n\n <IconButton {...getForwardProps({ calendars })}>\n <ChevronRight />\n </IconButton>\n </div>\n\n <div\n css={{\n justifySelf: 'center',\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 (dirty) {\n if (min) set(min, date);\n else set(date, max);\n } else {\n set(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\n <div css={{ marginTop: 'var(--spacing)', display: 'grid', gridAutoFlow: 'column', justifyContent: 'center' }}>\n <Button\n variant=\"text\"\n onClick={() => {\n setDirty(undefined);\n onChange(today());\n }}\n >\n {textToday}\n </Button>\n\n <Button\n variant=\"text\"\n onClick={() => {\n setDirty(undefined);\n onChange(thisWeek(firstDayOfWeek));\n }}\n >\n {textThisWeek}\n </Button>\n\n <Button\n variant=\"text\"\n onClick={() => {\n setDirty(undefined);\n onChange(null);\n }}\n >\n {textReset}\n </Button>\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport { useFilter } from '..';\nimport { CommonFilterProps } from '../types';\nimport { dateIntersect, DatePicker, DatePickerProps, DateRange } 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 /** Which locale to use to render the calendar. */\n locale?: string;\n /** Which day of the week should be in the first column. */\n firstDayOfWeek?: DatePickerProps['firstDayOfWeek'];\n /** If enabled, only single days can be selected. Ranges otherwise. */\n singleSelect?: boolean;\n} & CommonFilterProps<T, V, Date | DateRange | null, Date | DateRange | null>): JSX.Element {\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 return (\n <div\n css={{\n padding: 'calc(var(--spacing) * 2)',\n display: 'grid',\n }}\n >\n <DatePicker rangeSelect={!singleSelect} value={value} onChange={onChange} locale={locale} firstDayOfWeek={firstDayOfWeek} />\n </div>\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 { AutoFocusTextField } from './autoFocusTextField';\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 /** Which options are provided to select. By default all unique item values are used. */\n options?: F[];\n /** String representation of a value. Used to filter options via the text field. */\n stringValue?: (value: F) => string;\n /** Render values. By default a string representation of the value is used. */\n render?: (value: F) => ReactNode;\n /** If enabled, only one option can be selected at a time. */\n singleSelect?: boolean;\n} & CommonFilterProps<T, V, F, Set<F>>): JSX.Element {\n const IconButton = useTheme((t) => t.components.IconButton);\n const Checkbox = useTheme((t) => t.components.Checkbox);\n const Search = useTheme((t) => t.icons.Search);\n const Clear = useTheme((t) => t.icons.Clear);\n const deselectAll = useTheme((t) => t.text.deselectAll);\n const noResults = useTheme((t) => t.text.noResults);\n\n const table = useTableContext<T>();\n const columnId = useColumnContext();\n\n const {\n value = new Set<F>(),\n onChange,\n filterBy,\n } = 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 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 return uniq(flatMap(state.items, (item) => castArray(filterBy(column.value(item.value), item.value))));\n });\n\n const [query, setQuery] = useState('');\n const filtered = options.filter((option) => !query || stringValue(option).toLowerCase().includes(query.toLowerCase()));\n\n const Button = useTheme((t) => t.components.Button);\n\n return (\n <div\n css={{\n padding: 'calc(var(--spacing) * 2)',\n display: 'grid',\n gap: 'var(--spacing)',\n }}\n >\n <AutoFocusTextField\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 <Button\n disabled={!(value.size > 0)}\n onClick={() => onChange(new Set())}\n variant=\"outlined\"\n css={{ justifyContent: 'center', width: '100%', marginBottom: 'var(--spacing)' }}\n >\n {deselectAll}\n </Button>\n\n <div css={{ maxHeight: '20em', overflowY: 'auto' }}>\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 </div>\n\n {filtered.length === 0 && <span css={{ textAlign: 'center' }}>{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: ReturnType<typeof setTimeout> | 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 { useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useColumnContext, useTableContext } from '..';\nimport { FilterControlContext } from '../components/filterControl';\nimport { debounce } from '../misc/debounce';\nimport { FilterImplementation, SerializableValue } from '../types';\nimport { useTableMemo } from './useTableMemo';\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 const cache = useTableMemo();\n const filterBy = impl.filterBy && cache('', impl.filterBy);\n\n // On mount and reset: Fire onChange\n useEffect(() => {\n if (impl.value === undefined) {\n impl.onChange?.(impl.defaultValue);\n }\n }, [table]);\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 }, [table]);\n\n useEffect(() => {\n table.update((state) => {\n state.filters.set(columnId, castDraft({ ...impl, filterBy }));\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]);\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 setDirtyValue(undefined);\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 close: useContext(FilterControlContext),\n filterBy: filterBy ?? ((x) => x as unknown as F | F[]),\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';\nimport { AutoFocusTextField } from './autoFocusTextField';\n\nexport function TextFilter<T, V>({\n compare = textMatch,\n filterBy = asStringOrArray,\n ...props\n}: {\n /** Custom comparison function. Should return true if an item value matches the current filter value.\n * By default a fuzzy text comparison is used.\n */\n compare?: (itemValue: string, filterValue: string) => boolean;\n} & CommonFilterProps<T, V, string, string>): JSX.Element {\n const IconButton = useTheme((t) => t.components.IconButton);\n const Search = useTheme((t) => t.icons.Search);\n const Clear = useTheme((t) => t.icons.Clear);\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 }}\n >\n <AutoFocusTextField\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":["TableMemoContext","createContext","Map","TableMemoContextProvider","children","_jsx","useMemo","useTableMemo","memoCache","useContext","key","fn","deps","Array","isArray","slice","toString","cachedValue","get","hit","length","every","x","i","set","Queue","q","isRunning","run","job","replace","Promise","resolve","reject","push","start","clear","next","shift","result","e","KEYS","storageName","id","stringify","value","prepare","Date","__date","toJSON","Set","__set","from","map","__map","entries","entry","Object","fromEntries","k","v","JSON","parse","_key","useTableStateStorage","table","isHydrated","setIsHydrated","useState","useEffect","persist","getState","props","isCanceled","storage","include","exclude","json","getItem","data","debug","update","state","includes","filters","undefined","filterValues","toUpperCase","error","subscribe","setItem","throttle","keys","all","fill","_x","removeItem","flatMap","arr","reduce","out","cur","concat","orderBy","selectors","direction","t","sort","a","b","_a","_b","dir","uniq","add","intersect","has","getAncestors","activeItemsById","items","find","parentId","parent","forEach","getDescendants","item","child","asString","join","String","asStringOrArray","castArray","cx","classNames","filter","predicate","className","calcItems","addReaction","revealFiltered","externalSort","activeColumns","expanded","draft","tableItems","sorted","column","columnId","sortBy","selector","Boolean","lookup","allItems","allItemsById","traverse","expandedChanged","activeSet","activeItems","reverse","isActive","external","filterValue","filterBy","some","test","castDraft","itemsById","setTimeout","onExpandedChange","runNow","noopParentId","calcProps","cache","Function","inputColumns","columns","dependecies","defCol","defaultColumnProps","mapColumn","_id","header","footer","renderCell","exportCell","cannotHide","classes","width","index","cacheKey","wrapCell","rowAction","copy","enableExport","separator","download","sepPrefix","enableSelection","selectSyncChildren","stickyHeader","stickyFooter","enableColumnSelection","enableClearFiltersButton","enableColumnResize","enableColumnReorder","cleanupState","columnIds","activeColumnIds","newSort","s","onSortChange","delete","hiddenColumns","columnWidths","columnOrder","newSelection","selection","size","onSelectionChange","newExpanded","filterColumns","indexOf","normalizeExpanded","expandOnlyOne","hasChanged","allAncestors","ancestors","withMostAncestors","ancestor","syncSelections","useTableState","_props","setKey","reset","defaultSort","defaultExpanded","defaultSelection","onHiddenColumnsChange","defaultHiddenColumns","onReset","Store","rowHeights","columnStyleOverride","lastSelectedId","splice","white","lightGray","gray","darkGray","cell","css","padding","display","alignItems","borderBottom","whiteSpace","overflow","background","defaultClasses","_EMOTION_STRINGIFIED_CSS_ERROR__","cellFill","headerCell","footerCell","borderTop","firstCell","sticky","stickyBottom","headerFill","footerFill","text","card","clearFiltersButton","fontWeight","position","left","maxWidth","gridColumn","button","color","border","borderColor","margin","useCssVariables","useTheme","spacing","colors","primary","main","light","contrastText","secondary","ClearFiltersButton","Button","components","textClearFilters","clearFilters","useTableContext","ColumnFooter","useColumnContext","columnClasses","theme","content","values","FilterControlContext","FilterControl","IconButton","Popover","FilterList","icons","ArrowDropDown","cssVariables","anchor","setAnchor","impl","onChange","close","useCallback","_jsxs","currentTarget","preventDefault","stopPropagation","document","body","ResizeHandle","enabled","onPointerDown","div","target","setPointerCapture","pointerId","onPointerMove","hasPointerCapture","parentElement","Math","max","clientX","getBoundingClientRect","onPointerUp","releasePointerCapture","onDoubleClick","getModifierState","ResizeHandleView","_css","alignSelf","cursor","height","transition","SortComponent","Badge","ArrowUpward","findIndex","toggle","off","controlledSort","newDirection","_ref","opacity","transform","ColumnHeaderContext","StoreScope","ColumnHeader","ref","useRef","store","useStore","draggingStart","clone","current","calcTargetIndex","offsetLeft","cols","otherCols","col","firstOffsetleft","sum","targetIndex","offsetWidth","mouseX","bounds","abs","cloneNode","append","getComputedStyle","style","assign","pointerEvents","boxShadow","top","offset","zIndex","remove","FormControlLabel","control","label","disabled","ColumnSelection","Checkbox","Settings","selectColumns","resetAll","TableResetContext","anchorEl","setAnchorEl","controlledHiddenColumns","newValue","_Fragment","csvExport","quote","eol","cells","line","c","clean","RegExp","Export","Clipboard","exportTitle","exportCopy","exportDownload","generate","options","clipboard","writeText","createElement","href","encodeURIComponent","appendChild","click","removeChild","justifyItems","gap","justifyContent","defaultWrapCell","Cell","memo","itemId","rowIndex","useLayoutEffect","debugRender","calcClassNames","ExpandControl","hasDeferredChildren","Spinner","ChevronRight","isExpanded","hasChildren","controlledExpanded","SelectComponent","isSelected","itemIds","mouseEvent","nativeEvent","controlledSelection","range","shiftKey","min","descendant","evenCell","oddCell","Row","divRef","indent","o","ResizeObserver","contains","offsetHeight","observe","disconnect","ms","last","lastArgs","timeout","args","now","flush","cancel","clearTimeout","findScrollRoot","documentElement","scrollHeight","clientHeight","overflowY","relativeOffset","y","offsetParent","offsetTop","HTMLElement","Virtualized","virtual","probeRef","setCounter","to","before","after","root","rowHeight","initalRowHeight","overscan","overscanTop","overscanBottom","totalHeight","h","probeOffset","headerHeight","topOfTable","scrollTop","bottomOfTable","throttleScroll","incCounter","addEventListener","removeEventListener","TableContext","ColumnContext","Error","Table","resetState","clearStorage","TableLoadingState","loadingText","loading","showLoading","setShowLoading","handle","TableInner","hidden","fullWidth","hasActiveFilters","hasFooter","gridTemplateColumns","visibility","startIndex","defaultColors","badgeContent","open","startIcon","variant","borderRadius","backgroundColor","marginRight","checked","_ref2","MARGIN","MAX_OFFSET","PopoverContext","depth","visible","onClose","align","popper","setPosition","check","anchorLeft","bottom","anchorBottom","anchorWidth","popperWidth","popperHeight","viewportWidth","clientWidth","viewportHeight","Infinity","setInterval","clearInterval","context","createPortal","right","maxHeight","TextField","endIcon","inputRef","focus","setFocus","flex","defaultComponents","IconDefaultStyle","Icon","svg","ClassNames","cloneElement","Search","Clear","defaultIcons","defaultTexts","noResults","today","thisWeek","deselectAll","defaultTableTheme","globalTableTheme","configureTableTheme","tableTheme","TableThemeContext","TableThemeProvider","mergeThemes","themes","emptyStore","contextTableTheme","process","localTheme","columnsTheme","AutoFocusTextField","defaultDate","isIncludedType","type","defaultLengths","day","month","year","maxLengths","tabNext","querySelectorAll","DateInput","locale","override","setOverride","commit","setDate","Number","setMonth","setFullYear","format","Intl","DateTimeFormat","parts","formatToParts","isEmpty","Fragment","boxSizing","outline","fontSize","padEnd","select","weekDays","startOfDay","d","getFullYear","getMonth","getDate","endOfDay","firstDayOfWeek","diff","getDay","dateIntersect","DatePicker","rangeSelect","textToday","textThisWeek","textReset","baseDate","dateInView","setDateInView","dirty","setDirty","hovered","setHovered","calendars","getBackProps","getForwardProps","getDateProps","useDayzed","onDateSelected","showOutsideDays","date","onOffsetChanged","formatWeekday","weekday","weekDay","UTC","edit","formatMonth","formatYear","weeks","_ref3","_ref4","_ref5","_v","week","dateObj","dayIndex","prevMonth","nextMonth","selected","getTime","preSelected","convertDate","convertDateOrRange","convertDateOrArray","DateFilter","singleSelect","useFilter","newSet","SelectFilter","providedOptions","stringValue","render","query","setQuery","filtered","option","toLowerCase","debounce","defaultValue","dirtyValue","setDirtyValue","implRef","delayedUpdate","controlledValue","textMatch","split","part","termMatch","outer","char","TextFilter","compare"],"mappings":"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"}